From fef0be195a69f25b96615e839e47f29b9a35ca70 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 26 Apr 2025 11:13:39 +0300 Subject: [PATCH 001/270] add manually runnable retroactive labeling (#3101) --- .github/workflows/manage-issue-labels.yml | 8 +++++ .github/workflows/manual-autolabel.yml | 42 +++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .github/workflows/manual-autolabel.yml diff --git a/.github/workflows/manage-issue-labels.yml b/.github/workflows/manage-issue-labels.yml index 22b47e7cd3a..ac282724e33 100644 --- a/.github/workflows/manage-issue-labels.yml +++ b/.github/workflows/manage-issue-labels.yml @@ -2,6 +2,12 @@ name: Issue Labels on: + workflow_dispatch: + inputs: + issue_body: + description: "The issue body" + required: false + type: string issues: types: [opened] @@ -18,10 +24,12 @@ jobs: template: [ 000-bug-report.yml, 001-feature-request.yml ] steps: - uses: actions/checkout@v4 + - name: Parse issue form uses: stefanbuck/github-issue-parser@v3 id: issue-parser with: + issue-body: ${{ github.event.issue?.body ?? inputs.issue_body }} template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }} - name: Set labels based on mc-version field diff --git a/.github/workflows/manual-autolabel.yml b/.github/workflows/manual-autolabel.yml new file mode 100644 index 00000000000..5c3b9b74b23 --- /dev/null +++ b/.github/workflows/manual-autolabel.yml @@ -0,0 +1,42 @@ +# Manages labels on new issues +name: Retroactively apply Issue Labels + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + label-all: + runs-on: ubuntu-latest + permissions: + issues: write # IDK if this is needed to run manage-issue-labels, but it doesn't hurt so + actions: write + steps: + - name: Labelifier + uses: actions/github-script@v7 + id: label-em + with: + script: | + github.paginate(github.rest.issues.listForRepo, { + owner: "GregTechCEu", + repo: "GregTech-Modern", + }).then((issues) => { + // issues is an array of all issue objects + issues.forEach((issue) => { + if (issue.pull_request != undefined) { + // if it's a pull request, skip it. + return; + } + octokit.rest.actions.createWorkflowDispatch({ + owner: "GregTechCEu", + repo: "GregTech-Modern", + workflow_id: "manage-issue-labels", + ref: ${{ github.ref }}, + inputs: { + issue_number: issue.body + } + }); + }); + }); From fc4f44418132b55af606ef23c562b965a496b199 Mon Sep 17 00:00:00 2001 From: Georgy <32033856+stivosha@users.noreply.github.com> Date: Sun, 27 Apr 2025 15:42:01 +0500 Subject: [PATCH 002/270] Added show charge armor support + fix bug with two charge lines in tools (#3096) --- .../resources/assets/gtceu/lang/en_ud.json | 4 +- .../resources/assets/gtceu/lang/en_us.json | 4 +- .../gregtechceu/gtceu/api/item/IGTTool.java | 9 +-- .../gtceu/api/item/armor/ArmorLogicSuite.java | 7 ++- .../api/item/component/ElectricStats.java | 56 +++++++++---------- .../item/armor/AdvancedNanoMuscleSuite.java | 3 +- .../item/armor/AdvancedQuarkTechSuite.java | 2 +- .../gregtechceu/gtceu/data/lang/ItemLang.java | 4 +- .../resources/assets/gtceu/lang/ja_jp.json | 4 +- .../resources/assets/gtceu/lang/ru_ru.json | 4 +- .../resources/assets/gtceu/lang/uk_ua.json | 4 +- .../resources/assets/gtceu/lang/zh_cn.json | 4 +- .../resources/assets/gtceu/lang/zh_tw.json | 4 +- 13 files changed, 46 insertions(+), 63 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 84ae29a0571..2c66ba2c1ad 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3688,9 +3688,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "ʇınɔɹıƆ ɹǝı⟘-ΛꞀ9§", "item.gtceu.basic_tape": "ǝdɐ⟘", "item.gtceu.basic_tape.tooltip": "sɯǝʇı ɹıǝɥʇ buıddoɹp ʇnoɥʇıʍ sǝʇɐɹɔ dn ʞɔıd oʇ pǝsn ǝq uɐƆ\nsǝnssı ןɐɔıuɐɥɔǝɯ ɹoɟ ɥbnouǝ buoɹʇs ʇoNㄥ§", - "item.gtceu.battery.charge_detailed.0": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɐ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɐ§", - "item.gtceu.battery.charge_detailed.1": ")ㄥ§buıuıɐɯǝɹ %s %s/%sǝ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sǝ§", - "item.gtceu.battery.charge_detailed.2": ")ㄥ§buıuıɐɯǝɹ %s %s/%sɔ§(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%sɔ§", + "item.gtceu.battery.charge_detailed": ")ㄥ§buıuıɐɯǝɹ %s %s/%s(ㄥ§ %s ɹǝı⟘ - ㄥ§∩Ǝ %s/%s", "item.gtceu.battery.charge_time": ")%s( ɹǝʍoԀ ɟo %s %s spןoHɐ§", "item.gtceu.battery.charge_unit.hour": "sɹnoɥ", "item.gtceu.battery.charge_unit.minute": "sǝʇnuıɯ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 5e737f48bf8..e4123b3e338 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3688,9 +3688,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV-Tier Circuit", "item.gtceu.basic_tape": "Tape", "item.gtceu.basic_tape.tooltip": "§7Not strong enough for mechanical issues\nCan be used to pick up crates without dropping their items", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s remaining§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s remaining§7)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s remaining§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Tier %s §7(%s/%s %s remaining§7)", "item.gtceu.battery.charge_time": "§aHolds %s %s of Power (%s)", "item.gtceu.battery.charge_unit.hour": "hours", "item.gtceu.battery.charge_unit.minute": "minutes", diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index e5389f21c83..94771358e82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.item; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.CombinedCapabilityProvider; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -642,12 +641,8 @@ default int getTotalHarvestLevel(ItemStack stack) { // electric info if (this.isElectric()) { - - tooltip.add(Component.translatable("metaitem.generic.electric_item.tooltip", - FormattingUtil.formatNumbers(getCharge(stack)), - FormattingUtil.formatNumbers(getMaxCharge(stack)), - GTValues.VNF[getElectricTier()])); - ElectricStats.addCurrentChargeTooltip(tooltip, getCharge(stack), getMaxCharge(stack), getElectricTier()); + ElectricStats.addCurrentChargeTooltip(tooltip, getCharge(stack), getMaxCharge(stack), getElectricTier(), + false); } // durability info diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java index bba78688d91..8fdf231f41d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorLogicSuite.java @@ -92,7 +92,12 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List lines) {} + public void addInfo(ItemStack itemStack, List lines) { + IElectricItem cont = GTCapabilityHelper.getElectricItem(itemStack); + if (cont != null) { + ElectricStats.addCurrentChargeTooltip(lines, cont.getCharge(), cont.getMaxCharge(), cont.getTier(), false); + } + } public InteractionResultHolder onRightClick(Level Level, Player player, InteractionHand hand) { return InteractionResultHolder.pass(player.getItemInHand(hand)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index 02a2169efa3..afed3c52915 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -186,12 +186,13 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltip, long currentCharge, long maxCharge, int tier) { + public static void addCurrentChargeTooltip(List tooltip, long currentCharge, long maxCharge, int tier, + boolean showTimeRemaining) { double percentage = (double) currentCharge / (double) maxCharge; Instant start = Instant.now(); @@ -203,38 +204,37 @@ public static void addCurrentChargeTooltip(List tooltip, long current long maxChargeTime; String unit; - if (durationCurrent.getSeconds() <= 60) { - maxChargeTime = durationMax.getSeconds(); - currentChargeTime = durationCurrent.toSeconds(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.second"); - } else if (durationCurrent.toMinutes() <= 60) { - maxChargeTime = durationMax.toMinutes(); - currentChargeTime = durationCurrent.toMinutes(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.minute"); - } else { - maxChargeTime = durationMax.toHours(); - currentChargeTime = durationCurrent.toHours(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.hour"); - } - + ChatFormatting color = ChatFormatting.RED; if (percentage > 0.5) { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.0", - FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), - GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.GREEN)); + color = ChatFormatting.GREEN; } else if (percentage > 0.3) { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.1", + color = ChatFormatting.YELLOW; + } + + if (showTimeRemaining) { + if (durationCurrent.getSeconds() <= 60) { + maxChargeTime = durationMax.getSeconds(); + currentChargeTime = durationCurrent.toSeconds(); + unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.second"); + } else if (durationCurrent.toMinutes() <= 60) { + maxChargeTime = durationMax.toMinutes(); + currentChargeTime = durationCurrent.toMinutes(); + unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.minute"); + } else { + maxChargeTime = durationMax.toHours(); + currentChargeTime = durationCurrent.toHours(); + unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.hour"); + } + tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed", FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.YELLOW)); + FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), + unit) + .withStyle(color)); } else { - tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed.2", + tooltip.add(Component.translatable("metaitem.generic.electric_item.tooltip", FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), - GTValues.VNF[tier], - FormattingUtil.formatNumbers(currentChargeTime), FormattingUtil.formatNumbers(maxChargeTime), unit) - .withStyle(ChatFormatting.RED)); + GTValues.VNF[tier]).withStyle(color)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java index 241955a76c8..b247e2beda5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java @@ -143,6 +143,7 @@ public void onArmorTick(Level world, Player player, @NotNull ItemStack item) { @Override public void addInfo(ItemStack itemStack, List lines) { + super.addInfo(itemStack, lines); CompoundTag data = itemStack.getOrCreateTag(); Component state; boolean enabled = !data.contains("enabled") || data.getBoolean("enabled"); @@ -160,8 +161,6 @@ public void addInfo(ItemStack itemStack, List lines) { state = hover ? Component.translatable("metaarmor.hud.status.enabled") : Component.translatable("metaarmor.hud.status.disabled"); lines.add(Component.translatable("metaarmor.hud.hover_mode", state)); - - super.addInfo(itemStack, lines); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java index 4b52258fa40..26e9f6a39f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java @@ -149,6 +149,7 @@ public void onArmorTick(Level world, Player player, ItemStack item) { @Override public void addInfo(ItemStack itemStack, List lines) { + super.addInfo(itemStack, lines); CompoundTag data = itemStack.getOrCreateTag(); Component state; boolean enabled = !data.contains("enabled") || data.getBoolean("enabled"); @@ -166,7 +167,6 @@ public void addInfo(ItemStack itemStack, List lines) { state = hover ? Component.translatable("metaarmor.hud.status.enabled") : Component.translatable("metaarmor.hud.status.disabled"); lines.add(Component.translatable("metaarmor.hud.hover_mode", state)); - super.addInfo(itemStack, lines); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java index 8389b9f7fa9..9f7b12ba9f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java @@ -117,9 +117,7 @@ private static void initItemTooltips(RegistrateLangProvider provider) { provider.add("item.gtceu.zpm_battery_hull.tooltip", "§7An empty §fZPM §7Battery Hull"); provider.add("item.gtceu.uv_battery_hull.tooltip", "§7An empty §3UV §7Battery Hull"); provider.add("item.gtceu.battery.charge_time", "§aHolds %s %s of Power (%s)"); - provider.add("item.gtceu.battery.charge_detailed.0", "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s remaining§7)"); - provider.add("item.gtceu.battery.charge_detailed.1", "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s remaining§7)"); - provider.add("item.gtceu.battery.charge_detailed.2", "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s remaining§7)"); + provider.add("item.gtceu.battery.charge_detailed", "%s/%s EU§7 - Tier %s §7(%s/%s %s remaining§7)"); provider.add("item.gtceu.battery.charge_unit.second", "seconds"); provider.add("item.gtceu.battery.charge_unit.minute", "minutes"); provider.add("item.gtceu.battery.charge_unit.hour", "hours"); diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json index c2b4975f9d7..ee2185c9c12 100644 --- a/src/main/resources/assets/gtceu/lang/ja_jp.json +++ b/src/main/resources/assets/gtceu/lang/ja_jp.json @@ -3626,9 +3626,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1": "§cLV時代の回路", "item.gtceu.basic_tape": "テープ", "item.gtceu.basic_tape.tooltip": "§7機械的な問題に対する強度が不十分\nアイテムを落とさずに木箱を入手することができる。", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Tier %s §7(§a%s/%s %s 放出可能§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - Tier %s §7(§e%s/%s %s 放出可能§7)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - Tier %s §7(§c%s/%s %s 放出可能§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Tier %s §7(%s/%s %s 放出可能§7)", "item.gtceu.battery.charge_time": "§a %s %s 放出可能(%s)", "item.gtceu.battery.charge_unit.hour": "時間", "item.gtceu.battery.charge_unit.minute": "分", diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index e2245cc8364..06228a19cbe 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -5147,13 +5147,11 @@ "config.gtceu.option.zombieSpawnWithSabers": "zombieSpawnWithSabers", "config.gtceu.option.hideOreProcessingDiagrams": "hideOreProcessingDiagrams", "block.gtceu.stainless_evaporation_casing": "Нержавеющий корпус градирни", - "item.gtceu.battery.charge_detailed.2": "§a%s/%s EU§7 - Уровень %s §7(§c%s/%s %s осталось§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - Уровень %s §7(%s/%s %s осталось§7)", "item.gtceu.invar_lighter": "Инваровая зажигалка", "item.gtceu.matchbox": "Пачка спичек", "item.gtceu.matches": "Спички", "item.gtceu.platinum_lighter": "Платиновая зажигалка", - "item.gtceu.battery.charge_detailed.1": "§a%s/%s EU§7 - Уровень %s §7(§e%s/%s %s осталось§7)", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - Уровень %s §7(§a%s/%s %s осталось§7)", "item.gtceu.nano_saber": "Нано-сабля", "item.gtceu.paracetamol_pill": "Таблетка парацетамола", "item.gtceu.pill_casting_mold": "Отливная форма (Таблетка)", diff --git a/src/main/resources/assets/gtceu/lang/uk_ua.json b/src/main/resources/assets/gtceu/lang/uk_ua.json index 02269e12303..a5e8ec19dec 100644 --- a/src/main/resources/assets/gtceu/lang/uk_ua.json +++ b/src/main/resources/assets/gtceu/lang/uk_ua.json @@ -1532,10 +1532,8 @@ "metaitem.electric.discharge_mode.tooltip": "Використовуйте крадькома, щоб змінити режим розряджання", "metaitem.generic.electric_item.stored": "%d/%d EU (%s)", "metaitem.generic.electric_item.tooltip": "%d/%d EU - рівень %s", - "item.gtceu.battery.charge_detailed.0": "§a%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", + "item.gtceu.battery.charge_detailed": "%s/%s EU§7 - рівень %s§7 (залишилось %s/%s %s§7)", "item.gtceu.battery.charge_time": "§aHolds %s %s of Power (%s)", - "item.gtceu.battery.charge_detailed.2": "§c%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", - "item.gtceu.battery.charge_detailed.1": "§e%s/%s EU§7 - рівень %s§7 (§aзалишилось %s/%s %s§7)", "item.gtceu.battery.charge_unit.hour": "годин", "item.gtceu.battery.charge_unit.minute": "хвилин", "item.gtceu.battery.charge_unit.second": "секунд", diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 3571d7dce86..309b1572be1 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -3682,9 +3682,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV级电路", "item.gtceu.basic_tape":"胶带", "item.gtceu.basic_tape.tooltip":"§7强度不足,无法解决机械故障\\n可以带走板条箱,且不丢失物品", - "item.gtceu.battery.charge_detailed.0":"§a%s/%sEU-%s级§7(§a剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.1":"§e%s/%sEU-%s级§7(§e剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.2":"§c%s/%sEU-%s级§7(§c剩余供能时长:%s/%s%s§7)", + "item.gtceu.battery.charge_detailed":"%s/%sEU-%s级§7(剩余供能时长:%s/%s%s§7)", "item.gtceu.battery.charge_time":"§a最大供能时长:%s%s(%s)", "item.gtceu.battery.charge_unit.hour":"时", "item.gtceu.battery.charge_unit.minute":"分", diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index 33cfbf4490c..8a455a3756c 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -3682,9 +3682,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV級電路", "item.gtceu.basic_tape":"膠帶", "item.gtceu.basic_tape.tooltip":"強度不足,無法解決機械故障\\n可以带走板條箱,且不丟失物品", - "item.gtceu.battery.charge_detailed.0":"§a%s/%sEU-%s級§7(§a剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.1":"§e%s/%sEU-%s級§7(§e剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_detailed.2":"§c%s/%sEU-%s級§7(§c剩餘供能時長:%s/%s%s§7)", + "item.gtceu.battery.charge_detailed":"%s/%sEU-%s級§7(剩餘供能時長:%s/%s%s§7)", "item.gtceu.battery.charge_time":"§a最大供能時長:%s%s(%s)", "item.gtceu.battery.charge_unit.hour":"時", "item.gtceu.battery.charge_unit.minute":"分", From d604ef3bc62d4f3595b9ca69dd12d91678dcb5fc Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:42:32 -0400 Subject: [PATCH 003/270] Use a tree structure for GTDynamicDataPack (#3109) --- .../gtceu/data/pack/GTDynamicDataPack.java | 32 ++-- .../data/pack/GTDynamicPackContents.java | 155 ++++++++++++++++++ .../data/pack/GTDynamicResourcePack.java | 32 +--- 3 files changed, 175 insertions(+), 44 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index b8b64a3d174..5c41d831090 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -25,7 +25,6 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -41,7 +40,7 @@ public class GTDynamicDataPack implements PackResources { protected static final ObjectSet SERVER_DOMAINS = new ObjectOpenHashSet<>(); - protected static final Map DATA = new HashMap<>(); + protected static final GTDynamicPackContents CONTENTS = new GTDynamicPackContents(); private final String name; @@ -59,7 +58,11 @@ public GTDynamicDataPack(String name, Collection domains) { } public static void clearServer() { - DATA.clear(); + CONTENTS.clearData(); + } + + private static void addToData(ResourceLocation location, byte[] bytes) { + CONTENTS.addToData(location, bytes); } public static void addRecipe(FinishedRecipe recipe) { @@ -69,13 +72,13 @@ public static void addRecipe(FinishedRecipe recipe) { if (ConfigHolder.INSTANCE.dev.dumpRecipes) { writeJson(recipeId, "recipes", parent, recipeJson); } - DATA.put(getRecipeLocation(recipeId), recipeJson.toString().getBytes(StandardCharsets.UTF_8)); + addToData(getRecipeLocation(recipeId), recipeJson.toString().getBytes(StandardCharsets.UTF_8)); if (recipe.serializeAdvancement() != null) { JsonObject advancement = recipe.serializeAdvancement(); if (ConfigHolder.INSTANCE.dev.dumpRecipes) { writeJson(recipe.getAdvancementId(), "advancements", parent, advancement); } - DATA.put(getAdvancementLocation(Objects.requireNonNull(recipe.getAdvancementId())), + addToData(getAdvancementLocation(Objects.requireNonNull(recipe.getAdvancementId())), advancement.toString().getBytes(StandardCharsets.UTF_8)); } } @@ -109,9 +112,7 @@ public static void writeJson(ResourceLocation id, @Nullable String subdir, Path public static void addAdvancement(ResourceLocation loc, JsonObject obj) { ResourceLocation l = getAdvancementLocation(loc); - synchronized (DATA) { - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); - } + addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); } @Nullable @@ -123,10 +124,7 @@ public IoSupplier getRootResource(String... elements) { @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.SERVER_DATA) { - var byteArray = DATA.get(location); - if (byteArray != null) - return () -> new ByteArrayInputStream(byteArray); - else return null; + return CONTENTS.getResource(location); } else { return null; } @@ -135,15 +133,7 @@ public IoSupplier getResource(PackType type, ResourceLocation locat @Override public void listResources(PackType packType, String namespace, String path, ResourceOutput resourceOutput) { if (packType == PackType.SERVER_DATA) { - if (!path.endsWith("/")) path += "/"; - final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) - .forEach((id) -> { - IoSupplier resource = this.getResource(packType, id); - if (resource != null) { - resourceOutput.accept(id, resource); - } - }); + CONTENTS.listResources(namespace, path, resourceOutput); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java new file mode 100644 index 00000000000..6ffb8e23cb9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicPackContents.java @@ -0,0 +1,155 @@ +package com.gregtechceu.gtceu.data.pack; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackResources; +import net.minecraft.server.packs.resources.IoSupplier; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.Map; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Stores contents of a dynamic resource pack in a tree-style format for efficient traversal. This class can safely + * be accessed from multiple threads; it implements synchronization internally. + * + * @author embeddedt + */ +public class GTDynamicPackContents { + + private static class Node { + + /** + * Holds either a IoSupplier with the data for a given location, or a map of string -> Node. + */ + Object contents = new Object2ObjectOpenHashMap<>(); + + void collectResources(String namespace, String[] pathComponents, int curIndex, + PackResources.ResourceOutput output) { + if (curIndex < pathComponents.length) { + String component = pathComponents[curIndex]; + + Node n = getChild(component); + if (n != null) { + n.collectResources(namespace, pathComponents, curIndex + 1, output); + } + } else { + // We reached the desired path. Collect all resources + this.outputResources(namespace, String.join("/", pathComponents), output); + } + } + + private boolean isTerminalNode() { + return contents instanceof IoSupplier; + } + + @SuppressWarnings("unchecked") + private Map getChildren() { + if (!(contents instanceof Map)) { + throw new IllegalStateException("attempting to get children on a terminal node"); + } + return (Map) contents; + } + + void outputResources(String namespace, String path, PackResources.ResourceOutput output) { + if (isTerminalNode()) { + // This is a terminal node. + ResourceLocation location = new ResourceLocation(namespace, path); + output.accept(location, this.createIoSupplier()); + } else { + for (var entry : getChildren().entrySet()) { + entry.getValue().outputResources(namespace, path + "/" + entry.getKey(), output); + } + } + } + + @SuppressWarnings("unchecked") + IoSupplier createIoSupplier() { + if (!isTerminalNode()) { + throw new IllegalStateException("Node has no data"); + } + // Capture the byte array here to avoid capturing the whole node in the lambda + return (IoSupplier) contents; + } + + @Nullable + Node getChild(String name) { + if (isTerminalNode()) { + return null; + } else { + return getChildren().get(name); + } + } + } + + private final Node root = new Node(); + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + + public void addToData(ResourceLocation location, byte[] bytes) { + addToData(location, () -> new ByteArrayInputStream(bytes)); + } + + public void addToData(ResourceLocation location, IoSupplier supplier) { + String[] pathComponents = location.getPath().split("/"); + var lock = this.lock.writeLock(); + lock.lock(); + try { + Node node = root.getChildren().computeIfAbsent(location.getNamespace(), $ -> new Node()); + for (String component : pathComponents) { + node = node.getChildren().computeIfAbsent(component, $ -> new Node()); + } + node.contents = supplier; + } finally { + lock.unlock(); + } + } + + public void clearData() { + var lock = this.lock.writeLock(); + lock.lock(); + try { + root.getChildren().clear(); + } finally { + lock.unlock(); + } + } + + public IoSupplier getResource(ResourceLocation location) { + var lock = this.lock.readLock(); + lock.lock(); + try { + Node node = this.root.getChild(location.getNamespace()); + String[] pathComponents = location.getPath().split("/"); + for (String path : pathComponents) { + if (node == null) { + return null; + } + node = node.getChild(path); + } + if (node == null) { + return null; + } + return node.createIoSupplier(); + } finally { + lock.unlock(); + } + } + + public void listResources(String namespace, String path, PackResources.ResourceOutput resourceOutput) { + var lock = this.lock.readLock(); + lock.lock(); + try { + Node base = this.root.getChild(namespace); + if (base == null) { + return; + } + base.collectResources(namespace, path.split("/"), 0, resourceOutput); + } finally { + lock.unlock(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index fb0b80aa168..c8fac72b802 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -22,7 +22,6 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -30,10 +29,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; -import java.util.Objects; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -46,8 +42,7 @@ public class GTDynamicResourcePack implements PackResources { protected static final ObjectSet CLIENT_DOMAINS = new ObjectOpenHashSet<>(); - @ApiStatus.Internal - public static final ConcurrentMap DATA = new ConcurrentHashMap<>(); + protected static final GTDynamicPackContents CONTENTS = new GTDynamicPackContents(); private final String name; @@ -65,7 +60,7 @@ public GTDynamicResourcePack(String name, Collection domains) { } public static void clearClient() { - DATA.clear(); + CONTENTS.clearData(); } public static void addBlockModel(ResourceLocation loc, JsonElement obj) { @@ -74,7 +69,7 @@ public static void addBlockModel(ResourceLocation loc, JsonElement obj) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeJson(l, null, parent, obj); } - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); } public static void addBlockModel(ResourceLocation loc, Supplier obj) { @@ -87,7 +82,7 @@ public static void addItemModel(ResourceLocation loc, JsonElement obj) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeJson(l, null, parent, obj); } - DATA.put(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); } public static void addItemModel(ResourceLocation loc, Supplier obj) { @@ -100,7 +95,7 @@ public static void addBlockState(ResourceLocation loc, JsonElement stateJson) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeJson(l, null, parent, stateJson); } - DATA.put(l, stateJson.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, stateJson.toString().getBytes(StandardCharsets.UTF_8)); } public static void addBlockState(ResourceLocation loc, Supplier generator) { @@ -113,7 +108,7 @@ public static void addBlockTexture(ResourceLocation loc, byte[] data) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeByteArray(l, null, parent, data); } - DATA.put(l, data); + CONTENTS.addToData(l, data); } public static void addItemTexture(ResourceLocation loc, byte[] data) { @@ -122,7 +117,7 @@ public static void addItemTexture(ResourceLocation loc, byte[] data) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); writeByteArray(l, null, parent, data); } - DATA.put(l, data); + CONTENTS.addToData(l, data); } @ApiStatus.Internal @@ -153,8 +148,7 @@ public IoSupplier getRootResource(String... elements) { @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.CLIENT_RESOURCES) { - if (DATA.containsKey(location)) - return () -> new ByteArrayInputStream(DATA.get(location)); + return CONTENTS.getResource(location); } return null; } @@ -162,15 +156,7 @@ public IoSupplier getResource(PackType type, ResourceLocation locat @Override public void listResources(PackType packType, String namespace, String path, ResourceOutput resourceOutput) { if (packType == PackType.CLIENT_RESOURCES) { - if (!path.endsWith("/")) path += "/"; - final String finalPath = path; - DATA.keySet().stream().filter(Objects::nonNull).filter(loc -> loc.getPath().startsWith(finalPath)) - .forEach((id) -> { - IoSupplier resource = this.getResource(packType, id); - if (resource != null) { - resourceOutput.accept(id, resource); - } - }); + CONTENTS.listResources(namespace, path, resourceOutput); } } From 39493b5acb78d3396097e68cff94c2886282b159 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 1 May 2025 19:36:31 -0600 Subject: [PATCH 004/270] Add special behaviors to the Large Maceration Tower (#2968) --- .../common/data/machines/GCYMMachines.java | 3 +- .../gcym/LargeMacerationTowerMachine.java | 95 +++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 2e25302fc56..8a76ad6f9c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.electric.DistillationTowerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeChemicalBathMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMacerationTowerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMixerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -76,7 +77,7 @@ public static void init() {} IV, LuV, ZPM, UV); public final static MultiblockMachineDefinition LARGE_MACERATION_TOWER = REGISTRATE - .multiblock("large_maceration_tower", WorkableElectricMultiblockMachine::new) + .multiblock("large_maceration_tower", LargeMacerationTowerMachine::new) .langValue("Large Maceration Tower") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java new file mode 100644 index 00000000000..83249671c24 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -0,0 +1,95 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.phys.AABB; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LargeMacerationTowerMachine extends WorkableElectricMultiblockMachine { + + @NotNull + private AABB grindBound = new AABB(BlockPos.ZERO); + @NotNull + private final List handlers = new ArrayList<>(); + + private TickableSubscription hurtSub; + + public LargeMacerationTowerMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public void onStructureFormed() { + super.onStructureFormed(); + updateBounds(); + for (var holder : getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP)) { + if (holder instanceof IItemHandler ih) { + handlers.add(ih); + } + } + hurtSub = subscribeServerTick(this::spinWheels); + } + + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); + unsubscribe(hurtSub); + hurtSub = null; + handlers.clear(); + } + + @Override + public void onUnload() { + super.onUnload(); + unsubscribe(hurtSub); + hurtSub = null; + handlers.clear(); + } + + private void updateBounds() { + var fl = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 1, 1, -1); + var br = RelativeDirection.offsetPos(getPos(), getFrontFacing(), getUpwardsFacing(), isFlipped(), 2, -2, -4); + grindBound = new AABB(fl, br); + } + + private void spinWheels() { + if (isRemote() || getLevel() == null) return; + + List itemEntities = new ArrayList<>(); + for (var entity : getLevel().getEntities(null, grindBound)) { + if (entity instanceof ItemEntity ie) { + itemEntities.add(ie); + } else { + if (recipeLogic.isWorking()) { + entity.hurt(entity.damageSources().cramming(), 2.0f); + } + } + } + + if (handlers.isEmpty()) return; + + for (ItemEntity item : itemEntities) { + if (item.isRemoved()) continue; + for (var holder : handlers) { + item.setItem(ItemHandlerHelper.insertItem(holder, item.getItem(), false)); + if (item.getItem().isEmpty()) { + item.discard(); + break; + } + } + } + } +} From 390de55e7d3fa93d06c15894b259533ca9b977ff Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 3 May 2025 02:47:42 -0600 Subject: [PATCH 005/270] Limit the rate of mob crushing (#3127) --- .../multiblock/electric/gcym/LargeMacerationTowerMachine.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java index 83249671c24..ca3b9877ea9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMacerationTowerMachine.java @@ -67,6 +67,7 @@ private void updateBounds() { private void spinWheels() { if (isRemote() || getLevel() == null) return; + if (getOffsetTimer() % 10 != 0) return; List itemEntities = new ArrayList<>(); for (var entity : getLevel().getEntities(null, grindBound)) { From 51167ac51b3cd284a8518b6c39fb7468289e341e Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Mon, 5 May 2025 04:04:33 -0400 Subject: [PATCH 006/270] Update ModDevGradle (#3138) --- dependencies.gradle | 4 ++-- gradle/libs.versions.toml | 3 +-- gradle/scripts/jars.gradle | 3 ++- gradle/scripts/moddevgradle.gradle | 2 +- gradle/scripts/publishing.gradle | 1 + gradle/scripts/repositories.gradle | 9 ++++----- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 6c41e670394..724563c9f25 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -66,7 +66,7 @@ dependencies { // Standard runtime mods // modRuntimeOnly(forge.jade) modRuntimeOnly(forge.ae2) - modRuntimeOnly(forge.kotlinforforge) + modRuntimeOnly(forge.spark) // Runtime Recipe Viewers - uncomment whichever one you want to use // modRuntimeOnly(forge.emi) @@ -98,7 +98,7 @@ dependencies { modExtraRuntimeOnly(forge.gamestages) modExtraRuntimeOnly(forge.bookshelf) - modExtraRuntimeOnly(forge.spark) + modExtraRuntimeOnly(forge.kotlinforforge) modExtraRuntimeOnly(forge.observable) ////////////////////////// diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9f55bfd97d5..5e34201eb9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,8 +5,7 @@ minecraftForge = "1.20.1-47.3.0" parchment = "2023.09.03" # https://parchmentmc.org/docs/getting-started shadow = "8.3.5" spotless = "7.0.2" -# TODO: Update to stable MDG when https://github.com/neoforged/ModDevGradle/issues/227 is fixed -modDevGradle = "2.0.64-beta" +modDevGradle = "2.0.86" machete = "2.0.1" lombok = "8.11" jetbrains-annotations = "26.0.1" diff --git a/gradle/scripts/jars.gradle b/gradle/scripts/jars.gradle index a422235be75..aaf50160752 100644 --- a/gradle/scripts/jars.gradle +++ b/gradle/scripts/jars.gradle @@ -1,4 +1,5 @@ tasks.register('slimJar', Jar) { + dependsOn("classes") archiveClassifier = "dev-slim" from sourceSets.main.output } @@ -9,7 +10,7 @@ obfuscation { } } -// Add slim and sources jar to components.java +// Add sources jar to components.java java { artifacts.archives(reobfSlimJar) withSourcesJar() diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index 91f5a0d9426..aac87531c48 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -58,7 +58,7 @@ legacyForge { server { server() sourceSet = sourceSets.main - ideName = "Server" + ideName = "Clean Server" gameDirectory.set(file('run/server')) programArgument '--nogui' diff --git a/gradle/scripts/publishing.gradle b/gradle/scripts/publishing.gradle index 8e99be43ea9..96bff81ae7d 100644 --- a/gradle/scripts/publishing.gradle +++ b/gradle/scripts/publishing.gradle @@ -2,6 +2,7 @@ publishing { publications { mavenJava(MavenPublication) { artifactId = base.archivesName.get() + artifact(reobfSlimJar) from components.java } } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index da520853d14..28fd0cadf89 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -2,11 +2,6 @@ repositories { mavenLocal() mavenCentral() - maven { // KubeJS and Rhino - name = "Saps.dev Maven" - url = "https://maven.saps.dev/minecraft" - } - maven { // JEI name = "Jared's Maven" url = "https://maven.blamejared.com/" @@ -22,6 +17,10 @@ repositories { url = "https://maven.firstdarkdev.xyz/snapshots" } + exclusiveContent { // KubeJS and Rhino + forRepository { maven { url = "https://maven.latvian.dev/releases" } } + filter { includeGroup("dev.latvian.mods")} + } exclusiveContent { // FTB mods forRepository { maven { url = "https://maven.ftb.dev/releases" } } filter { includeGroup("dev.ftb.mods") } From 412dcd9388109da4222bc35fa376cbcaff8ea351 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 5 May 2025 17:08:46 +0300 Subject: [PATCH 007/270] Clean up tag generation (#3093) --- .../resources/assets/gtceu/lang/en_ud.json | 5 + .../resources/assets/gtceu/lang/en_us.json | 5 + .../p2p_attunements/fluid_p2p_tunnel.json | 434 ------------------ .../forge/tags/blocks/storage_blocks.json | 7 - .../data/forge/tags/items/coral_blocks.json | 12 +- .../forge/tags/items/coral_blocks/alive.json | 9 + .../forge/tags/items/coral_blocks/dead.json | 9 + .../data/forge/tags/items/coral_fans.json | 6 + .../forge/tags/items/coral_fans/alive.json | 9 + .../forge/tags/items/coral_fans/dead.json | 9 + .../data/forge/tags/items/coral_plants.json | 6 + .../forge/tags/items/coral_plants/alive.json | 9 + .../forge/tags/items/coral_plants/dead.json | 9 + .../data/forge/tags/items/corals.json | 22 +- .../data/forge/tags/items/corals/alive.json | 6 + .../data/forge/tags/items/corals/dead.json | 6 + .../data/forge/tags/items/dyes/brown.json | 3 +- .../registrate/forge/GTFluidBuilder.java | 2 - .../gregtechceu/gtceu/core/MixinHelpers.java | 70 ++- .../gtceu/data/GregTechDatagen.java | 15 +- .../gtceu/data/recipe/CustomTags.java | 20 +- .../data/recipe/misc/MiscRecipeLoader.java | 2 + .../gtceu/data/tags/BlockTagLoader.java | 49 +- .../gtceu/data/tags/EntityTypeTagLoader.java | 29 +- .../gtceu/data/tags/FluidTagLoader.java | 21 +- .../gtceu/data/tags/ItemTagLoader.java | 128 +++--- .../gtceu/data/tags/TagsHandler.java | 27 -- 27 files changed, 258 insertions(+), 671 deletions(-) delete mode 100644 src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json delete mode 100644 src/generated/resources/data/forge/tags/blocks/storage_blocks.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_blocks/alive.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_blocks/dead.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_fans.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_fans/alive.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_fans/dead.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_plants.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_plants/alive.json create mode 100644 src/generated/resources/data/forge/tags/items/coral_plants/dead.json create mode 100644 src/generated/resources/data/forge/tags/items/corals/alive.json create mode 100644 src/generated/resources/data/forge/tags/items/corals/dead.json diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 2c66ba2c1ad..5c9139b008c 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -4643,9 +4643,14 @@ "itemGroup.gtceu.material_item": "sɯǝʇI ןɐıɹǝʇɐW nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.material_pipe": "sǝdıԀ ןɐıɹǝʇɐW nƎƆɥɔǝ⟘bǝɹ⅁", "itemGroup.gtceu.tool": "sןoo⟘ nƎƆɥɔǝ⟘bǝɹ⅁", + "ldlib.gui.editor.group.widget.gtm_container": "sʇǝbpıM ɹǝuıɐʇuoƆ W⟘⅁", "ldlib.gui.editor.register.editor.gtceu.mui": "ʇɔǝظoɹԀ I∩ ǝuıɥɔɐW", "ldlib.gui.editor.register.editor.gtceu.rtui": "ʇɔǝظoɹԀ I∩ ǝdʎ⟘ǝdıɔǝᴚ", "ldlib.gui.editor.register.editor.gtceu.template_tab": "sǝʇɐןdɯǝʇ", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "ʇoןS pınןℲ W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "ʇoןS ɯǝʇI W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "ʇoןS pınןℲ ɯoʇuɐɥԀ W⟘⅁", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "ʇoןS ɯǝʇI ɯoʇuɐɥԀ W⟘⅁", "mataarmor.hud.supply_mode": "%s :ǝpoW ʎןddnS", "material.gtceu.acetic_acid": "pıɔⱯ ɔıʇǝɔⱯ", "material.gtceu.acetic_anhydride": "ǝpıɹpʎɥuⱯ ɔıʇǝɔⱯ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index e4123b3e338..55d3cf59443 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -4643,9 +4643,14 @@ "itemGroup.gtceu.material_item": "GregTechCEu Material Items", "itemGroup.gtceu.material_pipe": "GregTechCEu Material Pipes", "itemGroup.gtceu.tool": "GregTechCEu Tools", + "ldlib.gui.editor.group.widget.gtm_container": "GTM Container Widgets", "ldlib.gui.editor.register.editor.gtceu.mui": "Machine UI Project", "ldlib.gui.editor.register.editor.gtceu.rtui": "RecipeType UI Project", "ldlib.gui.editor.register.editor.gtceu.template_tab": "templates", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM Fluid Slot", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM Item Slot", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM Phantom Fluid Slot", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM Phantom Item Slot", "mataarmor.hud.supply_mode": "Supply Mode: %s", "material.gtceu.acetic_acid": "Acetic Acid", "material.gtceu.acetic_anhydride": "Acetic Anhydride", diff --git a/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json b/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json deleted file mode 100644 index 5c0936a1dee..00000000000 --- a/src/generated/resources/data/ae2/tags/items/p2p_attunements/fluid_p2p_tunnel.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "values": [ - "gtceu:aluminium_bucket", - "gtceu:americium_bucket", - "gtceu:americium_plasma_bucket", - "gtceu:antimony_bucket", - "gtceu:argon_bucket", - "gtceu:argon_plasma_bucket", - "gtceu:arsenic_bucket", - "gtceu:beryllium_bucket", - "gtceu:bismuth_bucket", - "gtceu:bromine_bucket", - "gtceu:carbon_bucket", - "gtceu:cerium_bucket", - "gtceu:chlorine_bucket", - "gtceu:chromium_bucket", - "gtceu:cobalt_bucket", - "gtceu:copper_bucket", - "gtceu:darmstadtium_bucket", - "gtceu:deuterium_bucket", - "gtceu:europium_bucket", - "gtceu:fluorine_bucket", - "gtceu:gallium_bucket", - "gtceu:gold_bucket", - "gtceu:hydrogen_bucket", - "gtceu:helium_bucket", - "gtceu:liquid_helium_bucket", - "gtceu:helium_plasma_bucket", - "gtceu:helium_3_bucket", - "gtceu:indium_bucket", - "gtceu:iridium_bucket", - "gtceu:iron_bucket", - "gtceu:iron_plasma_bucket", - "gtceu:krypton_bucket", - "gtceu:lanthanum_bucket", - "gtceu:lead_bucket", - "gtceu:lithium_bucket", - "gtceu:lutetium_bucket", - "gtceu:magnesium_bucket", - "gtceu:manganese_bucket", - "gtceu:mercury_bucket", - "gtceu:molybdenum_bucket", - "gtceu:neodymium_bucket", - "gtceu:neon_bucket", - "gtceu:nickel_bucket", - "gtceu:nickel_plasma_bucket", - "gtceu:niobium_bucket", - "gtceu:nitrogen_bucket", - "gtceu:nitrogen_plasma_bucket", - "gtceu:osmium_bucket", - "gtceu:oxygen_bucket", - "gtceu:liquid_oxygen_bucket", - "gtceu:oxygen_plasma_bucket", - "gtceu:palladium_bucket", - "gtceu:platinum_bucket", - "gtceu:plutonium_bucket", - "gtceu:plutonium_241_bucket", - "gtceu:potassium_bucket", - "gtceu:radon_bucket", - "gtceu:rhodium_bucket", - "gtceu:ruthenium_bucket", - "gtceu:samarium_bucket", - "gtceu:silicon_bucket", - "gtceu:silver_bucket", - "gtceu:tantalum_bucket", - "gtceu:thorium_bucket", - "gtceu:tin_bucket", - "gtceu:tin_plasma_bucket", - "gtceu:titanium_bucket", - "gtceu:tritium_bucket", - "gtceu:tungsten_bucket", - "gtceu:uranium_bucket", - "gtceu:uranium_235_bucket", - "gtceu:vanadium_bucket", - "gtceu:xenon_bucket", - "gtceu:yttrium_bucket", - "gtceu:zinc_bucket", - "gtceu:naquadah_bucket", - "gtceu:enriched_naquadah_bucket", - "gtceu:naquadria_bucket", - "gtceu:neutronium_bucket", - "gtceu:tritanium_bucket", - "gtceu:duranium_bucket", - "gtceu:trinium_bucket", - "gtceu:annealed_copper_bucket", - "gtceu:battery_alloy_bucket", - "gtceu:brass_bucket", - "gtceu:bronze_bucket", - "gtceu:cupronickel_bucket", - "gtceu:electrum_bucket", - "gtceu:ice_bucket", - "gtceu:invar_bucket", - "gtceu:kanthal_bucket", - "gtceu:molten_kanthal_bucket", - "gtceu:magnalium_bucket", - "gtceu:nichrome_bucket", - "gtceu:molten_nichrome_bucket", - "gtceu:niobium_nitride_bucket", - "gtceu:molten_niobium_nitride_bucket", - "gtceu:niobium_titanium_bucket", - "gtceu:molten_niobium_titanium_bucket", - "gtceu:sterling_silver_bucket", - "gtceu:molten_sterling_silver_bucket", - "gtceu:rose_gold_bucket", - "gtceu:molten_rose_gold_bucket", - "gtceu:black_bronze_bucket", - "gtceu:molten_black_bronze_bucket", - "gtceu:bismuth_bronze_bucket", - "gtceu:molten_bismuth_bronze_bucket", - "gtceu:rtm_alloy_bucket", - "gtceu:molten_rtm_alloy_bucket", - "gtceu:ruridit_bucket", - "gtceu:molten_ruridit_bucket", - "gtceu:soldering_alloy_bucket", - "gtceu:stainless_steel_bucket", - "gtceu:molten_stainless_steel_bucket", - "gtceu:steel_bucket", - "gtceu:tin_alloy_bucket", - "gtceu:ultimet_bucket", - "gtceu:molten_ultimet_bucket", - "gtceu:vanadium_gallium_bucket", - "gtceu:molten_vanadium_gallium_bucket", - "gtceu:wrought_iron_bucket", - "gtceu:yttrium_barium_cuprate_bucket", - "gtceu:molten_yttrium_barium_cuprate_bucket", - "gtceu:osmiridium_bucket", - "gtceu:molten_osmiridium_bucket", - "gtceu:gallium_arsenide_bucket", - "gtceu:molten_gallium_arsenide_bucket", - "gtceu:indium_gallium_phosphide_bucket", - "gtceu:nickel_zinc_ferrite_bucket", - "gtceu:sodium_persulfate_bucket", - "gtceu:tungsten_carbide_bucket", - "gtceu:molten_tungsten_carbide_bucket", - "gtceu:carbon_dioxide_bucket", - "gtceu:titanium_tetrachloride_bucket", - "gtceu:nitrogen_dioxide_bucket", - "gtceu:hydrogen_sulfide_bucket", - "gtceu:nitric_acid_bucket", - "gtceu:sulfuric_acid_bucket", - "gtceu:phosphoric_acid_bucket", - "gtceu:sulfur_trioxide_bucket", - "gtceu:sulfur_dioxide_bucket", - "gtceu:carbon_monoxide_bucket", - "gtceu:hypochlorous_acid_bucket", - "gtceu:ammonia_bucket", - "gtceu:hydrofluoric_acid_bucket", - "gtceu:nitric_oxide_bucket", - "gtceu:iron_iii_chloride_bucket", - "gtceu:iron_ii_chloride_bucket", - "gtceu:uranium_hexafluoride_bucket", - "gtceu:enriched_uranium_hexafluoride_bucket", - "gtceu:depleted_uranium_hexafluoride_bucket", - "gtceu:nitrous_oxide_bucket", - "gtceu:hydrochloric_acid_bucket", - "gtceu:steam_bucket", - "gtceu:distilled_water_bucket", - "gtceu:sodium_potassium_bucket", - "gtceu:manganese_phosphide_bucket", - "gtceu:molten_manganese_phosphide_bucket", - "gtceu:magnesium_diboride_bucket", - "gtceu:molten_magnesium_diboride_bucket", - "gtceu:mercury_barium_calcium_cuprate_bucket", - "gtceu:molten_mercury_barium_calcium_cuprate_bucket", - "gtceu:uranium_triplatinum_bucket", - "gtceu:molten_uranium_triplatinum_bucket", - "gtceu:samarium_iron_arsenic_oxide_bucket", - "gtceu:molten_samarium_iron_arsenic_oxide_bucket", - "gtceu:indium_tin_barium_titanium_cuprate_bucket", - "gtceu:molten_indium_tin_barium_titanium_cuprate_bucket", - "gtceu:uranium_rhodium_dinaquadide_bucket", - "gtceu:molten_uranium_rhodium_dinaquadide_bucket", - "gtceu:enriched_naquadah_trinium_europium_duranide_bucket", - "gtceu:molten_enriched_naquadah_trinium_europium_duranide_bucket", - "gtceu:ruthenium_trinium_americium_neutronate_bucket", - "gtceu:molten_ruthenium_trinium_americium_neutronate_bucket", - "gtceu:rhodium_sulfate_bucket", - "gtceu:fluoroantimonic_acid_bucket", - "gtceu:hydrogen_cyanide_bucket", - "gtceu:formic_acid_bucket", - "gtceu:formaldehyde_bucket", - "gtceu:glycolonitrile_bucket", - "gtceu:diethylenetriamine_pentaacetonitrile_bucket", - "gtceu:hydrogen_peroxide_bucket", - "gtceu:silicone_rubber_bucket", - "gtceu:nitrobenzene_bucket", - "gtceu:styrene_butadiene_rubber_bucket", - "gtceu:polyvinyl_acetate_bucket", - "gtceu:reinforced_epoxy_resin_bucket", - "gtceu:polyvinyl_chloride_bucket", - "gtceu:polyphenylene_sulfide_bucket", - "gtceu:glyceryl_trinitrate_bucket", - "gtceu:polybenzimidazole_bucket", - "gtceu:polyethylene_bucket", - "gtceu:epoxy_bucket", - "gtceu:polycaprolactam_bucket", - "gtceu:polytetrafluoroethylene_bucket", - "gtceu:methane_bucket", - "gtceu:epichlorohydrin_bucket", - "gtceu:monochloramine_bucket", - "gtceu:chloroform_bucket", - "gtceu:cumene_bucket", - "gtceu:tetrafluoroethylene_bucket", - "gtceu:chloromethane_bucket", - "gtceu:allyl_chloride_bucket", - "gtceu:isoprene_bucket", - "gtceu:propane_bucket", - "gtceu:propene_bucket", - "gtceu:ethane_bucket", - "gtceu:butene_bucket", - "gtceu:butane_bucket", - "gtceu:dissolved_calcium_acetate_bucket", - "gtceu:vinyl_acetate_bucket", - "gtceu:methyl_acetate_bucket", - "gtceu:ethenone_bucket", - "gtceu:tetranitromethane_bucket", - "gtceu:dimethylamine_bucket", - "gtceu:dimethylhydrazine_bucket", - "gtceu:dinitrogen_tetroxide_bucket", - "gtceu:dimethyldichlorosilane_bucket", - "gtceu:styrene_bucket", - "gtceu:butadiene_bucket", - "gtceu:dichlorobenzene_bucket", - "gtceu:acetic_acid_bucket", - "gtceu:phenol_bucket", - "gtceu:bisphenol_a_bucket", - "gtceu:vinyl_chloride_bucket", - "gtceu:ethylene_bucket", - "gtceu:benzene_bucket", - "gtceu:acetone_bucket", - "gtceu:glycerol_bucket", - "gtceu:methanol_bucket", - "gtceu:ethanol_bucket", - "gtceu:toluene_bucket", - "gtceu:diphenyl_isophthalate_bucket", - "gtceu:phthalic_acid_bucket", - "gtceu:dimethylbenzene_bucket", - "gtceu:diaminobenzidine_bucket", - "gtceu:dichlorobenzidine_bucket", - "gtceu:nitrochlorobenzene_bucket", - "gtceu:chlorobenzene_bucket", - "gtceu:octane_bucket", - "gtceu:ethyl_tertbutyl_ether_bucket", - "gtceu:ethylbenzene_bucket", - "gtceu:naphthalene_bucket", - "gtceu:rubber_bucket", - "gtceu:cyclohexane_bucket", - "gtceu:nitrosyl_chloride_bucket", - "gtceu:butyraldehyde_bucket", - "gtceu:polyvinyl_butyral_bucket", - "gtceu:polychlorinated_biphenyl_bucket", - "gtceu:acetic_anhydride_bucket", - "gtceu:aminophenol_bucket", - "gtceu:ammonium_formate_bucket", - "gtceu:formamide_bucket", - "gtceu:wood_gas_bucket", - "gtceu:wood_vinegar_bucket", - "gtceu:wood_tar_bucket", - "gtceu:charcoal_byproducts_bucket", - "gtceu:biomass_bucket", - "gtceu:bio_diesel_bucket", - "gtceu:fermented_biomass_bucket", - "gtceu:creosote_bucket", - "gtceu:diesel_bucket", - "gtceu:rocket_fuel_bucket", - "gtceu:glue_bucket", - "gtceu:lubricant_bucket", - "gtceu:mc_guffium_239_bucket", - "gtceu:indium_concentrate_bucket", - "gtceu:seed_oil_bucket", - "gtceu:drilling_fluid_bucket", - "gtceu:construction_foam_bucket", - "gtceu:sulfuric_heavy_fuel_bucket", - "gtceu:heavy_fuel_bucket", - "gtceu:lightly_hydro_cracked_heavy_fuel_bucket", - "gtceu:severely_hydro_cracked_heavy_fuel_bucket", - "gtceu:lightly_steam_cracked_heavy_fuel_bucket", - "gtceu:severely_steam_cracked_heavy_fuel_bucket", - "gtceu:sulfuric_light_fuel_bucket", - "gtceu:light_fuel_bucket", - "gtceu:lightly_hydro_cracked_light_fuel_bucket", - "gtceu:severely_hydro_cracked_light_fuel_bucket", - "gtceu:lightly_steam_cracked_light_fuel_bucket", - "gtceu:severely_steam_cracked_light_fuel_bucket", - "gtceu:sulfuric_naphtha_bucket", - "gtceu:naphtha_bucket", - "gtceu:lightly_hydro_cracked_naphtha_bucket", - "gtceu:severely_hydro_cracked_naphtha_bucket", - "gtceu:lightly_steam_cracked_naphtha_bucket", - "gtceu:severely_steam_cracked_naphtha_bucket", - "gtceu:sulfuric_gas_bucket", - "gtceu:refinery_gas_bucket", - "gtceu:lightly_hydro_cracked_gas_bucket", - "gtceu:severely_hydro_cracked_gas_bucket", - "gtceu:lightly_steam_cracked_gas_bucket", - "gtceu:severely_steam_cracked_gas_bucket", - "gtceu:hydro_cracked_ethane_bucket", - "gtceu:hydro_cracked_ethylene_bucket", - "gtceu:hydro_cracked_propene_bucket", - "gtceu:hydro_cracked_propane_bucket", - "gtceu:hydro_cracked_butane_bucket", - "gtceu:hydro_cracked_butene_bucket", - "gtceu:hydro_cracked_butadiene_bucket", - "gtceu:steam_cracked_ethane_bucket", - "gtceu:steam_cracked_ethylene_bucket", - "gtceu:steam_cracked_propene_bucket", - "gtceu:steam_cracked_propane_bucket", - "gtceu:steam_cracked_butane_bucket", - "gtceu:steam_cracked_butene_bucket", - "gtceu:steam_cracked_butadiene_bucket", - "gtceu:lpg_bucket", - "gtceu:raw_growth_medium_bucket", - "gtceu:sterilized_growth_medium_bucket", - "gtceu:oil_bucket", - "gtceu:oil_heavy_bucket", - "gtceu:oil_medium_bucket", - "gtceu:oil_light_bucket", - "gtceu:natural_gas_bucket", - "gtceu:bacteria_bucket", - "gtceu:bacterial_sludge_bucket", - "gtceu:enriched_bacterial_sludge_bucket", - "gtceu:mutagen_bucket", - "gtceu:gelatin_mixture_bucket", - "gtceu:raw_gasoline_bucket", - "gtceu:gasoline_bucket", - "gtceu:high_octane_gasoline_bucket", - "gtceu:coal_gas_bucket", - "gtceu:coal_tar_bucket", - "gtceu:glowstone_bucket", - "gtceu:cetane_boosted_diesel_bucket", - "gtceu:fish_oil_bucket", - "gtceu:ruby_slurry_bucket", - "gtceu:sapphire_slurry_bucket", - "gtceu:green_sapphire_slurry_bucket", - "gtceu:black_dye_bucket", - "gtceu:red_dye_bucket", - "gtceu:green_dye_bucket", - "gtceu:brown_dye_bucket", - "gtceu:blue_dye_bucket", - "gtceu:purple_dye_bucket", - "gtceu:cyan_dye_bucket", - "gtceu:light_gray_dye_bucket", - "gtceu:gray_dye_bucket", - "gtceu:pink_dye_bucket", - "gtceu:lime_dye_bucket", - "gtceu:yellow_dye_bucket", - "gtceu:light_blue_dye_bucket", - "gtceu:magenta_dye_bucket", - "gtceu:orange_dye_bucket", - "gtceu:white_dye_bucket", - "gtceu:impure_enriched_naquadah_solution_bucket", - "gtceu:enriched_naquadah_solution_bucket", - "gtceu:acidic_enriched_naquadah_solution_bucket", - "gtceu:enriched_naquadah_waste_bucket", - "gtceu:impure_naquadria_solution_bucket", - "gtceu:naquadria_solution_bucket", - "gtceu:acidic_naquadria_solution_bucket", - "gtceu:naquadria_waste_bucket", - "gtceu:uu_matter_bucket", - "gtceu:pcb_coolant_bucket", - "gtceu:wax_bucket", - "gtceu:glass_bucket", - "gtceu:salt_water_bucket", - "gtceu:blaze_bucket", - "gtceu:black_steel_bucket", - "gtceu:molten_black_steel_bucket", - "gtceu:damascus_steel_bucket", - "gtceu:tungsten_steel_bucket", - "gtceu:molten_tungsten_steel_bucket", - "gtceu:cobalt_brass_bucket", - "gtceu:concrete_bucket", - "gtceu:vanadium_steel_bucket", - "gtceu:molten_vanadium_steel_bucket", - "gtceu:potin_bucket", - "gtceu:borosilicate_glass_bucket", - "gtceu:naquadah_alloy_bucket", - "gtceu:molten_naquadah_alloy_bucket", - "gtceu:sulfuric_nickel_solution_bucket", - "gtceu:sulfuric_copper_solution_bucket", - "gtceu:lead_zinc_solution_bucket", - "gtceu:nitration_mixture_bucket", - "gtceu:diluted_sulfuric_acid_bucket", - "gtceu:diluted_hydrochloric_acid_bucket", - "gtceu:air_bucket", - "gtceu:liquid_air_bucket", - "gtceu:nether_air_bucket", - "gtceu:liquid_nether_air_bucket", - "gtceu:ender_air_bucket", - "gtceu:liquid_ender_air_bucket", - "gtceu:aqua_regia_bucket", - "gtceu:acidic_osmium_solution_bucket", - "gtceu:rhodium_plated_palladium_bucket", - "gtceu:molten_rhodium_plated_palladium_bucket", - "gtceu:redstone_bucket", - "gtceu:dichloroethane_bucket", - "gtceu:diethylenetriamine_bucket", - "gtceu:red_steel_bucket", - "gtceu:molten_red_steel_bucket", - "gtceu:blue_steel_bucket", - "gtceu:molten_blue_steel_bucket", - "gtceu:hssg_bucket", - "gtceu:molten_hssg_bucket", - "gtceu:red_alloy_bucket", - "gtceu:hsse_bucket", - "gtceu:molten_hsse_bucket", - "gtceu:hsss_bucket", - "gtceu:molten_hsss_bucket", - "gtceu:blue_alloy_bucket", - "gtceu:tantalum_carbide_bucket", - "gtceu:molten_tantalum_carbide_bucket", - "gtceu:hsla_steel_bucket", - "gtceu:molten_hsla_steel_bucket", - "gtceu:molybdenum_disilicide_bucket", - "gtceu:molten_molybdenum_disilicide_bucket", - "gtceu:zeron_100_bucket", - "gtceu:molten_zeron_100_bucket", - "gtceu:watertight_steel_bucket", - "gtceu:molten_watertight_steel_bucket", - "gtceu:incoloy_ma_956_bucket", - "gtceu:molten_incoloy_ma_956_bucket", - "gtceu:maraging_steel_300_bucket", - "gtceu:molten_maraging_steel_300_bucket", - "gtceu:hastelloy_x_bucket", - "gtceu:molten_hastelloy_x_bucket", - "gtceu:stellite_100_bucket", - "gtceu:molten_stellite_100_bucket", - "gtceu:titanium_carbide_bucket", - "gtceu:molten_titanium_carbide_bucket", - "gtceu:titanium_tungsten_carbide_bucket", - "gtceu:molten_titanium_tungsten_carbide_bucket", - "gtceu:hastelloy_c_276_bucket", - "gtceu:molten_hastelloy_c_276_bucket" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json deleted file mode 100644 index eca1dec6f58..00000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "values": [ - "minecraft:nether_bricks", - "gtceu:firebricks", - "gtceu:coke_oven_bricks" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks.json b/src/generated/resources/data/forge/tags/items/coral_blocks.json index d097daacfec..183630c7a54 100644 --- a/src/generated/resources/data/forge/tags/items/coral_blocks.json +++ b/src/generated/resources/data/forge/tags/items/coral_blocks.json @@ -1,14 +1,6 @@ { "values": [ - "minecraft:brain_coral_block", - "minecraft:bubble_coral_block", - "minecraft:fire_coral_block", - "minecraft:tube_coral_block", - "minecraft:horn_coral_block", - "minecraft:dead_brain_coral_block", - "minecraft:dead_bubble_coral_block", - "minecraft:dead_fire_coral_block", - "minecraft:dead_tube_coral_block", - "minecraft:dead_horn_coral_block" + "#forge:coral_blocks/alive", + "#forge:coral_blocks/dead" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json b/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json new file mode 100644 index 00000000000..cc58d63e8a8 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_blocks/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral_block", + "minecraft:bubble_coral_block", + "minecraft:fire_coral_block", + "minecraft:tube_coral_block", + "minecraft:horn_coral_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json b/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json new file mode 100644 index 00000000000..ba4a6a5c288 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_blocks/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral_block", + "minecraft:dead_bubble_coral_block", + "minecraft:dead_fire_coral_block", + "minecraft:dead_tube_coral_block", + "minecraft:dead_horn_coral_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans.json b/src/generated/resources/data/forge/tags/items/coral_fans.json new file mode 100644 index 00000000000..3f162e4a6e7 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_fans/alive", + "#forge:coral_fans/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans/alive.json b/src/generated/resources/data/forge/tags/items/coral_fans/alive.json new file mode 100644 index 00000000000..c086d5831c0 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral_fan", + "minecraft:bubble_coral_fan", + "minecraft:fire_coral_fan", + "minecraft:tube_coral_fan", + "minecraft:horn_coral_fan" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_fans/dead.json b/src/generated/resources/data/forge/tags/items/coral_fans/dead.json new file mode 100644 index 00000000000..8f3b0417d95 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_fans/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral_fan", + "minecraft:dead_bubble_coral_fan", + "minecraft:dead_fire_coral_fan", + "minecraft:dead_tube_coral_fan", + "minecraft:dead_horn_coral_fan" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants.json b/src/generated/resources/data/forge/tags/items/coral_plants.json new file mode 100644 index 00000000000..b24cd69a99c --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/alive", + "#forge:coral_plants/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants/alive.json b/src/generated/resources/data/forge/tags/items/coral_plants/alive.json new file mode 100644 index 00000000000..4d7201a2dc7 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants/alive.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:brain_coral", + "minecraft:bubble_coral", + "minecraft:fire_coral", + "minecraft:tube_coral", + "minecraft:horn_coral" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/coral_plants/dead.json b/src/generated/resources/data/forge/tags/items/coral_plants/dead.json new file mode 100644 index 00000000000..a5b646ea73b --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/coral_plants/dead.json @@ -0,0 +1,9 @@ +{ + "values": [ + "minecraft:dead_brain_coral", + "minecraft:dead_bubble_coral", + "minecraft:dead_fire_coral", + "minecraft:dead_tube_coral", + "minecraft:dead_horn_coral" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals.json b/src/generated/resources/data/forge/tags/items/corals.json index 4a6070e6908..7895440894f 100644 --- a/src/generated/resources/data/forge/tags/items/corals.json +++ b/src/generated/resources/data/forge/tags/items/corals.json @@ -1,24 +1,6 @@ { "values": [ - "minecraft:brain_coral", - "minecraft:bubble_coral", - "minecraft:fire_coral", - "minecraft:tube_coral", - "minecraft:horn_coral", - "minecraft:dead_brain_coral", - "minecraft:dead_bubble_coral", - "minecraft:dead_fire_coral", - "minecraft:dead_tube_coral", - "minecraft:dead_horn_coral", - "minecraft:brain_coral_fan", - "minecraft:bubble_coral_fan", - "minecraft:fire_coral_fan", - "minecraft:tube_coral_fan", - "minecraft:horn_coral_fan", - "minecraft:dead_brain_coral_fan", - "minecraft:dead_bubble_coral_fan", - "minecraft:dead_fire_coral_fan", - "minecraft:dead_tube_coral_fan", - "minecraft:dead_horn_coral_fan" + "#forge:corals/alive", + "#forge:corals/dead" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals/alive.json b/src/generated/resources/data/forge/tags/items/corals/alive.json new file mode 100644 index 00000000000..4ca160aa805 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/corals/alive.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/alive", + "#forge:coral_fans/alive" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/corals/dead.json b/src/generated/resources/data/forge/tags/items/corals/dead.json new file mode 100644 index 00000000000..73f047a45a6 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/corals/dead.json @@ -0,0 +1,6 @@ +{ + "values": [ + "#forge:coral_plants/dead", + "#forge:coral_fans/dead" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dyes/brown.json b/src/generated/resources/data/forge/tags/items/dyes/brown.json index 679f0c978bc..bdc8afe819d 100644 --- a/src/generated/resources/data/forge/tags/items/dyes/brown.json +++ b/src/generated/resources/data/forge/tags/items/dyes/brown.json @@ -1,6 +1,5 @@ { "values": [ - "gtceu:chemical_brown_dye", - "gtceu:metal_mixture_dust" + "gtceu:chemical_brown_dye" ] } \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java index 3de95d64afd..aad6b326f13 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java @@ -13,7 +13,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; -import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Items; @@ -239,7 +238,6 @@ public ItemBuilder> bucket() { return getOwner().item(this, bucketName, p -> new GTBucketItem(this.source, p, this.material, this.langKey)) .properties(p -> p.craftRemainder(Items.BUCKET).stacksTo(1)) - .tag(ItemTags.create(new ResourceLocation("ae2", "p2p_attunements/fluid_p2p_tunnel"))) .color(() -> () -> GTBucketItem::color) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .model(NonNullBiConsumer.noop()) diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 844df93d52a..11843377c97 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.core; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -34,6 +35,7 @@ import net.minecraft.tags.TagLoader; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; @@ -89,6 +91,28 @@ public static void generateGTDynamicTags(Map new ArrayList<>()).add(entry); + } + } } else if (registry == BuiltInRegistries.BLOCK) { GTMaterialBlocks.MATERIAL_BLOCKS.rowMap().forEach((prefix, map) -> { MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); @@ -130,29 +154,31 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) - .add(entry); - if (fluid instanceof GTFluid gtFluid) { - tagMap.computeIfAbsent(gtFluid.getState().getTagKey().location(), - path -> new ArrayList<>()) - .add(entry); - } else { - ResourceLocation fluidKeyTag = key.getDefaultFluidState().getTagKey().location(); - tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) - .add(entry); - } - } + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(fluid); + TagLoader.EntryWithSource entry = new TagLoader.EntryWithSource(TagEntry.element(fluidId), + GTValues.CUSTOM_TAG_SOURCE); + tagMap.computeIfAbsent(TagUtil.createFluidTag(fluidId.getPath()).location(), + path -> new ArrayList<>()) + .add(entry); + if (fluid instanceof GTFluid gtFluid) { + tagMap.computeIfAbsent(gtFluid.getState().getTagKey().location(), + path -> new ArrayList<>()) + .add(entry); + } else { + ResourceLocation fluidKeyTag = key.getDefaultFluidState().getTagKey().location(); + tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) + .add(entry); } } if (material.hasProperty(PropertyKey.ALLOY_BLAST)) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java index 3552b0994e9..59136571878 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java @@ -2,22 +2,17 @@ import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.data.lang.LangHandler; -import com.gregtechceu.gtceu.data.tags.TagsHandler; +import com.gregtechceu.gtceu.data.tags.*; import com.tterrag.registrate.providers.ProviderType; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote GregTechDatagen - */ public class GregTechDatagen { public static void init() { - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, TagsHandler::initItem); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, TagsHandler::initBlock); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, TagsHandler::initFluid); - GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, TagsHandler::initEntity); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, BlockTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, ItemTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, FluidTagLoader::init); + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ENTITY_TAGS, EntityTypeTagLoader::init); GTRegistration.REGISTRATE.addDataGenerator(ProviderType.LANG, LangHandler::init); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 5af049b9ab3..d9a08b73320 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -19,6 +19,24 @@ public class CustomTags { public static final TagKey CONCRETE_POWDER_ITEM = TagUtil.createItemTag("concrete_powders"); public static final TagKey DOUGHS = TagUtil.createItemTag("dough"); + // Why did I put them all here? Why not? Science isn't about why, it's about why NOT! + // Why is so much of our science dangerous? Why don't you marry safe science if you love it so much!? + // IN FACT, WHY NOT INVENT A SAFETY DOOR THAT WON'T HIT YOU ON THE BUTT ON THE WAY OUT BECAUSE YOU'RE FIRED!!! + // Not you test subject, you're doing fine. + // YES, YOU. BOX. YOUR STUFF. OUT THE FRONT DOOR. PARKING LOT. CAR. GOODBYE! + public static final TagKey ALIVE_CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks/alive"); + public static final TagKey DEAD_CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks/dead"); + public static final TagKey CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks"); + public static final TagKey ALIVE_CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants/alive"); + public static final TagKey DEAD_CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants/dead"); + public static final TagKey CORAL_PLANT_ITEMS = TagUtil.createItemTag("coral_plants"); + public static final TagKey ALIVE_CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans/alive"); + public static final TagKey DEAD_CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans/dead"); + public static final TagKey CORAL_FAN_ITEMS = TagUtil.createItemTag("coral_fans"); + public static final TagKey ALIVE_CORAL_ITEMS = TagUtil.createItemTag("corals/alive"); + public static final TagKey DEAD_CORAL_ITEMS = TagUtil.createItemTag("corals/dead"); + public static final TagKey CORAL_ITEMS = TagUtil.createItemTag("corals"); + // Added Gregtech tags public static final TagKey TRANSISTORS = TagUtil.createModItemTag("transistors"); public static final TagKey RESISTORS = TagUtil.createModItemTag("resistors"); @@ -101,8 +119,6 @@ public class CustomTags { public static final TagKey PPE_ARMOR = TagUtil.createModItemTag("ppe_armor"); public static final TagKey STEP_BOOTS = TagUtil.createModItemTag("step_boots"); public static final TagKey RUBBER_LOGS = TagUtil.createModItemTag("rubber_logs"); - public static final TagKey CORAL_BLOCK_ITEMS = TagUtil.createItemTag("coral_blocks"); - public static final TagKey CORAL_ITEMS = TagUtil.createItemTag("corals"); // Mineability tags public static final TagKey MINEABLE_WITH_WRENCH = TagUtil.createBlockTag("mineable/wrench"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java index a6039a4260f..6c459181c24 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java @@ -428,6 +428,8 @@ public static void init(Consumer provider) { builder.copy("colorless_lens").inputFluids(DyeWhite.getFluid(dyeAmount)).outputItems(lens, Glass) .save(provider); + VanillaRecipeHelper.addShapelessRecipe(provider, "brown_dye_from_metal_mixture", new ItemStack(Items.BROWN_DYE), + new MaterialEntry(dust, MetalMixture)); // NAN Certificate EXTRUDER_RECIPES.recipeBuilder("nan_certificate") diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java index 713ec4855e8..5fc45949dcb 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; @@ -11,42 +10,40 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.common.Tags; import com.tterrag.registrate.providers.RegistrateTagsProvider; public class BlockTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_BLOCK, Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, - Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, - Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, - Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, - Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE); - create(provider, CustomTags.CONCRETE_POWDER_BLOCK, Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, - Blocks.MAGENTA_CONCRETE_POWDER, Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, - Blocks.LIME_CONCRETE_POWDER, Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, - Blocks.LIGHT_GRAY_CONCRETE_POWDER, Blocks.CYAN_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE_POWDER, - Blocks.BLUE_CONCRETE_POWDER, Blocks.BROWN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE_POWDER, - Blocks.RED_CONCRETE_POWDER, Blocks.BLACK_CONCRETE_POWDER); - create(provider, CustomTags.ENDSTONE_ORE_REPLACEABLES, Blocks.END_STONE); - create(provider, Tags.Blocks.STORAGE_BLOCKS, Blocks.NETHER_BRICKS, - GTBlocks.CASING_PRIMITIVE_BRICKS.get(), GTBlocks.CASING_COKE_BRICKS.get()); + public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { + provider.addTag(CustomTags.CONCRETE_BLOCK) + .add(Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, + Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, + Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, + Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE); + provider.addTag(CustomTags.CONCRETE_POWDER_BLOCK) + .add(Blocks.WHITE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE_POWDER, Blocks.MAGENTA_CONCRETE_POWDER, + Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE_POWDER, Blocks.LIME_CONCRETE_POWDER, + Blocks.PINK_CONCRETE_POWDER, Blocks.GRAY_CONCRETE_POWDER, Blocks.LIGHT_GRAY_CONCRETE_POWDER, + Blocks.CYAN_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE_POWDER, Blocks.BLUE_CONCRETE_POWDER, + Blocks.BROWN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE_POWDER, Blocks.RED_CONCRETE_POWDER, + Blocks.BLACK_CONCRETE_POWDER); - create(provider, BlockTags.REPLACEABLE, - GTMaterials.Oil.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.OilLight.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.OilHeavy.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.RawOil.getFluid().defaultFluidState().createLegacyBlock().getBlock(), - GTMaterials.NaturalGas.getFluid().defaultFluidState().createLegacyBlock().getBlock()); + provider.addTag(CustomTags.ENDSTONE_ORE_REPLACEABLES).add(Blocks.END_STONE); + + provider.addTag(BlockTags.REPLACEABLE) + .add(GTMaterials.Oil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.OilLight.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.OilHeavy.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.RawOil.getFluid().defaultFluidState().createLegacyBlock().getBlock()) + .add(GTMaterials.NaturalGas.getFluid().defaultFluidState().createLegacyBlock().getBlock()); provider.addTag(BlockTags.MINEABLE_WITH_AXE) - .add(TagEntry.element(GTMachines.WOODEN_DRUM.getId())) - .add(TagEntry.element(GTMachines.WOODEN_CRATE.getId())); + .add(GTMachines.WOODEN_DRUM.getBlock()) + .add(GTMachines.WOODEN_CRATE.getBlock()); // always add the wrench/pickaxe tag as a valid tag to mineable/wrench etc. provider.addTag(CustomTags.MINEABLE_WITH_WRENCH) diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java index 00567f1f7e2..0241dbae579 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/EntityTypeTagLoader.java @@ -2,34 +2,17 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.entity.EntityType; import com.tterrag.registrate.providers.RegistrateTagsProvider; public class EntityTypeTagLoader { - public static void init(RegistrateTagsProvider> provider) { - create(provider, CustomTags.HEAT_IMMUNE, EntityType.BLAZE, EntityType.MAGMA_CUBE, EntityType.WITHER_SKELETON, - EntityType.WITHER); - create(provider, CustomTags.CHEMICAL_IMMUNE, EntityType.SKELETON, EntityType.STRAY); - } - - public static void create(RegistrateTagsProvider> provider, TagKey> tagKey, - EntityType... rls) { - var builder = provider.addTag(tagKey); - for (EntityType entityType : rls) { - builder.add(BuiltInRegistries.ENTITY_TYPE.getResourceKey(entityType).get()); - } - } - - public static void create(RegistrateTagsProvider> provider, TagKey> tagKey, - ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } + public static void init(RegistrateTagsProvider.IntrinsicImpl> provider) { + provider.addTag(CustomTags.HEAT_IMMUNE) + .add(EntityType.BLAZE, EntityType.MAGMA_CUBE) + .add(EntityType.WITHER_SKELETON, EntityType.WITHER); + provider.addTag(CustomTags.CHEMICAL_IMMUNE) + .add(EntityType.SKELETON, EntityType.STRAY); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java index 7db3b089ff5..81b8c437c38 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/FluidTagLoader.java @@ -3,30 +3,13 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.material.Fluid; import com.tterrag.registrate.providers.RegistrateTagsProvider; public class FluidTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.LIGHTER_FLUIDS, GTMaterials.Butane.getFluid(), GTMaterials.Propane.getFluid()); - } - - public static void create(RegistrateTagsProvider provider, TagKey tag, ResourceLocation... rls) { - var builder = provider.addTag(tag); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } - } - - public static void create(RegistrateTagsProvider provider, TagKey tag, Fluid... fluids) { - var builder = provider.addTag(tag); - for (Fluid fluid : fluids) { - builder.add(BuiltInRegistries.FLUID.getResourceKey(fluid).get()); - } + public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { + provider.addTag(CustomTags.LIGHTER_FLUIDS).add(GTMaterials.Butane.getFluid(), GTMaterials.Propane.getFluid()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java index 3adb237be0b..e7594d1ce31 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java @@ -2,70 +2,87 @@ import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials.Color; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraftforge.common.Tags; -import com.tterrag.registrate.providers.RegistrateTagsProvider; +import com.tterrag.registrate.providers.RegistrateItemTagsProvider; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; public class ItemTagLoader { - public static void init(RegistrateTagsProvider provider) { - create(provider, CustomTags.CONCRETE_ITEM, Items.WHITE_CONCRETE, Items.ORANGE_CONCRETE, Items.MAGENTA_CONCRETE, - Items.LIGHT_BLUE_CONCRETE, Items.YELLOW_CONCRETE, Items.LIME_CONCRETE, Items.PINK_CONCRETE, - Items.GRAY_CONCRETE, Items.LIGHT_GRAY_CONCRETE, Items.CYAN_CONCRETE, Items.PURPLE_CONCRETE, - Items.BLUE_CONCRETE, Items.BROWN_CONCRETE, Items.GREEN_CONCRETE, Items.RED_CONCRETE, - Items.BLACK_CONCRETE); - create(provider, CustomTags.CONCRETE_POWDER_ITEM, Items.WHITE_CONCRETE_POWDER, Items.ORANGE_CONCRETE_POWDER, - Items.MAGENTA_CONCRETE_POWDER, Items.LIGHT_BLUE_CONCRETE_POWDER, Items.YELLOW_CONCRETE_POWDER, - Items.LIME_CONCRETE_POWDER, Items.PINK_CONCRETE_POWDER, Items.GRAY_CONCRETE_POWDER, - Items.LIGHT_GRAY_CONCRETE_POWDER, Items.CYAN_CONCRETE_POWDER, Items.PURPLE_CONCRETE_POWDER, - Items.BLUE_CONCRETE_POWDER, Items.BROWN_CONCRETE_POWDER, Items.GREEN_CONCRETE_POWDER, - Items.RED_CONCRETE_POWDER, Items.BLACK_CONCRETE_POWDER); - create(provider, CustomTags.CORAL_BLOCK_ITEMS, Items.BRAIN_CORAL_BLOCK, Items.BUBBLE_CORAL_BLOCK, - Items.FIRE_CORAL_BLOCK, Items.TUBE_CORAL_BLOCK, Items.HORN_CORAL_BLOCK, Items.DEAD_BRAIN_CORAL_BLOCK, - Items.DEAD_BUBBLE_CORAL_BLOCK, Items.DEAD_FIRE_CORAL_BLOCK, Items.DEAD_TUBE_CORAL_BLOCK, - Items.DEAD_HORN_CORAL_BLOCK); - create(provider, CustomTags.CORAL_ITEMS, Items.BRAIN_CORAL, Items.BUBBLE_CORAL, Items.FIRE_CORAL, - Items.TUBE_CORAL, Items.HORN_CORAL, Items.DEAD_BRAIN_CORAL, Items.DEAD_BUBBLE_CORAL, - Items.DEAD_FIRE_CORAL, Items.DEAD_TUBE_CORAL, Items.DEAD_HORN_CORAL, Items.BRAIN_CORAL_FAN, - Items.BUBBLE_CORAL_FAN, Items.FIRE_CORAL_FAN, Items.TUBE_CORAL_FAN, Items.HORN_CORAL_FAN, - Items.DEAD_BRAIN_CORAL_FAN, Items.DEAD_BUBBLE_CORAL_FAN, Items.DEAD_FIRE_CORAL_FAN, - Items.DEAD_TUBE_CORAL_FAN, Items.DEAD_HORN_CORAL_FAN); - create(provider, lens, Color.White, GTMaterialItems.MATERIAL_ITEMS.get(lens, Glass).get()); - create(provider, lens, Color.White, GTMaterialItems.MATERIAL_ITEMS.get(lens, NetherStar).get()); - create(provider, lens, Color.LightBlue, GTMaterialItems.MATERIAL_ITEMS.get(lens, Diamond).get()); - create(provider, lens, Color.Red, GTMaterialItems.MATERIAL_ITEMS.get(lens, Ruby).get()); - create(provider, lens, Color.Green, GTMaterialItems.MATERIAL_ITEMS.get(lens, Emerald).get()); - create(provider, lens, Color.Blue, GTMaterialItems.MATERIAL_ITEMS.get(lens, Sapphire).get()); - create(provider, lens, Color.Purple, GTMaterialItems.MATERIAL_ITEMS.get(lens, Amethyst).get()); - - create(provider, CustomTags.PISTONS, Items.PISTON, Items.STICKY_PISTON); - - create(provider, dye, Color.Brown, GTMaterialItems.MATERIAL_ITEMS.get(dust, MetalMixture).get()); + @SuppressWarnings("DataFlowIssue") + public static void init(RegistrateItemTagsProvider provider) { + provider.copy(CustomTags.CONCRETE_BLOCK, CustomTags.CONCRETE_ITEM); + provider.copy(CustomTags.CONCRETE_POWDER_BLOCK, CustomTags.CONCRETE_POWDER_ITEM); + // spotless:off + // the coral blocks: alive, dead, both + provider.addTag(CustomTags.ALIVE_CORAL_BLOCK_ITEMS) + .add(Items.BRAIN_CORAL_BLOCK, Items.BUBBLE_CORAL_BLOCK, Items.FIRE_CORAL_BLOCK, Items.TUBE_CORAL_BLOCK, Items.HORN_CORAL_BLOCK); + provider.addTag(CustomTags.DEAD_CORAL_BLOCK_ITEMS) + .add(Items.DEAD_BRAIN_CORAL_BLOCK, Items.DEAD_BUBBLE_CORAL_BLOCK, Items.DEAD_FIRE_CORAL_BLOCK, Items.DEAD_TUBE_CORAL_BLOCK, Items.DEAD_HORN_CORAL_BLOCK); + provider.addTag(CustomTags.CORAL_BLOCK_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_BLOCK_ITEMS) + .addTag(CustomTags.DEAD_CORAL_BLOCK_ITEMS); + + // the coral plants (the V-shaped pointy ones) + provider.addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .add(Items.BRAIN_CORAL, Items.BUBBLE_CORAL, Items.FIRE_CORAL, Items.TUBE_CORAL, Items.HORN_CORAL); + provider.addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS) + .add(Items.DEAD_BRAIN_CORAL, Items.DEAD_BUBBLE_CORAL, Items.DEAD_FIRE_CORAL, Items.DEAD_TUBE_CORAL, Items.DEAD_HORN_CORAL); + provider.addTag(CustomTags.CORAL_PLANT_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS); + + // the coral fans (the flat circular ones) + provider.addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS) + .add(Items.BRAIN_CORAL_FAN, Items.BUBBLE_CORAL_FAN, Items.FIRE_CORAL_FAN, Items.TUBE_CORAL_FAN, Items.HORN_CORAL_FAN); + provider.addTag(CustomTags.DEAD_CORAL_FAN_ITEMS) + .add(Items.DEAD_BRAIN_CORAL_FAN, Items.DEAD_BUBBLE_CORAL_FAN, Items.DEAD_FIRE_CORAL_FAN, Items.DEAD_TUBE_CORAL_FAN, Items.DEAD_HORN_CORAL_FAN); + provider.addTag(CustomTags.CORAL_FAN_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS) + .addTag(CustomTags.DEAD_CORAL_FAN_ITEMS); + + // all the coral items (except the blocks) + provider.addTag(CustomTags.ALIVE_CORAL_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_PLANT_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_FAN_ITEMS); + provider.addTag(CustomTags.DEAD_CORAL_ITEMS) + .addTag(CustomTags.DEAD_CORAL_PLANT_ITEMS) + .addTag(CustomTags.DEAD_CORAL_FAN_ITEMS); + provider.addTag(CustomTags.CORAL_ITEMS) + .addTag(CustomTags.ALIVE_CORAL_ITEMS) + .addTag(CustomTags.DEAD_CORAL_ITEMS); + // spotless:on + + provider.addTag(ChemicalHelper.getTag(lens, Color.White)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Glass).get()) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, NetherStar).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.LightBlue)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Diamond).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Red)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Ruby).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Green)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Emerald).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Blue)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Sapphire).get()); + provider.addTag(ChemicalHelper.getTag(lens, Color.Purple)) + .add(GTMaterialItems.MATERIAL_ITEMS.get(lens, Amethyst).get()); + + provider.addTag(CustomTags.PISTONS).add(Items.PISTON, Items.STICKY_PISTON); // add treated wood stick to vanilla sticks tag // noinspection DataFlowIssue ChemicalHelper#getTag can't return null with treated wood rod provider.addTag(Tags.Items.RODS_WOODEN) - .add(TagEntry.element(GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.rod, TreatedWood).getId())); - - // todo match ae2 certus quartz tag - // OreDictionary.registerUnificationEntry("crystalCertusQuartz", ChemicalHelper.get(TagPrefix.gem, - // GTMaterials.CertusQuartz)); + .add(GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.rod, TreatedWood).get()); // add treated and untreated wood plates to vanilla planks tag provider.addTag(ItemTags.PLANKS) @@ -165,27 +182,4 @@ public static void init(RegistrateTagsProvider provider) { .addOptional(GTItems.SENSOR_UXV.getId()) .addOptional(GTItems.SENSOR_OpV.getId()); } - - private static void create(RegistrateTagsProvider provider, TagPrefix prefix, Material material, - Item... rls) { - create(provider, ChemicalHelper.getTag(prefix, material), rls); - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, Item... rls) { - var builder = provider.addTag(tagKey); - for (Item item : rls) { - builder.add(BuiltInRegistries.ITEM.getResourceKey(item).get()); - } - } - - private static ResourceLocation rl(String name) { - return new ResourceLocation(name); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java b/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java index 006733a6895..93cd7e46ac6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/TagsHandler.java @@ -2,41 +2,14 @@ import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials.Color; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluid; - -import com.tterrag.registrate.providers.RegistrateTagsProvider; import static com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData.registerMaterialEntry; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote ItemTagsHandler - */ public class TagsHandler { - public static void initItem(RegistrateTagsProvider provider) { - ItemTagLoader.init(provider); - } - - public static void initBlock(RegistrateTagsProvider provider) { - BlockTagLoader.init(provider); - } - - public static void initFluid(RegistrateTagsProvider provider) { - FluidTagLoader.init(provider); - } - - public static void initEntity(RegistrateTagsProvider> provider) { - EntityTypeTagLoader.init(provider); - } - public static void initExtraUnificationEntries() { registerMaterialEntry(Items.CLAY_BALL, ingot, Clay); From dcdddb267c4a499c804f3d2b10bf6a9215c7dc16 Mon Sep 17 00:00:00 2001 From: eve <121055316+eve336@users.noreply.github.com> Date: Mon, 5 May 2025 15:26:59 +0100 Subject: [PATCH 008/270] Fix buses and hatches not updating when rotated (#3052) --- .../machine/multiblock/part/FluidHatchPartMachine.java | 8 ++++++-- .../machine/multiblock/part/ItemBusPartMachine.java | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index cf8a2d70e61..44d6d96796d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -175,12 +175,16 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Override public void onRotated(Direction oldFacing, Direction newFacing) { super.onRotated(oldFacing, newFacing); - updateTankSubscription(); + updateTankSubscription(newFacing); } protected void updateTankSubscription() { + updateTankSubscription(getFrontFacing()); + } + + protected void updateTankSubscription(Direction newFacing) { if (isWorkingEnabled() && ((io == IO.OUT && !tank.isEmpty()) || io == IO.IN) && - GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), getFrontFacing())) { + GTTransferUtils.hasAdjacentFluidHandler(getLevel(), getPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 0376799b39b..6c26b6d0cef 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -193,12 +193,16 @@ public void onNeighborChanged(Block block, BlockPos fromPos, boolean isMoving) { @Override public void onRotated(Direction oldFacing, Direction newFacing) { super.onRotated(oldFacing, newFacing); - updateInventorySubscription(); + updateInventorySubscription(newFacing); } protected void updateInventorySubscription() { + updateInventorySubscription(getFrontFacing()); + } + + protected void updateInventorySubscription(Direction newFacing) { if (isWorkingEnabled() && ((io == IO.OUT && !getInventory().isEmpty()) || io == IO.IN) && - GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), getFrontFacing())) { + GTTransferUtils.hasAdjacentItemHandler(getLevel(), getPos(), newFacing)) { autoIOSubs = subscribeServerTick(autoIOSubs, this::autoIO); } else if (autoIOSubs != null) { autoIOSubs.unsubscribe(); From ddd06fa592b9ffe38674db1c58a8b359b07de724 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Mon, 5 May 2025 10:31:16 -0400 Subject: [PATCH 009/270] Fix Multiblock Pattern slot widgets not showing tooltips (#3125) --- .../ldlib/ModularWrapperWidgetMixin.java | 19 +++++++++++++++++++ src/main/resources/gtceu.mixins.json | 1 + 2 files changed, 20 insertions(+) create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java new file mode 100644 index 00000000000..df313d70aab --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/ModularWrapperWidgetMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.ldlib; + +import com.lowdragmc.lowdraglib.emi.ModularWrapperWidget; +import com.lowdragmc.lowdraglib.gui.ingredient.IRecipeIngredientSlot; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; + +@Mixin(value = ModularWrapperWidget.class, remap = false) +public class ModularWrapperWidgetMixin { + + @WrapOperation(method = "getTooltip(II)Ljava/util/List;", + constant = { @Constant(classValue = IRecipeIngredientSlot.class) }) + public boolean gtceu$wrapInstanceOf(Object object, Operation original) { + return false; + } +} diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index ca3f823c4e5..47487227862 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -66,6 +66,7 @@ "emi.FillRecipePacketMixin", "emi.FluidEmiStackMixin", "jei.FluidHelperMixin", + "ldlib.ModularWrapperWidgetMixin", "ldlib.SyncUtilsMixin", "rei.InputSlotCrafterMixin", "rei.RecipeFinderMixin", From 1cb48de03388e12679a53877b7d6d8ba82e5af96 Mon Sep 17 00:00:00 2001 From: iouter <62897714+iouter@users.noreply.github.com> Date: Mon, 5 May 2025 22:31:27 +0800 Subject: [PATCH 010/270] Update zh_cn.json (#3104) --- .../resources/assets/gtceu/lang/zh_cn.json | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 309b1572be1..98646b8b448 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -276,7 +276,6 @@ "block.gtceu.ev_transformer_4a":"§5超高压§r高流变压器(§5EV§r)", "block.gtceu.ev_wiremill":"§5进阶线材轧机 III§r", "block.gtceu.ev_world_accelerator":"§5进阶世界加速器 III§r", - "block.gtceu.evaporation_plant":"蒸发塔", "block.gtceu.explosion_hazard_sign_block":"爆炸危害警示方块", "block.gtceu.explosive.breaking_tooltip":"破坏它会引爆火药,潜行挖掘以重新拾取", "block.gtceu.explosive.lighting_tooltip":"无法用红石信号引爆", @@ -988,7 +987,7 @@ "block.gtceu.orange_metal_sheet":"橙色金属板方块", "block.gtceu.orange_studs":"橙色橡胶混凝土", "block.gtceu.overworld_marker":"主世界", - "block.gtceu.palladium_substation":"镀钯变电站", + "block.gtceu.palladium_substation":"镀钯变电站机械方块", "block.gtceu.pattern_buffer.desc.0":"§f对于GT多方块结构的集成式§6AE2样板供应器§f。", "block.gtceu.pattern_buffer.desc.1":"§fAE2样板可以利用§6共享库存§f中的一切。", "block.gtceu.pattern_buffer.desc.2":"§f使用§b闪存§f绑定§6ME样板总成镜像§f,以使机器相互连接!", @@ -1064,14 +1063,13 @@ "block.gtceu.small_light_concrete_bricks":"淡色混凝土小块砖", "block.gtceu.small_marble_bricks":"大理岩小块砖", "block.gtceu.small_red_granite_bricks":"红花岗岩小块砖", - "block.gtceu.solid_machine_casing":"脱氧机械方块", + "block.gtceu.solid_machine_casing":"脱氧钢机械方块", "block.gtceu.spatial_storage_hazard_sign_block":"空间存储危害警示方块", "block.gtceu.square_dark_concrete_bricks":"深色混凝土方形砖", "block.gtceu.square_light_concrete_bricks":"淡色混凝土方形砖", "block.gtceu.square_marble_bricks":"大理岩方形砖", "block.gtceu.square_red_granite_bricks":"红花岗岩方形砖", "block.gtceu.stable_machine_casing":"加强钛机械方块", - "block.gtceu.stainless_evaporation_casing":"不锈钢蒸发机械方块", "block.gtceu.stainless_steel_crate":"不锈钢板条箱", "block.gtceu.stainless_steel_drum":"不锈钢桶", "block.gtceu.stainless_steel_gearbox":"不锈钢齿轮箱机械方块", @@ -1103,7 +1101,7 @@ "block.gtceu.steel_multiblock_tank":"钢制多方块储罐", "block.gtceu.steel_pipe_casing":"钢管道方块", "block.gtceu.steel_tank_valve":"钢制储罐阀门", - "block.gtceu.steel_turbine_casing":"钢涡轮机械方块", + "block.gtceu.steel_turbine_casing":"镁铝合金涡轮机械方块", "block.gtceu.sterilizing_filter_casing":"除菌过滤器机械方块", "block.gtceu.stress_proof_casing":"耐压机械方块", "block.gtceu.stripped_rubber_log":"去皮橡胶原木", @@ -2244,7 +2242,6 @@ "gtceu.electric_furnace":"电炉", "gtceu.electrolyzer":"电解机", "gtceu.electromagnetic_separator":"电磁选矿机", - "gtceu.evaporation":"蒸发", "gtceu.extractor":"提取机", "gtceu.extruder":"压模器", "gtceu.fermenter":"发酵槽", @@ -3228,7 +3225,7 @@ "gtceu.multiblock.large_boiler.max_temperature":"最高温度:%dK,蒸汽产量:%dmB/t", "gtceu.multiblock.large_boiler.rate_tooltip":"§7每块§1煤炭§7可以生产§f%dL§7的蒸汽", "gtceu.multiblock.large_boiler.steam_output":"蒸汽输出:%s mB/t", - "gtceu.multiblock.large_boiler.temperature":"温度::%sK / %sK", + "gtceu.multiblock.large_boiler.temperature":"温度:%sK / %sK", "gtceu.multiblock.large_boiler.throttle":"节流:%d", "gtceu.multiblock.large_boiler.throttle.tooltip":"锅炉可以节流,以减少燃料消耗与蒸汽产出,并且不损失效率,不影响加热时间。", "gtceu.multiblock.large_boiler.throttle_modify":"修改节流:", @@ -3342,7 +3339,7 @@ "gtceu.multiblock.pyrolyse_oven.speed":"处理速度:%s%%", "gtceu.multiblock.require_steam_parts":"需要蒸汽仓与输入/输出总线(蒸汽)!", "gtceu.multiblock.research_station.description":"研究站是个多方块结构,用于研究更复杂的装配线研究数据。任何需要数据球或数据模块的研究必须使用研究站而非扫描仪来扫描。研究站需要计算工作单位(CWU/t)来进行工作,这由高性能计算阵列(HPCA)提供。", - "gtceu.multiblock.research_station.researching":"&6研究中…", + "gtceu.multiblock.research_station.researching":"§6研究中…", "gtceu.multiblock.running":"运行正常。", "gtceu.multiblock.steam.duration_modifier":"处理耗时为基础的§f1.5§7倍,不受物品数量影响。", "gtceu.multiblock.steam.low_steam":"蒸汽不足,无法运行!", @@ -3387,6 +3384,9 @@ "gtceu.oc.tooltip.3":"中键单击重设超频等级", "gtceu.oc.tooltip.4":"按住Shift以无损超频显示", "gtceu.ore_washer":"洗矿厂", + "gtceu.ownership.name.argonauts":"Argonauts公会", + "gtceu.ownership.name.ftb":"FTB团队", + "gtceu.ownership.name.player":"玩家", "gtceu.packer":"打包机", "gtceu.plasma_generator":"等离子燃料", "gtceu.polarizer":"两极磁化机", @@ -3401,7 +3401,7 @@ "gtceu.recipe.category.ore_bathing":"化学浸洗机:矿物处理", "gtceu.recipe.category.ore_crushing":"研磨机:矿物处理", "gtceu.recipe.category.ore_forging":"锻造锤:矿物处理", - "gtceu.recipe.chance":"出产概率:%s + %s/电压等级", + "gtceu.recipe.chance":"概率:%s + %s/电压等级", "gtceu.recipe.cleanroom":"需要%s", "gtceu.recipe.cleanroom.display_name":"超净间", "gtceu.recipe.cleanroom_sterile.display_name":"无菌超净间", @@ -3426,6 +3426,8 @@ "gtceu.recipe_logic.insufficient_fuel":"燃料不足", "gtceu.recipe_logic.insufficient_in":"需要输入", "gtceu.recipe_logic.insufficient_out":"输出堵塞", + "gtceu.recipe_logic.no_capabilities":"机器无功能", + "gtceu.recipe_logic.no_contents":"配方无内容", "gtceu.recipe_memory_widget.tooltip.0":"§7左键点击可自动将该配方输入至合成格", "gtceu.recipe_memory_widget.tooltip.1":"§7按住Shift并点击以锁定或解锁该配方", "gtceu.recipe_type.show_recipes":"查看配方", @@ -3523,10 +3525,14 @@ "gtceu.tooltip.potion.each":"§r%4$s%%§7概率获得§r%1$s %2$s§7(§r%3$s§7tick)", "gtceu.tooltip.potion.header":"§6包含效果:", "gtceu.tooltip.proxy_bind":"§f绑定到%s %s %s处的样板总成", + "gtceu.tooltip.status.trinary.false":"假", + "gtceu.tooltip.status.trinary.true":"真", + "gtceu.tooltip.status.trinary.unknown":"未知", "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以查看流体容器及工具详情", "gtceu.top.allow_output_input":"允许输入", "gtceu.top.auto_output":"自动输出", "gtceu.top.buffer_bound_pos":"已绑定至 - X:%s;Y:%s;Z:%s", + "gtceu.top.buffer_not_bound":"尚未绑定总成", "gtceu.top.cable_amperage":"电流:", "gtceu.top.cable_voltage":"电压:", "gtceu.top.convert_eu":"转换模式:§eEU§r ->§cFE§r", @@ -3649,6 +3655,7 @@ "item.gtceu.advanced_item_voiding_cover":"进阶物品销毁覆盖板", "item.gtceu.advanced_item_voiding_cover.tooltip.0":"§7作§f覆盖板§7时销毁物品。", "item.gtceu.advanced_item_voiding_cover.tooltip.1":"加装后使用§f软锤§7激活", + "item.gtceu.advanced_nanomuscle_chestplate":"纳米肌体™进阶套装胸甲", "item.gtceu.advanced_power_thruster":"进阶电力推进器", "item.gtceu.advanced_quarktech_chestplate":"夸克高科™进阶套装胸甲", "item.gtceu.advanced_smd_capacitor":"高级贴片电容", @@ -3669,7 +3676,6 @@ "item.gtceu.anvil_casting_mold":"模具(砧)", "item.gtceu.anvil_casting_mold.tooltip":"§7用来制作砧的模具", "item.gtceu.ash_dust":"灰烬", - "item.gtceu.advanced_nanomuscle_chestplate":"纳米肌体™进阶套装胸甲", "item.gtceu.axe_extruder_mold.tooltip":"§7用来制作斧的模头", "item.gtceu.ball_casting_mold":"模具(球)", "item.gtceu.ball_casting_mold.tooltip":"§7用来制作球的模具", @@ -4644,8 +4650,6 @@ "material.gtceu.acetic_acid":"乙酸", "material.gtceu.acetic_anhydride":"乙酸酐", "material.gtceu.acetone":"丙酮", - "material.gtceu.acidic_bromine_exhaust":"酸性溴废气", - "material.gtceu.acidic_bromine_solution":"酸性溴溶液", "material.gtceu.acidic_enriched_naquadah_solution":"酸性富集硅岩溶液", "material.gtceu.acidic_naquadria_solution":"酸性超能硅岩溶液", "material.gtceu.acidic_osmium_solution":"酸性锇溶液", @@ -4716,7 +4720,6 @@ "material.gtceu.borosilicate_glass":"硼硅玻璃", "material.gtceu.brass":"黄铜", "material.gtceu.brick":"砖", - "material.gtceu.brominated_chlorine_vapor":"溴化氯蒸气", "material.gtceu.bromine":"溴", "material.gtceu.bronze":"青铜", "material.gtceu.brown_dye":"棕色染料", @@ -4766,7 +4769,6 @@ "material.gtceu.cocoa":"可可", "material.gtceu.coke":"焦煤", "material.gtceu.collagen":"胶原", - "material.gtceu.concentrated_bromine_solution":"浓溴溶液", "material.gtceu.concrete":"混凝土", "material.gtceu.construction_foam":"建筑泡沫", "material.gtceu.cooperite":"谢尔顿矿", @@ -4783,7 +4785,6 @@ "material.gtceu.damascus_steel":"大马士革钢", "material.gtceu.dark_ash":"黑色灰烬", "material.gtceu.darmstadtium":"钅达", - "material.gtceu.debrominated_brine":"脱溴卤水", "material.gtceu.deepslate":"深板岩", "material.gtceu.depleted_uranium_hexafluoride":"枯竭六氟化铀", "material.gtceu.deuterium":"氘", @@ -4895,10 +4896,6 @@ "material.gtceu.hematite":"赤铁矿", "material.gtceu.high_octane_gasoline":"高辛烷值汽油", "material.gtceu.holmium":"钬", - "material.gtceu.hot_alkaline_debrominated_brine":"热碱性脱溴卤水", - "material.gtceu.hot_brine":"热卤水", - "material.gtceu.hot_chlorinated_brominated_brine":"热氯化溴卤水", - "material.gtceu.hot_debrominated_brine":"热脱溴卤水", "material.gtceu.hsla_steel":"HSLA钢", "material.gtceu.hsse":"高速钢-E", "material.gtceu.hssg":"高速钢-G", @@ -4914,7 +4911,7 @@ "material.gtceu.hydrofluoric_acid":"氢氟酸", "material.gtceu.hydrogen":"氢", "material.gtceu.hydrogen_cyanide":"氰化氢", - "material.gtceu.hydrogen_iodide":"碘化氢", + "material.gtceu.hydrogen_peroxide":"过氧化氢", "material.gtceu.hydrogen_sulfide":"硫化氢", "material.gtceu.hypochlorous_acid":"次氯酸", "material.gtceu.ice":"冰", @@ -5122,7 +5119,6 @@ "material.gtceu.radon":"氡", "material.gtceu.rare_earth":"稀土", "material.gtceu.rarest_metal_mixture":"稀有金属混合物", - "material.gtceu.raw_brine":"粗卤水", "material.gtceu.raw_gasoline":"粗汽油", "material.gtceu.raw_growth_medium":"培养基原液", "material.gtceu.raw_rubber":"生橡胶", @@ -5298,7 +5294,8 @@ "material.gtceu.zinc_sulfide":"硫化锌", "material.gtceu.zincite":"红锌矿", "material.gtceu.zirconium":"锆", - "message.gtceu.new_veins":"勘探到%d个新矿脉!", + "message.gtceu.new_veins.amount":"勘探到%d条新矿脉!", + "message.gtceu.new_veins.name":"勘探到%s!", "metaarmor.energy_share.disable":"能量供给:工具充能已禁用", "metaarmor.energy_share.enable":"能量供给:工具充能已启用", "metaarmor.energy_share.error":"能量供给:§c能量不足,无法为工具充能!", @@ -5406,7 +5403,11 @@ "recipe.condition.dimension.tooltip":"维度:%s", "recipe.condition.dimension_marker.tooltip":"维度:", "recipe.condition.eu_to_start.tooltip":"启动耗能:%d%s", + "recipe.condition.gamestage.locked_stage":"锁定阶段:%s", + "recipe.condition.gamestage.unlocked_stage":"解锁阶段:%s", "recipe.condition.pos_y.tooltip":"Y轴高度:%d <= Y <= %d", + "recipe.condition.quest.completed.tooltip":"完成任务:%s", + "recipe.condition.quest.not_completed.tooltip":"未完成任务:%s", "recipe.condition.rain.tooltip":"雨量:%d", "recipe.condition.rock_breaker.tooltip":"水平相邻方块需要为流体源", "recipe.condition.steam_vent.tooltip":"清洁蒸汽排气口", @@ -5455,6 +5456,7 @@ "tagprefix.marble":"大理岩%s矿石", "tagprefix.netherrack":"下界岩%s矿石", "tagprefix.nugget":"%s粒", + "tagprefix.null":"%s Null", "tagprefix.pipe_huge_fluid":"巨型%s流体管道", "tagprefix.pipe_huge_item":"巨型%s物品管道", "tagprefix.pipe_huge_restrictive":"巨型加固%s物品管道", From 766b67f52dda245de5f1aefe1ff1b251e0b7fa3f Mon Sep 17 00:00:00 2001 From: NegaNote Date: Mon, 5 May 2025 10:31:58 -0400 Subject: [PATCH 011/270] Add JADE info for the conversion mode of the Energy Converter (#3099) --- .../resources/assets/gtceu/lang/en_ud.json | 1 + .../resources/assets/gtceu/lang/en_us.json | 1 + .../gtceu/data/lang/LangHandler.java | 1 + .../gtceu/integration/jade/GTJadePlugin.java | 2 + .../provider/EnergyConverterModeProvider.java | 43 +++++++++++++++++++ .../integration/top/TheOneProbePlugin.java | 1 + .../provider/EnergyConverterModeProvider.java | 37 ++++++++++++++++ 7 files changed, 86 insertions(+) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 5c9139b008c..e61904f3e48 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1874,6 +1874,7 @@ "config.jade.plugin_gtceu.cable_info": "oɟuI ǝןqɐƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.controllable_provider": "ǝןqɐןןoɹʇuoƆ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.electric_container_provider": "ɹǝuıɐʇuoƆ ɔıɹʇɔǝןƎ ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.energy_converter_provider": "ǝpoW ɹǝʇɹǝʌuoƆ ʎbɹǝuƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.exhaust_vent_info": "oɟuI ʇuǝΛ ʇsnɐɥxƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.hazard_cleaner_provider": "ɹǝuɐǝןƆ pɹɐzɐH ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.machine_mode": "ǝpoW ǝuıɥɔɐW ]nƎƆ⟘⅁[", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 55d3cf59443..2e09d84d93d 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1874,6 +1874,7 @@ "config.jade.plugin_gtceu.cable_info": "[GTCEu] Cable Info", "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] Controllable", "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] Electric Container", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] Energy Converter Mode", "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] Exhaust Vent Info", "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] Hazard Cleaner", "config.jade.plugin_gtceu.machine_mode": "[GTCEu] Machine Mode", diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 2abaec8eb76..acf8e864003 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1282,6 +1282,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("config.jade.plugin_gtceu.stained_color", "[GTCEu] Stained Block Info"); provider.add("config.jade.plugin_gtceu.me_pattern_buffer", "[GTCEu] Pattern Buffer Info"); provider.add("config.jade.plugin_gtceu.me_pattern_buffer_proxy", "[GTCEu] Pattern Buffer Proxy Info"); + provider.add("config.jade.plugin_gtceu.energy_converter_provider", "[GTCEu] Energy Converter Mode"); // gui provider.add("gtceu.button.ore_veins", "Show GT Ore Veins"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java index c5449c4fd13..1219dcd168e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java @@ -42,6 +42,7 @@ public void register(IWailaCommonRegistration registration) { registration.registerBlockDataProvider(new HazardCleanerBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new TransformerBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new PrimitivePumpBlockProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new EnergyConverterModeProvider(), BlockEntity.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockDataProvider(new MEPatternBufferProvider(), BlockEntity.class); registration.registerBlockDataProvider(new MEPatternBufferProxyProvider(), BlockEntity.class); @@ -71,6 +72,7 @@ public void registerClient(IWailaClientRegistration registration) { registration.registerBlockComponent(new HazardCleanerBlockProvider(), Block.class); registration.registerBlockComponent(new TransformerBlockProvider(), Block.class); registration.registerBlockComponent(new PrimitivePumpBlockProvider(), Block.class); + registration.registerBlockComponent(new EnergyConverterModeProvider(), Block.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockComponent(new MEPatternBufferProvider(), Block.class); registration.registerBlockComponent(new MEPatternBufferProxyProvider(), Block.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java new file mode 100644 index 00000000000..4eccc045b03 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/EnergyConverterModeProvider.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; + +import snownee.jade.api.BlockAccessor; +import snownee.jade.api.IBlockComponentProvider; +import snownee.jade.api.IServerDataProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; + +public class EnergyConverterModeProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getServerData().contains("converterMode")) { + boolean isFeToEu = blockAccessor.getServerData().getBoolean("converterMode"); + if (isFeToEu) { + iTooltip.add(Component.translatable("gtceu.top.convert_fe")); + } else { + iTooltip.add(Component.translatable("gtceu.top.convert_eu")); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity && + blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + compoundTag.putBoolean("converterMode", converter.isFeToEu()); + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("energy_converter_provider"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java index aedc5ef3db3..1e73cad3f68 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java @@ -58,5 +58,6 @@ public ResourceLocation getId() { oneProbe.registerProvider(new CoverProvider()); oneProbe.registerProvider(new HazardCleanerInfoProvider()); oneProbe.registerProvider(new TransformerInfoProvider()); + oneProbe.registerProvider(new EnergyConverterModeProvider()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java new file mode 100644 index 00000000000..6d978358f5a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/EnergyConverterModeProvider.java @@ -0,0 +1,37 @@ +package com.gregtechceu.gtceu.integration.top.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; + +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +public class EnergyConverterModeProvider implements IProbeInfoProvider { + + @Override + public ResourceLocation getID() { + return GTCEu.id("energy_converter_top"); + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, + BlockState blockState, IProbeHitData iProbeHitData) { + if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity && + blockEntity.getMetaMachine() instanceof ConverterMachine converter) { + if (converter.isFeToEu()) { + iProbeInfo.text(Component.translatable("gtceu.top.convert_fe")); + } else { + iProbeInfo.text(Component.translatable("gtceu.top.convert_eu")); + } + } + } +} From 701ad55c550a3427b4a8013093dbb929dee3b20b Mon Sep 17 00:00:00 2001 From: UltraPuPower1 <122467778+UltraPuPower@users.noreply.github.com> Date: Mon, 5 May 2025 16:32:18 +0200 Subject: [PATCH 012/270] Fix wiki inaccuracy (#3085) --- docs/content/Modpacks/Other-Topics/Custom-Machines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/Modpacks/Other-Topics/Custom-Machines.md b/docs/content/Modpacks/Other-Topics/Custom-Machines.md index 4f81fb848fc..7ba98823950 100644 --- a/docs/content/Modpacks/Other-Topics/Custom-Machines.md +++ b/docs/content/Modpacks/Other-Topics/Custom-Machines.md @@ -120,7 +120,7 @@ GTCEuStartupEvents.registry('gtceu:machine', event => { .where('G', Block.getBlock('minecraft:glass')) .where('D', GTBlocks.COIL_CUPRONICKEL.get()) .where('S', GTMachines.MUFFLER_HATCH[1], Direction.UP) - .where('M', GTMachines.MAINTENANCE_HATCH[1], Direction.SOUTH) + .where('M', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) .where('e', GTMachines.ENERGY_INPUT_HATCH[1], Direction.NORTH) .where('i', GTMachines.ITEM_IMPORT_BUS[1], Direction.SOUTH) .where('0', GTMachines.ITEM_EXPORT_BUS[1], Direction.SOUTH) From b379b5643b078dae6b0a484ed8ddce0bd3bb545d Mon Sep 17 00:00:00 2001 From: mrquentin <32539717+mrquentin@users.noreply.github.com> Date: Mon, 5 May 2025 10:32:54 -0400 Subject: [PATCH 013/270] Add BigInteger support to Energy Detector Covers (#3081) --- .../detector/AdvancedEnergyDetectorCover.java | 57 ++++++++++++------ .../cover/detector/EnergyDetectorCover.java | 21 ++++--- .../com/gregtechceu/gtceu/utils/GTMath.java | 7 +++ .../gregtechceu/gtceu/utils/RedstoneUtil.java | 60 ++++++++++++------- 4 files changed, 97 insertions(+), 48 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java index 667a7cb2cfb..87444820b26 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/AdvancedEnergyDetectorCover.java @@ -24,6 +24,7 @@ import lombok.Getter; import lombok.Setter; +import java.math.BigInteger; import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; @@ -49,6 +50,7 @@ public ManagedFieldHolder getFieldHolder() { @Getter @Setter public long minValue, maxValue; + @Persisted @Getter private boolean usePercent; @@ -68,27 +70,39 @@ protected void update() { if (coverHolder.getOffsetTimer() % 20 != 0) return; IEnergyInfoProvider energyInfoProvider = getEnergyInfoProvider(); - - if (energyInfoProvider == null) { - return; - } - - // TODO properly support values > MAX_LONG - IEnergyInfoProvider.EnergyInfo energyInfo = energyInfoProvider.getEnergyInfo(); - long capacity = energyInfo.capacity().longValue(); - long stored = energyInfo.stored().longValue(); - - if (usePercent) { - if (capacity > 0) { - float ratio = (float) stored / capacity; - setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, - minValue, isInverted(), redstoneSignalOutput)); + if (energyInfoProvider == null) return; + + var energyInfo = energyInfoProvider.getEnergyInfo(); + var isBigInt = energyInfoProvider.supportsBigIntEnergyValues(); + + if (isBigInt) { + if (usePercent) { + if (energyInfo.capacity().compareTo(BigInteger.ZERO) > 0) { + var ratio = GTMath.ratio(energyInfo.stored(), energyInfo.capacity()); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, + minValue, isInverted(), redstoneSignalOutput)); + } else { + setRedstoneSignalOutput(isInverted() ? 15 : 0); + } } else { - setRedstoneSignalOutput(isInverted() ? 0 : 15); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(energyInfo.stored(), + BigInteger.valueOf(this.maxValue), BigInteger.valueOf(this.minValue), + isInverted(), redstoneSignalOutput)); } } else { - setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(stored, this.maxValue, this.minValue, - isInverted(), redstoneSignalOutput)); + if (usePercent) { + if (energyInfo.capacity().longValue() > 0) { + var ratio = energyInfo.stored().longValue() / energyInfo.capacity().longValue(); + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(ratio * 100, maxValue, + minValue, isInverted(), redstoneSignalOutput)); + } else { + setRedstoneSignalOutput(isInverted() ? 15 : 0); + } + } else { + setRedstoneSignalOutput(computeLatchedRedstoneBetweenValues(energyInfo.stored().longValue(), + this.maxValue, this.minValue, + isInverted(), redstoneSignalOutput)); + } } } @@ -141,7 +155,12 @@ private void initializeMinMaxInputs(boolean wasPercent) { if (GTCEu.isClientThread() || minValueInput == null || maxValueInput == null) return; - long energyCapacity = getEnergyInfoProvider().getEnergyInfo().capacity().longValue(); + long energyCapacity; + try { + energyCapacity = getEnergyInfoProvider().getEnergyInfo().capacity().longValueExact(); + } catch (ArithmeticException e) { + energyCapacity = Long.MAX_VALUE; + } minValueInput.setMin(0L); maxValueInput.setMin(0L); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java index 54832a98cff..99b25f520f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/detector/EnergyDetectorCover.java @@ -10,6 +10,8 @@ import org.jetbrains.annotations.Nullable; +import java.math.BigInteger; + public class EnergyDetectorCover extends DetectorCover { public EnergyDetectorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { @@ -27,18 +29,23 @@ protected void update() { return; IEnergyInfoProvider energyInfoProvider = getEnergyInfoProvider(); - if (energyInfoProvider == null) - return; + if (energyInfoProvider == null) return; var energyInfo = energyInfoProvider.getEnergyInfo(); + var isBigInt = energyInfoProvider.supportsBigIntEnergyValues(); - long storedEnergy = energyInfo.stored().longValue(); - long energyCapacity = energyInfo.capacity().longValue(); + if (isBigInt) { + if (energyInfo.capacity().equals(BigInteger.ZERO)) return; - if (energyCapacity == 0) - return; + setRedstoneSignalOutput( + RedstoneUtil.computeRedstoneValue(energyInfo.stored(), energyInfo.capacity(), isInverted())); + } else { + long storedEnergy = energyInfo.stored().longValue(); + long energyCapacity = energyInfo.capacity().longValue(); + if (energyCapacity == 0) return; - setRedstoneSignalOutput(RedstoneUtil.computeRedstoneValue(storedEnergy, energyCapacity, isInverted())); + setRedstoneSignalOutput(RedstoneUtil.computeRedstoneValue(storedEnergy, energyCapacity, isInverted())); + } } @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java index 5694846e9d9..28bff01144e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java @@ -6,6 +6,9 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.math.MathContext; import java.util.Collections; import java.util.List; @@ -46,4 +49,8 @@ public static int saturatedCast(long value) { return value < -2147483648L ? Integer.MIN_VALUE : (int) value; } } + + public static float ratio(BigInteger a, BigInteger b) { + return new BigDecimal(a).divide(new BigDecimal(b), MathContext.DECIMAL32).floatValue(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java index b50aad899ab..1b5ee9abf28 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/RedstoneUtil.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.utils; +import java.math.BigInteger; + public class RedstoneUtil { /** @@ -12,19 +14,26 @@ public class RedstoneUtil { * @return an int from 0 (value <= min) to 15 (value >= max) normally, with a ratio when the value is between min * and max */ - public static int computeRedstoneBetweenValues(long value, float maxValue, float minValue, boolean isInverted) { - if (value >= maxValue) { - return isInverted ? 0 : 15; // value above maxValue should normally be 15, otherwise 0 - } else if (value <= minValue) { - return isInverted ? 15 : 0; // value below minValue should normally be 0, otherwise 15 - } + + public static int computeRedstoneBetweenValues(float value, float maxValue, float minValue, boolean isInverted) { + if (value >= maxValue) return isInverted ? 0 : 15; + else if (value <= minValue) return isInverted ? 15 : 0; + + float ratio; + if (isInverted) ratio = 15 * (maxValue - value) / (maxValue - minValue); + else ratio = 15 * (value - minValue) / (maxValue - minValue); + + return Math.round(ratio); + } + + public static int computeRedstoneBetweenValues(BigInteger value, BigInteger maxValue, BigInteger minValue, + boolean isInverted) { + if (value.compareTo(maxValue) >= 0) return isInverted ? 0 : 15; + else if (value.compareTo(maxValue) <= 0) return isInverted ? 15 : 0; float ratio; - if (!isInverted) { - ratio = 15 * (value - minValue) / (maxValue - minValue); // value closer to max results in higher output - } else { - ratio = 15 * (maxValue - value) / (maxValue - minValue); // value closer to min results in higher output - } + if (isInverted) ratio = 15 * GTMath.ratio(maxValue.subtract(value), maxValue.subtract(minValue)); + else ratio = 15 * GTMath.ratio(value.subtract(minValue), maxValue.subtract(minValue)); return Math.round(ratio); } @@ -40,11 +49,16 @@ public static int computeRedstoneBetweenValues(long value, float maxValue, float */ public static int computeLatchedRedstoneBetweenValues(float value, float maxValue, float minValue, boolean isInverted, int output) { - if (value >= maxValue) { - output = !isInverted ? 0 : 15; // value above maxValue should normally be 0, otherwise 15 - } else if (value <= minValue) { - output = !isInverted ? 15 : 0; // value below minValue should normally be 15, otherwise 0 - } + if (value >= maxValue) output = isInverted ? 15 : 0; // value above maxValue should normally be 0, otherwise 15 + else if (value <= minValue) output = isInverted ? 0 : 15; // value below minValue should normally be 15, + // otherwise 0 + return output; + } + + public static int computeLatchedRedstoneBetweenValues(BigInteger value, BigInteger maxValue, BigInteger minValue, + boolean isInverted, int output) { + if (value.compareTo(maxValue) >= 0) output = isInverted ? 15 : 0; + else if (value.compareTo(minValue) <= 0) output = isInverted ? 0 : 15; return output; } @@ -58,12 +72,14 @@ public static int computeLatchedRedstoneBetweenValues(float value, float maxValu * @throws ArithmeticException when max is 0 */ public static int computeRedstoneValue(long current, long max, boolean isInverted) throws ArithmeticException { - int outputAmount = (int) (14f * current / max) + (current > 0 ? 1 : 0); - - if (isInverted) { - outputAmount = 15 - outputAmount; - } + var output = (int) (14f * current / max) + (current > 0 ? 1 : 0); + return isInverted ? 15 - output : output; + } - return outputAmount; + public static int computeRedstoneValue(BigInteger current, BigInteger max, + boolean isInverted) throws ArithmeticException { + var isNotEmpty = current.compareTo(BigInteger.ZERO) > 0; + var output = (int) (14f * GTMath.ratio(current, max)) + (isNotEmpty ? 1 : 0); + return isInverted ? 15 - output : output; } } From d215dac12e10187e85d768a0274523a80ce78635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Tue, 6 May 2025 09:43:30 +0200 Subject: [PATCH 014/270] Fix SNAPSHOT metadata being appended with hyphen instead of plus (#3140) Co-authored-by: GirixK --- .github/workflows/auto-build.yml | 2 +- gradle/scripts/resources.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-build.yml b/.github/workflows/auto-build.yml index 0148f688594..2b5414e28d0 100644 --- a/.github/workflows/auto-build.yml +++ b/.github/workflows/auto-build.yml @@ -39,7 +39,7 @@ jobs: run: ./gradlew publish --build-cache - name: Rename Jars if: ${{ env.PUBLISH == 'true' }} - run: for file in build/libs/*; do mv "$file" "${file/SHOT/SHOT-$(date --utc '+%Y%m%d-%H%M%S')-${{ env.VERSION_SUFFIX }}}"; done; + run: for file in build/libs/*; do mv "$file" "${file/SHOT/SHOT+$(date --utc '+%Y%m%d-%H%M%S')-${{ env.VERSION_SUFFIX }}}"; done; - name: Upload Artifacts if: ${{ env.PUBLISH == 'true' }} uses: actions/upload-artifact@v4 diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index 34d7f2e7a78..a1fef724a0c 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -11,7 +11,7 @@ def mod_url = getConfig("mod_url") def mod_issue_tracker = getConfig("mod_issue_tracker") String suffix = System.getenv("VERSION_SUFFIX") -String version_toml = "$version" + (suffix ? "-$suffix" : "") +String version_toml = "$version" + (suffix ? "+$suffix" : "") tasks.register('printVersion') { doLast { From df9e6cbfef5271503295c2ec2127e08a4086a096 Mon Sep 17 00:00:00 2001 From: marisathewitch Date: Wed, 7 May 2025 12:55:06 +0400 Subject: [PATCH 015/270] Translated using Weblate (Russian) for 1.20.1 (#3145) Co-authored-by: Alex --- .../resources/assets/gtceu/lang/ru_ru.json | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index 06228a19cbe..a5a37604f79 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -5508,5 +5508,38 @@ "config.gtceu.option.oreIndicators": "oreIndicators", "metaarmor.tooltip.freezing": "Предотвращает замораживание", "config.gtceu.option.minerSpeed": "minerSpeed", - "cover.machine_controller.mode.null": "Ничем не управлять" + "cover.machine_controller.mode.null": "Ничем не управлять", + "cover.advanced_detector.latch.disabled.2": "Изменить режим работы редстоуна для этого улучшения.", + "cover.advanced_detector.latch.disabled.4": "§eФиксированный§7 - выдаёт сигнал 15, пока значение выше макс; затем переключается на 0, пока не опустится ниже мин", + "cover.advanced_detector.latch.enabled.0": "Поведение: Фиксированный", + "cover.advanced_detector.latch.enabled.4": "§eФиксированный§7 - выдаёт сигнал 15, пока значение выше макс; затем переключается на 0, пока не опустится ниже мин", + "gtceu.ownership.name.ftb": "FTB Teams", + "gtceu.ownership.name.player": "Игрок", + "gtceu.recipe_logic.no_contents": "Рецепт не имеет содержания", + "gtceu.tooltip.status.trinary.true": "Истина", + "gtceu.tooltip.status.trinary.unknown": "Неизвестно", + "message.gtceu.new_veins.name": "Обнаружено %s!", + "recipe.condition.daytime.night.tooltip": "Для работы требуется ночное время", + "recipe.condition.quest.completed.tooltip": "Требует завершения: %s", + "recipe.condition.quest.not_completed.tooltip": "Требуется %s не завершено", + "cover.advanced_detector.latch.disabled.0": "Поведение: Непрерывный", + "cover.advanced_detector.latch.disabled.3": "§eНепрерывный§7 - По умолчанию; Значения ниже минимума — сигнал 0; выше максимума — сигнал 15; Промежуточные значения — пропорционально от 0 до 15", + "gtceu.top.buffer_not_bound": "Буфер не имеет привязки", + "material.gtceu.hydrogen_peroxide": "Перекись водорода", + "message.gtceu.new_veins.amount": "Обнаружено %d новых жил!", + "recipe.condition.daytime.day.tooltip": "Для работы требуется дневное время", + "recipe.condition.gamestage.locked_stage": "Закрыт на этапе: %s", + "cover.advanced_detector.latch.enabled.2": "Изменить режим работы редстоуна для этого улучшения.", + "cover.advanced_detector.latch.enabled.3": "§eНепрерывный§7 - По умолчанию; Значения ниже минимума — сигнал 0; выше максимума — сигнал 15; Промежуточные значения — пропорционально от 0 до 15", + "gtceu.ownership.name.argonauts": "Гильдии Argonauts", + "gtceu.recipe_logic.no_capabilities": "Машина не имеет взаимодействий", + "recipe.condition.gamestage.unlocked_stage": "Открывается на этапе: %s", + "tagprefix.null": "%s Null", + "gtceu.tooltip.status.trinary.false": "Ложь", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] Режим конвертации энергии", + "ldlib.gui.editor.group.widget.gtm_container": "Виджет контейнеров GTM", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "Слот фантомной жидкости GTM", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "Жидкостный слот GTM", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "Предметный слот GTM", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "Слот фантомного предмета GTM" } From 46a3b704f99a1288e865ad6f14e692cb8083b1a6 Mon Sep 17 00:00:00 2001 From: Georgy <32033856+stivosha@users.noreply.github.com> Date: Sat, 10 May 2025 16:41:14 +0500 Subject: [PATCH 016/270] Fix Russian translation of High Voltage 4x Battery Buffer (#3147) --- src/main/resources/assets/gtceu/lang/ru_ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index a5a37604f79..a245c6ec146 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -210,7 +210,7 @@ "block.gtceu.hv_assembler": "§6Улучшенная сборочная машина II§r", "block.gtceu.hv_autoclave": "§6Улучшенный автоклав II§r", "block.gtceu.hv_battery_buffer_16x": "Батарейный буфер (16 ячеек §6HV§r)", - "block.gtceu.hv_battery_buffer_4x": "Батарейный буфер (4 ячейки §5EV§r)", + "block.gtceu.hv_battery_buffer_4x": "Батарейный буфер (4 ячейки §6HV§r)", "block.gtceu.hv_battery_buffer_8x": "Батарейный буфер (8 ячеек §6HV§r)", "block.gtceu.hv_bedrock_ore_miner": "§6Улучшенный подземный шахтер II§r", "block.gtceu.hv_bender": "§6Улучшенный гибочный станок II§r", From c0ce4295b34ede3da0e984432af4791ab2f0f7ce Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 11 May 2025 03:39:46 -0600 Subject: [PATCH 017/270] Fix Cleanrooms crashing with >MAX voltage (#3152) --- .../common/machine/multiblock/electric/CleanroomMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 106f7c74822..8fb9da3ba16 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -201,7 +201,7 @@ protected void initializeAbilities() { } this.inputEnergyContainers = new EnergyContainerList(energyContainers); getRecipeLogic().setEnergyContainer(this.inputEnergyContainers); - this.tier = GTUtil.getFloorTierByVoltage(getMaxVoltage()); + this.tier = Math.min(GTValues.MAX, GTUtil.getFloorTierByVoltage(getMaxVoltage())); } @SuppressWarnings("RedundantIfStatement") // `return false` being a separate statement is better for readability From 65e836cffa9cb13842cd0740d1bcb6343b6bd282 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Sun, 11 May 2025 05:54:33 -0400 Subject: [PATCH 018/270] Remove `SERVER_TICK` block property (#3135) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../gtceu/api/block/BlockProperties.java | 13 ----------- .../gtceu/api/block/IMachineBlock.java | 5 ++-- .../gtceu/api/block/MetaMachineBlock.java | 1 - .../gtceu/api/block/PipeBlock.java | 7 +++--- .../api/blockentity/PipeBlockEntity.java | 17 +------------- .../gtceu/api/machine/MetaMachine.java | 23 ++----------------- 6 files changed, 8 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/block/BlockProperties.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/BlockProperties.java b/src/main/java/com/gregtechceu/gtceu/api/block/BlockProperties.java deleted file mode 100644 index a42ed84c3cb..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/block/BlockProperties.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gregtechceu.gtceu.api.block; - -import net.minecraft.world.level.block.state.properties.BooleanProperty; - -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote BlockProperties - */ -public final class BlockProperties { - - public static final BooleanProperty SERVER_TICK = BooleanProperty.create("server_tick"); -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java index 40540093356..79cd53ceb6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java @@ -60,14 +60,13 @@ default BlockEntity newBlockEntity(BlockPos pos, BlockState state) { default BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { if (blockEntityType == getDefinition().getBlockEntityType()) { - if (state.getValue(BlockProperties.SERVER_TICK) && !level.isClientSide) { + if (!level.isClientSide) { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IMachineBlockEntity metaMachine) { metaMachine.getMetaMachine().serverTick(); } }; - } - if (level.isClientSide) { + } else { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IMachineBlockEntity metaMachine) { metaMachine.getMetaMachine().clientTick(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index d5b2460a21f..fcd478a4006 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -82,7 +82,6 @@ public MetaMachineBlock(Properties properties, MachineDefinition definition) { @Override protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(BlockProperties.SERVER_TICK); RotationState rotationState = RotationState.get(); if (rotationState != RotationState.NONE) { pBuilder.add(rotationState.property); diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index bedfd72bcb4..95d56d27afb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -86,13 +86,12 @@ public abstract class PipeBlock & IPipeType builder) { - super.createBlockStateDefinition(builder.add(BlockProperties.SERVER_TICK, BlockStateProperties.WATERLOGGED)); + super.createBlockStateDefinition(builder.add(BlockStateProperties.WATERLOGGED)); } @Override @@ -439,7 +438,7 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType blockEntityType) { if (blockEntityType == getBlockEntityType()) { - if (!level.isClientSide && state.getValue(BlockProperties.SERVER_TICK)) { + if (!level.isClientSide) { return (pLevel, pPos, pState, pTile) -> { if (pTile instanceof IPipeNode pipeNode) { pipeNode.serverTick(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 9f87a6a092a..53aa3612810 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.blockentity; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.BlockProperties; import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.IToolable; @@ -34,7 +33,6 @@ import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -197,15 +195,6 @@ public TickableSubscription subscribeServerTick(Runnable runnable) { if (!isRemote()) { var subscription = new TickableSubscription(runnable); waitingToAdd.add(subscription); - var blockState = getBlockState(); - if (!blockState.getValue(BlockProperties.SERVER_TICK)) { - if (getLevel() instanceof ServerLevel serverLevel) { - blockState = blockState.setValue(BlockProperties.SERVER_TICK, true); - setBlockState(blockState); - serverLevel.getServer().tell(new TickTask(0, () -> serverLevel.setBlockAndUpdate(getBlockPos(), - getBlockState().setValue(BlockProperties.SERVER_TICK, true)))); - } - } return subscription; } return null; @@ -222,8 +211,7 @@ public final void serverTick() { serverTicks.addAll(waitingToAdd); waitingToAdd.clear(); } - var iter = serverTicks.iterator(); - while (iter.hasNext()) { + for (var iter = serverTicks.iterator(); iter.hasNext();) { var tickable = iter.next(); if (tickable.isStillSubscribed()) { tickable.run(); @@ -232,9 +220,6 @@ public final void serverTick() { iter.remove(); } } - if (serverTicks.isEmpty() && waitingToAdd.isEmpty() && !this.isRemoved()) { - getLevel().setBlockAndUpdate(getBlockPos(), getBlockState().setValue(BlockProperties.SERVER_TICK, false)); - } } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 5002c37d237..c092a85f3d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.machine; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.BlockProperties; import com.gregtechceu.gtceu.api.block.IAppearance; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; @@ -47,8 +46,6 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.server.TickTask; -import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -242,19 +239,6 @@ public TickableSubscription subscribeServerTick(Runnable runnable) { if (!isRemote()) { var subscription = new TickableSubscription(runnable); waitingToAdd.add(subscription); - var blockState = getBlockState(); - if (!blockState.getValue(BlockProperties.SERVER_TICK)) { - if (getLevel() instanceof ServerLevel serverLevel) { - blockState = blockState.setValue(BlockProperties.SERVER_TICK, true); - holder.getSelf().setBlockState(blockState); - serverLevel.getServer().tell(new TickTask(0, () -> { - if (!isInValid()) { - serverLevel.setBlockAndUpdate(getPos(), - getBlockState().setValue(BlockProperties.SERVER_TICK, true)); - } - })); - } - } return subscription; } else if (getLevel() instanceof DummyWorld) { var subscription = new TickableSubscription(runnable); @@ -272,9 +256,6 @@ public void unsubscribe(@Nullable TickableSubscription current) { public final void serverTick() { executeTick(); - if (serverTicks.isEmpty() && waitingToAdd.isEmpty() && !isInValid()) { - getLevel().setBlockAndUpdate(getPos(), getBlockState().setValue(BlockProperties.SERVER_TICK, false)); - } } public boolean isFirstDummyWorldTick = true; @@ -295,8 +276,8 @@ private void executeTick() { serverTicks.addAll(waitingToAdd); waitingToAdd.clear(); } - var iter = serverTicks.iterator(); - while (iter.hasNext()) { + + for (var iter = serverTicks.iterator(); iter.hasNext();) { var tickable = iter.next(); if (tickable.isStillSubscribed()) { tickable.run(); From 8211ae53743f988a3fc7f84565d2a74a81bbcf87 Mon Sep 17 00:00:00 2001 From: iouter <62897714+iouter@users.noreply.github.com> Date: Sun, 11 May 2025 17:55:26 +0800 Subject: [PATCH 019/270] Update zh_cn.json (#3143) --- .../resources/assets/gtceu/lang/zh_cn.json | 11054 ++++++++-------- 1 file changed, 5530 insertions(+), 5524 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 98646b8b448..fb89c90e407 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -1,5526 +1,5532 @@ { - "behavior.data_item.assemblyline.data":"- §a%s", - "behavior.data_item.assemblyline.title":"§n装配线结构数据:", - "behavior.item_magnet.disabled":"§c磁场已禁用", - "behavior.item_magnet.enabled":"§a磁场已启用", - "behavior.portable_scanner.amp_per_sec":"平均(最后一秒):%s A", - "behavior.portable_scanner.bedrock_fluid.amount":"流体储量:%s %s - %s%%", - "behavior.portable_scanner.bedrock_fluid.amount_unknown":"流体储量:%s%%", - "behavior.portable_scanner.bedrock_fluid.nothing":"流体储量:§6无§r", - "behavior.portable_scanner.block_hardness":"硬度:%s;爆炸抗性:%s", - "behavior.portable_scanner.block_name":"名称:%s;元数据:%s", - "behavior.portable_scanner.debug_cpu_load":"%2$s刻内平均CPU负载约%1$sns,最差情况为%sns。", - "behavior.portable_scanner.debug_cpu_load_seconds":"负载秒数为%s秒。", - "behavior.portable_scanner.debug_lag_count":"已在服务器中造成%s次延迟尖峰警告(任何大于%sms的情况)。", - "behavior.portable_scanner.debug_machine":"元ID:%s", - "behavior.portable_scanner.debug_machine_invalid":" 无效!", - "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =":" null!", - "behavior.portable_scanner.debug_machine_valid":"无效!", - "behavior.portable_scanner.divider":"=========================", - "behavior.portable_scanner.energy_container_in":"输入上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_out":"输出上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_storage":"能量:%s EU / %s EU", - "behavior.portable_scanner.environmental_hazard":"区块内的环境污染:%s§r - %s ppm", - "behavior.portable_scanner.environmental_hazard.nothing":"区块内的环境污染:§6无§r", - "behavior.portable_scanner.eu_per_sec":"平均(最后一秒):%s EU/t", - "behavior.portable_scanner.guild_name":"§2公会名称:%s§r", - "behavior.portable_scanner.local_hazard":"区域内的其他污染:%s§r - %s ppm", - "behavior.portable_scanner.local_hazard.nothing":"区域内的其他污染:§6无§r", - "behavior.portable_scanner.machine_disabled":"已停止。", - "behavior.portable_scanner.machine_front_facing":"控制器面向:%s", - "behavior.portable_scanner.machine_ownership":"§2机器所有者类型:%s§r", - "behavior.portable_scanner.machine_power_loss":"因断电而停止工作。", - "behavior.portable_scanner.machine_progress":"处理进度/总计:%s / %s", - "behavior.portable_scanner.machine_upwards_facing":"控制器正面朝向:%s", - "behavior.portable_scanner.mode.caption":"显示模式:%s", - "behavior.portable_scanner.mode.show_all_info":"显示所有信息", - "behavior.portable_scanner.mode.show_block_info":"显示方块信息", - "behavior.portable_scanner.mode.show_electrical_info":"显示电器信息", - "behavior.portable_scanner.mode.show_environmental_info":"显示环境信息", - "behavior.portable_scanner.mode.show_machine_info":"显示机器信息", - "behavior.portable_scanner.mode.show_recipe_info":"显示配方信息", - "behavior.portable_scanner.muffled":"已静音。", - "behavior.portable_scanner.multiblock_energy_input":"最大输入:%s EU/t,电压等级 %s", - "behavior.portable_scanner.multiblock_energy_output":"最大输出:%s EU/t,电压等级 %s", - "behavior.portable_scanner.multiblock_maintenance":"故障:%s", - "behavior.portable_scanner.multiblock_parallel":"并行处理:%s", - "behavior.portable_scanner.player_name":"§2玩家姓名:%s§r,§7玩家在线:%s§r", - "behavior.portable_scanner.position":"----- X:%s;Y:%s;Z:%s;D:%s -----", - "behavior.portable_scanner.state":"%s:%s", - "behavior.portable_scanner.tank":"流体储量(槽位%s):%s mB / %s mB %s", - "behavior.portable_scanner.tanks_empty":"未存储流体", - "behavior.portable_scanner.team_name":"§2团队名称:%s§r", - "behavior.portable_scanner.workable_consumption":"预计耗能:%s EU/t,%s A", - "behavior.portable_scanner.workable_production":"预计产能:%s EU/t,%s A", - "behavior.portable_scanner.workable_progress":"处理进度:%s s / %s s", - "behavior.portable_scanner.workable_stored_energy":"能量缓存:%s EU / %s EU", - "behavior.prospector.added_waypoint":"已创建路径点:%s!", - "behavior.prospector.not_enough_energy":"能量不足!", - "behavior.toggle_energy_consumer.tooltip":"右击切换模式", - "behaviour.boor.by":"通过%s", - "behaviour.hammer":"右击机器以开启或关闭消声功能", - "behaviour.hoe":"可以翻耕泥土", - "behaviour.lighter.fluid.tooltip":"可使用丙烷或丁烷来生火", - "behaviour.lighter.tooltip.description":"可以点火", - "behaviour.lighter.tooltip.usage":"潜行右击以开/关", - "behaviour.lighter.uses":"剩余次数:%d", - "behaviour.meta.machine.config.copy.tooltip":"§7潜行右键单击以复制机器配置", - "behaviour.meta.machine.config.paste.tooltip":"§7右键单击以粘贴机器配置", - "behaviour.paintspray.black.tooltip":"可以将物品染成黑色", - "behaviour.paintspray.blue.tooltip":"可以将物品染成蓝色", - "behaviour.paintspray.brown.tooltip":"可以将物品染成棕色", - "behaviour.paintspray.cyan.tooltip":"可以将物品染成青色", - "behaviour.paintspray.gray.tooltip":"可以将物品染成灰色", - "behaviour.paintspray.green.tooltip":"可以将物品染成绿色", - "behaviour.paintspray.light_blue.tooltip":"可以将物品染成淡蓝色", - "behaviour.paintspray.light_gray.tooltip":"可以将物品染成银色", - "behaviour.paintspray.lime.tooltip":"可以将物品染成黄绿色", - "behaviour.paintspray.magenta.tooltip":"可以将物品染成品红色", - "behaviour.paintspray.orange.tooltip":"可以将物品染成橙色", - "behaviour.paintspray.pink.tooltip":"可以将物品染成粉红色", - "behaviour.paintspray.purple.tooltip":"可以将物品染成紫色", - "behaviour.paintspray.red.tooltip":"可以将物品染成红色", - "behaviour.paintspray.solvent.tooltip":"可以移除已染色物品的颜色", - "behaviour.paintspray.uses":"剩余次数:%d", - "behaviour.paintspray.white.tooltip":"可以将物品染成白色", - "behaviour.paintspray.yellow.tooltip":"可以将物品染成黄色", - "behaviour.prospecting":"适用于探矿", - "behaviour.setting.allow.input.from.output.tooltip":"%s-允许从输出面输入:%s", - "behaviour.setting.item_auto_output.tooltip":"%s-自动输出:%s", - "behaviour.setting.muffled.tooltip":"静音:%s", - "behaviour.setting.output.direction.tooltip":"%s-输出面方向:%s", - "behaviour.soft_hammer":"用来开启与关闭机器", - "behaviour.soft_hammer.disabled":"已暂停工作", - "behaviour.soft_hammer.enabled":"已恢复工作", - "behaviour.soft_hammer.idle_after_cycle":"当前周期结束后暂停机器", - "behaviour.wrench":"右击以旋转方块", - "block.filter_casing.tooltip":"创建一个§a无尘§r环境", - "block.gtceu.acid_hazard_sign_block":"强酸危害警示方块", - "block.gtceu.active_transformer":"有源变压器", - "block.gtceu.advanced_computer_casing":"高级计算机外壳", - "block.gtceu.advanced_data_access_hatch":"高级数据访问仓", - "block.gtceu.alloy_blast_smelter":"合金冶炼炉", - "block.gtceu.aluminium_crate":"铝板条箱", - "block.gtceu.aluminium_drum":"铝桶", - "block.gtceu.antimatter_hazard_sign_block":"反物质危害警示方块", - "block.gtceu.assembly_line":"装配线", - "block.gtceu.assembly_line_casing":"装配线外壳", - "block.gtceu.assembly_line_grating":"装配线格栅", - "block.gtceu.assembly_line_unit":"装配线控制外壳", - "block.gtceu.atomic_casing":"原子机械方块", - "block.gtceu.auto_maintenance_hatch":"自动维护仓", - "block.gtceu.bio_hazard_sign_block":"生化危害警示方块", - "block.gtceu.black_borderless_lamp":"黑色无框灯", - "block.gtceu.black_lamp":"黑色灯", - "block.gtceu.black_large_metal_sheet":"黑色粗纹金属板方块", - "block.gtceu.black_metal_sheet":"黑色金属板方块", - "block.gtceu.black_studs":"黑色橡胶混凝土", - "block.gtceu.blue_borderless_lamp":"蓝色无框灯", - "block.gtceu.blue_lamp":"蓝色灯", - "block.gtceu.blue_large_metal_sheet":"蓝色粗纹金属板方块", - "block.gtceu.blue_metal_sheet":"蓝色金属板方块", - "block.gtceu.blue_studs":"蓝色橡胶混凝土", - "block.gtceu.boss_hazard_sign_block":"Boss危害警示方块", - "block.gtceu.brittle_charcoal":"脆木炭块", - "block.gtceu.bronze_brick_casing":"砖砌青铜外壳", - "block.gtceu.bronze_crate":"青铜板条箱", - "block.gtceu.bronze_drum":"青铜桶", - "block.gtceu.bronze_firebox_casing":"青铜燃烧室", - "block.gtceu.bronze_gearbox":"青铜齿轮箱机械方块", - "block.gtceu.bronze_large_boiler":"大型青铜锅炉", - "block.gtceu.bronze_machine_casing":"青铜机器外壳", - "block.gtceu.bronze_pipe_casing":"青铜管道方块", - "block.gtceu.brown_borderless_lamp":"棕色无框灯", - "block.gtceu.brown_lamp":"棕色灯", - "block.gtceu.brown_large_metal_sheet":"棕色粗纹金属板方块", - "block.gtceu.brown_metal_sheet":"棕色金属板方块", - "block.gtceu.brown_studs":"棕色橡胶混凝土", - "block.gtceu.casing_coke_bricks":"焦炉砖块", - "block.gtceu.casing_grate":"栅格机械方块", - "block.gtceu.causality_hazard_sign_block":"因果律危害警示方块", - "block.gtceu.charcoal_pile_igniter":"木炭堆点火器", - "block.gtceu.chiseled_dark_concrete":"錾制深色混凝土", - "block.gtceu.chiseled_light_concrete":"錾制淡色混凝土", - "block.gtceu.chiseled_marble":"錾制大理岩", - "block.gtceu.chiseled_red_granite":"錾制红花岗岩", - "block.gtceu.clean_machine_casing":"洁净不锈钢机械方块", - "block.gtceu.cleaning_maintenance_hatch":"超净维护仓", - "block.gtceu.cleanroom":"超净间", - "block.gtceu.cleanroom_glass":"超净间玻璃", - "block.gtceu.coke_oven":"焦炉", - "block.gtceu.coke_oven_bricks":"焦炉砖块", - "block.gtceu.coke_oven_hatch":"焦炉仓", - "block.gtceu.computation_receiver_hatch":"算力数据靶仓", - "block.gtceu.computation_transmitter_hatch":"算力数据源仓", - "block.gtceu.computer_casing":"计算机外壳", - "block.gtceu.computer_heat_vent":"计算机散热口", - "block.gtceu.configurable_maintenance_hatch":"可配置维护仓", - "block.gtceu.corrosion_proof_casing":"耐腐蚀机械方块", - "block.gtceu.cracked_dark_concrete_bricks":"裂纹深色混凝土砖", - "block.gtceu.cracked_light_concrete_bricks":"裂纹淡色混凝土砖", - "block.gtceu.cracked_marble_bricks":"裂纹大理岩砖", - "block.gtceu.cracked_red_granite_bricks":"裂纹红花岗岩砖", - "block.gtceu.cracker":"裂化机", - "block.gtceu.creative_chest":"创造模式箱子", - "block.gtceu.creative_computation_provider":"创造模式计算机", - "block.gtceu.creative_data_access_hatch":"创造模式数据访问仓", - "block.gtceu.creative_energy":"创造模式能量单元", - "block.gtceu.creative_tank":"创造模式储罐", - "block.gtceu.crushing_wheels":"粉碎轮", - "block.gtceu.cupronickel_coil_block":"白铜线圈方块", - "block.gtceu.cyan_borderless_lamp":"青色无框灯", - "block.gtceu.cyan_lamp":"青色灯", - "block.gtceu.cyan_large_metal_sheet":"青色粗纹金属板方块", - "block.gtceu.cyan_metal_sheet":"青色金属板方块", - "block.gtceu.cyan_studs":"青色橡胶混凝土", - "block.gtceu.dark_concrete":"深色混凝土", - "block.gtceu.dark_concrete_bricks":"深色混凝土砖", - "block.gtceu.dark_concrete_cobblestone":"深色混凝土圆石", - "block.gtceu.dark_concrete_small_tile":"深色混凝土小片瓦", - "block.gtceu.dark_concrete_tile":"深色混凝土瓦", - "block.gtceu.dark_concrete_windmill_a":"深色混凝土风车形瓦 A", - "block.gtceu.dark_concrete_windmill_b":"深色混凝土风车形瓦 B", - "block.gtceu.data_access_hatch":"数据访问仓", - "block.gtceu.data_bank":"数据库", - "block.gtceu.data_receiver_hatch":"光学数据靶仓", - "block.gtceu.data_transmitter_hatch":"光学数据源仓", - "block.gtceu.distillation_tower":"蒸馏塔", - "block.gtceu.electric_blast_furnace":"电力高炉", - "block.gtceu.electrolytic_cell":"电解器", - "block.gtceu.empty_tier_i_battery":"空电容(Tier I)", - "block.gtceu.empty_tier_ii_battery":"空电容(Tier II)", - "block.gtceu.empty_tier_iii_battery":"空电容(Tier III)", - "block.gtceu.engine_intake_casing":"引擎进气机械方块", - "block.gtceu.ev_16a_energy_converter":"16§e安§r§5EV§r能量转换器", - "block.gtceu.ev_1a_energy_converter":"1§e安§r§5EV§r能量转换器", - "block.gtceu.ev_4a_energy_converter":"4§e安§r§5EV§r能量转换器", - "block.gtceu.ev_8a_energy_converter":"8§e安§r§5EV§r能量转换器", - "block.gtceu.ev_air_scrubber":"§5进阶空气净化器 III§r", - "block.gtceu.ev_alloy_smelter":"§5进阶合金炉 III§r", - "block.gtceu.ev_arc_furnace":"§5进阶电弧炉 III§r", - "block.gtceu.ev_assembler":"§5进阶组装机 III§r", - "block.gtceu.ev_autoclave":"§5进阶高压釜 III§r", - "block.gtceu.ev_battery_buffer_16x":"16x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_4x":"4x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_8x":"8x§5超高压§r电池箱(§5EV§r)", - "block.gtceu.ev_bedrock_ore_miner":"§5进阶基岩采矿机 III§r", - "block.gtceu.ev_bender":"§5进阶卷板机 III§r", - "block.gtceu.ev_block_breaker":"§5进阶方块破坏器 III§r", - "block.gtceu.ev_brewery":"§5进阶酿造室 III§r", - "block.gtceu.ev_canner":"§5进阶装罐机 III§r", - "block.gtceu.ev_centrifuge":"§5进阶离心机 III§r", - "block.gtceu.ev_charger_4x":"4x§5超高压§r闪聚充电箱(§5EV§r)", - "block.gtceu.ev_chemical_bath":"§5进阶化学浸洗机 III§r", - "block.gtceu.ev_chemical_reactor":"§5进阶化学反应釜 III§r", - "block.gtceu.ev_circuit_assembler":"§5进阶电路组装机 III§r", - "block.gtceu.ev_compressor":"§5进阶压缩机 III§r", - "block.gtceu.ev_cutter":"§5进阶切割机 III§r", - "block.gtceu.ev_diode":"§5EV§r二极管", - "block.gtceu.ev_distillery":"§5进阶蒸馏室 III§r", - "block.gtceu.ev_electric_furnace":"§5进阶电炉 III§r", - "block.gtceu.ev_electrolyzer":"§5进阶电解机 III§r", - "block.gtceu.ev_electromagnetic_separator":"§5进阶电磁选矿机 III§r", - "block.gtceu.ev_energy_input_hatch":"§5EV§r能源仓", - "block.gtceu.ev_energy_input_hatch_16a":"16安§5EV§r能源仓", - "block.gtceu.ev_energy_input_hatch_4a":"4安§5EV§r能源仓 ", - "block.gtceu.ev_energy_output_hatch":"§5EV§r动力仓", - "block.gtceu.ev_energy_output_hatch_16a":"16安§5EV§r动力仓", - "block.gtceu.ev_energy_output_hatch_4a":"4安§5EV§r动力仓", - "block.gtceu.ev_extractor":"§5进阶提取机 III§r", - "block.gtceu.ev_extruder":"§5进阶压模器 III§r", - "block.gtceu.ev_fermenter":"§5进阶发酵槽 III§r", - "block.gtceu.ev_fisher":"§5进阶捕鱼机 III§r", - "block.gtceu.ev_fluid_drilling_rig":"§5进阶流体钻机 III§r", - "block.gtceu.ev_fluid_heater":"§5进阶流体加热器 III§r", - "block.gtceu.ev_fluid_passthrough_hatch":"§5EV§r流体通行仓", - "block.gtceu.ev_fluid_solidifier":"§5进阶流体固化器 III§r", - "block.gtceu.ev_forge_hammer":"§5进阶锻造锤 III§r", - "block.gtceu.ev_forming_press":"§5进阶冲压机床 III§r", - "block.gtceu.ev_gas_collector":"§5进阶集气室 III§r", - "block.gtceu.ev_hermetic_casing":"密封机械方块 IV", - "block.gtceu.ev_input_bus":"§5EV§r输入总线", - "block.gtceu.ev_input_hatch":"§5EV§r输入仓", - "block.gtceu.ev_input_hatch_4x":"§5EV§r四重输入仓", - "block.gtceu.ev_input_hatch_9x":"§5EV§r九重输入仓", - "block.gtceu.ev_item_collector":"§5进阶物品收集器 III§r", - "block.gtceu.ev_item_passthrough_hatch":"§5EV§r物品通行仓", - "block.gtceu.ev_lapotronic_battery":"兰波顿电容(§5EV§r)", - "block.gtceu.ev_large_miner":"§5进阶大型采矿机 III§r", - "block.gtceu.ev_laser_engraver":"§5进阶激光蚀刻机 III§r", - "block.gtceu.ev_lathe":"§5进阶车床 III§r", - "block.gtceu.ev_macerator":"§5进阶研磨机 III§r", - "block.gtceu.ev_machine_casing":"§5EV§r机械方块", - "block.gtceu.ev_machine_hull":"§5EV§f机器外壳", - "block.gtceu.ev_mixer":"§5进阶搅拌机 III§r", - "block.gtceu.ev_muffler_hatch":"§5EV§r消声仓", - "block.gtceu.ev_ore_washer":"§5进阶洗矿厂 III§r", - "block.gtceu.ev_output_bus":"§5EV§r输出总线", - "block.gtceu.ev_output_hatch":"§5EV§r输出仓", - "block.gtceu.ev_output_hatch_4x":"§5EV§r四重输出仓", - "block.gtceu.ev_output_hatch_9x":"§5EV§r九重输出仓", - "block.gtceu.ev_packer":"§5进阶打包机 III§r", - "block.gtceu.ev_polarizer":"§5进阶两极磁化机 III§r", - "block.gtceu.ev_pump":"§5进阶泵 III§r", - "block.gtceu.ev_rock_crusher":"§5进阶碎岩机 III§r", - "block.gtceu.ev_rotor_holder":"§5EV§r转子支架", - "block.gtceu.ev_scanner":"§5进阶扫描仪 III§r", - "block.gtceu.ev_sifter":"§5进阶筛选机 III§r", - "block.gtceu.ev_substation_input_hatch_64a":"64安§5EV§r变电能源仓", - "block.gtceu.ev_substation_output_hatch_64a":"64安§5EV§r变电动力仓", - "block.gtceu.ev_super_chest":"超级箱 IV", - "block.gtceu.ev_super_tank":"超级缸 IV", - "block.gtceu.ev_thermal_centrifuge":"§5进阶热力离心机 III§r", - "block.gtceu.ev_transformer_16a":"§5超高压§r高能变压器(§5EV§r)", - "block.gtceu.ev_transformer_1a":"§5超高压§r变压器(§5EV§r)", - "block.gtceu.ev_transformer_2a":"§5超高压§r进阶变压器(§5EV§r)", - "block.gtceu.ev_transformer_4a":"§5超高压§r高流变压器(§5EV§r)", - "block.gtceu.ev_wiremill":"§5进阶线材轧机 III§r", - "block.gtceu.ev_world_accelerator":"§5进阶世界加速器 III§r", - "block.gtceu.explosion_hazard_sign_block":"爆炸危害警示方块", - "block.gtceu.explosive.breaking_tooltip":"破坏它会引爆火药,潜行挖掘以重新拾取", - "block.gtceu.explosive.lighting_tooltip":"无法用红石信号引爆", - "block.gtceu.extreme_combustion_engine":"极限内燃引擎", - "block.gtceu.extreme_engine_intake_casing":"极限引擎进气机械方块", - "block.gtceu.filter_casing":"过滤器机械方块", - "block.gtceu.fire_hazard_sign_block":"易燃危害警示方块", - "block.gtceu.firebricks":"耐火砖块", - "block.gtceu.foam":"建筑泡沫", - "block.gtceu.frost_hazard_sign_block":"低温危害警示方块", - "block.gtceu.frostproof_machine_casing":"铝制防冻机械方块", - "block.gtceu.fusion_casing":"聚变机械方块", - "block.gtceu.fusion_casing_mk2":"聚变机械方块 MK-II", - "block.gtceu.fusion_casing_mk3":"聚变机械方块 MK-III", - "block.gtceu.fusion_coil":"聚变线圈方块", - "block.gtceu.fusion_glass":"聚变玻璃", - "block.gtceu.gas_large_turbine":"大型燃气涡轮", - "block.gtceu.generic_hazard_sign_block":"泛用危害警示方块", - "block.gtceu.gold_drum":"金桶", - "block.gtceu.gray_borderless_lamp":"灰色无框灯", - "block.gtceu.gray_lamp":"灰色灯", - "block.gtceu.gray_large_metal_sheet":"灰色粗纹金属板方块", - "block.gtceu.gray_metal_sheet":"灰色金属板方块", - "block.gtceu.gray_studs":"灰色橡胶混凝土", - "block.gtceu.green_borderless_lamp":"绿色无框灯", - "block.gtceu.green_lamp":"绿色灯", - "block.gtceu.green_large_metal_sheet":"绿色粗纹金属板方块", - "block.gtceu.green_metal_sheet":"绿色金属板方块", - "block.gtceu.green_studs":"绿色橡胶混凝土", - "block.gtceu.gregification_hazard_sign_block":"格雷化危害警示方块", - "block.gtceu.heat_vent":"散热片", - "block.gtceu.heatproof_machine_casing":"殷钢隔热机械方块", - "block.gtceu.high_performance_computation_array":"高性能计算阵列(HPCA)", - "block.gtceu.high_power_casing":"高能机械方块", - "block.gtceu.high_pressure_hazard_sign_block":"高压力危害警示方块", - "block.gtceu.high_temperature_hazard_sign_block":"高温危害警示方块", - "block.gtceu.high_temperature_smelting_casing":"高温冶炼机械方块", - "block.gtceu.high_voltage_hazard_sign_block":"高压电危害警示方块", - "block.gtceu.hp_steam_alloy_smelter":"高压蒸汽合金炉", - "block.gtceu.hp_steam_compressor":"高压蒸汽压缩机", - "block.gtceu.hp_steam_extractor":"高压蒸汽提取机", - "block.gtceu.hp_steam_forge_hammer":"高压蒸汽锻造锤", - "block.gtceu.hp_steam_furnace":"高压蒸汽熔炉", - "block.gtceu.hp_steam_liquid_boiler":"高压蒸汽液体燃料锅炉", - "block.gtceu.hp_steam_macerator":"高压蒸汽研磨机", - "block.gtceu.hp_steam_miner":"高压蒸汽采矿机", - "block.gtceu.hp_steam_rock_crusher":"高压蒸汽碎岩机", - "block.gtceu.hp_steam_solar_boiler":"高压蒸汽太阳能锅炉", - "block.gtceu.hp_steam_solid_boiler":"高压蒸汽固体燃料锅炉", - "block.gtceu.hpca_active_cooler_component":"HPCA主动冷却组件", - "block.gtceu.hpca_advanced_computation_component":"HPCA高级计算组件", - "block.gtceu.hpca_bridge_component":"HPCA桥接组件", - "block.gtceu.hpca_computation_component":"HPCA计算组件", - "block.gtceu.hpca_empty_component":"空HPCA组件", - "block.gtceu.hpca_heat_sink_component":"HPCA散热组件", - "block.gtceu.hssg_coil_block":"高速钢-G线圈方块", - "block.gtceu.huge_duct_pipe":"巨型风管", - "block.gtceu.hv_16a_energy_converter":"16§e安§r§6HV§r能量转换器", - "block.gtceu.hv_1a_energy_converter":"1§e安§r§6HV§r能量转换器", - "block.gtceu.hv_4a_energy_converter":"4§e安§r§6HV§r能量转换器", - "block.gtceu.hv_8a_energy_converter":"8§e安§r§6HV§r能量转换器", - "block.gtceu.hv_air_scrubber":"§6进阶空气净化器 II§r", - "block.gtceu.hv_alloy_smelter":"§6进阶合金炉 II§r", - "block.gtceu.hv_arc_furnace":"§6进阶电弧炉 II§r", - "block.gtceu.hv_assembler":"§6进阶组装机 II§r", - "block.gtceu.hv_autoclave":"§6进阶高压釜 II§r", - "block.gtceu.hv_battery_buffer_16x":"16x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_4x":"4x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_8x":"8x§6高压§r电池箱(§6HV§r)", - "block.gtceu.hv_bedrock_ore_miner":"§6进阶基岩采矿机 II§r", - "block.gtceu.hv_bender":"§6进阶卷板机 II§r", - "block.gtceu.hv_block_breaker":"§6进阶方块破坏机 II§r", - "block.gtceu.hv_brewery":"§6进阶酿造室 II§r", - "block.gtceu.hv_buffer":"§6进阶缓存器 II§r", - "block.gtceu.hv_canner":"§6进阶装罐机 II§r", - "block.gtceu.hv_centrifuge":"§6进阶离心机 II§r", - "block.gtceu.hv_charger_4x":"4x§6高压§r闪聚充电箱(§6HV§r)", - "block.gtceu.hv_chemical_bath":"§6进阶化学浸洗机 II§r", - "block.gtceu.hv_chemical_reactor":"§6进阶化学反应釜 II§r", - "block.gtceu.hv_circuit_assembler":"§6进阶电路组装机 II§r", - "block.gtceu.hv_combustion":"§6进阶内燃发电机 II§r", - "block.gtceu.hv_compressor":"§6进阶压缩机 II§r", - "block.gtceu.hv_cutter":"§6进阶切割机 II§r", - "block.gtceu.hv_diode":"§6HV§r二极管", - "block.gtceu.hv_distillery":"§6进阶蒸馏室 II§r", - "block.gtceu.hv_electric_furnace":"§6进阶电炉 II§r", - "block.gtceu.hv_electrolyzer":"§6进阶电解机 II§r", - "block.gtceu.hv_electromagnetic_separator":"§6进阶电磁选矿机 II§r", - "block.gtceu.hv_energy_input_hatch":"§6HV§r能源仓", - "block.gtceu.hv_energy_output_hatch":"§6HV§r动力仓", - "block.gtceu.hv_extractor":"§6进阶提取机 II§r", - "block.gtceu.hv_extruder":"§6进阶压模器 II§r", - "block.gtceu.hv_fermenter":"§6进阶发酵槽 II§r", - "block.gtceu.hv_fisher":"§6进阶捕鱼机 II§r", - "block.gtceu.hv_fluid_drilling_rig":"§6进阶流体钻机 II§r", - "block.gtceu.hv_fluid_heater":"§6进阶流体加热器 II§r", - "block.gtceu.hv_fluid_passthrough_hatch":"§6HV§r流体通行仓", - "block.gtceu.hv_fluid_solidifier":"§6进阶流体固化器 II§r", - "block.gtceu.hv_forge_hammer":"§6进阶锻造锤 II§r", - "block.gtceu.hv_forming_press":"§6进阶冲压机床 II§r", - "block.gtceu.hv_gas_collector":"§6进阶集气室 II§r", - "block.gtceu.hv_gas_turbine":"§6进阶燃气轮机 II§r", - "block.gtceu.hv_hermetic_casing":"密封机械方块 III", - "block.gtceu.hv_input_bus":"§6HV§r输入总线", - "block.gtceu.hv_input_hatch":"§6HV§r输入仓", - "block.gtceu.hv_item_collector":"§6进阶物品收集器 II§r", - "block.gtceu.hv_item_passthrough_hatch":"§6HV§r物品通行仓", - "block.gtceu.hv_laser_engraver":"§6进阶激光蚀刻机 II§r", - "block.gtceu.hv_lathe":"§6进阶车床 II§r", - "block.gtceu.hv_macerator":"§6进阶研磨机 II§r", - "block.gtceu.hv_machine_casing":"§6HV§r机械方块", - "block.gtceu.hv_machine_hull":"§6HV§f机器外壳", - "block.gtceu.hv_miner":"§6进阶采矿机 II§r", - "block.gtceu.hv_mixer":"§6进阶搅拌机 II§r", - "block.gtceu.hv_muffler_hatch":"§6HV§r消声仓", - "block.gtceu.hv_ore_washer":"§6进阶洗矿厂 II§r", - "block.gtceu.hv_output_bus":"§6HV§r输出总线", - "block.gtceu.hv_output_hatch":"§6HV§r输出仓", - "block.gtceu.hv_packer":"§6进阶打包机 II§r", - "block.gtceu.hv_polarizer":"§6进阶两极磁化机 II§r", - "block.gtceu.hv_pump":"§6进阶泵 II§r", - "block.gtceu.hv_rock_crusher":"§6进阶碎岩机 II§r", - "block.gtceu.hv_rotor_holder":"§6HV§r转子支架", - "block.gtceu.hv_scanner":"§6进阶扫描仪 II§r", - "block.gtceu.hv_sifter":"§6进阶筛选机 II§r", - "block.gtceu.hv_steam_turbine":"§6进阶蒸汽轮机 II§r", - "block.gtceu.hv_super_chest":"超级箱 III", - "block.gtceu.hv_super_tank":"超级缸 III", - "block.gtceu.hv_thermal_centrifuge":"§6进阶热力离心机 II§r", - "block.gtceu.hv_transformer_16a":"§6高压§r高能变压器(§6HV§r)", - "block.gtceu.hv_transformer_1a":"§6高压§r变压器(§6HV§r)", - "block.gtceu.hv_transformer_2a":"§6高压§r进阶变压器(§6HV§r)", - "block.gtceu.hv_transformer_4a":"§6高压§r高流变压器(§6HV§r)", - "block.gtceu.hv_wiremill":"§6进阶线材轧机 II§r", - "block.gtceu.hv_world_accelerator":"§6进阶世界加速器 II§r", - "block.gtceu.implosion_compressor":"聚爆压缩机", - "block.gtceu.industrial_steam_casing":"工业蒸汽机械方块", - "block.gtceu.industrial_tnt":"工业TNT", - "block.gtceu.inert_machine_casing":"聚四氟乙烯化学惰性机械方块", - "block.gtceu.itnt.drops_tooltip":"爆炸范围比TNT大得多,所有被摧毁的方块都会掉落", - "block.gtceu.iv_1024a_laser_source_hatch":"1024§e安§r§9IV§r激光源仓", - "block.gtceu.iv_1024a_laser_target_hatch":"1024§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_16a_energy_converter":"16§e安§r§9IV§r能量转换器", - "block.gtceu.iv_1a_energy_converter":"1§e安§r§9IV§r能量转换器", - "block.gtceu.iv_256a_laser_source_hatch":"256§e安§r§9IV§r激光源仓", - "block.gtceu.iv_256a_laser_target_hatch":"256§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_4096a_laser_source_hatch":"4096§e安§r§9IV§r激光源仓", - "block.gtceu.iv_4096a_laser_target_hatch":"4096§e安§r§9IV§r激光靶仓", - "block.gtceu.iv_4a_energy_converter":"4§e安§r§9IV§r能量转换器", - "block.gtceu.iv_8a_energy_converter":"8§e安§r§9IV§r能量转换器", - "block.gtceu.iv_alloy_smelter":"§9精英合金炉§r", - "block.gtceu.iv_arc_furnace":"§9精英电弧炉§r", - "block.gtceu.iv_assembler":"§9精英组装机§r", - "block.gtceu.iv_autoclave":"§9精英高压釜§r", - "block.gtceu.iv_battery_buffer_16x":"16x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_4x":"4x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_8x":"8x§9强导压§r电池箱(§9IV§r)", - "block.gtceu.iv_bender":"§9精英卷板机§r", - "block.gtceu.iv_brewery":"§9精英酿造室§r", - "block.gtceu.iv_canner":"§9精英装罐机§r", - "block.gtceu.iv_centrifuge":"§9精英离心机§r", - "block.gtceu.iv_charger_4x":"4x§9强导压§r闪聚充电箱(§9IV§r)", - "block.gtceu.iv_chemical_bath":"§9精英化学浸洗机§r", - "block.gtceu.iv_chemical_reactor":"§9精英化学反应釜§r", - "block.gtceu.iv_circuit_assembler":"§9精英电路组装机§r", - "block.gtceu.iv_compressor":"§9精英压缩机§r", - "block.gtceu.iv_cutter":"§9精英切割机§r", - "block.gtceu.iv_diode":"§9IV§r二极管", - "block.gtceu.iv_distillery":"§9精英蒸馏室§r", - "block.gtceu.iv_electric_furnace":"§9精英电炉§r", - "block.gtceu.iv_electrolyzer":"§9精英电解机§r", - "block.gtceu.iv_electromagnetic_separator":"§9精英电磁选矿机§r", - "block.gtceu.iv_energy_input_hatch":"§9IV§r能源仓", - "block.gtceu.iv_energy_input_hatch_16a":"16安§9IV§r能源仓", - "block.gtceu.iv_energy_input_hatch_4a":"4安§9IV§r能源仓", - "block.gtceu.iv_energy_output_hatch":"§9IV§r动力仓", - "block.gtceu.iv_energy_output_hatch_16a":"16安§9IV§r动力仓", - "block.gtceu.iv_energy_output_hatch_4a":"4安§9IV§r动力仓", - "block.gtceu.iv_extractor":"§9精英提取机§r", - "block.gtceu.iv_extruder":"§9精英压模器§r", - "block.gtceu.iv_fermenter":"§9精英发酵槽§r", - "block.gtceu.iv_fisher":"§9精英捕鱼机§r", - "block.gtceu.iv_fluid_heater":"§9精英流体加热器§r", - "block.gtceu.iv_fluid_passthrough_hatch":"§9IV§r流体通行仓", - "block.gtceu.iv_fluid_solidifier":"§9精英流体固化器§r", - "block.gtceu.iv_forge_hammer":"§9精英锻造锤§r", - "block.gtceu.iv_forming_press":"§9精英冲压机床§r", - "block.gtceu.iv_gas_collector":"§9精英集气室§r", - "block.gtceu.iv_hermetic_casing":"密封机械方块 V", - "block.gtceu.iv_input_bus":"§9IV§r输入总线", - "block.gtceu.iv_input_hatch":"§9IV§r输入仓", - "block.gtceu.iv_input_hatch_4x":"§9IV§r四重输入仓", - "block.gtceu.iv_input_hatch_9x":"§9IV§r九重输入仓", - "block.gtceu.iv_item_passthrough_hatch":"§9IV§r物品通行仓", - "block.gtceu.iv_lapotronic_battery":"兰波顿电容(§1IV§r)", - "block.gtceu.iv_large_miner":"§9精英大型采矿机§r", - "block.gtceu.iv_laser_engraver":"§9精英激光蚀刻机§r", - "block.gtceu.iv_lathe":"§9精英车床§r", - "block.gtceu.iv_macerator":"§9精英研磨机§r", - "block.gtceu.iv_machine_casing":"§9IV§r机械方块", - "block.gtceu.iv_machine_hull":"§9IV§f机器外壳", - "block.gtceu.iv_mixer":"§9精英搅拌机§r", - "block.gtceu.iv_muffler_hatch":"§9IV§r消声仓", - "block.gtceu.iv_ore_washer":"§9精英洗矿厂§r", - "block.gtceu.iv_output_bus":"§9IV§r输出总线", - "block.gtceu.iv_output_hatch":"§9IV§r输出仓", - "block.gtceu.iv_output_hatch_4x":"§9IV§r四重输出仓", - "block.gtceu.iv_output_hatch_9x":"§9IV§r九重输出仓", - "block.gtceu.iv_packer":"§9精英打包机§r", - "block.gtceu.iv_parallel_hatch":"§9IV§r并行控制仓", - "block.gtceu.iv_polarizer":"§9精英两极磁化机§r", - "block.gtceu.iv_quantum_chest":"量子箱 V", - "block.gtceu.iv_quantum_tank":"量子缸 V", - "block.gtceu.iv_rock_crusher":"§9精英碎岩机§r", - "block.gtceu.iv_rotor_holder":"§9IV§r转子支架", - "block.gtceu.iv_scanner":"§9精英扫描仪§r", - "block.gtceu.iv_sifter":"§9精英筛选机§r", - "block.gtceu.iv_substation_input_hatch_64a":"64安§9IV§r变电能源仓", - "block.gtceu.iv_substation_output_hatch_64a":"64安§9IV§r变电动力仓", - "block.gtceu.iv_thermal_centrifuge":"§9精英热力离心机§r", - "block.gtceu.iv_transformer_16a":"§9强导压§r高能变压器(§9IV§r)", - "block.gtceu.iv_transformer_1a":"§9强导压§r变压器(§9IV§r)", - "block.gtceu.iv_transformer_2a":"§9强导压§r进阶变压器(§9IV§r)", - "block.gtceu.iv_transformer_4a":"§9强导压§r高流变压器(§9IV§r)", - "block.gtceu.iv_wiremill":"§9精英线材轧机§r", - "block.gtceu.iv_world_accelerator":"§9精英世界加速器§r", - "block.gtceu.kanthal_coil_block":"坎塔尔合金线圈方块", - "block.gtceu.laminated_glass":"夹层玻璃", - "block.gtceu.lamp.tooltip.inverted":"反相", - "block.gtceu.lamp.tooltip.no_bloom":"无泛光", - "block.gtceu.lamp.tooltip.no_light":"无光照", - "block.gtceu.large_arc_smelter":"大型电弧炉", - "block.gtceu.large_assembler":"大型组装厂", - "block.gtceu.large_autoclave":"大型高压结晶室", - "block.gtceu.large_brewer":"大型酿造厂", - "block.gtceu.large_centrifuge":"大型离心机组", - "block.gtceu.large_chemical_bath":"大型化学浸洗机", - "block.gtceu.large_chemical_reactor":"大型化学反应釜", - "block.gtceu.large_circuit_assembler":"大型电路组装设施", - "block.gtceu.large_combustion_engine":"大型内燃引擎", - "block.gtceu.large_cutter":"大型切割机", - "block.gtceu.large_distillery":"大型分馏蒸馏厂", - "block.gtceu.large_duct_pipe":"大型风管", - "block.gtceu.large_electrolyzer":"大型电解槽", - "block.gtceu.large_electromagnet":"大型电磁工厂", - "block.gtceu.large_engraving_laser":"大型激光蚀刻机", - "block.gtceu.large_extractor":"大型提取机", - "block.gtceu.large_extruder":"大型压模机", - "block.gtceu.large_maceration_tower":"大型研磨塔", - "block.gtceu.large_material_press":"大型挤压机", - "block.gtceu.large_mixer":"大型搅拌罐", - "block.gtceu.large_packer":"大型打包机", - "block.gtceu.large_scale_assembler_casing":"大型组装机机械方块", - "block.gtceu.large_sifting_funnel":"大型筛选漏斗", - "block.gtceu.large_solidifier":"大型固化阵列", - "block.gtceu.large_wiremill":"大型线材工厂", - "block.gtceu.laser_hazard_sign_block":"激光危害警示方块", - "block.gtceu.laser_safe_engraving_casing":"激光安全机械方块", - "block.gtceu.light_blue_borderless_lamp":"淡蓝色无框灯", - "block.gtceu.light_blue_lamp":"淡蓝色灯", - "block.gtceu.light_blue_large_metal_sheet":"淡蓝色粗纹金属板方块", - "block.gtceu.light_blue_metal_sheet":"淡蓝色金属板方块", - "block.gtceu.light_blue_studs":"淡蓝色橡胶混凝土", - "block.gtceu.light_concrete":"淡色混凝土", - "block.gtceu.light_concrete_bricks":"淡色混凝土砖", - "block.gtceu.light_concrete_cobblestone":"淡色混凝土圆石", - "block.gtceu.light_concrete_small_tile":"淡色混凝土小片瓦", - "block.gtceu.light_concrete_tile":"淡色混凝土瓦", - "block.gtceu.light_concrete_windmill_a":"淡色混凝土风车形瓦 A", - "block.gtceu.light_concrete_windmill_b":"淡色混凝土风车形瓦 B", - "block.gtceu.light_gray_borderless_lamp":"淡灰色无框灯", - "block.gtceu.light_gray_lamp":"淡灰色灯", - "block.gtceu.light_gray_large_metal_sheet":"淡灰色粗纹金属板方块", - "block.gtceu.light_gray_metal_sheet":"淡灰色金属板方块", - "block.gtceu.light_gray_studs":"淡灰色橡胶混凝土", - "block.gtceu.lime_borderless_lamp":"黄绿色无框灯", - "block.gtceu.lime_lamp":"黄绿色灯", - "block.gtceu.lime_large_metal_sheet":"黄绿色粗纹金属板方块", - "block.gtceu.lime_metal_sheet":"黄绿色金属板方块", - "block.gtceu.lime_studs":"黄绿色橡胶混凝土", - "block.gtceu.long_distance_fluid_pipeline":"长距离流体管道", - "block.gtceu.long_distance_fluid_pipeline_endpoint":"长距离流体管道接口", - "block.gtceu.long_distance_item_pipeline":"长距离物品管道", - "block.gtceu.long_distance_item_pipeline_endpoint":"长距离物品管道接口", - "block.gtceu.long_distance_item_pipeline_input_endpoint":"输入接口", - "block.gtceu.long_distance_item_pipeline_input_pos":" - 输入:%s", - "block.gtceu.long_distance_item_pipeline_network_header":"网络:", - "block.gtceu.long_distance_item_pipeline_no_network":"找不到网络", - "block.gtceu.long_distance_item_pipeline_output_endpoint":"输出接口", - "block.gtceu.long_distance_item_pipeline_output_pos":" - 输出:%s", - "block.gtceu.long_distance_item_pipeline_pipe_count":" - 管道:%s", - "block.gtceu.lp_steam_alloy_smelter":"低压蒸汽合金炉", - "block.gtceu.lp_steam_compressor":"低压蒸汽压缩机", - "block.gtceu.lp_steam_extractor":"低压蒸汽提取机", - "block.gtceu.lp_steam_forge_hammer":"低压蒸汽锻造锤", - "block.gtceu.lp_steam_furnace":"低压蒸汽熔炉", - "block.gtceu.lp_steam_liquid_boiler":"低压蒸汽液体燃料锅炉", - "block.gtceu.lp_steam_macerator":"低压蒸汽研磨机", - "block.gtceu.lp_steam_miner":"低压蒸汽采矿机", - "block.gtceu.lp_steam_rock_crusher":"低压蒸汽碎岩机", - "block.gtceu.lp_steam_solar_boiler":"低压蒸汽太阳能锅炉", - "block.gtceu.lp_steam_solid_boiler":"低压蒸汽固体燃料锅炉", - "block.gtceu.luv_1024a_laser_source_hatch":"1024§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_1024a_laser_target_hatch":"1024§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_16a_energy_converter":"16§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_1a_energy_converter":"1§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_256a_laser_source_hatch":"256§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_256a_laser_target_hatch":"256§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_4096a_laser_source_hatch":"4096§e安§r§dLuV§r激光源仓", - "block.gtceu.luv_4096a_laser_target_hatch":"4096§e安§r§dLuV§r激光靶仓", - "block.gtceu.luv_4a_energy_converter":"4§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_8a_energy_converter":"8§e安§r§dLuV§r能量转换器", - "block.gtceu.luv_alloy_smelter":"§d精英合金炉 II§r", - "block.gtceu.luv_arc_furnace":"§d精英电弧炉 II§r", - "block.gtceu.luv_assembler":"§d精英组装机 II§r", - "block.gtceu.luv_autoclave":"§d精英高压釜 II§r", - "block.gtceu.luv_battery_buffer_16x":"16x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_4x":"4x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_8x":"8x§d剧差压§r电池箱(§dLuV§r)", - "block.gtceu.luv_bender":"§d精英卷板机 II§r", - "block.gtceu.luv_brewery":"§d精英酿造室 II§r", - "block.gtceu.luv_canner":"§d精英装罐机 II§r", - "block.gtceu.luv_centrifuge":"§d精英离心机 II§r", - "block.gtceu.luv_charger_4x":"4x§d剧差压§r闪聚充电箱(§dLuV§r)", - "block.gtceu.luv_chemical_bath":"§d精英化学浸洗机 II§r", - "block.gtceu.luv_chemical_reactor":"§d精英化学反应釜 II§r", - "block.gtceu.luv_circuit_assembler":"§d精英电路组装机 II§r", - "block.gtceu.luv_compressor":"§d精英压缩机 II§r", - "block.gtceu.luv_cutter":"§d精英切割机 II§r", - "block.gtceu.luv_diode":"§dLuV§r二极管", - "block.gtceu.luv_distillery":"§d精英蒸馏室 II§r", - "block.gtceu.luv_dual_input_hatch":"§dLuV§r输入总成", - "block.gtceu.luv_dual_output_hatch":"§dLuV§r输出总成", - "block.gtceu.luv_electric_furnace":"§d精英电炉 II§r", - "block.gtceu.luv_electrolyzer":"§d精英电解机 II§r", - "block.gtceu.luv_electromagnetic_separator":"§d精英电磁选矿机 II§r", - "block.gtceu.luv_energy_input_hatch":"§dLuV§r能源仓", - "block.gtceu.luv_energy_input_hatch_16a":"16安§dLuV§r能源仓", - "block.gtceu.luv_energy_input_hatch_4a":"4安§dLuV§r能源仓", - "block.gtceu.luv_energy_output_hatch":"§dLuV§r动力仓", - "block.gtceu.luv_energy_output_hatch_16a":"16安§dLuV§r动力仓", - "block.gtceu.luv_energy_output_hatch_4a":"4安§dLuV§r动力仓", - "block.gtceu.luv_extractor":"§d精英提取机 II§r", - "block.gtceu.luv_extruder":"§d精英压模器 II§r", - "block.gtceu.luv_fermenter":"§d精英发酵槽 II§r", - "block.gtceu.luv_fisher":"§d精英捕鱼机 II§r", - "block.gtceu.luv_fluid_heater":"§d精英流体加热器 II§r", - "block.gtceu.luv_fluid_passthrough_hatch":"§dLuV§r流体通行仓", - "block.gtceu.luv_fluid_solidifier":"§d精英流体固化器 II§r", - "block.gtceu.luv_forge_hammer":"§d精英锻造锤 II§r", - "block.gtceu.luv_forming_press":"§d精英冲压机床 II§r", - "block.gtceu.luv_fusion_reactor":"核聚变反应堆控制电脑 MK-I", - "block.gtceu.luv_gas_collector":"§d精英集气室 II§r", - "block.gtceu.luv_hermetic_casing":"密封机械方块 VI", - "block.gtceu.luv_input_bus":"§dLuV§r输入总线", - "block.gtceu.luv_input_hatch":"§dLuV§r输入仓", - "block.gtceu.luv_input_hatch_4x":"§dLuV§r四重输入仓", - "block.gtceu.luv_input_hatch_9x":"§dLuV§r九重输入仓", - "block.gtceu.luv_item_passthrough_hatch":"§dLuV§r物品通行仓", - "block.gtceu.luv_lapotronic_battery":"兰波顿电容(§dLuV§r)", - "block.gtceu.luv_large_miner":"§d精英大型采矿机 II§r", - "block.gtceu.luv_laser_engraver":"§d精英激光蚀刻机 II§r", - "block.gtceu.luv_lathe":"§d精英车床 II§r", - "block.gtceu.luv_macerator":"§d精英研磨机 II§r", - "block.gtceu.luv_machine_casing":"§dLuV§r机械方块", - "block.gtceu.luv_machine_hull":"§dLuV§f机器外壳", - "block.gtceu.luv_mixer":"§d精英搅拌机 II§r", - "block.gtceu.luv_muffler_hatch":"§dLuV§r消声仓", - "block.gtceu.luv_ore_washer":"§d精英洗矿厂 II§r", - "block.gtceu.luv_output_bus":"§dLuV§r输出总线", - "block.gtceu.luv_output_hatch":"§dLuV§r输出仓", - "block.gtceu.luv_output_hatch_4x":"§dLuV§r四重输出仓", - "block.gtceu.luv_output_hatch_9x":"§dLuV§r九重输出仓", - "block.gtceu.luv_packer":"§d精英打包机 II§r", - "block.gtceu.luv_parallel_hatch":"§dLuV§r并行控制仓", - "block.gtceu.luv_polarizer":"§d精英两极磁化机 II§r", - "block.gtceu.luv_quantum_chest":"量子箱 VI", - "block.gtceu.luv_quantum_tank":"量子缸 VI", - "block.gtceu.luv_rock_crusher":"§d精英碎岩机 II§r", - "block.gtceu.luv_rotor_holder":"§dLuV§r转子支架", - "block.gtceu.luv_scanner":"§d精英扫描仪 II§r", - "block.gtceu.luv_sifter":"§d精英筛选机 II§r", - "block.gtceu.luv_substation_input_hatch_64a":"64安§dLuV§r变电能源仓", - "block.gtceu.luv_substation_output_hatch_64a":"64安§dLuV§r变电动力仓", - "block.gtceu.luv_thermal_centrifuge":"§d精英热力离心机 II§r", - "block.gtceu.luv_transformer_16a":"§d剧差压§r高能变压器(§dLuV§r)", - "block.gtceu.luv_transformer_1a":"§d剧差压§r变压器(§dLuV§r)", - "block.gtceu.luv_transformer_2a":"§d剧差压§r进阶变压器(§dLuV§r)", - "block.gtceu.luv_transformer_4a":"§d剧差压§r高流变压器(§dLuV§r)", - "block.gtceu.luv_wiremill":"§d精英线材轧机 II§r", - "block.gtceu.luv_world_accelerator":"§d精英世界加速器 II§r", - "block.gtceu.lv_16a_energy_converter":"16§e安§r§7LV§r能量转换器", - "block.gtceu.lv_1a_energy_converter":"1§e安§r§7LV§r能量转换器", - "block.gtceu.lv_4a_energy_converter":"4§e安§r§7LV§r能量转换器", - "block.gtceu.lv_8a_energy_converter":"8§e安§r§7LV§r能量转换器", - "block.gtceu.lv_air_scrubber":"基础空气净化器§r", - "block.gtceu.lv_alloy_smelter":"基础合金炉§r", - "block.gtceu.lv_arc_furnace":"基础电弧炉§r", - "block.gtceu.lv_assembler":"基础组装机§r", - "block.gtceu.lv_autoclave":"基础高压釜§r", - "block.gtceu.lv_battery_buffer_16x":"16x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_4x":"4x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_8x":"8x§7低压§r电池箱(§7LV§r)", - "block.gtceu.lv_bender":"基础卷板机§r", - "block.gtceu.lv_block_breaker":"基础方块破坏器§r", - "block.gtceu.lv_brewery":"基础酿造室§r", - "block.gtceu.lv_buffer":"基础缓存器§r", - "block.gtceu.lv_canner":"基础装罐机§r", - "block.gtceu.lv_centrifuge":"基础离心机§r", - "block.gtceu.lv_charger_4x":"4x§7低压§r闪聚充电箱(§7LV§r)", - "block.gtceu.lv_chemical_bath":"基础化学浸洗机§r", - "block.gtceu.lv_chemical_reactor":"基础化学反应釜§r", - "block.gtceu.lv_circuit_assembler":"基础电路组装机§r", - "block.gtceu.lv_combustion":"基础内燃发电机§r", - "block.gtceu.lv_compressor":"基础压缩机§r", - "block.gtceu.lv_cutter":"基础切割机§r", - "block.gtceu.lv_diode":"§7LV§r二极管", - "block.gtceu.lv_distillery":"基础蒸馏室§r", - "block.gtceu.lv_electric_furnace":"基础电炉§r", - "block.gtceu.lv_electrolyzer":"基础电解机§r", - "block.gtceu.lv_electromagnetic_separator":"基础电磁选矿机§r", - "block.gtceu.lv_energy_input_hatch":"§7LV§r能源仓", - "block.gtceu.lv_energy_output_hatch":"§7LV§r动力仓", - "block.gtceu.lv_extractor":"基础提取机§r", - "block.gtceu.lv_extruder":"基础压模器§r", - "block.gtceu.lv_fermenter":"基础发酵槽§r", - "block.gtceu.lv_fisher":"基础捕鱼机§r", - "block.gtceu.lv_fluid_heater":"基础流体加热器§r", - "block.gtceu.lv_fluid_passthrough_hatch":"§7LV§r流体通行仓", - "block.gtceu.lv_fluid_solidifier":"基础流体固化器§r", - "block.gtceu.lv_forge_hammer":"基础锻造锤§r", - "block.gtceu.lv_forming_press":"基础冲压机床§r", - "block.gtceu.lv_gas_collector":"基础集气室§r", - "block.gtceu.lv_gas_turbine":"基础燃气轮机§r", - "block.gtceu.lv_hermetic_casing":"密封机械方块 I", - "block.gtceu.lv_input_bus":"§7LV§r输入总线", - "block.gtceu.lv_input_hatch":"§7LV§r输入仓", - "block.gtceu.lv_item_collector":"基础物品收集器§r", - "block.gtceu.lv_item_passthrough_hatch":"§7LV§r物品通行仓", - "block.gtceu.lv_laser_engraver":"基础激光蚀刻机§r", - "block.gtceu.lv_lathe":"基础车床§r", - "block.gtceu.lv_macerator":"基础研磨机§r", - "block.gtceu.lv_machine_casing":"§7LV§r机械方块", - "block.gtceu.lv_machine_hull":"§7LV§f机器外壳", - "block.gtceu.lv_miner":"基础采矿机§r", - "block.gtceu.lv_mixer":"基础搅拌机§r", - "block.gtceu.lv_muffler_hatch":"§7LV§r消声仓", - "block.gtceu.lv_ore_washer":"基础洗矿厂§r", - "block.gtceu.lv_output_bus":"§7LV§r输出总线", - "block.gtceu.lv_output_hatch":"§7LV§r输出仓", - "block.gtceu.lv_packer":"基础打包机§r", - "block.gtceu.lv_polarizer":"基础两极磁化机§r", - "block.gtceu.lv_pump":"基础泵§r", - "block.gtceu.lv_rock_crusher":"基础碎岩机§r", - "block.gtceu.lv_scanner":"基础扫描仪§r", - "block.gtceu.lv_sifter":"基础筛选机§r", - "block.gtceu.lv_steam_turbine":"基础蒸汽轮机§r", - "block.gtceu.lv_super_chest":"超级箱 I", - "block.gtceu.lv_super_tank":"超级缸 I", - "block.gtceu.lv_thermal_centrifuge":"基础热力离心机§r", - "block.gtceu.lv_transformer_16a":"§7低压§r高能变压器(§7LV§r)", - "block.gtceu.lv_transformer_1a":"§7低压§r变压器(§7LV§r)", - "block.gtceu.lv_transformer_2a":"§7低压§r进阶变压器(§7LV§r)", - "block.gtceu.lv_transformer_4a":"§7低压§r高流变压器(§7LV§r)", - "block.gtceu.lv_wiremill":"基础线材轧机§r", - "block.gtceu.lv_world_accelerator":"基础世界加速器§r", - "block.gtceu.magenta_borderless_lamp":"品红色无框灯", - "block.gtceu.magenta_lamp":"品红色灯", - "block.gtceu.magenta_large_metal_sheet":"品红色粗纹金属板方块", - "block.gtceu.magenta_metal_sheet":"品红色金属板方块", - "block.gtceu.magenta_studs":"品红色橡胶混凝土", - "block.gtceu.magic_hazard_sign_block":"魔力危害警示方块", - "block.gtceu.magnetic_hazard_sign_block":"强磁危害警示方块", - "block.gtceu.maintenance_hatch":"维护仓", - "block.gtceu.marble":"大理岩", - "block.gtceu.marble_bricks":"大理岩砖", - "block.gtceu.marble_cobblestone":"大理岩圆石", - "block.gtceu.marble_small_tile":"大理岩小片瓦", - "block.gtceu.marble_tile":"大理岩瓦", - "block.gtceu.marble_windmill_a":"大理岩风车形瓦 A", - "block.gtceu.marble_windmill_b":"大理岩风车形瓦 B", - "block.gtceu.max_16a_energy_converter":"16§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_1a_energy_converter":"1§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_4a_energy_converter":"4§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_8a_energy_converter":"8§e安§r§c§lMAX§r能量转换器", - "block.gtceu.max_battery_buffer_16x":"16x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_4x":"4x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_8x":"8x§c上限压§r电池箱(§c§lMAX§r)", - "block.gtceu.max_charger_4x":"4x§c上限压§r闪聚充电箱(§c§lMAX§r)", - "block.gtceu.max_dual_input_hatch":"§c§lMAX§r输入总成", - "block.gtceu.max_dual_output_hatch":"§c§lMAX§r输出总成", - "block.gtceu.max_energy_input_hatch":"§c§lMAX§r能源仓", - "block.gtceu.max_energy_input_hatch_16a":"16安§c§lMAX§r能源仓", - "block.gtceu.max_energy_input_hatch_4a":"4安§c§lMAX§r能源仓", - "block.gtceu.max_energy_output_hatch":"§c§lMAX§r动力仓", - "block.gtceu.max_energy_output_hatch_16a":"16安§c§lMAX§r动力仓", - "block.gtceu.max_energy_output_hatch_4a":"4安§c§lMAX§r动力仓", - "block.gtceu.max_input_bus":"§c§lMAX§r输入总线", - "block.gtceu.max_input_hatch":"§c§lMAX§r输入仓", - "block.gtceu.max_input_hatch_4x":"§c§lMAX§r四重输入仓", - "block.gtceu.max_input_hatch_9x":"§c§lMAX§r九重输入仓", - "block.gtceu.max_machine_casing":"§c§lMAX§r机械方块", - "block.gtceu.max_machine_hull":"§c§lMAX§f机器外壳", - "block.gtceu.max_output_bus":"§c§lMAX§r输出总线", - "block.gtceu.max_output_hatch":"§c§lMAX§r输出仓", - "block.gtceu.max_output_hatch_4x":"§c§lMAX§r四重输出仓", - "block.gtceu.max_output_hatch_9x":"§c§lMAX§r九重输出仓", - "block.gtceu.max_substation_input_hatch_64a":"64安§c§lMAX§r变电能源仓", - "block.gtceu.max_substation_output_hatch_64a":"64安§c§lMAX§r变电动力仓", - "block.gtceu.me_input_bus":"ME输入总线", - "block.gtceu.me_input_hatch":"ME输入仓", - "block.gtceu.me_output_bus":"ME输出总线", - "block.gtceu.me_output_hatch":"ME输出仓", - "block.gtceu.me_pattern_buffer":"ME样板总成", - "block.gtceu.me_pattern_buffer_proxy":"ME样板总成镜像", - "block.gtceu.me_stocking_input_bus":"ME库存输入总线", - "block.gtceu.me_stocking_input_hatch":"ME库存输入仓", - "block.gtceu.mega_blast_furnace":"转底炉", - "block.gtceu.mega_vacuum_freezer":"巨型真空冷冻机", - "block.gtceu.miner_pipe":"采矿管道", - "block.gtceu.mob_infestation_hazard_sign_block":"怪物侵袭危害警示方块", - "block.gtceu.mob_spawner_hazard_sign_block":"刷怪笼危害警示方块", - "block.gtceu.molybdenum_disilicide_coil_block":"二硅化钼线圈方块", - "block.gtceu.mossy_dark_concrete_bricks":"覆苔深色混凝土砖", - "block.gtceu.mossy_dark_concrete_cobblestone":"覆苔深色混凝土圆石", - "block.gtceu.mossy_light_concrete_bricks":"覆苔淡色混凝土砖", - "block.gtceu.mossy_light_concrete_cobblestone":"覆苔淡色混凝土圆石", - "block.gtceu.mossy_marble_bricks":"覆苔大理岩砖", - "block.gtceu.mossy_marble_cobblestone":"覆苔大理岩圆石", - "block.gtceu.mossy_red_granite_bricks":"覆苔红花岗岩砖", - "block.gtceu.mossy_red_granite_cobblestone":"覆苔红花岗岩圆石", - "block.gtceu.multi_smelter":"工业熔炉", - "block.gtceu.mv_16a_energy_converter":"16§e安§r§bMV§r能量转换器", - "block.gtceu.mv_1a_energy_converter":"1§e安§r§bMV§r能量转换器", - "block.gtceu.mv_4a_energy_converter":"4§e安§r§bMV§r能量转换器", - "block.gtceu.mv_8a_energy_converter":"8§e安§r§bMV§r能量转换器", - "block.gtceu.mv_air_scrubber":"§b进阶空气净化器§r", - "block.gtceu.mv_alloy_smelter":"§b进阶合金炉§r", - "block.gtceu.mv_arc_furnace":"§b进阶电弧炉§r", - "block.gtceu.mv_assembler":"§b进阶组装机§r", - "block.gtceu.mv_autoclave":"§b进阶高压釜§r", - "block.gtceu.mv_battery_buffer_16x":"16x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_4x":"4x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_8x":"8x§b中压§r电池箱(§bMV§r)", - "block.gtceu.mv_bedrock_ore_miner":"§b进阶基岩采矿机§r", - "block.gtceu.mv_bender":"§b进阶卷板机§r", - "block.gtceu.mv_block_breaker":"§b进阶方块破坏器§r", - "block.gtceu.mv_brewery":"§b进阶酿造室§r", - "block.gtceu.mv_buffer":"§b进阶缓存器§r", - "block.gtceu.mv_canner":"§b进阶装罐机§r", - "block.gtceu.mv_centrifuge":"§b进阶离心机§r", - "block.gtceu.mv_charger_4x":"4x§b中压§r闪聚充电箱(§bMV§r)", - "block.gtceu.mv_chemical_bath":"§b进阶化学浸洗机§r", - "block.gtceu.mv_chemical_reactor":"§b进阶化学反应釜§r", - "block.gtceu.mv_circuit_assembler":"§b进阶电路组装机§r", - "block.gtceu.mv_combustion":"§b进阶内燃发电机§r", - "block.gtceu.mv_compressor":"§b进阶压缩机§r", - "block.gtceu.mv_cutter":"§b进阶切割机§r", - "block.gtceu.mv_diode":"§bMV§r二极管", - "block.gtceu.mv_distillery":"§b进阶蒸馏室§r", - "block.gtceu.mv_electric_furnace":"§b进阶电炉§r", - "block.gtceu.mv_electrolyzer":"§b进阶电解机§r", - "block.gtceu.mv_electromagnetic_separator":"§b进阶电磁选矿机§r", - "block.gtceu.mv_energy_input_hatch":"§bMV§r能源仓", - "block.gtceu.mv_energy_output_hatch":"§bMV§r动力仓", - "block.gtceu.mv_extractor":"§b进阶提取机§r", - "block.gtceu.mv_extruder":"§b进阶压模器§r", - "block.gtceu.mv_fermenter":"§b进阶发酵槽§r", - "block.gtceu.mv_fisher":"§b进阶捕鱼机§r", - "block.gtceu.mv_fluid_drilling_rig":"§b进阶流体钻机 §r", - "block.gtceu.mv_fluid_heater":"§b进阶流体加热器§r", - "block.gtceu.mv_fluid_passthrough_hatch":"§bMV§r流体通行仓", - "block.gtceu.mv_fluid_solidifier":"§b进阶流体固化器§r", - "block.gtceu.mv_forge_hammer":"§b进阶锻造锤§r", - "block.gtceu.mv_forming_press":"§b进阶冲压机床§r", - "block.gtceu.mv_gas_collector":"§b进阶集气室§r", - "block.gtceu.mv_gas_turbine":"§b进阶燃气轮机§r", - "block.gtceu.mv_hermetic_casing":"密封机械方块 II", - "block.gtceu.mv_input_bus":"§bMV§r输入总线", - "block.gtceu.mv_input_hatch":"§bMV§r输入仓", - "block.gtceu.mv_item_collector":"§b进阶物品收集器§r", - "block.gtceu.mv_item_passthrough_hatch":"§bMV§r物品通行仓", - "block.gtceu.mv_laser_engraver":"§b进阶激光蚀刻机§r", - "block.gtceu.mv_lathe":"§b进阶车床§r", - "block.gtceu.mv_macerator":"§b进阶研磨机§r", - "block.gtceu.mv_machine_casing":"§bMV§r机械方块", - "block.gtceu.mv_machine_hull":"§bMV§f机器外壳", - "block.gtceu.mv_miner":"§b进阶采矿机§r", - "block.gtceu.mv_mixer":"§b进阶搅拌机§r", - "block.gtceu.mv_muffler_hatch":"§bMV§r消声仓", - "block.gtceu.mv_ore_washer":"§b进阶洗矿厂§r", - "block.gtceu.mv_output_bus":"§bMV§r输出总线", - "block.gtceu.mv_output_hatch":"§bMV§r输出仓", - "block.gtceu.mv_packer":"§b进阶打包机§r", - "block.gtceu.mv_polarizer":"§b进阶两极磁化机§r", - "block.gtceu.mv_pump":"§b进阶泵§r", - "block.gtceu.mv_rock_crusher":"§b进阶碎岩机§r", - "block.gtceu.mv_scanner":"§b进阶扫描仪§r", - "block.gtceu.mv_sifter":"§b进阶筛选机§r", - "block.gtceu.mv_steam_turbine":"§b进阶蒸汽轮机§r", - "block.gtceu.mv_super_chest":"超级箱 II", - "block.gtceu.mv_super_tank":"超级缸 II", - "block.gtceu.mv_thermal_centrifuge":"§b进阶热力离心机§r", - "block.gtceu.mv_transformer_16a":"§b中压§r高能变压器(§bMV§r)", - "block.gtceu.mv_transformer_1a":"§b中压§r变压器(§bMV§r)", - "block.gtceu.mv_transformer_2a":"§b中压§r进阶变压器(§bMV§r)", - "block.gtceu.mv_transformer_4a":"§b中压§r高流变压器(§bMV§r)", - "block.gtceu.mv_wiremill":"§b进阶线材轧机§r", - "block.gtceu.mv_world_accelerator":"§b进阶世界加速器§r", - "block.gtceu.naquadah_coil_block":"硅岩线圈方块", - "block.gtceu.network_switch":"网络交换机", - "block.gtceu.nichrome_coil_block":"镍铬合金线圈方块", - "block.gtceu.noise_hazard_sign_block":"噪声危害警示方块", - "block.gtceu.nonconducting_casing":"绝缘机械方块", - "block.gtceu.normal_duct_pipe":"普通风管", - "block.gtceu.normal_laser_pipe":"普通激光管道", - "block.gtceu.normal_laser_pipe.tooltip":"§f无损§7传递能量,仅限直线摆放", - "block.gtceu.normal_optical_pipe":"光缆", - "block.gtceu.normal_optical_pipe.tooltip":"§7传递§f算力§7或§f研究数据§7", - "block.gtceu.object_holder":"物品支架", - "block.gtceu.oil_heavy":"重油", - "block.gtceu.oil_light":"轻油", - "block.gtceu.oil_medium":"原油", - "block.gtceu.opv_1024a_laser_source_hatch":"1024§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_1024a_laser_target_hatch":"1024§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_16a_energy_converter":"16§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_1a_energy_converter":"1§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_256a_laser_source_hatch":"256§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_256a_laser_target_hatch":"256§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_4096a_laser_source_hatch":"4096§e安§r§9§lOpV§r激光源仓", - "block.gtceu.opv_4096a_laser_target_hatch":"4096§e安§r§9§lOpV§r激光靶仓", - "block.gtceu.opv_4a_energy_converter":"4§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_8a_energy_converter":"8§e安§r§9§lOpV§r能量转换器", - "block.gtceu.opv_alloy_smelter":"§9§l传奇合金炉§r", - "block.gtceu.opv_arc_furnace":"§9§l传奇电弧炉§r", - "block.gtceu.opv_assembler":"§9§l传奇组装机§r", - "block.gtceu.opv_autoclave":"§9§l传奇高压釜§r", - "block.gtceu.opv_battery_buffer_16x":"16x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_4x":"4x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_8x":"8x§9过载压§r电池箱(§9§lOpV§r)", - "block.gtceu.opv_bender":"§9§l传奇卷板机§r", - "block.gtceu.opv_brewery":"§9§l传奇酿造室§r", - "block.gtceu.opv_canner":"§9§l传奇装罐机§r", - "block.gtceu.opv_centrifuge":"§9§l传奇离心机§r", - "block.gtceu.opv_charger_4x":"4x§9过载压§r闪聚充电箱(§9§lOpV§r)", - "block.gtceu.opv_chemical_bath":"§9§l传奇化学浸洗机§r", - "block.gtceu.opv_chemical_reactor":"§9§l传奇化学反应釜§r", - "block.gtceu.opv_circuit_assembler":"§9§l传奇电路组装机§r", - "block.gtceu.opv_compressor":"§9§l传奇压缩机§r", - "block.gtceu.opv_cutter":"§9§l传奇切割机§r", - "block.gtceu.opv_diode":"§9§lOpV§r二极管", - "block.gtceu.opv_distillery":"§9§l传奇蒸馏室§r", - "block.gtceu.opv_dual_input_hatch":"§9§lOpV§r输入总成", - "block.gtceu.opv_dual_output_hatch":"§9§lOpV§r输出总成", - "block.gtceu.opv_electric_furnace":"§9§l传奇电炉§r", - "block.gtceu.opv_electrolyzer":"§9§l传奇电解机§r", - "block.gtceu.opv_electromagnetic_separator":"§9§l传奇电磁选矿机§r", - "block.gtceu.opv_energy_input_hatch":"§9§lOpV§r能源仓", - "block.gtceu.opv_energy_input_hatch_16a":"16安§9§lOpV§r能源仓", - "block.gtceu.opv_energy_input_hatch_4a":"4安§9§lOpV§r能源仓", - "block.gtceu.opv_energy_output_hatch":"§9§lOpV§r动力仓", - "block.gtceu.opv_energy_output_hatch_16a":"16安§9§lOpV§r动力仓", - "block.gtceu.opv_energy_output_hatch_4a":"4安§9§lOpV§r动力仓", - "block.gtceu.opv_extractor":"§9§l传奇提取机§r", - "block.gtceu.opv_extruder":"§9§l传奇压模器§r", - "block.gtceu.opv_fermenter":"§9§l传奇发酵槽§r", - "block.gtceu.opv_fluid_heater":"§9§l传奇流体加热器§r", - "block.gtceu.opv_fluid_passthrough_hatch":"§9§lOpV§r流体通行仓", - "block.gtceu.opv_fluid_solidifier":"§9§l传奇流体固化器§r", - "block.gtceu.opv_forge_hammer":"§9§l传奇锻造锤§r", - "block.gtceu.opv_forming_press":"§9§l传奇冲压机床§r", - "block.gtceu.opv_gas_collector":"§9§l传奇集气室§r", - "block.gtceu.opv_input_bus":"§9§lOpV§r输入总线", - "block.gtceu.opv_input_hatch":"§9§lOpV§r输入仓", - "block.gtceu.opv_input_hatch_4x":"§9§lOpV§r四重输入仓", - "block.gtceu.opv_input_hatch_9x":"§9§lOpV§r九重输入仓", - "block.gtceu.opv_item_passthrough_hatch":"§9§lOpV§r物品通行仓", - "block.gtceu.opv_laser_engraver":"§9§l传奇激光蚀刻机§r", - "block.gtceu.opv_lathe":"§9§l传奇车床§r", - "block.gtceu.opv_macerator":"§9§l传奇研磨机§r", - "block.gtceu.opv_machine_casing":"§9§lOpV§r机械方块", - "block.gtceu.opv_machine_hull":"§9§lOpV§f机器外壳", - "block.gtceu.opv_mixer":"§9§l传奇搅拌机§r", - "block.gtceu.opv_muffler_hatch":"§9§lOpV§r消声仓", - "block.gtceu.opv_ore_washer":"§9§l传奇洗矿厂§r", - "block.gtceu.opv_output_bus":"§9§lOpV§r输出总线", - "block.gtceu.opv_output_hatch":"§9§lOpV§r输出仓", - "block.gtceu.opv_output_hatch_4x":"§9§lOpV§r四重输出仓", - "block.gtceu.opv_output_hatch_9x":"§9§lOpV§r九重输出仓", - "block.gtceu.opv_packer":"§9§l传奇打包机§r", - "block.gtceu.opv_polarizer":"§9§l传奇两极磁化机§r", - "block.gtceu.opv_quantum_chest":"量子箱 XIII", - "block.gtceu.opv_quantum_tank":"量子缸 XIII", - "block.gtceu.opv_rock_crusher":"§9§l传奇碎岩机§r", - "block.gtceu.opv_rotor_holder":"§9§lOpV§r转子支架", - "block.gtceu.opv_scanner":"§9§l传奇扫描仪§r", - "block.gtceu.opv_sifter":"§9§l传奇筛选机§r", - "block.gtceu.opv_substation_input_hatch_64a":"64安§9§lOpV§r变电能源仓", - "block.gtceu.opv_substation_output_hatch_64a":"64安§9§lOpV§r变电动力仓", - "block.gtceu.opv_thermal_centrifuge":"§9§l传奇热力离心机§r", - "block.gtceu.opv_transformer_16a":"§9过载压§r高能变压器(§9OpV§r)", - "block.gtceu.opv_transformer_1a":"§9过载压§r变压器(§9OpV§r)", - "block.gtceu.opv_transformer_2a":"§9过载压§r进阶变压器(§9OpV§r)", - "block.gtceu.opv_transformer_4a":"§9过载压§r高流变压器(§9OpV§r)", - "block.gtceu.opv_wiremill":"§9§l传奇线材轧机§r", - "block.gtceu.orange_borderless_lamp":"橙色无框灯", - "block.gtceu.orange_lamp":"橙色灯", - "block.gtceu.orange_large_metal_sheet":"橙色粗纹金属板方块", - "block.gtceu.orange_metal_sheet":"橙色金属板方块", - "block.gtceu.orange_studs":"橙色橡胶混凝土", - "block.gtceu.overworld_marker":"主世界", - "block.gtceu.palladium_substation":"镀钯变电站机械方块", - "block.gtceu.pattern_buffer.desc.0":"§f对于GT多方块结构的集成式§6AE2样板供应器§f。", - "block.gtceu.pattern_buffer.desc.1":"§fAE2样板可以利用§6共享库存§f中的一切。", - "block.gtceu.pattern_buffer.desc.2":"§f使用§b闪存§f绑定§6ME样板总成镜像§f,以使机器相互连接!", - "block.gtceu.pattern_buffer_proxy.desc.0":"§f可以将单单一个§6ME样板总成§f连接到众多机器。", - "block.gtceu.pattern_buffer_proxy.desc.1":"§f所有连接的总成镜像将共享§6原始总成§f中的样板。", - "block.gtceu.pattern_buffer_proxy.desc.2":"§f让工厂蓬勃发展!", - "block.gtceu.petrified_foam":"石化建筑泡沫", - "block.gtceu.pink_borderless_lamp":"粉红色无框灯", - "block.gtceu.pink_lamp":"粉红色灯", - "block.gtceu.pink_large_metal_sheet":"粉红色粗纹金属板方块", - "block.gtceu.pink_metal_sheet":"粉红色金属板方块", - "block.gtceu.pink_studs":"粉红色橡胶混凝土", - "block.gtceu.plascrete":"塑料混凝土", - "block.gtceu.plasma_large_turbine":"大型等离子涡轮", - "block.gtceu.polished_dark_concrete":"磨制深色混凝土", - "block.gtceu.polished_light_concrete":"磨制淡色混凝土", - "block.gtceu.polished_marble":"磨制大理岩", - "block.gtceu.polished_red_granite":"磨制红花岗岩", - "block.gtceu.powderbarrel":"火药桶", - "block.gtceu.powderbarrel.drops_tooltip":"爆炸范围略大于TNT,所有被摧毁的方块都会掉落", - "block.gtceu.power_substation":"蓄能变电站", - "block.gtceu.primitive_blast_furnace":"土高炉", - "block.gtceu.primitive_pump":"原始水泵", - "block.gtceu.ptfe_pipe_casing":"聚四氟乙烯管道方块", - "block.gtceu.pump_deck":"水泵盖板", - "block.gtceu.pump_hatch":"水泵仓", - "block.gtceu.purple_borderless_lamp":"紫色无框灯", - "block.gtceu.purple_lamp":"紫色灯", - "block.gtceu.purple_large_metal_sheet":"紫色粗纹金属板方块", - "block.gtceu.purple_metal_sheet":"紫色金属板方块", - "block.gtceu.purple_studs":"紫色橡胶混凝土", - "block.gtceu.pyrolyse_oven":"热解炉", - "block.gtceu.radioactive_hazard_sign_block":"辐射危害警示方块", - "block.gtceu.reaction_safe_mixing_casing":"惰性搅拌机械方块", - "block.gtceu.red_borderless_lamp":"红色无框灯", - "block.gtceu.red_granite":"红花岗岩", - "block.gtceu.red_granite_bricks":"红花岗岩砖", - "block.gtceu.red_granite_cobblestone":"红花岗岩圆石", - "block.gtceu.red_granite_small_tile":"红花岗岩小片瓦", - "block.gtceu.red_granite_tile":"红花岗岩瓦", - "block.gtceu.red_granite_windmill_a":"红花岗岩风车形瓦 A", - "block.gtceu.red_granite_windmill_b":"红花岗岩风车形瓦 B", - "block.gtceu.red_lamp":"红色灯", - "block.gtceu.red_large_metal_sheet":"红色粗纹金属板方块", - "block.gtceu.red_metal_sheet":"红色金属板方块", - "block.gtceu.red_studs":"红色橡胶混凝土", - "block.gtceu.reinforced_foam":"强化建筑泡沫", - "block.gtceu.reinforced_stone":"防爆石", - "block.gtceu.research_station":"研究站", - "block.gtceu.reservoir_hatch":"水库仓", - "block.gtceu.robust_machine_casing":"强化钨钢机械方块", - "block.gtceu.rtm_alloy_coil_block":"钌钨钼合金线圈方块", - "block.gtceu.rubber_button":"橡胶木按钮", - "block.gtceu.rubber_door":"橡胶木门", - "block.gtceu.rubber_fence":"橡胶木栅栏", - "block.gtceu.rubber_fence_gate":"橡胶木栅栏门", - "block.gtceu.rubber_hanging_sign":"墙上的悬挂式橡胶木告示牌", - "block.gtceu.rubber_leaves":"橡胶树叶", - "block.gtceu.rubber_log":"橡胶原木", - "block.gtceu.rubber_planks":"橡胶木板", - "block.gtceu.rubber_pressure_plate":"橡胶木压力板", - "block.gtceu.rubber_sapling":"橡胶树苗", - "block.gtceu.rubber_sign":"墙上的橡胶木告示牌", - "block.gtceu.rubber_slab":"橡胶木台阶", - "block.gtceu.rubber_stairs":"橡胶木楼梯", - "block.gtceu.rubber_trapdoor":"橡胶木活板门", - "block.gtceu.rubber_wood":"橡胶木", - "block.gtceu.secure_maceration_casing":"安全研磨机械方块", - "block.gtceu.shock_proof_cutting_casing":"防震切割机械方块", - "block.gtceu.slicing_blades":"切片刀", - "block.gtceu.small_dark_concrete_bricks":"深色混凝土小块砖", - "block.gtceu.small_duct_pipe":"小型风管", - "block.gtceu.small_light_concrete_bricks":"淡色混凝土小块砖", - "block.gtceu.small_marble_bricks":"大理岩小块砖", - "block.gtceu.small_red_granite_bricks":"红花岗岩小块砖", - "block.gtceu.solid_machine_casing":"脱氧钢机械方块", - "block.gtceu.spatial_storage_hazard_sign_block":"空间存储危害警示方块", - "block.gtceu.square_dark_concrete_bricks":"深色混凝土方形砖", - "block.gtceu.square_light_concrete_bricks":"淡色混凝土方形砖", - "block.gtceu.square_marble_bricks":"大理岩方形砖", - "block.gtceu.square_red_granite_bricks":"红花岗岩方形砖", - "block.gtceu.stable_machine_casing":"加强钛机械方块", - "block.gtceu.stainless_steel_crate":"不锈钢板条箱", - "block.gtceu.stainless_steel_drum":"不锈钢桶", - "block.gtceu.stainless_steel_gearbox":"不锈钢齿轮箱机械方块", - "block.gtceu.stainless_steel_turbine_casing":"不锈钢涡轮机械方块", - "block.gtceu.steam_casing_bricked_bronze":"砖砌青铜外壳", - "block.gtceu.steam_casing_bricked_bronze.tooltip":"§7用来制作你的第一批蒸汽机器", - "block.gtceu.steam_casing_bricked_steel":"砖砌锻铁外壳", - "block.gtceu.steam_casing_bricked_steel.tooltip":"§7用来制作更高等级的蒸汽机器", - "block.gtceu.steam_casing_bronze":"青铜外壳", - "block.gtceu.steam_casing_bronze.tooltip":"§7用来制作你的第一批蒸汽机器", - "block.gtceu.steam_casing_steel":"钢制外壳", - "block.gtceu.steam_casing_steel.tooltip":"§7用来制作更高等级的蒸汽机器", - "block.gtceu.steam_grinder":"蒸汽碾磨机", - "block.gtceu.steam_input_bus":"蒸汽输入总线", - "block.gtceu.steam_input_hatch":"蒸汽输入仓", - "block.gtceu.steam_large_turbine":"大型蒸汽涡轮", - "block.gtceu.steam_liquid_boiler.bronze":"小型蒸汽液体燃料锅炉", - "block.gtceu.steam_machine_casing":"蒸汽机械方块", - "block.gtceu.steam_output_bus":"蒸汽输出总线", - "block.gtceu.steam_oven":"蒸汽熔炼炉", - "block.gtceu.steam_solid_boiler.bronze":"小型蒸汽固体燃料锅炉", - "block.gtceu.steel_brick_casing":"砖砌锻铁外壳", - "block.gtceu.steel_crate":"钢板条箱", - "block.gtceu.steel_drum":"钢桶", - "block.gtceu.steel_firebox_casing":"钢制燃烧室", - "block.gtceu.steel_gearbox":"钢齿轮箱机械方块", - "block.gtceu.steel_large_boiler":"大型钢锅炉", - "block.gtceu.steel_machine_casing":"脱氧钢机械方块", - "block.gtceu.steel_multiblock_tank":"钢制多方块储罐", - "block.gtceu.steel_pipe_casing":"钢管道方块", - "block.gtceu.steel_tank_valve":"钢制储罐阀门", - "block.gtceu.steel_turbine_casing":"镁铝合金涡轮机械方块", - "block.gtceu.sterilizing_filter_casing":"除菌过滤器机械方块", - "block.gtceu.stress_proof_casing":"耐压机械方块", - "block.gtceu.stripped_rubber_log":"去皮橡胶原木", - "block.gtceu.stripped_rubber_wood":"去皮橡胶木", - "block.gtceu.sturdy_machine_casing":"坚固高速钢-E机械方块", - "block.gtceu.substation_capacitor.tooltip_empty":"§7用于填补蓄能变电站的结构空隙", - "block.gtceu.substation_capacitor.tooltip_filled":"§c电池容量:§f%d EU", - "block.gtceu.superconducting_coil":"超导线圈方块", - "block.gtceu.tempered_glass":"钢化玻璃", - "block.gtceu.the_end_marker":"末地", - "block.gtceu.the_nether_marker":"下界", - "block.gtceu.titanium_crate":"钛板条箱", - "block.gtceu.titanium_drum":"钛桶", - "block.gtceu.titanium_firebox_casing":"钛燃烧室", - "block.gtceu.titanium_gearbox":"钛齿轮箱机械方块", - "block.gtceu.titanium_large_boiler":"大型钛锅炉", - "block.gtceu.titanium_pipe_casing":"钛管道方块", - "block.gtceu.titanium_turbine_casing":"钛涡轮机械方块", - "block.gtceu.treated_wood_button":"防腐木按钮", - "block.gtceu.treated_wood_door":"防腐木门", - "block.gtceu.treated_wood_fence":"防腐木栅栏", - "block.gtceu.treated_wood_fence_gate":"防腐木栅栏门", - "block.gtceu.treated_wood_hanging_sign":"墙上的悬挂式防腐木告示牌", - "block.gtceu.treated_wood_planks":"防腐木板", - "block.gtceu.treated_wood_pressure_plate":"防腐木压力板", - "block.gtceu.treated_wood_sign":"墙上的防腐木告示牌", - "block.gtceu.treated_wood_slab":"防腐木台阶", - "block.gtceu.treated_wood_stairs":"防腐木楼梯", - "block.gtceu.treated_wood_trapdoor":"防腐木活板门", - "block.gtceu.trinium_coil_block":"凯金线圈方块", - "block.gtceu.tritanium_coil_block":"三钛线圈方块", - "block.gtceu.tungsten_steel_crate":"钨钢板条箱", - "block.gtceu.tungsten_steel_drum":"钨钢桶", - "block.gtceu.tungstensteel_firebox_casing":"钨钢燃烧室", - "block.gtceu.tungstensteel_gearbox":"钨钢齿轮箱机械方块", - "block.gtceu.tungstensteel_large_boiler":"大型钨钢锅炉", - "block.gtceu.tungstensteel_pipe_casing":"钨钢管道方块", - "block.gtceu.tungstensteel_turbine_casing":"钨钢涡轮机械方块", - "block.gtceu.turret_hazard_sign_block":"炮塔危害警示方块", - "block.gtceu.uev_1024a_laser_source_hatch":"1024§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_1024a_laser_target_hatch":"1024§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_16a_energy_converter":"16§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_1a_energy_converter":"1§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_256a_laser_source_hatch":"256§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_256a_laser_target_hatch":"256§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_4096a_laser_source_hatch":"4096§e安§r§aUEV§r激光源仓", - "block.gtceu.uev_4096a_laser_target_hatch":"4096§e安§r§aUEV§r激光靶仓", - "block.gtceu.uev_4a_energy_converter":"4§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_8a_energy_converter":"8§e安§r§aUEV§r能量转换器", - "block.gtceu.uev_alloy_smelter":"§a史诗合金炉 II§r", - "block.gtceu.uev_arc_furnace":"§a史诗电弧炉 II§r", - "block.gtceu.uev_assembler":"§a史诗组装机 II§r", - "block.gtceu.uev_autoclave":"§a史诗高压釜 II§r", - "block.gtceu.uev_battery_buffer_16x":"16x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_4x":"4x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_8x":"8x§a极超压§r电池箱(§aUEV§r)", - "block.gtceu.uev_bender":"§a史诗卷板机 II§r", - "block.gtceu.uev_brewery":"§a史诗酿造室 II§r", - "block.gtceu.uev_canner":"§a史诗装罐机 II§r", - "block.gtceu.uev_centrifuge":"§a史诗离心机 II§r", - "block.gtceu.uev_charger_4x":"4x§a极超压§r闪聚充电箱(§aUEV§r)", - "block.gtceu.uev_chemical_bath":"§a史诗化学浸洗机 II§r", - "block.gtceu.uev_chemical_reactor":"§a史诗化学反应釜 II§r", - "block.gtceu.uev_circuit_assembler":"§a史诗电路组装机 II§r", - "block.gtceu.uev_compressor":"§a史诗压缩机 II§r", - "block.gtceu.uev_cutter":"§a史诗切割机 II§r", - "block.gtceu.uev_diode":"§aUEV§r二极管", - "block.gtceu.uev_distillery":"§a史诗蒸馏室 II§r", - "block.gtceu.uev_dual_input_hatch":"§aUEV§r输入总成", - "block.gtceu.uev_dual_output_hatch":"§aUEV§r输出总成", - "block.gtceu.uev_electric_furnace":"§a史诗电炉 II§r", - "block.gtceu.uev_electrolyzer":"§a史诗电解机 II§r", - "block.gtceu.uev_electromagnetic_separator":"§a史诗电磁选矿机 II§r", - "block.gtceu.uev_energy_input_hatch":"§aUEV§r能源仓", - "block.gtceu.uev_energy_input_hatch_16a":"16安§aUEV§r能源仓", - "block.gtceu.uev_energy_input_hatch_4a":"4安§aUEV§r能源仓", - "block.gtceu.uev_energy_output_hatch":"§aUEV§r动力仓", - "block.gtceu.uev_energy_output_hatch_16a":"16安§aUEV§r动力仓", - "block.gtceu.uev_energy_output_hatch_4a":"4安§aUEV§r动力仓", - "block.gtceu.uev_extractor":"§a史诗提取机 II§r", - "block.gtceu.uev_extruder":"§a史诗压模器 II§r", - "block.gtceu.uev_fermenter":"§a史诗发酵槽 II§r", - "block.gtceu.uev_fluid_heater":"§a史诗流体加热器 II§r", - "block.gtceu.uev_fluid_passthrough_hatch":"§aUEV§r流体通行仓", - "block.gtceu.uev_fluid_solidifier":"§a史诗流体固化器 II§r", - "block.gtceu.uev_forge_hammer":"§a史诗锻造锤 II§r", - "block.gtceu.uev_forming_press":"§a史诗冲压机床 II§r", - "block.gtceu.uev_gas_collector":"§a史诗集气室 II§r", - "block.gtceu.uev_input_bus":"§aUEV§r输入总线", - "block.gtceu.uev_input_hatch":"§aUEV§r输入仓", - "block.gtceu.uev_input_hatch_4x":"§aUEV§r四重输入仓", - "block.gtceu.uev_input_hatch_9x":"§aUEV§r九重输入仓", - "block.gtceu.uev_item_passthrough_hatch":"§aUEV§r物品通行仓", - "block.gtceu.uev_laser_engraver":"§a史诗激光蚀刻机 II§r", - "block.gtceu.uev_lathe":"§a史诗车床 II§r", - "block.gtceu.uev_macerator":"§a史诗研磨机 II§r", - "block.gtceu.uev_machine_casing":"§aUEV§r机械方块", - "block.gtceu.uev_machine_hull":"§aUEV§f机器外壳", - "block.gtceu.uev_mixer":"§a史诗搅拌机 II§r", - "block.gtceu.uev_muffler_hatch":"§aUEV§r消声仓", - "block.gtceu.uev_ore_washer":"§a史诗洗矿厂 II§r", - "block.gtceu.uev_output_bus":"§aUEV§r输出总线", - "block.gtceu.uev_output_hatch":"§aUEV§r输出仓", - "block.gtceu.uev_output_hatch_4x":"§aUEV§r四重输出仓", - "block.gtceu.uev_output_hatch_9x":"§aUEV§r九重输出仓", - "block.gtceu.uev_packer":"§a史诗打包机 II§r", - "block.gtceu.uev_polarizer":"§a史诗两极磁化机 II§r", - "block.gtceu.uev_quantum_chest":"量子箱 X", - "block.gtceu.uev_quantum_tank":"量子缸 X", - "block.gtceu.uev_rock_crusher":"§a史诗碎岩机 II§r", - "block.gtceu.uev_rotor_holder":"§aUEV§r转子支架", - "block.gtceu.uev_scanner":"§a史诗扫描仪 II§r", - "block.gtceu.uev_sifter":"§a史诗筛选机 II§r", - "block.gtceu.uev_substation_input_hatch_64a":"64安§aUEV§r变电能源仓", - "block.gtceu.uev_substation_output_hatch_64a":"64安§aUEV§r变电动力仓", - "block.gtceu.uev_thermal_centrifuge":"§a史诗热力离心机 II§r", - "block.gtceu.uev_transformer_16a":"§a极超压§r高能变压器(§aUEV§r)", - "block.gtceu.uev_transformer_1a":"§a极超压§r变压器(§aUEV§r)", - "block.gtceu.uev_transformer_2a":"§a极超压§r进阶变压器(§aUEV§r)", - "block.gtceu.uev_transformer_4a":"§a极超压§r高流变压器(§aUEV§r)", - "block.gtceu.uev_wiremill":"§a史诗线材轧机 II§r", - "block.gtceu.uhv_1024a_laser_source_hatch":"1024§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_1024a_laser_target_hatch":"1024§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_16a_energy_converter":"16§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_1a_energy_converter":"1§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_256a_laser_source_hatch":"256§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_256a_laser_target_hatch":"256§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_4096a_laser_source_hatch":"4096§e安§r§4UHV§r激光源仓", - "block.gtceu.uhv_4096a_laser_target_hatch":"4096§e安§r§4UHV§r激光靶仓", - "block.gtceu.uhv_4a_energy_converter":"4§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_8a_energy_converter":"8§e安§r§4UHV§r能量转换器", - "block.gtceu.uhv_alloy_smelter":"§4史诗合金炉§r", - "block.gtceu.uhv_arc_furnace":"§4史诗电弧炉§r", - "block.gtceu.uhv_assembler":"§4史诗组装机§r", - "block.gtceu.uhv_autoclave":"§4史诗高压釜§r", - "block.gtceu.uhv_battery_buffer_16x":"16x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_4x":"4x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_8x":"8x§4极高压§r电池箱(§4UHV§r)", - "block.gtceu.uhv_bender":"§4史诗卷板机§r", - "block.gtceu.uhv_brewery":"§4史诗酿造室§r", - "block.gtceu.uhv_canner":"§4史诗装罐机§r", - "block.gtceu.uhv_centrifuge":"§4史诗离心机§r", - "block.gtceu.uhv_charger_4x":"4x§4极高压§r闪聚充电箱(§4UHV§r)", - "block.gtceu.uhv_chemical_bath":"§4史诗化学浸洗机§r", - "block.gtceu.uhv_chemical_reactor":"§4史诗化学反应釜§r", - "block.gtceu.uhv_circuit_assembler":"§4史诗电路组装机§r", - "block.gtceu.uhv_compressor":"§4史诗压缩机§r", - "block.gtceu.uhv_cutter":"§4史诗切割机§r", - "block.gtceu.uhv_diode":"§4UHV§r二极管", - "block.gtceu.uhv_distillery":"§4史诗蒸馏室§r", - "block.gtceu.uhv_dual_input_hatch":"§4UHV§r输入总成", - "block.gtceu.uhv_dual_output_hatch":"§4UHV§r输出总成", - "block.gtceu.uhv_electric_furnace":"§4史诗电炉§r", - "block.gtceu.uhv_electrolyzer":"§4史诗电解机§r", - "block.gtceu.uhv_electromagnetic_separator":"§4史诗电磁选矿机§r", - "block.gtceu.uhv_energy_input_hatch":"§4UHV§r能源仓", - "block.gtceu.uhv_energy_input_hatch_16a":"16安§4UHV§r能源仓", - "block.gtceu.uhv_energy_input_hatch_4a":"4安§4UHV§r能源仓", - "block.gtceu.uhv_energy_output_hatch":"§4UHV§r动力仓", - "block.gtceu.uhv_energy_output_hatch_16a":"16安§4UHV§r动力仓", - "block.gtceu.uhv_energy_output_hatch_4a":"4安§4UHV§r动力仓", - "block.gtceu.uhv_extractor":"§4史诗提取机§r", - "block.gtceu.uhv_extruder":"§4史诗压模器§r", - "block.gtceu.uhv_fermenter":"§4史诗发酵槽§r", - "block.gtceu.uhv_fluid_heater":"§4史诗流体加热器§r", - "block.gtceu.uhv_fluid_passthrough_hatch":"§4UHV§r流体通行仓", - "block.gtceu.uhv_fluid_solidifier":"§4史诗流体固化器§r", - "block.gtceu.uhv_forge_hammer":"§4史诗锻造锤§r", - "block.gtceu.uhv_forming_press":"§4史诗冲压机床§r", - "block.gtceu.uhv_gas_collector":"§4史诗集气室§r", - "block.gtceu.uhv_hermetic_casing":"密封机械方块 IX", - "block.gtceu.uhv_input_bus":"§4UHV§r输入总线", - "block.gtceu.uhv_input_hatch":"§4UHV§r输入仓", - "block.gtceu.uhv_input_hatch_4x":"§4UHV§r四重输入仓", - "block.gtceu.uhv_input_hatch_9x":"§4UHV§r九重输入仓", - "block.gtceu.uhv_item_passthrough_hatch":"§4UHV§r物品通行仓", - "block.gtceu.uhv_laser_engraver":"§4史诗激光蚀刻机§r", - "block.gtceu.uhv_lathe":"§4史诗车床§r", - "block.gtceu.uhv_macerator":"§4史诗研磨机§r", - "block.gtceu.uhv_machine_casing":"§4UHV§r机械方块", - "block.gtceu.uhv_machine_hull":"§4UHV§f机器外壳", - "block.gtceu.uhv_mixer":"§4史诗搅拌机§r", - "block.gtceu.uhv_muffler_hatch":"§4UHV§r消声仓", - "block.gtceu.uhv_ore_washer":"§4史诗洗矿厂§r", - "block.gtceu.uhv_output_bus":"§4UHV§r输出总线", - "block.gtceu.uhv_output_hatch":"§4UHV§r输出仓", - "block.gtceu.uhv_output_hatch_4x":"§4UHV§r四重输出仓", - "block.gtceu.uhv_output_hatch_9x":"§4UHV§r九重输出仓", - "block.gtceu.uhv_packer":"§4史诗打包机§r", - "block.gtceu.uhv_polarizer":"§4史诗两极磁化机§r", - "block.gtceu.uhv_quantum_chest":"量子箱 IX", - "block.gtceu.uhv_quantum_tank":"量子缸 IX", - "block.gtceu.uhv_rock_crusher":"§4史诗碎岩机§r", - "block.gtceu.uhv_rotor_holder":"§4UHV§r转子支架", - "block.gtceu.uhv_scanner":"§4史诗扫描仪 §r", - "block.gtceu.uhv_sifter":"§4史诗筛选机§r", - "block.gtceu.uhv_substation_input_hatch_64a":"64安§4UHV§r变电能源仓", - "block.gtceu.uhv_substation_output_hatch_64a":"64安§4UHV§r变电动力仓", - "block.gtceu.uhv_thermal_centrifuge":"§4史诗热力离心机§r", - "block.gtceu.uhv_transformer_16a":"§4极高压§r高能变压器(§4UHV§r)", - "block.gtceu.uhv_transformer_1a":"§4极高压§r变压器(§4UHV§r)", - "block.gtceu.uhv_transformer_2a":"§4极高压§r进阶变压器(§4UHV§r) ", - "block.gtceu.uhv_transformer_4a":"§4极高压§r高流变压器(§4UHV§r)", - "block.gtceu.uhv_ultimate_battery":"终极电容(§4UHV§r)", - "block.gtceu.uhv_wiremill":"§4史诗线材轧机§r", - "block.gtceu.uiv_1024a_laser_source_hatch":"1024§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_1024a_laser_target_hatch":"1024§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_16a_energy_converter":"16§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_1a_energy_converter":"1§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_256a_laser_source_hatch":"256§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_256a_laser_target_hatch":"256§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_4096a_laser_source_hatch":"4096§e安§r§2UIV§r激光源仓", - "block.gtceu.uiv_4096a_laser_target_hatch":"4096§e安§r§2UIV§r激光靶仓", - "block.gtceu.uiv_4a_energy_converter":"4§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_8a_energy_converter":"8§e安§r§2UIV§r能量转换器", - "block.gtceu.uiv_alloy_smelter":"§2史诗合金炉 III§r", - "block.gtceu.uiv_arc_furnace":"§2史诗电弧炉 III§r", - "block.gtceu.uiv_assembler":"§2史诗组装机 III§r", - "block.gtceu.uiv_autoclave":"§2史诗高压釜 III§r", - "block.gtceu.uiv_battery_buffer_16x":"16x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_4x":"4x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_8x":"8x§2极巨压§r电池箱(§2UIV§r)", - "block.gtceu.uiv_bender":"§2史诗卷板机 III§r", - "block.gtceu.uiv_brewery":"§2史诗酿造室 III§r", - "block.gtceu.uiv_canner":"§2史诗装罐机 III§r", - "block.gtceu.uiv_centrifuge":"§2史诗离心机 III§r", - "block.gtceu.uiv_charger_4x":"4x§2极巨压§r闪聚充电箱(§2UIV§r)", - "block.gtceu.uiv_chemical_bath":"§2史诗化学浸洗机 III§r", - "block.gtceu.uiv_chemical_reactor":"§2史诗化学反应釜 III§r", - "block.gtceu.uiv_circuit_assembler":"§2史诗电路组装机 III§r", - "block.gtceu.uiv_compressor":"§2史诗压缩机 III§r", - "block.gtceu.uiv_cutter":"§2史诗切割机 III§r", - "block.gtceu.uiv_diode":"§2UIV§r二极管", - "block.gtceu.uiv_distillery":"§2史诗蒸馏室 III§r", - "block.gtceu.uiv_dual_input_hatch":"§2UIV§r输入总成", - "block.gtceu.uiv_dual_output_hatch":"§2UIV§r输出总成", - "block.gtceu.uiv_electric_furnace":"§2史诗电炉 III§r", - "block.gtceu.uiv_electrolyzer":"§2史诗电解机 III§r", - "block.gtceu.uiv_electromagnetic_separator":"§2史诗电磁选矿机 III§r", - "block.gtceu.uiv_energy_input_hatch":"§2UIV§r能源仓", - "block.gtceu.uiv_energy_input_hatch_16a":"16安§2UIV§r能源仓", - "block.gtceu.uiv_energy_input_hatch_4a":"4安§2UIV§r能源仓", - "block.gtceu.uiv_energy_output_hatch":"§2UIV§r动力仓", - "block.gtceu.uiv_energy_output_hatch_16a":"16安§2UIV§r动力仓", - "block.gtceu.uiv_energy_output_hatch_4a":"4安§2UIV§r动力仓", - "block.gtceu.uiv_extractor":"§2史诗提取机 III§r", - "block.gtceu.uiv_extruder":"§2史诗压模器 III§r", - "block.gtceu.uiv_fermenter":"§2史诗发酵槽 III§r", - "block.gtceu.uiv_fluid_heater":"§2史诗流体加热器 III§r", - "block.gtceu.uiv_fluid_passthrough_hatch":"§2UIV§r流体通行仓", - "block.gtceu.uiv_fluid_solidifier":"§2史诗流体固化器 III§r", - "block.gtceu.uiv_forge_hammer":"§2史诗锻造锤 III§r", - "block.gtceu.uiv_forming_press":"§2史诗冲压机床 III§r", - "block.gtceu.uiv_gas_collector":"§2史诗集气室 III§r", - "block.gtceu.uiv_input_bus":"§2UIV§r输入总线", - "block.gtceu.uiv_input_hatch":"§2UIV§r输入仓", - "block.gtceu.uiv_input_hatch_4x":"§2UIV§r四重输入仓", - "block.gtceu.uiv_input_hatch_9x":"§2UIV§r九重输入仓", - "block.gtceu.uiv_item_passthrough_hatch":"§2UIV§r物品通行仓", - "block.gtceu.uiv_laser_engraver":"§2史诗激光蚀刻机 III§r", - "block.gtceu.uiv_lathe":"§2史诗车床 III§r", - "block.gtceu.uiv_macerator":"§2史诗研磨机 III§r", - "block.gtceu.uiv_machine_casing":"§2UIV§r机械方块", - "block.gtceu.uiv_machine_hull":"§2UIV§f机器外壳", - "block.gtceu.uiv_mixer":"§2史诗搅拌机 III§r", - "block.gtceu.uiv_muffler_hatch":"§2UIV§r消声仓", - "block.gtceu.uiv_ore_washer":"§2史诗洗矿厂 III§r", - "block.gtceu.uiv_output_bus":"§2UIV§r输出总线", - "block.gtceu.uiv_output_hatch":"§2UIV§r输出仓", - "block.gtceu.uiv_output_hatch_4x":"§2UIV§r四重输出仓", - "block.gtceu.uiv_output_hatch_9x":"§2UIV§r九重输出仓", - "block.gtceu.uiv_packer":"§2史诗打包机 III§r", - "block.gtceu.uiv_polarizer":"§2史诗两极磁化机 III§r", - "block.gtceu.uiv_quantum_chest":"量子箱 XI", - "block.gtceu.uiv_quantum_tank":"量子缸 XI", - "block.gtceu.uiv_rock_crusher":"§2史诗碎岩机 III§r", - "block.gtceu.uiv_rotor_holder":"§2UIV§r转子支架", - "block.gtceu.uiv_scanner":"§2史诗扫描仪 III§r", - "block.gtceu.uiv_sifter":"§2史诗筛选机 III§r", - "block.gtceu.uiv_substation_input_hatch_64a":"64安§2UIV§r变电能源仓", - "block.gtceu.uiv_substation_output_hatch_64a":"64安§2UIV§r变电动力仓", - "block.gtceu.uiv_thermal_centrifuge":"§2史诗热力离心机 III§r", - "block.gtceu.uiv_transformer_16a":"§2极巨压§r高能变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_1a":"§2极巨压§r变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_2a":"§2极巨压§r进阶变压器(§2UIV§r)", - "block.gtceu.uiv_transformer_4a":"§2极巨压§r高流变压器(§2UIV§r)", - "block.gtceu.uiv_wiremill":"§2史诗线材轧机 III§r", - "block.gtceu.ulv_16a_energy_converter":"16§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_1a_energy_converter":"1§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_4a_energy_converter":"4§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_8a_energy_converter":"8§e安§r§8ULV§r能量转换器", - "block.gtceu.ulv_battery_buffer_16x":"16x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_4x":"4x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_8x":"8x§8超低压§r电池箱(§8ULV§r)", - "block.gtceu.ulv_charger_4x":"4x§8超低压§r闪聚充电箱(§8ULV§r)", - "block.gtceu.ulv_energy_input_hatch":"§8ULV§r能源仓", - "block.gtceu.ulv_energy_output_hatch":"§8ULV§r动力仓", - "block.gtceu.ulv_input_bus":"§8ULV§r输入总线", - "block.gtceu.ulv_input_hatch":"§8ULV§r输入仓", - "block.gtceu.ulv_machine_casing":"§8ULV§r机械方块", - "block.gtceu.ulv_machine_hull":"§8ULV§f机器外壳", - "block.gtceu.ulv_output_bus":"§8ULV§r输出总线", - "block.gtceu.ulv_output_hatch":"§8ULV§r输出仓", - "block.gtceu.ulv_transformer_16a":"§8超低压§r高能变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_1a":"§8超低压§r变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_2a":"§8超低压§r进阶变压器(§8ULV§r)", - "block.gtceu.ulv_transformer_4a":"§8超低压§r高流变压器(§8ULV§r)", - "block.gtceu.uv_1024a_laser_source_hatch":"1024§e安§r§3UV§r激光源仓", - "block.gtceu.uv_1024a_laser_target_hatch":"1024§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_16a_energy_converter":"16§e安§r§3UV§r能量转换器", - "block.gtceu.uv_1a_energy_converter":"1§e安§r§3UV§r能量转换器", - "block.gtceu.uv_256a_laser_source_hatch":"256§e安§r§3UV§r激光源仓", - "block.gtceu.uv_256a_laser_target_hatch":"256§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_4096a_laser_source_hatch":"4096§e安§r§3UV§r激光源仓", - "block.gtceu.uv_4096a_laser_target_hatch":"4096§e安§r§3UV§r激光靶仓", - "block.gtceu.uv_4a_energy_converter":"4§e安§r§3UV§r能量转换器", - "block.gtceu.uv_8a_energy_converter":"8§e安§r§3UV§r能量转换器", - "block.gtceu.uv_alloy_smelter":"§3终极合金炉§r", - "block.gtceu.uv_arc_furnace":"§3终极电弧炉§r", - "block.gtceu.uv_assembler":"§3终极组装机§r", - "block.gtceu.uv_autoclave":"§3终极高压釜§r", - "block.gtceu.uv_battery_buffer_16x":"16x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_4x":"4x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_8x":"8x§3极限压§r电池箱(§3UV§r)", - "block.gtceu.uv_bender":"§3终极卷板机§r", - "block.gtceu.uv_brewery":"§3终极酿造室§r", - "block.gtceu.uv_canner":"§3终极装罐机§r", - "block.gtceu.uv_centrifuge":"§3终极离心机§r", - "block.gtceu.uv_charger_4x":"4x§3极限压§r闪聚充电箱(§3UV§r)", - "block.gtceu.uv_chemical_bath":"§3终极化学浸洗机§r", - "block.gtceu.uv_chemical_reactor":"§3终极化学反应釜§r", - "block.gtceu.uv_circuit_assembler":"§3终极电路组装机§r", - "block.gtceu.uv_compressor":"§3终极压缩机§r", - "block.gtceu.uv_cutter":"§3终极切割机§r", - "block.gtceu.uv_diode":"§3UV§r二极管", - "block.gtceu.uv_distillery":"§3终极蒸馏室§r", - "block.gtceu.uv_dual_input_hatch":"§3UV§r输入总成", - "block.gtceu.uv_dual_output_hatch":"§3UV§r输出总成", - "block.gtceu.uv_electric_furnace":"§3终极电炉§r", - "block.gtceu.uv_electrolyzer":"§3终极电解机§r", - "block.gtceu.uv_electromagnetic_separator":"§3终极电磁选矿机§r", - "block.gtceu.uv_energy_input_hatch":"§3UV§r能源仓", - "block.gtceu.uv_energy_input_hatch_16a":"16安§3UV§r能源仓", - "block.gtceu.uv_energy_input_hatch_4a":"4安§3UV§r能源仓", - "block.gtceu.uv_energy_output_hatch":"§3UV§r动力仓", - "block.gtceu.uv_energy_output_hatch_16a":"16安§3UV§r动力仓", - "block.gtceu.uv_energy_output_hatch_4a":"4安§3UV§r动力仓", - "block.gtceu.uv_extractor":"§3终极提取机§r", - "block.gtceu.uv_extruder":"§3终极压模器§r", - "block.gtceu.uv_fermenter":"§3终极发酵槽§r", - "block.gtceu.uv_fluid_heater":"§3终极流体加热器§r", - "block.gtceu.uv_fluid_passthrough_hatch":"§3UV§r流体通行仓", - "block.gtceu.uv_fluid_solidifier":"§3终极流体固化器§r", - "block.gtceu.uv_forge_hammer":"§3终极锻造锤§r", - "block.gtceu.uv_forming_press":"§3终极冲压机床§r", - "block.gtceu.uv_fusion_reactor":"核聚变反应堆控制电脑 MK-III", - "block.gtceu.uv_gas_collector":"§3终极集气室§r", - "block.gtceu.uv_hermetic_casing":"密封机械方块 VIII", - "block.gtceu.uv_input_bus":"§3UV§r输入总线", - "block.gtceu.uv_input_hatch":"§3UV§r输入仓", - "block.gtceu.uv_input_hatch_4x":"§3UV§r四重输入仓", - "block.gtceu.uv_input_hatch_9x":"§3UV§r九重输入仓", - "block.gtceu.uv_item_passthrough_hatch":"§3UV§r物品通行仓", - "block.gtceu.uv_lapotronic_battery":"兰波顿电容(§3UV§r)", - "block.gtceu.uv_laser_engraver":"§3终极激光蚀刻机§r", - "block.gtceu.uv_lathe":"§3终极车床§r", - "block.gtceu.uv_macerator":"§3终极研磨机§r", - "block.gtceu.uv_machine_casing":"§3UV§r机械方块", - "block.gtceu.uv_machine_hull":"§3UV§f机器外壳", - "block.gtceu.uv_mixer":"§3终极搅拌机§r", - "block.gtceu.uv_muffler_hatch":"§3UV§r消声仓", - "block.gtceu.uv_ore_washer":"§3终极洗矿厂§r", - "block.gtceu.uv_output_bus":"§3UV§r输出总线", - "block.gtceu.uv_output_hatch":"§3UV§r输出仓", - "block.gtceu.uv_output_hatch_4x":"§3UV§r四重输出仓", - "block.gtceu.uv_output_hatch_9x":"§3UV§r九重输出仓", - "block.gtceu.uv_packer":"§3终极打包机§r", - "block.gtceu.uv_parallel_hatch":"§3UV§r并行控制仓", - "block.gtceu.uv_polarizer":"§3终极两极磁化机§r", - "block.gtceu.uv_quantum_chest":"量子箱 VIII", - "block.gtceu.uv_quantum_tank":"量子缸 VIII", - "block.gtceu.uv_rock_crusher":"§3终极碎岩机§r", - "block.gtceu.uv_rotor_holder":"§3UV§r转子支架", - "block.gtceu.uv_scanner":"§3终极扫描仪§r", - "block.gtceu.uv_sifter":"§3终极筛选机§r", - "block.gtceu.uv_substation_input_hatch_64a":"64安§3UV§r变电能源仓", - "block.gtceu.uv_substation_output_hatch_64a":"64安§3UV§r变电动力仓", - "block.gtceu.uv_thermal_centrifuge":"§3终极热力离心机§r", - "block.gtceu.uv_transformer_16a":"§3极限压§r高能变压器(§3UV§r)", - "block.gtceu.uv_transformer_1a":"§3极限压§r变压器(§3UV§r)", - "block.gtceu.uv_transformer_2a":"§3极限压§r进阶变压器(§3UV§r)", - "block.gtceu.uv_transformer_4a":"§3极限压§r高流变压器(§3UV§r)", - "block.gtceu.uv_wiremill":"§3终极线材轧机§r", - "block.gtceu.uv_world_accelerator":"§3终极世界加速器§r", - "block.gtceu.uxv_1024a_laser_source_hatch":"1024§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_1024a_laser_target_hatch":"1024§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_16a_energy_converter":"16§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_1a_energy_converter":"1§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_256a_laser_source_hatch":"256§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_256a_laser_target_hatch":"256§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_4096a_laser_source_hatch":"4096§e安§r§eUXV§r激光源仓", - "block.gtceu.uxv_4096a_laser_target_hatch":"4096§e安§r§eUXV§r激光靶仓", - "block.gtceu.uxv_4a_energy_converter":"4§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_8a_energy_converter":"8§e安§r§eUXV§r能量转换器", - "block.gtceu.uxv_alloy_smelter":"§e史诗合金炉 IV§r", - "block.gtceu.uxv_arc_furnace":"§e史诗电弧炉 IV§r", - "block.gtceu.uxv_assembler":"§e史诗组装机 IV§r", - "block.gtceu.uxv_autoclave":"§e史诗高压釜 IV§r", - "block.gtceu.uxv_battery_buffer_16x":"16x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_4x":"4x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_8x":"8x§e极顶压§r电池箱(§eUXV§r)", - "block.gtceu.uxv_bender":"§e史诗卷板机 IV§r", - "block.gtceu.uxv_brewery":"§e史诗酿造室 IV§r", - "block.gtceu.uxv_canner":"§e史诗装罐机 IV§r", - "block.gtceu.uxv_centrifuge":"§e史诗离心机 IV§r", - "block.gtceu.uxv_charger_4x":"4x§e极顶压§r闪聚充电箱(§eUXV§r)", - "block.gtceu.uxv_chemical_bath":"§e史诗化学浸洗机 IV§r", - "block.gtceu.uxv_chemical_reactor":"§e史诗化学反应釜 IV§r", - "block.gtceu.uxv_circuit_assembler":"§e史诗电路组装机 IV§r", - "block.gtceu.uxv_compressor":"§e史诗压缩机 IV§r", - "block.gtceu.uxv_cutter":"§e史诗切割机 IV§r", - "block.gtceu.uxv_diode":"§eUXV§r二极管", - "block.gtceu.uxv_distillery":"§e史诗蒸馏室 IV§r", - "block.gtceu.uxv_dual_input_hatch":"§eUXV§r输入总成", - "block.gtceu.uxv_dual_output_hatch":"§eUXV§r输出总成", - "block.gtceu.uxv_electric_furnace":"§e史诗电炉 IV§r", - "block.gtceu.uxv_electrolyzer":"§e史诗电解机 IV§r", - "block.gtceu.uxv_electromagnetic_separator":"§e史诗电磁选矿机 IV§r", - "block.gtceu.uxv_energy_input_hatch":"§eUXV§r能源仓", - "block.gtceu.uxv_energy_input_hatch_16a":"16安§eUXV§r能源仓", - "block.gtceu.uxv_energy_input_hatch_4a":"4安§eUXV§r能源仓", - "block.gtceu.uxv_energy_output_hatch":"§eUXV§r动力仓", - "block.gtceu.uxv_energy_output_hatch_16a":"16安§eUXV§r动力仓", - "block.gtceu.uxv_energy_output_hatch_4a":"4安§eUXV§r动力仓", - "block.gtceu.uxv_extractor":"§e史诗提取机 IV§r", - "block.gtceu.uxv_extruder":"§e史诗压模器 IV§r", - "block.gtceu.uxv_fermenter":"§e史诗发酵槽 IV§r", - "block.gtceu.uxv_fluid_heater":"§e史诗流体加热器 IV§r", - "block.gtceu.uxv_fluid_passthrough_hatch":"§eUXV§r流体通行仓", - "block.gtceu.uxv_fluid_solidifier":"§e史诗流体固化器 IV§r", - "block.gtceu.uxv_forge_hammer":"§e史诗锻造锤 IV§r", - "block.gtceu.uxv_forming_press":"§e史诗冲压机床 IV§r", - "block.gtceu.uxv_gas_collector":"§e史诗集气室 IV§r", - "block.gtceu.uxv_input_bus":"§eUXV§r输入总线", - "block.gtceu.uxv_input_hatch":"§eUXV§r输入仓", - "block.gtceu.uxv_input_hatch_4x":"§eUXV§r四重输入仓", - "block.gtceu.uxv_input_hatch_9x":"§eUXV§r九重输入仓", - "block.gtceu.uxv_item_passthrough_hatch":"§eUXV§r物品通行仓", - "block.gtceu.uxv_laser_engraver":"§e史诗激光蚀刻机 IV§r", - "block.gtceu.uxv_lathe":"§e史诗车床 IV§r", - "block.gtceu.uxv_macerator":"§e史诗研磨机 IV§r", - "block.gtceu.uxv_machine_casing":"§eUXV§r机械方块", - "block.gtceu.uxv_machine_hull":"§eUXV§f机器外壳", - "block.gtceu.uxv_mixer":"§e史诗搅拌机 IV§r", - "block.gtceu.uxv_muffler_hatch":"§eUXV§r消声仓", - "block.gtceu.uxv_ore_washer":"§e史诗洗矿厂 IV§r", - "block.gtceu.uxv_output_bus":"§eUXV§r输出总线", - "block.gtceu.uxv_output_hatch":"§eUXV§r输出仓", - "block.gtceu.uxv_output_hatch_4x":"§eUXV§r四重输出仓", - "block.gtceu.uxv_output_hatch_9x":"§eUXV§r九重输出仓", - "block.gtceu.uxv_packer":"§e史诗打包机 IV§r", - "block.gtceu.uxv_polarizer":"§e史诗两极磁化机 IV§r", - "block.gtceu.uxv_quantum_chest":"量子箱 XII", - "block.gtceu.uxv_quantum_tank":"量子缸 XII", - "block.gtceu.uxv_rock_crusher":"§e史诗碎岩机 IV§r", - "block.gtceu.uxv_rotor_holder":"§eUXV§r转子支架", - "block.gtceu.uxv_scanner":"§e史诗扫描仪 IV§r", - "block.gtceu.uxv_sifter":"§e史诗筛选机 IV§r", - "block.gtceu.uxv_substation_input_hatch_64a":"64安§eUXV§r变电能源仓", - "block.gtceu.uxv_substation_output_hatch_64a":"64安§eUXV§r变电动力仓", - "block.gtceu.uxv_thermal_centrifuge":"§e史诗热力离心机 IV§r", - "block.gtceu.uxv_transformer_16a":"§e极顶压§r高能变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_1a":"§e极顶压§r变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_2a":"§e极顶压§r进阶变压器(§eUXV§r)", - "block.gtceu.uxv_transformer_4a":"§e极顶压§r高流变压器(§eUXV§r)", - "block.gtceu.uxv_wiremill":"§e史诗线材轧机 IV§r", - "block.gtceu.vacuum_freezer":"真空冷冻机", - "block.gtceu.vibration_safe_casing":"防震机械方块", - "block.gtceu.void_hazard_sign_block":"虚空危害警示方块", - "block.gtceu.watertight_casing":"防水机械方块", - "block.gtceu.white_borderless_lamp":"白色无框灯", - "block.gtceu.white_lamp":"白色灯", - "block.gtceu.white_large_metal_sheet":"白色粗纹金属板方块", - "block.gtceu.white_metal_sheet":"白色金属板方块", - "block.gtceu.white_studs":"白色橡胶混凝土", - "block.gtceu.wire_coil.tooltip_cracking":"§8裂化机:", - "block.gtceu.wire_coil.tooltip_energy_cracking":"§a耗能:§f%s%%", - "block.gtceu.wire_coil.tooltip_energy_smelter":"§a耗能:§8每配方§f%s EU/t", - "block.gtceu.wire_coil.tooltip_extended_info":"§7按住§6SHIFT§7获得更多线圈信息", - "block.gtceu.wire_coil.tooltip_heat":"§c基础热容:§f%d K", - "block.gtceu.wire_coil.tooltip_parallel_smelter":"§5最大并行:§f%s", - "block.gtceu.wire_coil.tooltip_pyro":"§8热解炉:", - "block.gtceu.wire_coil.tooltip_smelter":"§8工业熔炉:", - "block.gtceu.wire_coil.tooltip_speed_pyro":"§b处理速度:§f%s%%", - "block.gtceu.wood_crate":"木板条箱", - "block.gtceu.wood_drum":"木桶", - "block.gtceu.wood_wall":"木壁", - "block.gtceu.wooden_multiblock_tank":"木制多方块储罐", - "block.gtceu.wooden_tank_valve":"木制储罐阀门", - "block.gtceu.yellow_borderless_lamp":"黄色无框灯", - "block.gtceu.yellow_lamp":"黄色灯", - "block.gtceu.yellow_large_metal_sheet":"黄色粗纹金属板方块", - "block.gtceu.yellow_metal_sheet":"黄色金属板方块", - "block.gtceu.yellow_stripes_block.a":"黄色路障方块", - "block.gtceu.yellow_stripes_block.b":"黄色路障方块", - "block.gtceu.yellow_stripes_block.c":"黄色路障方块", - "block.gtceu.yellow_stripes_block.d":"黄色路障方块", - "block.gtceu.yellow_stripes_block_a":"黄色路障方块A", - "block.gtceu.yellow_stripes_block_b":"黄色路障方块B", - "block.gtceu.yellow_studs":"黄色橡胶混凝土", - "block.gtceu.zpm_1024a_laser_source_hatch":"1024§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_1024a_laser_target_hatch":"1024§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_16a_energy_converter":"16§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_1a_energy_converter":"1§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_256a_laser_source_hatch":"256§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_256a_laser_target_hatch":"256§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_4096a_laser_source_hatch":"4096§e安§r§cZPM§r激光源仓", - "block.gtceu.zpm_4096a_laser_target_hatch":"4096§e安§r§cZPM§r激光靶仓", - "block.gtceu.zpm_4a_energy_converter":"4§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_8a_energy_converter":"8§e安§r§cZPM§r能量转换器", - "block.gtceu.zpm_alloy_smelter":"§c精英合金炉 III§r", - "block.gtceu.zpm_arc_furnace":"§c精英电弧炉 III§r", - "block.gtceu.zpm_assembler":"§c精英组装机 III§r", - "block.gtceu.zpm_autoclave":"§c精英高压釜 III§r", - "block.gtceu.zpm_battery_buffer_16x":"16x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_4x":"4x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_8x":"8x§c零点压§r电池箱(§cZPM§r)", - "block.gtceu.zpm_bender":"§c精英卷板机 III§r", - "block.gtceu.zpm_brewery":"§c精英酿造室 III§r", - "block.gtceu.zpm_canner":"§c精英装罐机 III§r", - "block.gtceu.zpm_centrifuge":"§c精英离心机 III§r", - "block.gtceu.zpm_charger_4x":"4x§c零点压§r闪聚充电箱(§cZPM§r)", - "block.gtceu.zpm_chemical_bath":"§c精英化学浸洗机 III§r", - "block.gtceu.zpm_chemical_reactor":"§c精英化学反应釜 III§r", - "block.gtceu.zpm_circuit_assembler":"§c精英电路组装机 III§r", - "block.gtceu.zpm_compressor":"§c精英压缩机 III§r", - "block.gtceu.zpm_cutter":"§c精英切割机 III§r", - "block.gtceu.zpm_diode":"§cZPM§r二极管", - "block.gtceu.zpm_distillery":"§c精英蒸馏室 III§r", - "block.gtceu.zpm_dual_input_hatch":"§cZPM§r输入总成", - "block.gtceu.zpm_dual_output_hatch":"§cZPM§r输出总成", - "block.gtceu.zpm_electric_furnace":"§c精英电炉 III§r", - "block.gtceu.zpm_electrolyzer":"§c精英电解机 III§r", - "block.gtceu.zpm_electromagnetic_separator":"§c精英电磁选矿机 III§r", - "block.gtceu.zpm_energy_input_hatch":"§cZPM§r能源仓", - "block.gtceu.zpm_energy_input_hatch_16a":"16安§cZPM§r能源仓", - "block.gtceu.zpm_energy_input_hatch_4a":"4安§cZPM§r能源仓", - "block.gtceu.zpm_energy_output_hatch":"§cZPM§r动力仓", - "block.gtceu.zpm_energy_output_hatch_16a":"16安§cZPM§r动力仓", - "block.gtceu.zpm_energy_output_hatch_4a":"4安§cZPM§r动力仓", - "block.gtceu.zpm_extractor":"§c精英提取机 III§r", - "block.gtceu.zpm_extruder":"§c精英压模器 III§r", - "block.gtceu.zpm_fermenter":"§c精英发酵槽 III§r", - "block.gtceu.zpm_fluid_heater":"§c精英流体加热器 III§r", - "block.gtceu.zpm_fluid_passthrough_hatch":"§cZPM§r流体通行仓", - "block.gtceu.zpm_fluid_solidifier":"§c精英流体固化器 III§r", - "block.gtceu.zpm_forge_hammer":"§c精英锻造锤 III§r", - "block.gtceu.zpm_forming_press":"§c精英冲压机床 III§r", - "block.gtceu.zpm_fusion_reactor":"核聚变反应堆控制电脑 MK-II", - "block.gtceu.zpm_gas_collector":"§c精英集气室 III§r", - "block.gtceu.zpm_hermetic_casing":"密封机械方块 VII", - "block.gtceu.zpm_input_bus":"§cZPM§r输入总线", - "block.gtceu.zpm_input_hatch":"§cZPM§r输入仓", - "block.gtceu.zpm_input_hatch_4x":"§cZPM§r四重输入仓", - "block.gtceu.zpm_input_hatch_9x":"§cZPM§r九重输入仓", - "block.gtceu.zpm_item_passthrough_hatch":"§cZPM§r物品通行仓", - "block.gtceu.zpm_lapotronic_battery":"兰波顿电容(§cZPM§r)", - "block.gtceu.zpm_laser_engraver":"§c精英激光蚀刻机 III§r", - "block.gtceu.zpm_lathe":"§c精英车床 III§r", - "block.gtceu.zpm_macerator":"§c精英研磨机 III§r", - "block.gtceu.zpm_machine_casing":"§cZPM§r机械方块", - "block.gtceu.zpm_machine_hull":"§cZPM§f机器外壳", - "block.gtceu.zpm_mixer":"§c精英搅拌机 III§r", - "block.gtceu.zpm_muffler_hatch":"§cZPM§r消声仓", - "block.gtceu.zpm_ore_washer":"§c精英洗矿厂 III§r", - "block.gtceu.zpm_output_bus":"§cZPM§r输出总线", - "block.gtceu.zpm_output_hatch":"§cZPM§r输出仓", - "block.gtceu.zpm_output_hatch_4x":"§cZPM§r四重输出仓", - "block.gtceu.zpm_output_hatch_9x":"§cZPM§r九重输出仓", - "block.gtceu.zpm_packer":"§c精英打包机 III§r", - "block.gtceu.zpm_parallel_hatch":"§cZPM§r并行控制仓", - "block.gtceu.zpm_polarizer":"§c精英两极磁化机 III§r", - "block.gtceu.zpm_quantum_chest":"量子箱 VII", - "block.gtceu.zpm_quantum_tank":"量子缸 VII", - "block.gtceu.zpm_rock_crusher":"§c精英碎岩机 III§r", - "block.gtceu.zpm_rotor_holder":"§cZPM§r转子支架", - "block.gtceu.zpm_scanner":"§c精英扫描仪III§r", - "block.gtceu.zpm_sifter":"§c精英筛选机 III§r", - "block.gtceu.zpm_substation_input_hatch_64a":"64安§cZPM§r变电能源仓", - "block.gtceu.zpm_substation_output_hatch_64a":"64安§cZPM§r变电动力仓", - "block.gtceu.zpm_thermal_centrifuge":"§c精英热力离心机 III§r", - "block.gtceu.zpm_transformer_16a":"§c零点压§r高能变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_1a":"§c零点压§r变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_2a":"§c零点压§r进阶变压器(§cZPM§r)", - "block.gtceu.zpm_transformer_4a":"§c零点压§r高流变压器(§cZPM§r)", - "block.gtceu.zpm_wiremill":"§c精英线材轧机 III§r", - "block.gtceu.zpm_world_accelerator":"§c精英世界加速器 III§r", - "block.sterilizing_filter_casing.tooltip":"创造一个§a无菌§r环境", - "block.surface_rock":"地表岩石(%s)", - "button.gtceu.mark_as_depleted.name":"标记为枯竭", - "button.gtceu.toggle_waypoint.name":"切换路径点", - "command.gtceu.dump_data.success":"已将注册表%2$s中的%1$s个资源转储到%3$s", - "command.gtceu.medical_condition.get":"玩家%s有以下疾病:", - "command.gtceu.medical_condition.get.element":"症状【%s】§r:%s分%s秒", - "command.gtceu.medical_condition.get.element.permanent":"症状【%s】§r:%s分%s秒(永久)", - "command.gtceu.medical_condition.get.empty":"玩家%s没有疾病。", - "command.gtceu.place_vein.failure":"无法放置%s矿脉于%s", - "command.gtceu.place_vein.success":"成功放置%s矿脉于%s", - "command.gtceu.share_prospection_data.notification":"%s向你分享了矿脉数据!", - "config.gtceu.option.addLoot":"添加战利品", - "config.gtceu.option.ae2":"ae2", - "config.gtceu.option.allUniqueStoneTypes":"所有独特石头类型", - "config.gtceu.option.animationTime":"动画时间", - "config.gtceu.option.armorHud":"盔甲HUD", - "config.gtceu.option.bedrockOreDistance":"基岩矿石距离", - "config.gtceu.option.bedrockOreDropTagPrefix":"基岩矿石掉落Tag", - "config.gtceu.option.borderColor":"边框颜色", - "config.gtceu.option.bronzeBoilerHeatSpeed":"青铜锅炉-加热速度", - "config.gtceu.option.bronzeBoilerMaxTemperature":"青铜锅炉-最高温度", - "config.gtceu.option.buttonAnchor":"按钮位置", - "config.gtceu.option.casingsPerCraft":"每次合成机械方块数量", - "config.gtceu.option.cleanMultiblocks":"多方块结构是否洁净", - "config.gtceu.option.client":"客户端", - "config.gtceu.option.compat":"兼容", - "config.gtceu.option.debug":"调试", - "config.gtceu.option.debugWorldgen":"矿石位置Debug模式", - "config.gtceu.option.defaultPaintingColor":"机器默认喷漆颜色", - "config.gtceu.option.defaultUIColor":"默认UI颜色", - "config.gtceu.option.dev":"开发", - "config.gtceu.option.direction":"方向", - "config.gtceu.option.disableManualCompression":"关闭手工压缩", - "config.gtceu.option.doBedrockOres":"添加基岩矿石", - "config.gtceu.option.doSuperflatOres":"超平坦世界生成矿石", - "config.gtceu.option.doesExplosionDamagesTerrain":"机器爆炸是否破坏地形", - "config.gtceu.option.dumpAssets":"导出资源", - "config.gtceu.option.dumpRecipes":"导出配方", - "config.gtceu.option.enableCleanroom":"启用超净间", - "config.gtceu.option.enableFEConverters":"启用FE转换器", - "config.gtceu.option.enableMaintenance":"启用维护仓", - "config.gtceu.option.enableResearch":"启用研究", - "config.gtceu.option.enableTieredCasings":"启用分级机械方块", - "config.gtceu.option.enableWorldAccelerators":"启用世界加速器", - "config.gtceu.option.enchantedTools":"附魔工具", - "config.gtceu.option.energy":"能量", - "config.gtceu.option.energyConsumption":"能耗", - "config.gtceu.option.energyUsageMultiplier":"能源消耗倍率", - "config.gtceu.option.environmentalHazardDecayRate":"环境污染衰减速率", - "config.gtceu.option.environmentalHazards":"环境污染", - "config.gtceu.option.euToFeRatio":"GTEU到FE的转换比例", - "config.gtceu.option.feToEuRatio":"FE到GTEU的转换比例", - "config.gtceu.option.flintAndSteelRequireSteel":"打火石配方是否需要钢", - "config.gtceu.option.ftbChunksIntegration":"FTB区块-集成", - "config.gtceu.option.gameplay":"游戏玩法", - "config.gtceu.option.generateLowQualityGems":"生成劣质宝石", - "config.gtceu.option.ghostCircuit":"虚拟电路", - "config.gtceu.option.gt6StylePipesCables":"类GT6管道/线缆", - "config.gtceu.option.hardAdvancedIronRecipes":"更难的高级铁制品配方", - "config.gtceu.option.hardDyeRecipes":"更难的染料配方", - "config.gtceu.option.hardGlassRecipes":"更难的玻璃配方", - "config.gtceu.option.hardIronRecipes":"更难的铁制品配方", - "config.gtceu.option.hardMiscRecipes":"更难的杂项配方", - "config.gtceu.option.hardMultiRecipes":"更难的多方块控制器配方", - "config.gtceu.option.hardRedstoneRecipes":"更难的红石配方", - "config.gtceu.option.hardToolArmorRecipes":"更难的工具盔甲配方", - "config.gtceu.option.hardWoodRecipes":"更难的木头配方", - "config.gtceu.option.harderBrickRecipes":"更难的砖块配方", - "config.gtceu.option.harderCharcoalRecipe":"更难的木炭配方", - "config.gtceu.option.harderCircuitRecipes":"更难的电路板配方", - "config.gtceu.option.harderRods":"更难的杆配方", - "config.gtceu.option.harmlessActiveTransformers":"无害的有源变压器", - "config.gtceu.option.hazardsEnabled":"启用危险物质", - "config.gtceu.option.hideFacadesInRecipeViewer":"配方浏览器中隐藏伪装板", - "config.gtceu.option.hideFilledCellsInRecipeViewer":"配方浏览器中隐藏装满的单元", - "config.gtceu.option.hideOreProcessingDiagrams":"隐藏矿物处理流程图", - "config.gtceu.option.highTierContent":"极高电压内容", - "config.gtceu.option.hpLiquidBoilerBaseOutput":"高压液体锅炉-基础输出", - "config.gtceu.option.hpSolarBoilerBaseOutput":"高压太阳能锅炉-基础输出", - "config.gtceu.option.hpSolidBoilerBaseOutput":"高压固体锅炉-基础输出", - "config.gtceu.option.hudLocation":"HUD位置", - "config.gtceu.option.hudOffsetX":"HUD偏移X", - "config.gtceu.option.hudOffsetY":"HUD偏移Y", - "config.gtceu.option.inWorldPreviewDuration":"世界中预览时长", - "config.gtceu.option.increaseDungeonLoot":"更多的地牢战利品", - "config.gtceu.option.infiniteBedrockOresFluids":"无限基岩矿石流体", - "config.gtceu.option.journeyMapIntegration":"旅行地图-集成", - "config.gtceu.option.largeBoilers":"大型锅炉", - "config.gtceu.option.ldFluidPipeMinDistance":"长距流体管道最小距离", - "config.gtceu.option.ldItemPipeMinDistance":"长距物品管道最小距离", - "config.gtceu.option.liquidBoilerBaseOutput":"液体锅炉-基础输出", - "config.gtceu.option.machineSounds":"机器音效", - "config.gtceu.option.machines":"机器", - "config.gtceu.option.machinesEmissiveTextures":"启用机器泛光纹理", - "config.gtceu.option.meHatchEnergyUsage":"ME仓能耗", - "config.gtceu.option.minerSpeed":"采矿机速度", - "config.gtceu.option.minimap":"小地图", - "config.gtceu.option.nanoSaber":"纳米剑", - "config.gtceu.option.nanoSaberBaseDamage":"纳米剑基础伤害", - "config.gtceu.option.nanoSaberDamageBoost":"纳米剑伤害增幅", - "config.gtceu.option.nativeEUToFE":"线缆直接给FE机器供能", - "config.gtceu.option.nerfPaperCrafting":"削弱纸配方", - "config.gtceu.option.nerfWoodCrafting":"削弱木板木棍合成", - "config.gtceu.option.onlyOwnerBreak":"仅所有者可破坏", - "config.gtceu.option.onlyOwnerGUI":"仅所有者可开启GUI", - "config.gtceu.option.orderedAssemblyLineFluids":"有序的装配线-流体", - "config.gtceu.option.orderedAssemblyLineItems":"有序的装配线-物品", - "config.gtceu.option.oreBlockProspectRange":"矿石方块探测半径", - "config.gtceu.option.oreGenerationChunkCacheSize":"矿物生成区块缓存大小", - "config.gtceu.option.oreIconSize":"矿石图标大小", - "config.gtceu.option.oreIndicatorChunkCacheSize":"矿脉指示物区块缓存大小", - "config.gtceu.option.oreIndicators":"矿脉指示物", - "config.gtceu.option.oreNamePrefix":"矿石名称前缀", - "config.gtceu.option.oreScaleStop":"最大图标缩放比例", - "config.gtceu.option.oreVeinGridSize":"矿脉网格大小", - "config.gtceu.option.oreVeinRandomOffset":"矿脉随机偏移", - "config.gtceu.option.oreVeins":"矿脉", - "config.gtceu.option.ownerOPBypass":"跳过所有权检查的最低权限等级", - "config.gtceu.option.prospectorEnergyUseMultiplier":"探矿仪能源消耗乘数", - "config.gtceu.option.recipeProgressLowEnergy":"跳电时,机器进度将", - "config.gtceu.option.recipes":"配方", - "config.gtceu.option.removeSmeltingForEBFMetals":"移除需要电力高炉冶炼的金属的熔炉配方", - "config.gtceu.option.removeVanillaBlockRecipes":"移除原版方块配方", - "config.gtceu.option.removeVanillaLargeOreVeins":"移除原版大型矿脉", - "config.gtceu.option.removeVanillaOreGen":"移除原版矿石", - "config.gtceu.option.removeVanillaTNTRecipe":"移除原版TNT配方", - "config.gtceu.option.renderFluids":"渲染流体", - "config.gtceu.option.renderer":"渲染器", - "config.gtceu.option.replaceMinedBlocksWith":"用...替换采矿机采过的方块", - "config.gtceu.option.requireGTToolsForBlocks":"方块需要格雷工具", - "config.gtceu.option.rngDamageElectricTools":"电动工具耐久度消耗概率", - "config.gtceu.option.rubberTreeSpawnChance":"橡胶树生成权重", - "config.gtceu.option.sandOresFall":"沙子矿石受重力吗", - "config.gtceu.option.shouldWeatherOrTerrainExplosion":"机器是否因天气或地形爆炸", - "config.gtceu.option.showDimensionTier":"显示维度等级", - "config.gtceu.option.smallBoilers":"小型锅炉", - "config.gtceu.option.solarBoilerBaseOutput":"太阳能锅炉-基础输出", - "config.gtceu.option.solidBoilerBaseOutput":"固体锅炉-基础输出", - "config.gtceu.option.sprayCanChainLength":"喷雾罐单次可喷涂长度", - "config.gtceu.option.steamMultiParallelAmount":"蒸汽多方块机器并行数", - "config.gtceu.option.steamPerWater":"蒸汽-水转化率", - "config.gtceu.option.steelBoilerHeatSpeed":"钢锅炉-加热速度", - "config.gtceu.option.steelBoilerMaxTemperature":"钢锅炉-最高温度", - "config.gtceu.option.steelSteamMultiblocks":"用钢的蒸汽多方块结构", - "config.gtceu.option.surfaceRockProspectRange":"地表岩石探测半径", - "config.gtceu.option.titaniumBoilerHeatSpeed":"钛锅炉-加热速度", - "config.gtceu.option.titaniumBoilerMaxTemperature":"钛锅炉-最高温度", - "config.gtceu.option.toggle":"切换", - "config.gtceu.option.toolCraftingSounds":"使用工具合成时播放声音", - "config.gtceu.option.toolUseSounds":"使用工具时播放声音", - "config.gtceu.option.tools":"工具", - "config.gtceu.option.treeFellingDelay":"砍树延迟", - "config.gtceu.option.tungstensteelBoilerHeatSpeed":"钨钢锅炉-加热速度", - "config.gtceu.option.tungstensteelBoilerMaxTemperature":"钨钢锅炉-最高温度", - "config.gtceu.option.universalHazards":"普遍化的危险物质", - "config.gtceu.option.updateIntervals":"更新间隔", - "config.gtceu.option.useVBO":"使用VBO", - "config.gtceu.option.voltageTierAdvImpeller":"进阶喷气背包电压等级", - "config.gtceu.option.voltageTierAdvNanoSuit":"进阶纳米胸甲电压等级", - "config.gtceu.option.voltageTierAdvQuarkTech":"进阶夸克胸甲电压等级", - "config.gtceu.option.voltageTierImpeller":"喷气背包电压等级", - "config.gtceu.option.voltageTierNanoSuit":"纳米套电压等级", - "config.gtceu.option.voltageTierNightVision":"夜视仪电压等级", - "config.gtceu.option.voltageTierQuarkTech":"夸克套电压等级", - "config.gtceu.option.worldAcceleratorBlacklist":"世界加速器黑名单", - "config.gtceu.option.worldgen":"世界生成", - "config.gtceu.option.xOffset":"x偏移", - "config.gtceu.option.xaerosMapIntegration":"Xaero地图-集成", - "config.gtceu.option.yOffset":"y偏移", - "config.gtceu.option.zombieSpawnWithSabers":"带纳米剑的僵尸生成", - "config.jade.plugin_gtceu.auto_output_info":"[GTCEu] 自动输出信息", - "config.jade.plugin_gtceu.cable_info":"[GTCEu] 线缆信息", - "config.jade.plugin_gtceu.controllable_provider":"[GTCEu] 是否停工", - "config.jade.plugin_gtceu.electric_container_provider":"[GTCEu] 电力槽", - "config.jade.plugin_gtceu.exhaust_vent_info":"[GTCEu] 排气口信息", - "config.jade.plugin_gtceu.hazard_cleaner_provider":"[GTCEu] 污染清理", - "config.jade.plugin_gtceu.machine_mode":"[GTCEu] 机器模式", - "config.jade.plugin_gtceu.maintenance_info":"[GTCEu] 维护信息", - "config.jade.plugin_gtceu.me_pattern_buffer":"[GTCEu] 样板总成信息", - "config.jade.plugin_gtceu.me_pattern_buffer_proxy":"[GTCEu] 样板总成镜像信息", - "config.jade.plugin_gtceu.multiblock_structure":"[GTCEu] 多方块结构", - "config.jade.plugin_gtceu.parallel_info":"[GTCEu] 并行信息", - "config.jade.plugin_gtceu.primitive_pump":"[GTCEu] 原始水泵信息", - "config.jade.plugin_gtceu.recipe_logic_provider":"[GTCEu] 配方信息", - "config.jade.plugin_gtceu.recipe_output_info":"[GTCEu] 配方输出信息", - "config.jade.plugin_gtceu.stained_color":"[GTCEu] 染色方块信息", - "config.jade.plugin_gtceu.steam_boiler_info":"[GTCEu] 蒸汽锅炉信息", - "config.jade.plugin_gtceu.transformer":"[GTCEu] 变压器信息", - "config.jade.plugin_gtceu.workable_provider":"[GTCEu] 工作信息", - "cover.advanced_detector.latch.disabled.0":"行为:线性", - "cover.advanced_detector.latch.disabled.1":"", - "cover.advanced_detector.latch.disabled.2":"更改此覆盖板的红石行为。", - "cover.advanced_detector.latch.disabled.3":"§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", - "cover.advanced_detector.latch.disabled.4":"§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", - "cover.advanced_detector.latch.enabled.0":"行为:锁存", - "cover.advanced_detector.latch.enabled.1":"", - "cover.advanced_detector.latch.enabled.2":"更改此覆盖板的红石行为。", - "cover.advanced_detector.latch.enabled.3":"§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", - "cover.advanced_detector.latch.enabled.4":"§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", - "cover.advanced_energy_detector.invert.disabled.0":"输出:普通", - "cover.advanced_energy_detector.invert.disabled.1":"", - "cover.advanced_energy_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_energy_detector.invert.disabled.3":"默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", - "cover.advanced_energy_detector.invert.enabled.0":"输出:反相", - "cover.advanced_energy_detector.invert.enabled.1":"", - "cover.advanced_energy_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_energy_detector.invert.enabled.3":"默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", - "cover.advanced_energy_detector.label":"进阶能量探测覆盖板", - "cover.advanced_energy_detector.max":"最大值", - "cover.advanced_energy_detector.min":"最小值", - "cover.advanced_energy_detector.use_percent.disabled.0":"模式:EU设定值", - "cover.advanced_energy_detector.use_percent.disabled.1":"", - "cover.advanced_energy_detector.use_percent.disabled.2":"使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", - "cover.advanced_energy_detector.use_percent.enabled.0":"模式: 百分比", - "cover.advanced_energy_detector.use_percent.enabled.1":"", - "cover.advanced_energy_detector.use_percent.enabled.2":"使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", - "cover.advanced_fluid_detector.invert.disabled.0":"输出:普通", - "cover.advanced_fluid_detector.invert.disabled.1":"", - "cover.advanced_fluid_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_fluid_detector.invert.disabled.3":"默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_fluid_detector.invert.enabled.0":"输出:反相", - "cover.advanced_fluid_detector.invert.enabled.1":"", - "cover.advanced_fluid_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_fluid_detector.invert.enabled.3":"默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_fluid_detector.label":"进阶流体探测器", - "cover.advanced_fluid_detector.max":"最大流体量(mB)", - "cover.advanced_fluid_detector.min":"最小流体量(mB)", - "cover.advanced_item_detector.invert.disabled.0":"输出:普通", - "cover.advanced_item_detector.invert.disabled.1":"", - "cover.advanced_item_detector.invert.disabled.2":"切换以反转红石逻辑", - "cover.advanced_item_detector.invert.disabled.3":"默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_item_detector.invert.enabled.0":"输出:反相", - "cover.advanced_item_detector.invert.enabled.1":"", - "cover.advanced_item_detector.invert.enabled.2":"切换以反转红石逻辑", - "cover.advanced_item_detector.invert.enabled.3":"默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", - "cover.advanced_item_detector.label":"进阶物品探测器", - "cover.advanced_item_detector.max":"最大物品数量", - "cover.advanced_item_detector.min":"最小物品数量", - "cover.bucket.mode.bucket":"B", - "cover.bucket.mode.milli_bucket":"mB", - "cover.conveyor.blocks_input.disabled.0":"若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", - "cover.conveyor.blocks_input.disabled.1":"§c已禁用", - "cover.conveyor.blocks_input.enabled.0":"若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", - "cover.conveyor.blocks_input.enabled.1":"§a已启用", - "cover.conveyor.distribution.insert_first.0":"分配模式:§b优先级", - "cover.conveyor.distribution.insert_first.1":"§7将物品输入至所搜寻到的优先级最高的物品存储空间", - "cover.conveyor.distribution.insert_first.2":"§7加固物品管道会降低管道路径的优先级。", - "cover.conveyor.distribution.round_robin_global.0":"分配模式:§b轮询调度", - "cover.conveyor.distribution.round_robin_global.1":"§7将物品平分至相连的物品存储空间。", - "cover.conveyor.distribution.round_robin_prio.0":"分配模式:§b轮询调度(次序式)", - "cover.conveyor.distribution.round_robin_prio.1":"§7尝试将物品平分至相连的物品存储空间,并优先考虑优先级更高的。", - "cover.conveyor.distribution.round_robin_prio.2":"§7加固物品管道会降低管道路径的优先级。", - "cover.conveyor.item_filter.title":"物品过滤", - "cover.conveyor.mode":"模式:%s", - "cover.conveyor.mode.export":"模式:输出", - "cover.conveyor.mode.import":"模式:输入", - "cover.conveyor.tag.title.0":"标签名称", - "cover.conveyor.tag.title.1":"(*可作通配符)", - "cover.conveyor.title":"传送带覆盖板配置(%s)", - "cover.conveyor.transfer_rate":"§7物品/秒", - "cover.detector_base.message_inverted_state":"监控状态:反相", - "cover.detector_base.message_normal_state":"监控状态:普通", - "cover.ender_fluid_link.incomplete_hex.0":"输入的颜色不正确!", - "cover.ender_fluid_link.incomplete_hex.1":"输入正确的八位十六进制颜色码方可应用", - "cover.ender_fluid_link.incomplete_hex.2":"此时关闭界面将导致丢失编辑内容!", - "cover.ender_fluid_link.iomode.disabled":"已禁用I/O", - "cover.ender_fluid_link.iomode.enabled":"已启用I/O", - "cover.ender_fluid_link.private.tooltip.disabled.0":"切换至私有储罐模式", - "cover.ender_fluid_link.private.tooltip.disabled.1":"私有权归最初加装该覆盖板的玩家所有", - "cover.ender_fluid_link.private.tooltip.enabled":"切换至公共储罐模式", - "cover.ender_fluid_link.title":"末影流体连接", - "cover.filter.blacklist.disabled":"白名单", - "cover.filter.blacklist.enabled":"黑名单", - "cover.filter.mode.filter_both":"过滤两者", - "cover.filter.mode.filter_extract":"过滤输出", - "cover.filter.mode.filter_insert":"过滤输入", - "cover.fluid.voiding.advanced.title":"高级流体销毁设置", - "cover.fluid.voiding.title":"流体销毁设置", - "cover.fluid_filter.config_amount.0":"向上或向下滚动鼠标滚轮以增加或减少流体量。", - "cover.fluid_filter.config_amount.1":"Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", - "cover.fluid_filter.config_amount.2":"亦可通过右击或左击来增减流体量。", - "cover.fluid_filter.config_amount.3":"按住Shift时点击鼠标则将使流体量翻倍或减半。", - "cover.fluid_filter.config_amount.4":"点击中键以清除", - "cover.fluid_filter.mode.filter_both":"过滤两者", - "cover.fluid_filter.mode.filter_drain":"过滤输出", - "cover.fluid_filter.mode.filter_fill":"过滤输入", - "cover.fluid_filter.title":"流体过滤卡", - "cover.fluid_regulator.keep_exact":"保持供应:%s", - "cover.fluid_regulator.supply_exact":"精确供应:%s", - "cover.fluid_regulator.title":"流体校准器设置(%s)", - "cover.fluid_regulator.transfer_mode.description.0":"§e任意传输§r-在此模式下,覆盖板将传输任何与过滤器匹配的流体。", - "cover.fluid_regulator.transfer_mode.description.1":"§e精确供应-在此模式下,覆盖板会将此按钮下方窗口中指定的流体按指定量打包传输。若流体量小于指定量,流体不会被传输。", - "cover.fluid_regulator.transfer_mode.description.2":"§e保持供应-在此模式下,覆盖板将在目标容器中保持指定数量的液体,低于保持量时传输相应量的流体。", - "cover.fluid_regulator.transfer_mode.description.3":"§7小提示:按住Shift/Crtl把增加或减少的数量乘以10/100。", - "cover.item.voiding.advanced.title":"高级物品销毁设置", - "cover.item.voiding.title":"物品销毁设置", - "cover.item_filter.ignore_damage.disabled":"匹配耐久度", - "cover.item_filter.ignore_damage.enabled":"无视耐久度", - "cover.item_filter.ignore_nbt.disabled":"匹配NBT", - "cover.item_filter.ignore_nbt.enabled":"忽略NBT", - "cover.item_filter.title":"物品过滤卡", - "cover.item_smart_filter.filtering_mode.centrifuge":"离心机", - "cover.item_smart_filter.filtering_mode.description.0":"为该智能覆盖板选择目标机器。", - "cover.item_smart_filter.filtering_mode.description.1":"它能够自动挑选符合机器配方的物品。", - "cover.item_smart_filter.filtering_mode.electrolyzer":"电解机", - "cover.item_smart_filter.filtering_mode.sifter":"筛选机", - "cover.item_smart_filter.title":"智能物品过滤", - "cover.machine_controller.invert.disabled.0":"§e普通§r - 该模式下的覆盖板需要比设定强度小的红石信号来触发", - "cover.machine_controller.invert.enabled.0":"§e反相§r - 该模式下的覆盖板需要比设定强度大的红石信号来触发", - "cover.machine_controller.inverted":"反相", - "cover.machine_controller.mode.cover_down":"控制目标:覆盖板(底面)", - "cover.machine_controller.mode.cover_east":"控制目标:覆盖板(东面)", - "cover.machine_controller.mode.cover_north":"控制目标:覆盖板(北面)", - "cover.machine_controller.mode.cover_south":"控制目标:覆盖板(南面)", - "cover.machine_controller.mode.cover_up":"控制目标:覆盖板(顶面)", - "cover.machine_controller.mode.cover_west":"控制目标:覆盖板(西面)", - "cover.machine_controller.mode.machine":"控制目标:机器", - "cover.machine_controller.mode.null":"控制目标:无", - "cover.machine_controller.normal":"普通", - "cover.machine_controller.redstone":"最小红石信号强度:%d", - "cover.machine_controller.title":"机器控制设置", - "cover.pump.fluid_filter.title":"流体过滤", - "cover.pump.mode.export":"模式:输出", - "cover.pump.mode.import":"模式:输入", - "cover.pump.title":"泵覆盖板设置(%s)", - "cover.pump.transfer_rate":"%s", - "cover.robotic_arm.title":"机械臂设置(%s)", - "cover.robotic_arm.transfer_mode.description.0":"§e任意传输§r-在此模式下,覆盖板将尽可能传输一切符合过滤设置的物品。", - "cover.robotic_arm.transfer_mode.description.1":"§e精确补给§r-在此模式下,覆盖板每次都会输入在物品过滤卡的过滤槽中指定(或者在标签过滤卡的按钮里指定)数量的物品。若物品的数量小于指定数量,则不会被输入。", - "cover.robotic_arm.transfer_mode.description.2":"§e保持补给§r-在此模式下,覆盖板将保持目标容器中指定物品的数量,需要物品时则供应相应量的物品。", - "cover.robotic_arm.transfer_mode.description.3":"§7小提示:左/右击过滤槽可以调整物品数量,同时按住Shift可以更快地调整。", - "cover.robotic_arm.transfer_mode.keep_exact":"保持补给", - "cover.robotic_arm.transfer_mode.transfer_any":"任意传输", - "cover.robotic_arm.transfer_mode.transfer_exact":"精确补给", - "cover.shutter.message.disabled":"扇板已开启", - "cover.shutter.message.enabled":"扇板已关闭", - "cover.storage.title":"存储覆盖板", - "cover.tag_filter.info.0":"§b接受复杂表达式", - "cover.tag_filter.info.1":"§6a & b§r = 且(AND)", - "cover.tag_filter.info.10":"§b使用范例:§6*dusts/gold | (gtceu:circuits & !*lv)", - "cover.tag_filter.info.11":"这将匹配所有种类的金粉或LV以外的电路", - "cover.tag_filter.info.2":"§6a | b§r = 或(OR)", - "cover.tag_filter.info.3":"§6a ^ b§r = 异或(XOR)", - "cover.tag_filter.info.4":"§6!a§r = 非(NOT)", - "cover.tag_filter.info.5":"§6(a)§r 改变优先级", - "cover.tag_filter.info.6":"§6*§r 为通配符", - "cover.tag_filter.info.7":"§6$§r 为没有标签的物品/流体等", - "cover.tag_filter.info.8":"§b标签的格式为'命名空间:标签/子类型'。", - "cover.tag_filter.info.9":"如果没有提供命名空间,则为'forge:'。", - "cover.tag_filter.matches":"物品匹配", - "cover.tag_filter.matches_not":"物品不匹配", - "cover.tag_filter.test_slot.info":"放入一件物品以测试是否匹配过滤表达式", - "cover.tag_filter.title":"标签过滤", - "cover.universal.manual_import_export.mode.description.0":"§e禁用§r-仅依照覆盖板与内部过滤器的指定规则传输。", - "cover.universal.manual_import_export.mode.description.1":"§e过滤§r-外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", - "cover.universal.manual_import_export.mode.description.2":"§e无过滤§r-外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", - "cover.universal.manual_import_export.mode.disabled":"特殊I/O模式:§b禁用\\n§7仅依照覆盖板与内部过滤器的指定规则传输。", - "cover.universal.manual_import_export.mode.filtered":"特殊I/O模式:§b过滤\\n§7外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", - "cover.universal.manual_import_export.mode.unfiltered":"特殊I/O模式:§b无过滤\\n§7外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", - "cover.voiding.label.disabled":"禁用", - "cover.voiding.label.enabled":"启用", - "cover.voiding.message.disabled":"已禁用销毁覆盖板", - "cover.voiding.message.enabled":"已启用销毁覆盖板", - "cover.voiding.tooltip":"§c警告!§7“启用”时所有流体和物品全部都会被销毁。", - "cover.voiding.voiding_mode.description.0":"§e匹配销毁§r:匹配过滤规则即销毁。", - "cover.voiding.voiding_mode.description.1":"§e溢出销毁§r:匹配过滤规则即销毁超出设定数量的部分物品/流体。", - "cover.voiding.voiding_mode.void_any":"匹配销毁", - "cover.voiding.voiding_mode.void_overflow":"溢出销毁", - "curios.identifier.gtceu_magnet":"GTCEu磁铁", - "death.attack.gtceu.axe":"%s被%s用斧子砍死了", - "death.attack.gtceu.butchery_knife":"%s死在了%s的屠刀之下", - "death.attack.gtceu.buzzsaw":"%2$手中圆锯的嗞嗞声成为了%1$s生命中最后听到的声音", - "death.attack.gtceu.chainsaw_lv":"%2$s的链锯切碎了%1$s", - "death.attack.gtceu.chemical":"%s历经了一场化学事故", - "death.attack.gtceu.crowbar":"%s被%s用撬棍撬走了半条命", - "death.attack.gtceu.drill_ev":"%2$s的超高压电钻洞穿了%1$s", - "death.attack.gtceu.drill_hv":"%2$s的高压电钻洞穿了%1$s", - "death.attack.gtceu.drill_iv":"%2$s的强导压电钻洞穿了%1$s", - "death.attack.gtceu.drill_lv":"%2$s的低压电钻洞穿了%1$s", - "death.attack.gtceu.drill_mv":"%2$s的中压电钻洞穿了%1$s", - "death.attack.gtceu.electric":"%s触电身亡", - "death.attack.gtceu.explosion":"%s爆炸了", - "death.attack.gtceu.explosion.player":"拜%2$s所赐,%1$s爆炸了", - "death.attack.gtceu.file":"%s历尽了%s的“锉”折", - "death.attack.gtceu.frost":"%s探索到了低温的奥秘", - "death.attack.gtceu.hammer":"%s被%s锤死了", - "death.attack.gtceu.heat":"%s被活活煮熟了", - "death.attack.gtceu.heat.player":"%s被%s活活煮熟了", - "death.attack.gtceu.hoe":"%s被%s锄死了", - "death.attack.gtceu.knife":"%2$s绅士地捅了%1$s几刀", - "death.attack.gtceu.mallet":"%s被%s用锤头活活敲死了", - "death.attack.gtceu.medical_condition/arsenicosis":"%s死于砷中毒", - "death.attack.gtceu.medical_condition/asbestosis":"%s得了间皮瘤", - "death.attack.gtceu.medical_condition/berylliosis":"%s贪婪地挖掘绿宝石,结果有点过火了", - "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning":"%s离开时炉子还开着", - "death.attack.gtceu.medical_condition/carcinogen":"%s身患白血病", - "death.attack.gtceu.medical_condition/chemical_burns":"%s历经了一场化学事故", - "death.attack.gtceu.medical_condition/irritant":"%s身上长了§n§l极其严重§r的皮疹", - "death.attack.gtceu.medical_condition/methanol_poisoning":"%s在禁酒令下尝试饮用私酿烈酒", - "death.attack.gtceu.medical_condition/nausea":"%s死于恶心", - "death.attack.gtceu.medical_condition/none":"%s死于...什么都没有?", - "death.attack.gtceu.medical_condition/poison":"%s忘了毒物的确有毒", - "death.attack.gtceu.medical_condition/silicosis":"%s不是死于肺结核,而是矽肺病", - "death.attack.gtceu.medical_condition/weak_poison":"%s吞下了铅(或水银!)", - "death.attack.gtceu.mining_hammer":"%s被%s当成矿石砸死了", - "death.attack.gtceu.mortar":"%s被%s用研钵磨成了粉", - "death.attack.gtceu.pickaxe":"%s被%s用镐子凿死了", - "death.attack.gtceu.radiation":"%s放射出了喜悦的光芒", - "death.attack.gtceu.screwdriver":"%s被%s用螺丝刀钻死了", - "death.attack.gtceu.screwdriver_lv":"%s的螺丝被%s扭掉了", - "death.attack.gtceu.scythe":"%s一镰刀下去,%s的灵魂灰飞烟灭", - "death.attack.gtceu.shovel":"%s被%s用锹掏死了", - "death.attack.gtceu.spade":"%s被%s用铲子挖死了", - "death.attack.gtceu.turbine":"%s一头扎进了涡轮里", - "death.attack.gtceu.wire_cutter":"%s用剪线钳剪断了%s的血管", - "death.attack.gtceu.wrench":"%s被%s用扳手夯死了!", - "death.attack.gtceu.wrench_hv":"%s的血管被%s狠狠拧松了", - "death.attack.gtceu.wrench_iv":"%2$s一扳手下去,扳倒了%1$s的美好人生", - "death.attack.gtceu.wrench_lv":"%s的血管被%s狠狠拧松了", - "effect.gtceu.weak_poison":"轻度中毒", - "enchantment.damage.disjunction":"末影离析", - "enchantment.disjunction":"末影离析", - "enchantment.gtceu.disjunction.description":"对末影生物施加虚弱和缓慢效果。", - "enchantment.gtceu.hard_hammer.description":"像格雷科技的锤一样粉碎所采掘的方块。", - "enchantment.hard_hammer":"锤碎", - "entity.gtceu.boat":"船", - "entity.gtceu.chest_boat":"运输船", - "entity.gtceu.dynamite":"炸药", - "entity.gtceu.industrial_tnt":"工业TNT", - "entity.gtceu.powderbarrel":"火药桶", - "fluid.empty":"空", - "fluid.gtceu.potion":"药水", - "fluid.spawnlocation.name":"流体矿脉信息", - "fluid.tile.lava":"熔岩", - "fluid.tile.water":"水", - "fluid_cell.empty":"空", - "gtceu.air_scrubber":"空气净化器", - "gtceu.alloy_blast_smelter":"合金冶炼炉", - "gtceu.alloy_smelter":"合金冶炼", - "gtceu.arc_furnace":"电弧炉", - "gtceu.assembler":"组装机", - "gtceu.assembly_line":"装配线", - "gtceu.auto_decomp.rotor":"涡轮转子", - "gtceu.auto_decomp.tool":"非电动工具", - "gtceu.autoclave":"高压釜", - "gtceu.battery_buffer.average_input":"平均输入:%s EU/t", - "gtceu.battery_buffer.average_output":"平均输出:%s EU/t", - "gtceu.bender":"卷板机", - "gtceu.brewery":"酿造室", - "gtceu.bus.collapse.error":"总线位于已成型的多方块结构后方可进行该操作", - "gtceu.bus.collapse_false":"已禁用物品堆叠自动合并", - "gtceu.bus.collapse_true":"已启用物品堆叠自动合并", - "gtceu.button.bedrock_fluids":"显示基岩流体矿脉", - "gtceu.button.hide_depleted":"隐藏枯竭的矿脉", - "gtceu.button.ore_veins":"显示GT矿脉", - "gtceu.button.show_depleted":"显示枯竭的矿脉", - "gtceu.cable.amperage":"§e最大电流:§r§e%d", - "gtceu.cable.loss_per_block":"§c线损/米/安:§r§c%d§7 伏", - "gtceu.cable.superconductor":"%s§d超导体", - "gtceu.cable.voltage":"§a最大电压:§r§a%d§a(%s§a)", - "gtceu.canner":"装罐机", - "gtceu.centrifuge":"离心机", - "gtceu.chance_logic.and":"AND", - "gtceu.chance_logic.none":"NONE", - "gtceu.chance_logic.or":"OR", - "gtceu.chance_logic.xor":"XOR", - "gtceu.chat.cape":"§5恭喜你:你刚刚解锁了一件新披风!查看终端应用程序“披风选择器”来使用它。§r", - "gtceu.chemical_bath":"化学浸洗机", - "gtceu.chemical_reactor":"化学反应釜", - "gtceu.circuit_assembler":"电路组装机", - "gtceu.coke_oven":"焦炉", - "gtceu.combustion_generator":"内燃发电机", - "gtceu.command.copy.click_to_copy":"点击复制", - "gtceu.command.copy.copied_and_click":"已复制到剪贴板,点击再次复制", - "gtceu.command.copy.copied_end":"]到剪贴板", - "gtceu.command.copy.copied_start":"已复制[", - "gtceu.command.hand.electric":"电量信息:%d / %d EU - 等级:%d; 是否为电池:%s", - "gtceu.command.hand.fluid":"流体信息:%d / %d mB;是否可输入:%s; 是否可输出:%s", - "gtceu.command.hand.fluid2":"流体 ID:", - "gtceu.command.hand.groovy":"考虑使用§6/gs hand", - "gtceu.command.hand.item_id":"物品:%s(元数据:%d)", - "gtceu.command.hand.material":"材料 ID:", - "gtceu.command.hand.meta_item":"元物品 ID:", - "gtceu.command.hand.no_item":"在执行此命令之前,您的主手或副手必须拿着物品。", - "gtceu.command.hand.not_a_player":"这个命令只有玩家可以使用。", - "gtceu.command.hand.ore_prefix":"矿物前缀:", - "gtceu.command.hand.tag_entries":"§3标签条目:", - "gtceu.command.hand.tool_stats":"工具状态类:%s", - "gtceu.command.hand.usage":"用法:/gtceu hand", - "gtceu.command.recipecheck.begin":"开始配方冲突检查...", - "gtceu.command.recipecheck.end":"配方冲突检查找到%d可能存在的冲突,查看服务器日志以了解更多信息", - "gtceu.command.recipecheck.end_no_conflicts":"未发现配方冲突!", - "gtceu.command.recipecheck.usage":"用法:/gtceu recipecheck", - "gtceu.command.usage":"用法:/gtceu ", - "gtceu.command.worldgen.reload.failed":"Worldgen重新加载失败。检查控制台是否有错误。", - "gtceu.command.worldgen.reload.success":"Worldgen已成功从配置重新加载。", - "gtceu.command.worldgen.reload.usage":"用法:/gtceu worldgen reload", - "gtceu.command.worldgen.usage":"用法:/gtceu worldgen ", - "gtceu.compressor":"压缩机", - "gtceu.cover.activity_detector.message_activity_inverted":"正在以反相模式监控活动状态", - "gtceu.cover.activity_detector.message_activity_normal":"正在以普通模式监控活动状态", - "gtceu.cover.activity_detector_advanced.message_activity_inverted":"正在以反相模式监控处理状态", - "gtceu.cover.activity_detector_advanced.message_activity_normal":"正在以普通模式监控处理状态", - "gtceu.cover.energy_detector.message_electricity_storage_inverted":"正在以反相模式监控电力存储", - "gtceu.cover.energy_detector.message_electricity_storage_normal":"正在以普通模式监控电力存储", - "gtceu.cover.fluid_detector.message_fluid_storage_inverted":"正在以反相模式监控流体存储", - "gtceu.cover.fluid_detector.message_fluid_storage_normal":"正在以普通模式监控流体存储", - "gtceu.cover.item_detector.message_item_storage_inverted":"正在以反相模式监控物品存储", - "gtceu.cover.item_detector.message_item_storage_normal":"正在以普通模式监控物品存储", - "gtceu.cracker":"裂化机", - "gtceu.creative.activity.off":"未激活", - "gtceu.creative.activity.on":"已激活", - "gtceu.creative.chest.ipc":"每次输出流体量", - "gtceu.creative.chest.item":"物品", - "gtceu.creative.chest.tpc":"每次输出间隔Tick", - "gtceu.creative.computation.average":"平均CWU/t请求", - "gtceu.creative.energy.amperage":"电流", - "gtceu.creative.energy.sink":"归零", - "gtceu.creative.energy.source":"最大值", - "gtceu.creative.energy.voltage":"电压", - "gtceu.creative.tank.fluid":"流体", - "gtceu.creative.tank.mbpc":"每次输出流体量", - "gtceu.creative.tank.tpc":"每次输出间隔Tick", - "gtceu.creative_tooltip.1":"§7你需要", - "gtceu.creative_tooltip.2":"§b创造模式", - "gtceu.creative_tooltip.3":"§7来使用它", - "gtceu.cutter":"切割机", - "gtceu.debug.f3_h.enabled":"格雷科技修改了调试信息!对于开发人员:在GregTech配置文件中启用misc:debug以查看更多信息", - "gtceu.direction.tooltip.back":"背面", - "gtceu.direction.tooltip.down":"底面", - "gtceu.direction.tooltip.front":"正面", - "gtceu.direction.tooltip.left":"左面", - "gtceu.direction.tooltip.right":"右面", - "gtceu.direction.tooltip.up":"顶面", - "gtceu.distillation_tower":"蒸馏塔", - "gtceu.distillery":"蒸馏室", - "gtceu.duct_pipe.transfer_rate":"§b空气传输速率:%s", - "gtceu.dummy":"假人", - "gtceu.electric_blast_furnace":"电力高炉", - "gtceu.electric_furnace":"电炉", - "gtceu.electrolyzer":"电解机", - "gtceu.electromagnetic_separator":"电磁选矿机", - "gtceu.extractor":"提取机", - "gtceu.extruder":"压模器", - "gtceu.fermenter":"发酵槽", - "gtceu.fluid.amount":"§9总量:%d/%d mB", - "gtceu.fluid.click_combined":"§7手持流体容器点击流体槽以§c倒出§7或§b填入§7流体(Shift+单击以用整组容器倒出流体或用整组容器中的流体填入)", - "gtceu.fluid.click_to_empty":"§7手持流体容器点击流体槽以§c倒出§7流体(Shift+单击以用整组容器倒出流体)", - "gtceu.fluid.click_to_fill":"§7手持流体容器点击流体槽以§b填入§7流体(Shift+单击以用整组容器中的流体填入)", - "gtceu.fluid.empty":"空", - "gtceu.fluid.gas_generic":"气态%s", - "gtceu.fluid.gas_vapor":"%s蒸气", - "gtceu.fluid.generic":"%s", - "gtceu.fluid.liquid_generic":"液态%s", - "gtceu.fluid.molten":"熔融%s", - "gtceu.fluid.plasma":"%s等离子体", - "gtceu.fluid.state_gas":"§a状态:气态", - "gtceu.fluid.state_liquid":"§a状态:液态", - "gtceu.fluid.state_plasma":"§a状态:等离子态", - "gtceu.fluid.temperature":"§c温度:%d K", - "gtceu.fluid.temperature.cryogenic":"§b低温流体!轻拿轻放!", - "gtceu.fluid.type_acid.tooltip":"§6酸性流体!轻拿轻放!", - "gtceu.fluid_heater":"流体加热器", - "gtceu.fluid_pipe.acid_proof":"§6可传输酸性物质", - "gtceu.fluid_pipe.capacity":"§9容积:§f%d mB", - "gtceu.fluid_pipe.channels":"§e并行管道:§f%d", - "gtceu.fluid_pipe.cryo_proof":"§6可传输低温物质", - "gtceu.fluid_pipe.gas_proof":"§6可以传输气体", - "gtceu.fluid_pipe.max_temperature":"§c温度上限:§f%d K", - "gtceu.fluid_pipe.not_gas_proof":"§4气体可能泄漏!", - "gtceu.fluid_pipe.plasma_proof":"§6可传输所有等离子体", - "gtceu.fluid_solidifier":"流体固化器", - "gtceu.forge_hammer":"锻造锤", - "gtceu.forming_press":"冲压机床", - "gtceu.forming_press.naming.named":"§o已命名物品", - "gtceu.forming_press.naming.press":"§o名称模板", - "gtceu.forming_press.naming.to_name":"§o待命名物品", - "gtceu.fusion_reactor":"核聚变反应堆", - "gtceu.gas_collector":"集气室", - "gtceu.gas_turbine":"燃气轮机", - "gtceu.gui.auto_output.name":"自动", - "gtceu.gui.charger_slot.tooltip.0":"§f充电槽§r", - "gtceu.gui.charger_slot.tooltip.1":"§7从%s电池中取电§7", - "gtceu.gui.charger_slot.tooltip.2":"§7也可为%s工具或电池充电", - "gtceu.gui.chunkmode.disabled.0":"区块模式§c禁用§r:单击启用。", - "gtceu.gui.chunkmode.disabled.1":"§7切换需要机器待机。", - "gtceu.gui.chunkmode.enabled.0":"区块模式§a启用§r:单击禁用。", - "gtceu.gui.chunkmode.enabled.1":"§7切换需要机器待机。", - "gtceu.gui.circuit.title":"电路设置", - "gtceu.gui.config_slot":"§f配置槽位§r", - "gtceu.gui.config_slot.auto_pull_managed":"§4禁用:§7由ME自动拉取管理", - "gtceu.gui.config_slot.remove":"§7右击§4清除§7配置槽位。§r", - "gtceu.gui.config_slot.scroll":"§7使用滚轮§a切换§7配置数。§r", - "gtceu.gui.config_slot.set":"§7点击§b设置/选择§7配置槽位。§r", - "gtceu.gui.config_slot.set_only":"§7点击§b设置§7配置槽位。§r", - "gtceu.gui.configurator_slot.tooltip.0":"§f配置器槽§r", - "gtceu.gui.configurator_slot.tooltip.1":"§7在此插槽放置一个§6编程电路§7以", - "gtceu.gui.configurator_slot.tooltip.2":"§7更改其配置值。", - "gtceu.gui.configurator_slot.tooltip.3":"§7按住§6Shift§7时点击按钮,一次加减§6§75个编号", - "gtceu.gui.configurator_slot.tooltip.4":"§a此插槽中的编程电路也视为一个配方输入。§r", - "gtceu.gui.content.chance_base":"基础概率:%s%%", - "gtceu.gui.content.chance_base_logic":"基础概率:%s%% (%s)", - "gtceu.gui.content.chance_boosted":"当前等级概率:%s%%", - "gtceu.gui.content.chance_boosted_logic":"当前等级概率:%s%%(%s)", - "gtceu.gui.content.chance_nc":"§c不会被消耗§r", - "gtceu.gui.content.chance_nc_short":"§c不消耗§r", - "gtceu.gui.content.chance_tier_boost_minus":"奖励概率:- %s%%/电压等级", - "gtceu.gui.content.chance_tier_boost_plus":"奖励概率:+ %s%%/电压等级", - "gtceu.gui.content.count_range":"%s-%sx", - "gtceu.gui.content.per_tick":"§a每刻(tick)消耗/产生§r", - "gtceu.gui.content.tips.per_second_short":"§a/秒§r", - "gtceu.gui.content.tips.per_tick_short":"§a/刻(tick)§r", - "gtceu.gui.content.units.per_second":"/s", - "gtceu.gui.content.units.per_tick":"/t", - "gtceu.gui.cover_setting.title":"覆盖板设置", - "gtceu.gui.editor.group.recipe_type":"封顶", - "gtceu.gui.editor.tips.citation":"引用次数", - "gtceu.gui.fisher_mode.tooltip.0":"捕捉垃圾物品", - "gtceu.gui.fisher_mode.tooltip.1":"关闭时,每次运行消耗两根线。", - "gtceu.gui.fluid_amount":"流体总量:", - "gtceu.gui.fluid_auto_input.tooltip.disabled":"流体自动输入已禁用", - "gtceu.gui.fluid_auto_input.tooltip.enabled":"流体自动输入已启用", - "gtceu.gui.fluid_auto_output.allow_input.disabled":"禁止从输出面输入流体", - "gtceu.gui.fluid_auto_output.allow_input.enabled":"允许从输出面输入流体", - "gtceu.gui.fluid_auto_output.tooltip.disabled":"流体自动输出已禁用", - "gtceu.gui.fluid_auto_output.tooltip.enabled":"流体自动输出已启用", - "gtceu.gui.fluid_lock.tooltip.disabled":"流体锁定已禁用", - "gtceu.gui.fluid_lock.tooltip.enabled":"流体锁定已启用", - "gtceu.gui.fluid_voiding_partial.tooltip.disabled":"过量流体销毁已禁用", - "gtceu.gui.fluid_voiding_partial.tooltip.enabled":"过量流体销毁已启用", - "gtceu.gui.fuel_amount":"燃料总量:", - "gtceu.gui.item_auto_input.tooltip.disabled":"物品自动输入已禁用", - "gtceu.gui.item_auto_input.tooltip.enabled":"物品自动输入已启用", - "gtceu.gui.item_auto_output.allow_input.disabled":"禁止从输出面输入物品", - "gtceu.gui.item_auto_output.allow_input.enabled":"允许从输出面输入物品", - "gtceu.gui.item_auto_output.tooltip.disabled":"物品自动输出已禁用", - "gtceu.gui.item_auto_output.tooltip.enabled":"物品自动输出已启用", - "gtceu.gui.item_lock.tooltip.disabled":"物品锁定已禁用", - "gtceu.gui.item_lock.tooltip.enabled":"物品锁定已启用", - "gtceu.gui.item_voiding_partial.tooltip.disabled":"物品过量销毁已禁用", - "gtceu.gui.item_voiding_partial.tooltip.enabled":"物品过量销毁已开启", - "gtceu.gui.machinemode":"当前机器模式:%s", - "gtceu.gui.machinemode.title":"当前机器模式", - "gtceu.gui.me_bus.auto_pull_button":"单击以切换ME自动拉取模式", - "gtceu.gui.me_network.offline":"网络状态:§4离线§r", - "gtceu.gui.me_network.online":"网络状态:§2在线§r", - "gtceu.gui.multiblock_fluid_voiding.0":"销毁模式", - "gtceu.gui.multiblock_fluid_voiding.1":"§7销毁§9流体", - "gtceu.gui.multiblock_item_fluid_voiding.0":"销毁模式", - "gtceu.gui.multiblock_item_fluid_voiding.1":"§7销毁§6物品§7和§9流体", - "gtceu.gui.multiblock_item_voiding.0":"销毁模式", - "gtceu.gui.multiblock_item_voiding.1":"§7销毁§6物品", - "gtceu.gui.multiblock_no_voiding.0":"销毁模式", - "gtceu.gui.multiblock_no_voiding.1":"§7不进行销毁", - "gtceu.gui.output_setting.title":"输出设置", - "gtceu.gui.output_setting.tooltips.0":"左键单击以自动输出物品", - "gtceu.gui.output_setting.tooltips.1":"右键单击以自动输出流体", - "gtceu.gui.overclock.description.0":"超频按钮", - "gtceu.gui.overclock.description.1":"§7配方可以超频到设定的电压等级", - "gtceu.gui.overclock.disabled.0":"超频已禁用", - "gtceu.gui.overclock.disabled.1":"单击启用", - "gtceu.gui.overclock.enabled.0":"超频已启用", - "gtceu.gui.overclock.enabled.1":"单击禁用", - "gtceu.gui.overclock.off":"X", - "gtceu.gui.overclock.range":"可用电压级 [%s,%s]", - "gtceu.gui.overclock.title":"超频电压级", - "gtceu.gui.silktouch.disabled.0":"精准采集已禁用:单击启用。", - "gtceu.gui.silktouch.disabled.1":"§7切换需要机器待机。", - "gtceu.gui.silktouch.enabled.0":"精准采集已启用:单击禁用。", - "gtceu.gui.silktouch.enabled.1":"§7切换需要机器待机。", - "gtceu.gui.sort":"分类", - "gtceu.gui.title_bar.back":"返回", - "gtceu.gui.title_bar.page_switcher":"页面", - "gtceu.gui.toggle_view.disabled":"切换视图(流体)", - "gtceu.gui.toggle_view.enabled":"切换视图(物品)", - "gtceu.gui.waiting_list":"发送队列:", - "gtceu.hazard_trigger.any":"任何方式", - "gtceu.hazard_trigger.description":"由此导致:", - "gtceu.hazard_trigger.inhalation":"吸入", - "gtceu.hazard_trigger.none":"无", - "gtceu.hazard_trigger.protection.description":"免受:", - "gtceu.hazard_trigger.skin_contact":"皮肤接触", - "gtceu.implosion_compressor":"聚爆压缩机", - "gtceu.io.both":"同时", - "gtceu.io.export":"输出", - "gtceu.io.import":"输入", - "gtceu.io.none":"无", - "gtceu.item_filter.empty_item":"空(无物品)", - "gtceu.item_filter.footer":"§e手持物品右键覆盖设置", - "gtceu.item_list.item_stored":"§7储量:%d", - "gtceu.item_pipe.priority":"§9优先级:§f%d", - "gtceu.jade.cleaned_this_second":"污染清理速率:%s/s", - "gtceu.jade.energy_stored":"%d / %d EU", - "gtceu.jade.progress_computation":"%s / %s CWU", - "gtceu.jade.progress_sec":"%s / %s s", - "gtceu.jade.progress_tick":"%s / %s t", - "gtceu.jei.bedrock_fluid.heavy_oil_deposit":"重油矿藏", - "gtceu.jei.bedrock_fluid.lava_deposit":"熔岩矿藏", - "gtceu.jei.bedrock_fluid.light_oil_deposit":"轻油矿藏", - "gtceu.jei.bedrock_fluid.natural_gas_deposit":"天然气矿藏", - "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit":"下界天然气矿藏", - "gtceu.jei.bedrock_fluid.oil_deposit":"石油矿藏", - "gtceu.jei.bedrock_fluid.raw_oil_deposit":"原油矿藏", - "gtceu.jei.bedrock_fluid.salt_water_deposit":"盐水矿藏", - "gtceu.jei.bedrock_fluid_diagram":"基岩流体生成信息", - "gtceu.jei.bedrock_ore_diagram":"基岩矿脉生成信息", - "gtceu.jei.fluid.dep_amount_hover":"消耗后消耗的量", - "gtceu.jei.fluid.dep_chance_hover":"开采流体矿脉时消耗的概率", - "gtceu.jei.fluid.dep_yield_hover":"流体矿脉殆尽后能开采的最大流体量", - "gtceu.jei.fluid.depleted_rate":"殆尽后产量:%d", - "gtceu.jei.fluid.depletion_amount":"消耗量:%d", - "gtceu.jei.fluid.depletion_chance":"消耗概率:%d%%", - "gtceu.jei.fluid.dimension":"维度:", - "gtceu.jei.fluid.max_hover":"流体矿脉所能具有的的最大产量", - "gtceu.jei.fluid.max_yield":"最大产量:%d", - "gtceu.jei.fluid.min_hover":"流体矿脉所能具有的的最小产量", - "gtceu.jei.fluid.min_yield":"最小产量:%d", - "gtceu.jei.fluid.vein_weight":"矿脉权重:%d", - "gtceu.jei.fluid.weight_hover":"流体矿脉的生成权重。鼠标悬于图标可查看该流体在特定生物群系中特殊的生成权重", - "gtceu.jei.materials.average_mass":"平均质量:%d", - "gtceu.jei.materials.average_neutrons":"平均中子数:%d", - "gtceu.jei.materials.average_protons":"平均质子数:%d", - "gtceu.jei.multiblock_info":"多方块结构信息", - "gtceu.jei.ore.between.0":"中层矿石", - "gtceu.jei.ore.between.1":"和其他矿石一起生成在矿脉的中间%d层", - "gtceu.jei.ore.biome_weighting":"§d%s的生成权重:§3%d", - "gtceu.jei.ore.biome_weighting_no_spawn":"§d%s的生成权重:§c无法生成", - "gtceu.jei.ore.biome_weighting_title":"§d特定生物群系中的例外权重:", - "gtceu.jei.ore.ore_weight":"矿脉内生成权重:%d%%", - "gtceu.jei.ore.primary.0":"顶层矿石", - "gtceu.jei.ore.primary.1":"在矿脉的顶部%d层生成", - "gtceu.jei.ore.secondary.0":"底层矿石", - "gtceu.jei.ore.secondary.1":"在矿脉的底部%d层生成", - "gtceu.jei.ore.sporadic.0":"散布矿石", - "gtceu.jei.ore.sporadic.1":"生成在矿脉的任何地方", - "gtceu.jei.ore.surface_rock.0":"这种地表岩石标志着矿脉的生成位置。", - "gtceu.jei.ore.surface_rock.1":"挖掘掉落3小撮粉受时运加成", - "gtceu.jei.ore_processing_diagram":"矿物处理流程图", - "gtceu.jei.ore_vein.apatite_vein":"磷灰石矿脉", - "gtceu.jei.ore_vein.banded_iron_vein":"带状铁矿脉", - "gtceu.jei.ore_vein.bauxite_vein_end":"末地铝土矿脉", - "gtceu.jei.ore_vein.beryllium_vein":"铍矿脉", - "gtceu.jei.ore_vein.cassiterite_vein":"锡石矿脉", - "gtceu.jei.ore_vein.certus_quartz":"赛特斯石英", - "gtceu.jei.ore_vein.coal_vein":"煤炭矿脉", - "gtceu.jei.ore_vein.copper_tin_vein":"铜锡矿脉", - "gtceu.jei.ore_vein.copper_vein":"铜矿脉", - "gtceu.jei.ore_vein.diamond_vein":"钻石矿脉", - "gtceu.jei.ore_vein.galena_vein":"方铅矿脉", - "gtceu.jei.ore_vein.garnet_tin_vein":"锡石榴石矿脉", - "gtceu.jei.ore_vein.garnet_vein":"石榴石矿脉", - "gtceu.jei.ore_vein.iron_vein":"铁矿脉", - "gtceu.jei.ore_vein.lapis_vein":"青金石矿脉", - "gtceu.jei.ore_vein.lubricant_vein":"皂滑矿脉", - "gtceu.jei.ore_vein.magnetite_vein_end":"末地磁铁矿脉", - "gtceu.jei.ore_vein.magnetite_vein_ow":"主世界磁铁矿脉", - "gtceu.jei.ore_vein.manganese_vein":"锰矿脉", - "gtceu.jei.ore_vein.manganese_vein_ow":"主世界锰矿脉", - "gtceu.jei.ore_vein.mica_vein":"云母矿脉", - "gtceu.jei.ore_vein.mineral_sand_vein":"矿砂矿脉", - "gtceu.jei.ore_vein.molybdenum_vein":"钼矿脉", - "gtceu.jei.ore_vein.monazite_vein":"独居石矿脉", - "gtceu.jei.ore_vein.naquadah_vein":"硅岩矿脉", - "gtceu.jei.ore_vein.nether_quartz_vein":"下界石英矿脉", - "gtceu.jei.ore_vein.nickel_vein":"镍矿脉", - "gtceu.jei.ore_vein.oilsands_vein":"油砂矿脉", - "gtceu.jei.ore_vein.olivine_vein":"橄榄石矿脉", - "gtceu.jei.ore_vein.pitchblende_vein_end":"末地沥青铀矿脉", - "gtceu.jei.ore_vein.redstone_vein":"红石矿脉", - "gtceu.jei.ore_vein.redstone_vein_ow":"主世界红石矿脉", - "gtceu.jei.ore_vein.saltpeter_vein":"硝石矿脉", - "gtceu.jei.ore_vein.salts_vein":"盐矿脉", - "gtceu.jei.ore_vein.sapphire_vein":"蓝宝石矿脉", - "gtceu.jei.ore_vein.scheelite_vein":"白钨矿脉", - "gtceu.jei.ore_vein.sheldonite_vein":"谢尔顿矿脉", - "gtceu.jei.ore_vein.sulfur_vein":"硫矿脉", - "gtceu.jei.ore_vein.tetrahedrite_vein":"黝铜矿脉", - "gtceu.jei.ore_vein.topaz_vein":"黄玉矿脉", - "gtceu.jei.ore_vein_diagram":"矿脉生成信息", - "gtceu.jei.ore_vein_diagram.chance":"§e概率:%s§r", - "gtceu.jei.ore_vein_diagram.dimensions":"维度:", - "gtceu.jei.ore_vein_diagram.spawn_range":"生成范围:", - "gtceu.jei.ore_vein_diagram.weight":"权重:%s", - "gtceu.jei.programmed_circuit":"编程电路页", - "gtceu.journeymap.options.layers":"勘探层", - "gtceu.journeymap.options.layers.bedrock_fluids":"显示基岩流体矿脉", - "gtceu.journeymap.options.layers.hide_depleted":"隐藏枯竭的矿脉", - "gtceu.journeymap.options.layers.ore_veins":"显示矿脉", - "gtceu.key.armor_charging":"启用/禁用盔甲向物品栏充能", - "gtceu.key.armor_hover":"切换盔甲悬浮模式", - "gtceu.key.armor_mode_switch":"切换盔甲模式", - "gtceu.key.enable_boots":"启用跳跃提升", - "gtceu.key.enable_jetpack":"启用喷气背包", - "gtceu.key.tool_aoe_change":"切换工具范围模式", - "gtceu.large_boiler":"大型锅炉", - "gtceu.large_chemical_reactor":"大型化学反应釜", - "gtceu.laser_engraver":"激光蚀刻机", - "gtceu.lathe":"车床", - "gtceu.macerator":"研磨机", - "gtceu.machine.active_transformer.tooltip.0":"§7变形金刚:伪装的激光", - "gtceu.machine.active_transformer.tooltip.1":"§7可以将任意数量的能量§f输入§7整合为任意数量的能量§f输出§7。", - "gtceu.machine.active_transformer.tooltip.2":"§7当你使用§d激光§7进行能量传输时,拥有惊人的传输距离。", - "gtceu.machine.active_transformer.tooltip.3":" ", - "gtceu.machine.advanced_processing_array.tooltip":"这个世界需要更多并行", - "gtceu.machine.assembly_line.tooltip":"真不是什么多方块组装机!", - "gtceu.machine.available_recipe_map_1.tooltip":"可用配方类型:%s", - "gtceu.machine.available_recipe_map_2.tooltip":"可用配方类型:%s,%s", - "gtceu.machine.available_recipe_map_3.tooltip":"可用配方类型:%s,%s,%s", - "gtceu.machine.available_recipe_map_4.tooltip":"可用配方类型:%s,%s,%s,%s", - "gtceu.machine.basic.input_from_output_side.allow":"允许从输出面输入:", - "gtceu.machine.basic.input_from_output_side.disallow":"禁止从输出面输入:", - "gtceu.machine.bedrock_ore_miner.depletion":"§b损耗率:§f%s%%", - "gtceu.machine.bedrock_ore_miner.description":"§7钻掘基岩之下的叠叠矿石。", - "gtceu.machine.bedrock_ore_miner.production":"§e产量乘数:§f%dx,超频后%fx", - "gtceu.machine.block_breaker.speed_bonus":"§e速度奖励:§f%d%%", - "gtceu.machine.block_breaker.tooltip":"§7挖掘正面的方块并收集掉落物", - "gtceu.machine.boiler.info.cooling.down":"§9冷却中§r%s", - "gtceu.machine.boiler.info.heating.up":"§c加热中§r%s", - "gtceu.machine.boiler.info.producing.steam":" §a(沸腾)", - "gtceu.machine.buffer.tooltip":"存储物品和流体的小小缓冲器", - "gtceu.machine.canner.jei_description":"填入或倒空流体容器,例如桶和流体单元", - "gtceu.machine.central_monitor.tooltip":"但它能运行《毁灭战士》吗?", - "gtceu.machine.charcoal_pile.tooltip":"不烤面包烤燃料的地下面包房", - "gtceu.machine.charcoal_pile.tooltip.0":"§c点火后§7将原木烧制成§a木炭§7。", - "gtceu.machine.charcoal_pile.tooltip.1":"使用可点火的物品右击即可启动。", - "gtceu.machine.charcoal_pile.tooltip.2":"热解发生在下方至多§b9x4x9§7的空间内。", - "gtceu.machine.charcoal_pile.tooltip.3":"原木不可暴露在§e空气§7中!", - "gtceu.machine.cleanroom.tooltip":"将那些讨厌的灰尘拒之门外", - "gtceu.machine.cleanroom.tooltip.0":"将机器放在内部运行超净间配方。", - "gtceu.machine.cleanroom.tooltip.1":"清理污染时耗能为§f30EU/t§7,洁净状态耗能为§f4EU/t§7。", - "gtceu.machine.cleanroom.tooltip.2":"超频增加每个周期的清洁度。", - "gtceu.machine.cleanroom.tooltip.3":"§b大小:§f5x5x5到15x15x15", - "gtceu.machine.cleanroom.tooltip.4":"天花板需要§f过滤器机械方块§7,不包含天花板的边缘。", - "gtceu.machine.cleanroom.tooltip.5":"接受最多§f四扇门§7!门处于打开状态时不会影响洁净度。", - "gtceu.machine.cleanroom.tooltip.6":"发电机、消声仓、采矿机和原始机器对于超净间来说太脏了!", - "gtceu.machine.cleanroom.tooltip.7":"通过墙壁上的§f机器外壳§7或§f二极管§7向内部输入能量。", - "gtceu.machine.cleanroom.tooltip.ae2.channels":"通过墙壁上的§f机器外壳§7发送最多§f8个AE2频道§7。", - "gtceu.machine.cleanroom.tooltip.ae2.no_channels":"通过墙壁上的§f机器外壳§7连通§aAE2网络§7。", - "gtceu.machine.cleanroom.tooltip.hold_ctrl":"按住CTRL以显示完整的结构信息", - "gtceu.machine.coke_oven.tooltip":"为炼钢和发电提供更优质的燃料", - "gtceu.machine.coke_oven_hatch.tooltip":"§7允许自动化焦炉的物品吞吐。", - "gtceu.machine.combustion_generator.tooltip":"§7需要液体燃料", - "gtceu.machine.computation_receiver_hatch.tooltip":"为多方块结构输入算力数据", - "gtceu.machine.computation_transmitter_hatch.tooltip":"从多方块结构输出算力数据", - "gtceu.machine.cracker.tooltip":"有它,石油才有用", - "gtceu.machine.cracker.tooltip.1":"使用§6白铜§7后的每个线圈等级可以减少§f10%%§7的能源消耗。", - "gtceu.machine.data_access_hatch.tooltip.0":"令多方块结构得以访问数据", - "gtceu.machine.data_access_hatch.tooltip.1":"添加了§a%s§7个数据容器(闪存等)插槽", - "gtceu.machine.data_bank.tooltip.0":"你的个人网络存储器", - "gtceu.machine.data_bank.tooltip.1":"大容量数据存储,使用光缆传输。", - "gtceu.machine.data_bank.tooltip.2":"数据库间可以相互连接。", - "gtceu.machine.data_bank.tooltip.3":"每个数据/光学仓耗能为§f%s EU/t§7。", - "gtceu.machine.data_bank.tooltip.4":"每个已连接的数据/光学仓耗能为§f%s EU/t§7。", - "gtceu.machine.data_receiver_hatch.tooltip":"为多方块结构输入研究数据", - "gtceu.machine.data_transmitter_hatch.tooltip":"从多方块结构输出研究数据", - "gtceu.machine.diode.message":"最大电流:%s", - "gtceu.machine.diode.tooltip_general":"将只允许能量向一个方向流动,并限制电流。", - "gtceu.machine.diode.tooltip_starts_at":"默认允许§f1A§r电流通行,使用软锤切换。", - "gtceu.machine.diode.tooltip_tool_usage":"用软锤右击以改变电流。", - "gtceu.machine.distillation_tower.tooltip":"流体精炼厂", - "gtceu.machine.drum.disable_output":"不排出液体", - "gtceu.machine.drum.enable_output":"将液体排到底面相邻的容器中", - "gtceu.machine.dual_hatch.export.tooltip":"为多方块结构输出物品和流体", - "gtceu.machine.dual_hatch.import.tooltip":"为多方块结构输入物品和流体", - "gtceu.machine.electric_blast_furnace.tooltip":"电力高炉有了,那电力烟熏炉呢?", - "gtceu.machine.electric_blast_furnace.tooltip.0":"每超过配方温度§f900K§7,耗能均将乘以§f95%%§7(不计超频)。", - "gtceu.machine.electric_blast_furnace.tooltip.1":"每超过配方温度§f1800K§7,将一次超频的效率变为§f100%%§7(无损超频)。", - "gtceu.machine.electric_blast_furnace.tooltip.2":"超过§fMV§7后的每一级电压,都会将温度提高§f100K§7。", - "gtceu.machine.endpoint.tooltip.0":"使用§f长距离管道§7方块连接管道接口以创建管路。", - "gtceu.machine.endpoint.tooltip.1":"管路必须有且仅有一个§f1输入§7接口和一个§f1输出§7接口。", - "gtceu.machine.endpoint.tooltip.2":"只有管道接口需要被§f区块加载§7。", - "gtceu.machine.endpoint.tooltip.min_length":"§b最低接口间距:§f%d格方块", - "gtceu.machine.energy_converter.description":"在EU和FE之间转换能量形式。", - "gtceu.machine.energy_converter.message_conversion_eu":"EU转为FE,输入:%dA %d EU,输出:%d FE", - "gtceu.machine.energy_converter.message_conversion_native":"FE转为EU,输入:%dFE,输出:%dA %d EU", - "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU转换:§f%dA %d EU(%s§f)§7 -> %d FE", - "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE转换:§f%d FE -> %dA %d EU (%s§f)", - "gtceu.machine.energy_converter.tooltip_tool_usage":"默认§f转换为FE§r,使用软锤切换。", - "gtceu.machine.energy_hatch.input.tooltip":"为多方块结构输入能量", - "gtceu.machine.energy_hatch.input_hi_amp.tooltip":"为多方块结构输入更多电流", - "gtceu.machine.energy_hatch.output.tooltip":"为多方块结构输出能量", - "gtceu.machine.energy_hatch.output_hi_amp.tooltip":"为多方块结构输出更多电流", - "gtceu.machine.ev_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.ev_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.ev_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.ev_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.ev_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.ev_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.ev_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.ev_centrifuge.tooltip":"§7分子分离机", - "gtceu.machine.ev_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.ev_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.ev_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.ev_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.ev_cutter.tooltip":"§7切片,切块", - "gtceu.machine.ev_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.ev_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.ev_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.ev_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.ev_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.ev_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.ev_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.ev_fluid_drilling_rig.tooltip":"甚至可以抽空整个油田", - "gtceu.machine.ev_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.ev_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.ev_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.ev_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.ev_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.ev_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.ev_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.ev_macerator.tooltip":"§7粉碎矿石并获得副产物", - "gtceu.machine.ev_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.ev_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.ev_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.ev_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.ev_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.ev_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.ev_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.ev_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.ev_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.ev_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.ev_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.extreme_combustion_engine.tooltip":"极限化学能释放者", - "gtceu.machine.fisher.requirement":"需要以机器正下方为中心的%dx%d正方形水源。", - "gtceu.machine.fisher.speed":"每%d刻抓到一些东西", - "gtceu.machine.fisher.tooltip":"每次消耗一根线捕鱼", - "gtceu.machine.fluid_drilling_rig.depletion":"§b损耗率:§f%s%%", - "gtceu.machine.fluid_drilling_rig.description":"§7钻取基岩之下的漫漫流体。", - "gtceu.machine.fluid_drilling_rig.production":"§e产量乘数:§f%dx,超频后%fx", - "gtceu.machine.fluid_hatch.export.tooltip":"为多方块结构输出流体", - "gtceu.machine.fluid_hatch.import.tooltip":"为多方块结构输入流体", - "gtceu.machine.fluid_tank.fluid":"含有%sL%s", - "gtceu.machine.fluid_tank.max_multiblock":"多方块结构最大尺寸:%dx%dx%d", - "gtceu.machine.fusion_reactor.capacity":"§7储能上限:§e%sM EU", - "gtceu.machine.fusion_reactor.luv.tooltip":"我发动魔法卡,融合!", - "gtceu.machine.fusion_reactor.overclocking":"超频时消耗两倍能量,工作时间减半", - "gtceu.machine.fusion_reactor.uv.tooltip":"化 作 白 矮 星 砸 向 你", - "gtceu.machine.fusion_reactor.zpm.tooltip":"一 轮 红 日 落 大 地", - "gtceu.machine.gas_turbine.tooltip":"§7需要气体燃料", - "gtceu.machine.high_performance_computation_array.tooltip.0":"只是普通的超级计算机", - "gtceu.machine.high_performance_computation_array.tooltip.1":"用于生产§f算力§7(同时会产生热量)。", - "gtceu.machine.high_performance_computation_array.tooltip.2":"需要HPCA组件来生产§fCWU/t§7(计算工作单元)。", - "gtceu.machine.hp_steam_alloy_smelter.tooltip":"§7融合冶炼炉", - "gtceu.machine.hp_steam_compressor.tooltip":"§7压缩物品", - "gtceu.machine.hp_steam_extractor.tooltip":"§7提取你的第一块橡胶", - "gtceu.machine.hp_steam_forge_hammer.tooltip":"§7锻造锤", - "gtceu.machine.hp_steam_furnace.tooltip":"§7利用蒸汽冶炼物品", - "gtceu.machine.hp_steam_liquid_boiler.tooltip":"§7比小型液体燃料锅炉更快", - "gtceu.machine.hp_steam_macerator.tooltip":"§7粉碎你的矿石", - "gtceu.machine.hp_steam_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.hp_steam_solar_boiler.tooltip":"§7来自太阳的蒸汽能源", - "gtceu.machine.hp_steam_solid_boiler.tooltip":"§7比小型固体燃料锅炉更快", - "gtceu.machine.hpca.active_cooler_component.tooltip":"不再免费,但效果更好", - "gtceu.machine.hpca.advanced_computation_component.damaged.name":"损坏的HPCA高级计算组件", - "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip":"只花了一只胳膊和一条腿", - "gtceu.machine.hpca.advanced_computation_component.tooltip":"计算大联盟", - "gtceu.machine.hpca.bridge_component.tooltip":"这就是高性能计算阵列中“阵列”一词的来源", - "gtceu.machine.hpca.component_general.max_eut":"§6最大能量:§f%d EU/t", - "gtceu.machine.hpca.component_general.upkeep_eut":"§e维持耗能:§f%d EU/t", - "gtceu.machine.hpca.component_type.bridge":"允许§fHPCA§7与§f网络交换机§7连接", - "gtceu.machine.hpca.component_type.computation_cooling":"§c最多需要:§f%d 冷却", - "gtceu.machine.hpca.component_type.computation_cwut":"§9算力:§f%d CWU/t", - "gtceu.machine.hpca.component_type.cooler_active":"§b冷却类型:§f主动", - "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d mB/t %s", - "gtceu.machine.hpca.component_type.cooler_cooling":"§a提供:§f%d 冷却", - "gtceu.machine.hpca.component_type.cooler_passive":"§b冷却类型:§f被动", - "gtceu.machine.hpca.component_type.damaged":"HPCA过热可能会损坏!", - "gtceu.machine.hpca.computation_component.damaged.name":"损坏的HPCA计算组件", - "gtceu.machine.hpca.computation_component.damaged.tooltip":"免费的可回收材料", - "gtceu.machine.hpca.computation_component.tooltip":"宝宝的第一次计算", - "gtceu.machine.hpca.empty_component.tooltip":"只是为了填充空间", - "gtceu.machine.hpca.heat_sink_component.tooltip":"免费冷却!有免费的吗?", - "gtceu.machine.hull.tooltip":"§7你需要§5绝§d对§4天§c马§e行§a空§b的§3想§9象§1能§5力§7来使用它", - "gtceu.machine.hv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.hv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.hv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.hv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.hv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.hv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.hv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.hv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.hv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.hv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.hv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.hv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.hv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.hv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.hv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.hv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.hv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.hv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.hv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.hv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.hv_fluid_drilling_rig.tooltip":"并不能用来液压破碎", - "gtceu.machine.hv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.hv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.hv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.hv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.hv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.hv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.hv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.hv_macerator.tooltip":"§7粉碎矿石并获得副产物", - "gtceu.machine.hv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.hv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.hv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.hv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.hv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.hv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.hv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.hv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.hv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.hv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.hv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.implosion_compressor.tooltip":"唯一一台你想要爆一爆的机器", - "gtceu.machine.item_bus.export.tooltip":"为多方块结构输出物品", - "gtceu.machine.item_bus.import.tooltip":"为多方块结构输入物品", - "gtceu.machine.item_collector.gui.collect_range":"作用区域:%sx%s格", - "gtceu.machine.item_collector.tooltip":"吸取它周围的掉落物", - "gtceu.machine.iv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.iv_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.iv_autoclave.tooltip":"§7高压锅", - "gtceu.machine.iv_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.iv_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.iv_canner.tooltip":"§7罐作机", - "gtceu.machine.iv_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.iv_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.iv_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.iv_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.iv_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.iv_cutter.tooltip":"§7物质切削器", - "gtceu.machine.iv_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.iv_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.iv_electrolyzer.tooltip":"§7分子崩解机 E-4906", - "gtceu.machine.iv_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.iv_extractor.tooltip":"§7真空提取机", - "gtceu.machine.iv_extruder.tooltip":"§7材料压出器", - "gtceu.machine.iv_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.iv_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.iv_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.iv_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.iv_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.iv_gas_collector.tooltip":"§7依照维度从大气层中收集种类各异的气体", - "gtceu.machine.iv_laser_engraver.tooltip":"§7功率高达两百零四万瓦", - "gtceu.machine.iv_lathe.tooltip":"§7全自动旋转车削机 L-5906", - "gtceu.machine.iv_macerator.tooltip":"§7全自动破壁机 9001", - "gtceu.machine.iv_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.iv_mixer.tooltip":"§7物质组织器", - "gtceu.machine.iv_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-360", - "gtceu.machine.iv_packer.tooltip":"§7装箱者", - "gtceu.machine.iv_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.iv_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.iv_rock_crusher.tooltip":"§7岩浆冷却固化器 R-8200", - "gtceu.machine.iv_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.iv_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.iv_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6350", - "gtceu.machine.iv_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.machine.large_boiler.bronze.tooltip":"再多来点蒸汽!", - "gtceu.machine.large_boiler.steel.tooltip":"木炭吞噬者", - "gtceu.machine.large_boiler.titanium.tooltip":"我超级魔法燃料呢?", - "gtceu.machine.large_boiler.tungstensteel.tooltip":"你手上有几座煤矿也不够它吃的吧?", - "gtceu.machine.large_chemical_reactor.tooltip":"黑盒反应器", - "gtceu.machine.large_combustion_engine.tooltip":"燃料点火室", - "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80 mB/s§7的液态氧,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", - "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 mB/s§7的氧气,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", - "gtceu.machine.large_miner.ev.tooltip":"替你挖矿", - "gtceu.machine.large_miner.iv.tooltip":"挖掉整个生物群系", - "gtceu.machine.large_miner.luv.tooltip":"掀翻整片大陆", - "gtceu.machine.large_turbine.gas.tooltip":"并不是喷气发动机", - "gtceu.machine.large_turbine.plasma.tooltip":"等离子能量虹吸器", - "gtceu.machine.large_turbine.steam.tooltip":"别把头伸进去", - "gtceu.machine.laser_hatch.both.tooltip":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.laser_hatch.source.tooltip":"§7远距离发射能量", - "gtceu.machine.laser_hatch.target.tooltip":"§7远距离接收能量", - "gtceu.machine.laser_source_hatch.tooltip.0":"远距离发射能量", - "gtceu.machine.laser_source_hatch.tooltip.1":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.laser_target_hatch.tooltip.0":"远距离接收能量", - "gtceu.machine.laser_target_hatch.tooltip.1":"§c激光传导线缆必须直线摆放!§7", - "gtceu.machine.locked_safe.malfunctioning":"§c故障中!", - "gtceu.machine.locked_safe.requirements":"§7需要更换以下部件:", - "gtceu.machine.lp_steam_alloy_smelter.tooltip":"§7融合冶炼炉", - "gtceu.machine.lp_steam_compressor.tooltip":"§7压缩物品", - "gtceu.machine.lp_steam_extractor.tooltip":"§7提取你的第一块橡胶", - "gtceu.machine.lp_steam_forge_hammer.tooltip":"§7锻造锤", - "gtceu.machine.lp_steam_furnace.tooltip":"§7利用蒸汽冶炼物品", - "gtceu.machine.lp_steam_liquid_boiler.tooltip":"§7消耗液体的锅炉", - "gtceu.machine.lp_steam_macerator.tooltip":"§7粉碎你的矿石", - "gtceu.machine.lp_steam_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.lp_steam_solar_boiler.tooltip":"§7来自太阳的蒸汽能源", - "gtceu.machine.lp_steam_solid_boiler.tooltip":"§7获取蒸汽能源的早期手段", - "gtceu.machine.luv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.luv_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.luv_autoclave.tooltip":"§7高压锅", - "gtceu.machine.luv_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.luv_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.luv_canner.tooltip":"§7罐作机", - "gtceu.machine.luv_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.luv_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.luv_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.luv_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.luv_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.luv_cutter.tooltip":"§7物质切削器", - "gtceu.machine.luv_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.luv_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.luv_electrolyzer.tooltip":"§7分子崩解机 E-4907", - "gtceu.machine.luv_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.luv_extractor.tooltip":"§7真空提取机", - "gtceu.machine.luv_extruder.tooltip":"§7材料压出器", - "gtceu.machine.luv_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.luv_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.luv_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.luv_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.luv_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.luv_gas_collector.tooltip":"§7依照维度从大气层中收集种类各异的气体", - "gtceu.machine.luv_laser_engraver.tooltip":"§7功率高达八百一十六万瓦", - "gtceu.machine.luv_lathe.tooltip":"§7全自动旋转车削机 L-5907", - "gtceu.machine.luv_macerator.tooltip":"§7全自动破壁机 9002", - "gtceu.machine.luv_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.luv_mixer.tooltip":"§7物质组织器", - "gtceu.machine.luv_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-361", - "gtceu.machine.luv_packer.tooltip":"§7装箱者", - "gtceu.machine.luv_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.luv_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.luv_rock_crusher.tooltip":"§7岩浆冷却固化器 R-9200", - "gtceu.machine.luv_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.luv_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.luv_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6351", - "gtceu.machine.luv_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.machine.lv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.lv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.lv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.lv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.lv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.lv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.lv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.lv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.lv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.lv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.lv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.lv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.lv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.lv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.lv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.lv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.lv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.lv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.lv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.lv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.lv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.lv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.lv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.lv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.lv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.lv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.lv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.lv_macerator.tooltip":"§7粉碎矿石,但没有副产物", - "gtceu.machine.lv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.lv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.lv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.lv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.lv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.lv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.lv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.lv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.lv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.lv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.lv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.machine_hatch.locked":"机器接口已锁定", - "gtceu.machine.machine_hatch.processing_array":"当在§e处理阵列§7中时,仅可搭载适用于§e处理阵列§7的机器", - "gtceu.machine.machine_hatch.tooltip":"仅可容纳有效物品的特型访问总线", - "gtceu.machine.maintenance_hatch.tooltip":"用于维护多方块结构", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0":"可以自动维护多方块结构,附带清洁功能!", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1":"清洁方式:", - "gtceu.machine.maintenance_hatch_configurable.tooltip.0":"更精细的维护多方块结构", - "gtceu.machine.maintenance_hatch_configurable.tooltip.1":"起手无需维护!", - "gtceu.machine.maintenance_hatch_full_auto.tooltip":"可以自动维护多方块结构", - "gtceu.machine.maintenance_hatch_tape_slot.tooltip":"放入胶带以防止出现故障", - "gtceu.machine.maintenance_hatch_tool_slot.tooltip":"所需工具处于物品栏时空手点击该槽位来维护", - "gtceu.machine.me.copy_paste.tooltip":"手持闪存潜行右键点击以复制设置,右键点击以应用", - "gtceu.machine.me.export.tooltip":"在连接到ME网络之前,它具有无限容量。", - "gtceu.machine.me.fluid_export.tooltip":"将流体直接存储到ME网络中。", - "gtceu.machine.me.fluid_import.data_stick.name":"§oME输入仓配置数据", - "gtceu.machine.me.fluid_import.tooltip":"自动从ME网络获取流体。", - "gtceu.machine.me.import_copy_settings":"已将设置保存到闪存", - "gtceu.machine.me.import_paste_settings":"已从闪存应用设置", - "gtceu.machine.me.item_export.tooltip":"将物品直接存储到ME网络中。", - "gtceu.machine.me.item_import.data_stick.name":"§oME输入总线配置数据", - "gtceu.machine.me.item_import.tooltip":"自动从ME网络获取物品。", - "gtceu.machine.me.stocking_auto_pull_disabled":"ME自动拉取已禁用", - "gtceu.machine.me.stocking_auto_pull_enabled":"ME自动拉取已启用", - "gtceu.machine.me.stocking_fluid.tooltip.0":"直接从ME网络抽取流体", - "gtceu.machine.me.stocking_fluid.tooltip.1":"ME自动拉取模式将自动标记ME网络中的前16种流体,每5秒更新一次。", - "gtceu.machine.me.stocking_item.tooltip.0":"直接从ME网络抽取物品", - "gtceu.machine.me.stocking_item.tooltip.1":"ME自动拉取模式将自动标记ME网络中的前16种物品,每5秒更新一次。", - "gtceu.machine.me_import_fluid_hatch.configs.tooltip":"可标记16种流体", - "gtceu.machine.me_import_item_hatch.configs.tooltip":"可标记16种物品", - "gtceu.machine.miner.chunkradius":"区块半径:%d", - "gtceu.machine.miner.fluid_usage":"消耗§f%d mB/t§7的§f%s§7,每次超频都会使消耗量加倍。", - "gtceu.machine.miner.minex":"mX:%d", - "gtceu.machine.miner.miney":"mY:%d", - "gtceu.machine.miner.minez":"mZ:%d", - "gtceu.machine.miner.multi.description":"一种占地面积大、产矿量大的多方块采矿机。", - "gtceu.machine.miner.multi.modes":"具有精准采集和区块对齐模式。", - "gtceu.machine.miner.multi.production":"它能产出§f三倍§7于§f研磨机§7的粉碎矿石。", - "gtceu.machine.miner.per_block":"§7每个方块需要§f%d§7秒。", - "gtceu.machine.miner.radius":"半径:%d", - "gtceu.machine.miner.startx":"sX:%d", - "gtceu.machine.miner.starty":"sY:%d", - "gtceu.machine.miner.startz":"sZ:%d", - "gtceu.machine.miner.tooltip":"§7只挖掘机器下方的矿石!工作范围默认为§f%sx%s§7。", - "gtceu.machine.muffle.off":"静音:已禁用", - "gtceu.machine.muffle.on":"静音:已启用", - "gtceu.machine.muffler_hatch.tooltip.0":"从机器中回收废料", - "gtceu.machine.muffler_hatch.tooltip.1":"§l切 勿 阻 隔 输 出 口!", - "gtceu.machine.multi_furnace.tooltip":"就像家里的烤箱一样", - "gtceu.machine.multiblock.tank.tooltip":"通过控制器或储罐阀门进行吞吐。", - "gtceu.machine.mv_alloy_smelter.tooltip":"§7高科技融合冶炼炉", - "gtceu.machine.mv_arc_furnace.tooltip":"§7谁需要高炉?", - "gtceu.machine.mv_assembler.tooltip":"§7复仇者,集结!", - "gtceu.machine.mv_autoclave.tooltip":"§7使粉末结晶", - "gtceu.machine.mv_bender.tooltip":"§7吁,他不行!我们要的是BENDER!!!", - "gtceu.machine.mv_brewery.tooltip":"§7紧凑高效的药剂酿造", - "gtceu.machine.mv_canner.tooltip":"§7为容器填入或从中倒出物品及流体", - "gtceu.machine.mv_centrifuge.tooltip":"§7分离分子", - "gtceu.machine.mv_chemical_bath.tooltip":"§7用化学品浸渍以分离矿物", - "gtceu.machine.mv_chemical_reactor.tooltip":"§7让化学品相互反应", - "gtceu.machine.mv_circuit_assembler.tooltip":"§7一拿一放,东拣西装", - "gtceu.machine.mv_compressor.tooltip":"§7全自动压缩机 C77", - "gtceu.machine.mv_cutter.tooltip":"§7切片,切块", - "gtceu.machine.mv_distillery.tooltip":"§7提取流体精华", - "gtceu.machine.mv_electric_furnace.tooltip":"§7别把它当成 Commodore 64 了", - "gtceu.machine.mv_electrolyzer.tooltip":"§7电离分子", - "gtceu.machine.mv_electromagnetic_separator.tooltip":"§7分离出磁性矿物", - "gtceu.machine.mv_extractor.tooltip":"§7毁灭级榨汁机 - D123", - "gtceu.machine.mv_extruder.tooltip":"§7通用型金属加工器", - "gtceu.machine.mv_fermenter.tooltip":"§7发酵流体", - "gtceu.machine.mv_fluid_drilling_rig.tooltip":"我猜你做这个是为了采油", - "gtceu.machine.mv_fluid_heater.tooltip":"§7加热你的流体", - "gtceu.machine.mv_fluid_solidifier.tooltip":"§7冷却液体形成固体", - "gtceu.machine.mv_forge_hammer.tooltip":"§7停,抡锤时间到!", - "gtceu.machine.mv_forming_press.tooltip":"§7图像拓印者", - "gtceu.machine.mv_gas_collector.tooltip":"§7依照维度从空气中收集种类各异的气体", - "gtceu.machine.mv_laser_engraver.tooltip":"§7请勿直视激光", - "gtceu.machine.mv_lathe.tooltip":"§7以更高的效率生产杆", - "gtceu.machine.mv_macerator.tooltip":"§7粉碎矿石,但没有副产物", - "gtceu.machine.mv_mass_fabricator.tooltip":"§7UU物质 = “质量” * “发生”的平方", - "gtceu.machine.mv_mixer.tooltip":"§7它能被搅碎吗?", - "gtceu.machine.mv_ore_washer.tooltip":"§7清洗矿石以获得更多副产物", - "gtceu.machine.mv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.mv_polarizer.tooltip":"§7将你的磁体极化", - "gtceu.machine.mv_replicator.tooltip":"§7生产最纯净的元素", - "gtceu.machine.mv_rock_crusher.tooltip":"§7在水平相邻处放置熔岩和水", - "gtceu.machine.mv_scanner.tooltip":"§7扫描材料及其它物质", - "gtceu.machine.mv_sifter.tooltip":"§7保持冷静,继续筛选", - "gtceu.machine.mv_thermal_centrifuge.tooltip":"§7更精确地分离矿石", - "gtceu.machine.mv_wiremill.tooltip":"§7更高效地生产导线", - "gtceu.machine.network_switch.tooltip.0":"以太网集线器", - "gtceu.machine.network_switch.tooltip.1":"用于路由与分发§f算力§7。", - "gtceu.machine.network_switch.tooltip.2":"可以将任意数量的算力§f输入§7整合为为任意数量的算力§f输出§7。", - "gtceu.machine.network_switch.tooltip.3":"每个算力数据仓使用§f%s EU/t§7。", - "gtceu.machine.object_holder.tooltip":"研究站的先进支撑机构", - "gtceu.machine.opv_gas_collector.tooltip":"§7依照维度从宇宙中收集种类各异的气体", - "gtceu.machine.opv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.parallel_hatch.display":"调整多方块的最多并行处理数。", - "gtceu.machine.parallel_hatch_mk5.tooltip":"允许同时处理至多4个配方。", - "gtceu.machine.parallel_hatch_mk6.tooltip":"允许同时处理至多16个配方。", - "gtceu.machine.parallel_hatch_mk7.tooltip":"允许同时处理至多64个配方。", - "gtceu.machine.parallel_hatch_mk8.tooltip":"允许同时处理至多256个配方。", - "gtceu.machine.parallel_limit":"可同时处理至多§b%d§r§7个配方。", - "gtceu.machine.passthrough_hatch_fluid.tooltip":"将流体从一侧输送到另一侧", - "gtceu.machine.passthrough_hatch_item.tooltip":"将物品从一侧发送到另一侧", - "gtceu.machine.perfect_oc":"超频不会损失能效。", - "gtceu.machine.power_substation.tooltip.0":"集中电网的核心", - "gtceu.machine.power_substation.tooltip.1":"所有§f电容§r不需要保持同一电压等级。", - "gtceu.machine.power_substation.tooltip.2":"最多容许§f%d层电容§r。", - "gtceu.machine.power_substation.tooltip.3":"每§f24小时§7损失相当于总容量的§f1%%§r的能量。", - "gtceu.machine.power_substation.tooltip.4":"每个电容的损失上限为§f%d kEU/t§r。", - "gtceu.machine.power_substation.tooltip.5":"可以使用", - "gtceu.machine.power_substation.tooltip.6":"激光仓§r。", - "gtceu.machine.primitive_blast_furnace.bronze.tooltip":"为你带来第一块钢", - "gtceu.machine.primitive_water_pump.tooltip":"末影接口蓄水库-家用款", - "gtceu.machine.processing_array.tooltip":"当几台机器无法解决问题时", - "gtceu.machine.pump.tooltip":"§7抽干大海的最佳手段!", - "gtceu.machine.pump.tooltip_buckets":"每桶§f%d§7tick", - "gtceu.machine.pump_hatch.tooltip":"原始水泵专用流体输出口", - "gtceu.machine.pyrolyse_oven.tooltip":"电力焦炉", - "gtceu.machine.pyrolyse_oven.tooltip.1":"§a白铜§7线圈会使效率降低§f25%%§7,§a坎塔尔合金§7后的每个线圈都会增加§f50%%§7的速度。", - "gtceu.machine.quantum_chest.items_stored":"物品数量:", - "gtceu.machine.quantum_chest.tooltip":"§7比储物抽屉好", - "gtceu.machine.quantum_tank.tooltip":"§7小小身体,大大肚量", - "gtceu.machine.research_station.researching":"研究中。", - "gtceu.machine.research_station.tooltip.0":"不仅仅是一个多方块扫描仪", - "gtceu.machine.research_station.tooltip.1":"用于扫描§f数据球§7和§f数据模块§7。", - "gtceu.machine.research_station.tooltip.2":"需要§f算力§7来进行工作。", - "gtceu.machine.research_station.tooltip.3":"提供更多的算力可以使研究进展的更快。", - "gtceu.machine.rotor_holder.tooltip.0":"为多方块结构固定转子,", - "gtceu.machine.rotor_holder.tooltip.1":"使其不能飞走", - "gtceu.machine.steam.steam_hatch.tooltip":"§e接受流体:§f蒸汽", - "gtceu.machine.steam_boiler.heat_amount":"热容:%s %%", - "gtceu.machine.steam_bus.tooltip":"无法作用于非蒸汽驱动的多方块结构", - "gtceu.machine.steam_grinder.tooltip":"多方块研磨机,但是没有副产物", - "gtceu.machine.steam_miner.tooltip":"§7只挖掘机器下方的矿石!", - "gtceu.machine.steam_oven.tooltip":"不要与工业熔炉混淆", - "gtceu.machine.steam_turbine.tooltip":"§7将蒸汽转化为 EU", - "gtceu.machine.substation_hatch.input.tooltip":"为蓄能变电站输入能量", - "gtceu.machine.substation_hatch.output.tooltip":"为蓄能变电站输出能量", - "gtceu.machine.tank_valve.tooltip":"用于吞吐多方块储罐中的流体。正面向下时可自动输出。", - "gtceu.machine.transformer.description":"§7转换能量的电压等级", - "gtceu.machine.transformer.message_transform_down":"降压,输入:%s EU %dA,输出:%s EU %dA", - "gtceu.machine.transformer.message_transform_up":"升压,输入:%s EU %dA,输出:%s EU %dA", - "gtceu.machine.transformer.tooltip_tool_usage":"默认§f降压§r,使用螺丝刀切换。", - "gtceu.machine.transformer.tooltip_transform_down":"§a降压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", - "gtceu.machine.transformer.tooltip_transform_up":"§c升压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", - "gtceu.machine.uev_gas_collector.tooltip":"§7依照维度从太阳系中收集种类各异的气体", - "gtceu.machine.uev_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uhv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uhv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uiv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uiv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_alloy_smelter.tooltip":"§7金属混合调制装置", - "gtceu.machine.uv_arc_furnace.tooltip":"§7短路加热器", - "gtceu.machine.uv_assembler.tooltip":"§7装配构建者", - "gtceu.machine.uv_autoclave.tooltip":"§7重压单元", - "gtceu.machine.uv_bender.tooltip":"§7物质畸变者", - "gtceu.machine.uv_brewery.tooltip":"§7强劲酿制者", - "gtceu.machine.uv_canner.tooltip":"§7罐子致动器", - "gtceu.machine.uv_centrifuge.tooltip":"§7分子龙卷风", - "gtceu.machine.uv_chemical_bath.tooltip":"§7化学沉浸洗涤者", - "gtceu.machine.uv_chemical_reactor.tooltip":"§7反应催化器", - "gtceu.machine.uv_circuit_assembler.tooltip":"§7计算机工厂", - "gtceu.machine.uv_compressor.tooltip":"§7物质约束器", - "gtceu.machine.uv_cutter.tooltip":"§7对象分割者", - "gtceu.machine.uv_distillery.tooltip":"§7馏分分离器", - "gtceu.machine.uv_electric_furnace.tooltip":"§7原子激发器", - "gtceu.machine.uv_electrolyzer.tooltip":"§7原子离子化装置", - "gtceu.machine.uv_electromagnetic_separator.tooltip":"§7电磁场驱离装置", - "gtceu.machine.uv_extractor.tooltip":"§7液化吸取者", - "gtceu.machine.uv_extruder.tooltip":"§7形制驱动者", - "gtceu.machine.uv_fermenter.tooltip":"§7呼吸控制器", - "gtceu.machine.uv_fluid_heater.tooltip":"§7热量灌输器", - "gtceu.machine.uv_fluid_solidifier.tooltip":"§7流体硬化器", - "gtceu.machine.uv_forge_hammer.tooltip":"§7冲击调制器", - "gtceu.machine.uv_forming_press.tooltip":"§7表面移相器", - "gtceu.machine.uv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uv_laser_engraver.tooltip":"§7高精度光子加农炮", - "gtceu.machine.uv_lathe.tooltip":"§7飞旋磨轮", - "gtceu.machine.uv_macerator.tooltip":"§7形态毁灭者", - "gtceu.machine.uv_mass_fabricator.tooltip":"§7存在之源", - "gtceu.machine.uv_mixer.tooltip":"§7材料均质机", - "gtceu.machine.uv_ore_washer.tooltip":"§7微型洗车房", - "gtceu.machine.uv_packer.tooltip":"§7亚马逊仓库", - "gtceu.machine.uv_polarizer.tooltip":"§7磁场重置设备", - "gtceu.machine.uv_replicator.tooltip":"§7元素创制者", - "gtceu.machine.uv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_scanner.tooltip":"§7电子显微镜", - "gtceu.machine.uv_sifter.tooltip":"§7脉冲过滤器", - "gtceu.machine.uv_thermal_centrifuge.tooltip":"§7腾焰旋风", - "gtceu.machine.uv_wiremill.tooltip":"§7导线易形者", - "gtceu.machine.uxv_gas_collector.tooltip":"§7根据维度从太阳系中收集气体", - "gtceu.machine.uxv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.vacuum_freezer.tooltip":"啊哈我的大冰箱!", - "gtceu.machine.workbench.storage_note.0":"(相邻的物品容器中", - "gtceu.machine.workbench.storage_note.1":"可参与合成的物品)", - "gtceu.machine.workbench.tab.container":"存储", - "gtceu.machine.workbench.tab.crafting":"合成", - "gtceu.machine.workbench.tab.item_list":"存储空间", - "gtceu.machine.workbench.tab.workbench":"合成", - "gtceu.machine.workbench.tooltip.0":"比林业的好", - "gtceu.machine.workbench.tooltip.1":"具有物品存储、工具存储、从相邻的存储容器中读取物品和保存配方功能。", - "gtceu.machine.world_accelerator.description":"以两种模式之一加速周围方块的更新刻:§f方块实体§r或§f随机刻§7。使用螺丝刀切换模式。", - "gtceu.machine.world_accelerator.mode_entity":"随机刻模式", - "gtceu.machine.world_accelerator.mode_tile":"方块实体模式", - "gtceu.machine.world_accelerator.working_area":"§b作用范围:", - "gtceu.machine.world_accelerator.working_area_random":" 随机刻模式:§f%dx%d", - "gtceu.machine.world_accelerator.working_area_tile":" 方块实体模式:§f相邻方块", - "gtceu.machine.zpm_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.zpm_arc_furnace.tooltip":"§7放电加热器", - "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.zpm_autoclave.tooltip":"§7高压锅", - "gtceu.machine.zpm_bender.tooltip":"§7形态扭曲器", - "gtceu.machine.zpm_brewery.tooltip":"§7酿酒好手", - "gtceu.machine.zpm_canner.tooltip":"§7罐作机", - "gtceu.machine.zpm_centrifuge.tooltip":"§7分子旋风", - "gtceu.machine.zpm_chemical_bath.tooltip":"§7化学品浸润器", - "gtceu.machine.zpm_chemical_reactor.tooltip":"§7化学表演艺术家", - "gtceu.machine.zpm_circuit_assembler.tooltip":"§7电子厂", - "gtceu.machine.zpm_compressor.tooltip":"§7奇点凝缩机", - "gtceu.machine.zpm_cutter.tooltip":"§7物质切削器", - "gtceu.machine.zpm_distillery.tooltip":"§7凝结物质分离器", - "gtceu.machine.zpm_electric_furnace.tooltip":"§7电子激发处理器", - "gtceu.machine.zpm_electrolyzer.tooltip":"§7分子崩解机 E-4908", - "gtceu.machine.zpm_electromagnetic_separator.tooltip":"§7电磁分类器", - "gtceu.machine.zpm_extractor.tooltip":"§7真空提取机", - "gtceu.machine.zpm_extruder.tooltip":"§7材料压出器", - "gtceu.machine.zpm_fermenter.tooltip":"§7发酵加速器", - "gtceu.machine.zpm_fluid_heater.tooltip":"§7热量灌注器", - "gtceu.machine.zpm_fluid_solidifier.tooltip":"§7并不是制冰机", - "gtceu.machine.zpm_forge_hammer.tooltip":"§7锻板机", - "gtceu.machine.zpm_forming_press.tooltip":"§7对象层化机", - "gtceu.machine.zpm_gas_collector.tooltip":"§7收集不同维度的大气中种类各异的气体", - "gtceu.machine.zpm_laser_engraver.tooltip":"§7功率高达三千两百六十四万瓦", - "gtceu.machine.zpm_lathe.tooltip":"§7全自动旋转车削机 L-5908", - "gtceu.machine.zpm_macerator.tooltip":"§7全自动破壁机 9003", - "gtceu.machine.zpm_mass_fabricator.tooltip":"§7创世纪工厂", - "gtceu.machine.zpm_mixer.tooltip":"§7物质组织器", - "gtceu.machine.zpm_ore_washer.tooltip":"§7全新用途滚筒洗衣机 I-362", - "gtceu.machine.zpm_packer.tooltip":"§7装箱者", - "gtceu.machine.zpm_polarizer.tooltip":"§7磁性引入机", - "gtceu.machine.zpm_replicator.tooltip":"§7物质粘贴机", - "gtceu.machine.zpm_rock_crusher.tooltip":"§7岩浆冷却固化器 R-10200", - "gtceu.machine.zpm_scanner.tooltip":"§7异常探测仪", - "gtceu.machine.zpm_sifter.tooltip":"§7由群峦传说赞助提供", - "gtceu.machine.zpm_thermal_centrifuge.tooltip":"§7烈焰血汗工厂 T-6352", - "gtceu.machine.zpm_wiremill.tooltip":"§7锭材拉伸机", - "gtceu.maintenance.configurable_duration":"处理耗时:%fx", - "gtceu.maintenance.configurable_duration.changed_description":"配方处理速度现为正常速度(不计超频)的%f倍。", - "gtceu.maintenance.configurable_duration.modify":"修改耗时:", - "gtceu.maintenance.configurable_duration.unchanged_description":"配方以正常速度运行。更改配置以更新。", - "gtceu.maintenance.configurable_time":"故障概率:%fx", - "gtceu.maintenance.configurable_time.changed_description":"故障的发生概率现为正常值的%f倍。", - "gtceu.maintenance.configurable_time.unchanged_description":"故障的发生概率为正常值。更改配置以更新。", - "gtceu.medical_condition.antidote.description":"§a解毒剂 §7按住Shift以显示详情", - "gtceu.medical_condition.antidote.description.effect_removed":"疾病效果持续时间降低%s%%", - "gtceu.medical_condition.antidote.description.effect_removed.all":"消除所有疾病效果", - "gtceu.medical_condition.antidote.description_shift":"§a治愈以下疾病:", - "gtceu.medical_condition.arsenicosis":"§b砷中毒", - "gtceu.medical_condition.asbestosis":"§d石棉肺", - "gtceu.medical_condition.berylliosis":"§5铍中毒", - "gtceu.medical_condition.carbon_monoxide_poisoning":"§7一氧化碳污染", - "gtceu.medical_condition.carcinogen":"§e致癌", - "gtceu.medical_condition.chemical_burns":"§5化学烧伤", - "gtceu.medical_condition.description":"§c§l危险物质 §7按住Shift以显示详情", - "gtceu.medical_condition.description_shift":"§c§l危险物质:", - "gtceu.medical_condition.irritant":"§6刺激性", - "gtceu.medical_condition.methanol_poisoning":"§6甲醇中毒", - "gtceu.medical_condition.nausea":"§3恶心", - "gtceu.medical_condition.none":"§2无害", - "gtceu.medical_condition.poison":"§2中毒", - "gtceu.medical_condition.silicosis":"§1矽肺病", - "gtceu.medical_condition.weak_poison":"§a轻度中毒", - "gtceu.minimap.ore_vein.depleted":"已枯竭", - "gtceu.mixer":"搅拌机", - "gtceu.mode.both":"§d全部(流体和物品)§r", - "gtceu.mode.fluid":"§9流体§r", - "gtceu.mode.item":"§6物品§r", - "gtceu.muffler.recovery_tooltip":"§b回收概率:§f%d%%", - "gtceu.multiblock.active_transformer.average_in":"§b平均输入:§f%s EU/t", - "gtceu.multiblock.active_transformer.average_out":"§b平均输出:§f%s EU/t", - "gtceu.multiblock.active_transformer.danger_enabled":"§c§b危险:易爆", - "gtceu.multiblock.active_transformer.max_input":"§a最大输入:§f%s EU/t", - "gtceu.multiblock.active_transformer.max_output":"§c最大输出:§f%s EU/t", - "gtceu.multiblock.assembly_line.description":"装配线是由5到16“片”组成的大型多方块结构。理论上,它是一个大型组装机,用于生产高级元件。", - "gtceu.multiblock.blast_furnace.max_temperature":"热容:%s", - "gtceu.multiblock.central_monitor.height":"屏幕高度:%d", - "gtceu.multiblock.central_monitor.height_modify":"调整高度:%d", - "gtceu.multiblock.central_monitor.low_power":"供能不足", - "gtceu.multiblock.central_monitor.tooltip.0":"这台机器可以监控由数字接口覆盖板代理的机器。您可以方便地监视能源网络中代理的机器的流体、物品、能量和状态。", - "gtceu.multiblock.central_monitor.tooltip.1":"监控器屏幕的搭建尺寸为3x2到%dx%d (宽x高)。", - "gtceu.multiblock.central_monitor.tooltip.2":"默认高度为3,在结构形成之前,您可以在GUI中调整屏幕高度。", - "gtceu.multiblock.central_monitor.tooltip.3":"能源消耗:每块屏幕%d EU/s。", - "gtceu.multiblock.central_monitor.width":"屏幕宽度:%d", - "gtceu.multiblock.charcoal_pile.description.0":"将下方最大9x4x9区域内的原木烧制成脆木炭块。", - "gtceu.multiblock.charcoal_pile.description.1":"", - "gtceu.multiblock.charcoal_pile.description.2":"木炭堆底部必须由砖块构成,壁面和顶面则可选用泥土、沙子等任何土地类方块。堆内必须填满,不可存在空气。", - "gtceu.multiblock.charcoal_pile.description.3":"", - "gtceu.multiblock.charcoal_pile.description.4":"木炭堆的尺寸越大,所需的处理时间就越长,但效率更高。", - "gtceu.multiblock.cleanroom.clean_amount":"洁净度:§a%s%%", - "gtceu.multiblock.cleanroom.clean_state":"状态:§a洁净", - "gtceu.multiblock.cleanroom.dirty_state":"状态:§4污染", - "gtceu.multiblock.coke_oven.description":"焦炉是一种多方块结构,用于在早期生产焦煤和杂酚油,无需燃料即可工作,内部至多可容纳 32 桶杂酚油。其存储可通过焦炉仓进行访问。", - "gtceu.multiblock.computation.max":"最大算力:%s", - "gtceu.multiblock.computation.non_bridging":"发现非桥接连接", - "gtceu.multiblock.computation.non_bridging.detailed":"算力数据仓与一台无法桥接的机器连接", - "gtceu.multiblock.computation.not_enough_computation":"机器需要更多算力!", - "gtceu.multiblock.computation.usage":"使用:%s", - "gtceu.multiblock.cracker.description":"裂化机是一种用于将轻燃油和重燃油裂化为相应裂化物的多方块结构。", - "gtceu.multiblock.cracking_unit.energy":"耗能:%s%%", - "gtceu.multiblock.data_bank.description":"数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", - "gtceu.multiblock.data_bank.providing":"提供数据。", - "gtceu.multiblock.distillation_tower.description":"蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", - "gtceu.multiblock.distillation_tower.distilling_fluid":"正在蒸馏%s", - "gtceu.multiblock.electric_blast_furnace.description":"电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", - "gtceu.multiblock.energy_consumption":"能量消耗:%s EU/t(%s)", - "gtceu.multiblock.exact_hatch_1.tooltip":"§f只允许有且仅有§6一个§f能源仓。", - "gtceu.multiblock.extreme_combustion_engine.description":"极限内燃引擎是一种产出§9IV§r能量的多方块结构,工作方式与内燃发电机类似。", - "gtceu.multiblock.fluid_rig.drilled_fluid":"流体:%s", - "gtceu.multiblock.fluid_rig.fluid_amount":"抽取速率:%s", - "gtceu.multiblock.fluid_rig.no_fluid_in_area":"区域内没有。", - "gtceu.multiblock.fluid_rig.vein_depleted":"矿脉已殆尽", - "gtceu.multiblock.fluid_rig.vein_depletion":"矿脉大小:%s", - "gtceu.multiblock.fusion_reactor.energy":"EU:%d / %d", - "gtceu.multiblock.fusion_reactor.heat":"热量:%d", - "gtceu.multiblock.generation_eu":"输出功率:§a%s EU/t", - "gtceu.multiblock.hpca.computation":"提供:%s", - "gtceu.multiblock.hpca.description":"高性能计算阵列(HPCA)是个多方块结构,用于为更复杂的装配线研究数据提供计算工作单元(CWU/t)。该结构中有3×3的区域可以以任意方式填充HPCA组件,不同的组件提供不同数量的算力,冷却与能源成本,并且影响热量的产出与冷却液的消耗。当存在桥接组件时,HPCA可以连接入网络交换机,让不同来源的算力整合并输出到一个或多个目的地。", - "gtceu.multiblock.hpca.energy":"使用:%s / %s EU/t (%s)", - "gtceu.multiblock.hpca.error_damaged":"计算组件损坏!", - "gtceu.multiblock.hpca.error_temperature":"温度超过100℃,可能导致计算组件损坏!", - "gtceu.multiblock.hpca.hover_for_info":"悬停以显示细节", - "gtceu.multiblock.hpca.info_bridging_disabled":"桥接已关闭", - "gtceu.multiblock.hpca.info_bridging_enabled":"桥接已启动", - "gtceu.multiblock.hpca.info_coolant_name":"多氯联苯冷却液", - "gtceu.multiblock.hpca.info_max_computation":"最大算力:%s", - "gtceu.multiblock.hpca.info_max_coolant_required":"冷却液需求:%s mB/t", - "gtceu.multiblock.hpca.info_max_cooling_available":"冷却可用:%s", - "gtceu.multiblock.hpca.info_max_cooling_demand":"冷却需求:%s", - "gtceu.multiblock.hpca.temperature":"温度:%s", - "gtceu.multiblock.hpca.warning_low_cooling":"- 冷却不足", - "gtceu.multiblock.hpca.warning_multiple_bridges":"- 多个桥接组件(没有额外好处)", - "gtceu.multiblock.hpca.warning_no_computation":"- 没有计算组件", - "gtceu.multiblock.hpca.warning_structure_header":"结构警告:", - "gtceu.multiblock.hpca.warning_temperature":"温度超过50℃,超过100℃时可能导致计算组件损坏!", - "gtceu.multiblock.hpca.warning_temperature_active_cool":"充分利用主动冷却组件", - "gtceu.multiblock.idling":"§6待机。", - "gtceu.multiblock.implosion_compressor.description":"聚爆压缩机是一种多方块结构,能够借助炸药将宝石粉转化为相应的宝石。", - "gtceu.multiblock.invalid_structure":"结构无效。", - "gtceu.multiblock.invalid_structure.tooltip":"该方块是多方块结构的控制器,请查看该方块的JEI界面以获取搭建图示。", - "gtceu.multiblock.large_boiler.description":"大型锅炉是一种使用水和能量源产生蒸汽的多方块结构。这里说的“能量源”通常是指固体燃料和高密度流体。不同等级的锅炉仅在蒸汽产量上有所差别。", - "gtceu.multiblock.large_boiler.efficiency":"效率:%s", - "gtceu.multiblock.large_boiler.explosion_tooltip":"无水时提供燃料将爆炸", - "gtceu.multiblock.large_boiler.heat_time_tooltip":"§7需要§f%d秒§7预热", - "gtceu.multiblock.large_boiler.max_temperature":"最高温度:%dK,蒸汽产量:%dmB/t", - "gtceu.multiblock.large_boiler.rate_tooltip":"§7每块§1煤炭§7可以生产§f%dL§7的蒸汽", - "gtceu.multiblock.large_boiler.steam_output":"蒸汽输出:%s mB/t", - "gtceu.multiblock.large_boiler.temperature":"温度:%sK / %sK", - "gtceu.multiblock.large_boiler.throttle":"节流:%d", - "gtceu.multiblock.large_boiler.throttle.tooltip":"锅炉可以节流,以减少燃料消耗与蒸汽产出,并且不损失效率,不影响加热时间。", - "gtceu.multiblock.large_boiler.throttle_modify":"修改节流:", - "gtceu.multiblock.large_chemical_reactor.description":"大型化学反应釜能够以 100% 的能效进行化学反应。超频将使得处理速度与耗能提升 4 倍。该多方块结构需要在中心位置的聚四氟乙烯管道方块旁放置 1 个白铜线圈方块。", - "gtceu.multiblock.large_combustion_engine.boost_disallowed":"§b升级你的动力仓以激活氧气促燃", - "gtceu.multiblock.large_combustion_engine.description":"大型内燃引擎是一种产出§5EV§r能量的多方块结构,工作方式与内燃发电机类似。", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%sL", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted":"§b液氧促燃中", - "gtceu.multiblock.large_combustion_engine.lubricant_amount":"润滑油存量:%sL", - "gtceu.multiblock.large_combustion_engine.obstructed":"引擎进气口受阻。", - "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧气存量:%sL", - "gtceu.multiblock.large_combustion_engine.oxygen_boosted":"§b氧气促燃中", - "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost":"提供液氧来促燃", - "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost":"提供氧气来促燃", - "gtceu.multiblock.large_miner.done":"完成!", - "gtceu.multiblock.large_miner.errorradius":"§c工作中不能调整半径!", - "gtceu.multiblock.large_miner.invfull":"存储空间已满!", - "gtceu.multiblock.large_miner.needsfluid":"需要钻井液", - "gtceu.multiblock.large_miner.needspower":"需要能量!", - "gtceu.multiblock.large_miner.radius":"半径:§a%d§r格", - "gtceu.multiblock.large_miner.steam":"需要蒸汽!", - "gtceu.multiblock.large_miner.vent":"排气口受阻!", - "gtceu.multiblock.large_miner.working":"工作中……", - "gtceu.multiblock.large_turbine.description":"大型涡轮是一种使用蒸汽、燃气或等离子体转动涡轮转子来发电的多方块结构。转子效率和转子转速影响能量的输出。", - "gtceu.multiblock.luv_fusion_reactor.description":"核聚变反应堆MK-I是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用LuV,ZPM或UV等级的能源仓。每个能源仓可增加10MEU的能量缓存,最大能量缓存为160MEU。", - "gtceu.multiblock.max_energy_per_tick":"最大功率:§a%s EU/t(%s§r)", - "gtceu.multiblock.max_energy_per_tick_amps":"最大功率:%s(%sA %s)", - "gtceu.multiblock.max_energy_per_tick_hover":"可用于运行配方或超频的最大EU/t", - "gtceu.multiblock.max_recipe_tier":"最大配方等级:%s", - "gtceu.multiblock.max_recipe_tier_hover":"可运行配方的最大等级", - "gtceu.multiblock.monitor_screen.tooltip.0":"用螺丝刀右击即可打开GUI。", - "gtceu.multiblock.monitor_screen.tooltip.1":"数字接口覆盖板的代理模式可托管机器的功能与界面(是的,你可以在屏幕上直接连接管道)。", - "gtceu.multiblock.monitor_screen.tooltip.2":"该屏幕也支持插件。", - "gtceu.multiblock.multi_furnace.description":"工业熔炉是一种用于一次性烧制大量物品的多方块结构。不同级别的线圈会提供速度增幅和能量效率增幅。每次运作的基础烧制数量为32,且可以使用高等级的线圈增加烧制数量。", - "gtceu.multiblock.multi_furnace.heating_coil_discount":"加热线圈增幅:%sx", - "gtceu.multiblock.multi_furnace.heating_coil_level":"加热线圈等级:%s", - "gtceu.multiblock.multiple_recipemaps.header":"机器模式:", - "gtceu.multiblock.multiple_recipemaps.switch_message":"机器必须关闭才能切换模式!", - "gtceu.multiblock.multiple_recipemaps.tooltip":"使用螺丝刀右键控制器以更改机器模式。", - "gtceu.multiblock.multiple_recipemaps_recipes.tooltip":"机器模式:§e%s§r", - "gtceu.multiblock.network_switch.description":"网络交换机是个多方块结构,可以接受任意数量的算力数据靶仓输入,并从任意数量的算力数据源仓输出。对于需要更高算力的研究数据配方,网络交换机的存在是必要的,这是因为研究站只接受一个算力数据靶仓。当与HPCA连接时,HPCA必须具有桥接组件才可以令网络交换机接收其算力。", - "gtceu.multiblock.not_enough_energy":"警告:能量不足。", - "gtceu.multiblock.not_enough_energy_output":"警告:能源/动力仓等级过低!", - "gtceu.multiblock.ore_rig.drilled_ore_entry":" - %s", - "gtceu.multiblock.ore_rig.drilled_ores_list":"矿石:", - "gtceu.multiblock.ore_rig.ore_amount":"钻进速率:%s", - "gtceu.multiblock.output_line.0":"%s x §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.1":"%s x §e%s§r(%s/s)", - "gtceu.multiblock.output_line.2":"%s ≈ §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.3":"%s ≈ §e%s§r (%s/s)", - "gtceu.multiblock.page_switcher.io.both":"§5兼顾输入/输出", - "gtceu.multiblock.page_switcher.io.export":"§4输出", - "gtceu.multiblock.page_switcher.io.import":"§2输入", - "gtceu.multiblock.parallel":"同时处理至多%d个配方", - "gtceu.multiblock.parallel.exact":"同时处理%d个配方", - "gtceu.multiblock.parallelizable.tooltip":"通过并行控制仓让机器同时处理多个相同配方。", - "gtceu.multiblock.pattern.clear_amount_1":"§6前方必须有1x1x1大小的空间§r", - "gtceu.multiblock.pattern.clear_amount_3":"§6前方必须有3x3x1大小的空间§r", - "gtceu.multiblock.pattern.error":"在%2$s处需要%1$s。", - "gtceu.multiblock.pattern.error.batteries":"§c必须使用同种电池§r", - "gtceu.multiblock.pattern.error.coils":"§c必须使用同种线圈方块§r", - "gtceu.multiblock.pattern.error.filters":"§c必须使用同种过滤器§r", - "gtceu.multiblock.pattern.error.limited.0":"§c最多:%d个§r", - "gtceu.multiblock.pattern.error.limited.1":"§c最少:%d个§r", - "gtceu.multiblock.pattern.error.limited.2":"§c最多:每层%d个§r", - "gtceu.multiblock.pattern.error.limited.3":"§c最少:每层%d个§r", - "gtceu.multiblock.pattern.error.limited_exact":"§c精确:%d§r", - "gtceu.multiblock.pattern.error.limited_within":"§c最少%d个,最多%d个§r", - "gtceu.multiblock.pattern.location_end":"§c最末端§r", - "gtceu.multiblock.pattern.replaceable_air":"可为空气", - "gtceu.multiblock.pattern.single":"§6仅可使用该种方块§r", - "gtceu.multiblock.power_substation.average_in":"§7平均输入:%s §7EU/t", - "gtceu.multiblock.power_substation.average_in_hover":"蓄能变电站内部的平均功率输入", - "gtceu.multiblock.power_substation.average_out":"§7平均输出:%s §7EU/t", - "gtceu.multiblock.power_substation.average_out_hover":"蓄能变电站内部的平均功率输出", - "gtceu.multiblock.power_substation.capacity":"§7容量:%s §7EU", - "gtceu.multiblock.power_substation.passive_drain":"§7被动损失:%s §7EU/t", - "gtceu.multiblock.power_substation.stored":"§7存储:%s §7EU", - "gtceu.multiblock.power_substation.time_days":"%s天", - "gtceu.multiblock.power_substation.time_forever":"永远", - "gtceu.multiblock.power_substation.time_hours":"%s时", - "gtceu.multiblock.power_substation.time_minutes":"%s分", - "gtceu.multiblock.power_substation.time_seconds":"%s秒", - "gtceu.multiblock.power_substation.time_to_drain":"§7预计耗空时间:%s", - "gtceu.multiblock.power_substation.time_to_fill":"§7预计充满时间:%s", - "gtceu.multiblock.power_substation.time_years":"%s年", - "gtceu.multiblock.power_substation.under_one_hour_left":"不到一小时就会完全耗光!", - "gtceu.multiblock.preview.rotate":"左键拖拽以旋转", - "gtceu.multiblock.preview.select":"右击方块以查看其他可选方块", - "gtceu.multiblock.preview.zoom":"使用鼠标滚轮或右键拖拽以缩放", - "gtceu.multiblock.primitive_blast_furnace.bronze.description":"土高炉是一种在游戏前期用来生产钢的多方块结构。尽管它不是很快,却能为你的发展提供钢材。", - "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一台前蒸汽时代的多方块设施,每秒进行一次水资源收集,每秒的收集量取决于其所处的生物群系。水泵输出仓以及 §8ULV§r 和 §7LV§r 的输出仓均可用于该设施,输出仓的等级越高,水资源的产出量也越高。产出量遵循的公式为:生物群系系数 * 输出仓倍数。", - "gtceu.multiblock.primitive_water_pump.extra1.0":"生物群系系数:", - "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼泽:800 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.3":" 丛林:350 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪群系:300 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.6":" 针叶林:175 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙滩:170 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 mB/s", - "gtceu.multiblock.primitive_water_pump.extra2.0":"输出乘数:", - "gtceu.multiblock.primitive_water_pump.extra2.1":" 水泵仓:1x", - "gtceu.multiblock.primitive_water_pump.extra2.2":"§8ULV§r输出仓:2x", - "gtceu.multiblock.primitive_water_pump.extra2.3":"§7LV§r输出仓:4x", - "gtceu.multiblock.primitive_water_pump.extra2.4":"", - "gtceu.multiblock.primitive_water_pump.extra2.5":"当水泵所处的生物群系下雨时,总产水量将增加50%%。", - "gtceu.multiblock.progress":"进度:%ss / %ss(%s%%)", - "gtceu.multiblock.progress_percent":"进度:%s%%", - "gtceu.multiblock.pyrolyse_oven.description":"热解炉是一种用于将原木处理为木炭、杂酚油、灰烬或重油的多方块结构。", - "gtceu.multiblock.pyrolyse_oven.speed":"处理速度:%s%%", - "gtceu.multiblock.require_steam_parts":"需要蒸汽仓与输入/输出总线(蒸汽)!", - "gtceu.multiblock.research_station.description":"研究站是个多方块结构,用于研究更复杂的装配线研究数据。任何需要数据球或数据模块的研究必须使用研究站而非扫描仪来扫描。研究站需要计算工作单位(CWU/t)来进行工作,这由高性能计算阵列(HPCA)提供。", - "gtceu.multiblock.research_station.researching":"§6研究中…", - "gtceu.multiblock.running":"运行正常。", - "gtceu.multiblock.steam.duration_modifier":"处理耗时为基础的§f1.5§7倍,不受物品数量影响。", - "gtceu.multiblock.steam.low_steam":"蒸汽不足,无法运行!", - "gtceu.multiblock.steam.steam_stored":"蒸汽:%s / %s mB", - "gtceu.multiblock.steam_grinder.description":"蒸汽时代的多方块研磨机。需要至少14块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。", - "gtceu.multiblock.steam_oven.description":"蒸汽时代的多方块熔炉。需要至少6块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。蒸汽仓必须放置于结构底层,数量至多为一个。", - "gtceu.multiblock.title":"多方块结构", - "gtceu.multiblock.turbine.efficiency":"涡轮效率:%s%%", - "gtceu.multiblock.turbine.efficiency_tooltip":"转子支架等级超过%s§r时,每级§7增加§f10%%效率,并翻倍输出功率§7。", - "gtceu.multiblock.turbine.energy_per_tick":"能量输出:%s/%s EU/t", - "gtceu.multiblock.turbine.energy_per_tick_maxed":"能量输出:%s EU/t", - "gtceu.multiblock.turbine.fuel_amount":"燃料量:%sL(%s)", - "gtceu.multiblock.turbine.fuel_needed":"消耗量:%s / %s ticks", - "gtceu.multiblock.turbine.obstructed":"涡轮受阻", - "gtceu.multiblock.turbine.rotor_durability":"转子耐久度:%s%%", - "gtceu.multiblock.turbine.rotor_speed":"转子转速:%s/%sRPM", - "gtceu.multiblock.universal.distinct":"总线隔离:", - "gtceu.multiblock.universal.distinct.info":"启用时,每个物品总线将在配方识别中被视为完全独立。对于消耗材料相同,使用的非消耗材料(模头、透镜等)不同则产物也不同的配方来说作用显著。", - "gtceu.multiblock.universal.distinct.no":"否", - "gtceu.multiblock.universal.distinct.yes":"是", - "gtceu.multiblock.universal.has_problems":"存在故障!", - "gtceu.multiblock.universal.has_problems_header":"在维护仓中修复以下问题:", - "gtceu.multiblock.universal.muffler_obstructed":"消声仓受阻!", - "gtceu.multiblock.universal.muffler_obstructed.tooltip":"消音仓口前方必须有一格空气。", - "gtceu.multiblock.universal.no_problems":"无故障!", - "gtceu.multiblock.universal.problem.crowbar":"§7这东西不属于这儿。(§a撬棍§7)", - "gtceu.multiblock.universal.problem.hard_hammer":"§7外壳有些凹痕。(§a锻造锤§7)", - "gtceu.multiblock.universal.problem.screwdriver":"§7螺丝没拧紧。(§a螺丝刀§7)", - "gtceu.multiblock.universal.problem.soft_mallet":"§7有什么东西卡住了。(§a软锤§7)", - "gtceu.multiblock.universal.problem.wire_cutter":"§7有几根线烧焦了(§a剪线钳§7)", - "gtceu.multiblock.universal.problem.wrench":"§7管道松动了。(§a扳手§7)", - "gtceu.multiblock.universal.rotor_obstructed":"转子进气口受阻!", - "gtceu.multiblock.uv_fusion_reactor.description":"核聚变反应堆MK-III是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用UV等级的能源仓。每个能源仓可增加40MEU的能量缓存,最大能量缓存为640MEU。", - "gtceu.multiblock.vacuum_freezer.description":"真空冷冻机是一种多方块结构,主要用于将热锭冷却为成品锭。此外,它还可以冻结水等其他物质。", - "gtceu.multiblock.validation_failed":"输入仓/输出仓数量无效。", - "gtceu.multiblock.waiting":"警告:机器待机", - "gtceu.multiblock.work_paused":"暂停。", - "gtceu.multiblock.zpm_fusion_reactor.description":"核聚变反应堆MK-II是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用ZPM或UV等级的能源仓。每个能源仓可增加20MEU的能量缓存,最大能量缓存为320MEU。", - "gtceu.oc.tooltip.0":"最低:%s", - "gtceu.oc.tooltip.1":"左键单击增加超频等级", - "gtceu.oc.tooltip.2":"右键单击降低超频等级", - "gtceu.oc.tooltip.3":"中键单击重设超频等级", - "gtceu.oc.tooltip.4":"按住Shift以无损超频显示", - "gtceu.ore_washer":"洗矿厂", - "gtceu.ownership.name.argonauts":"Argonauts公会", - "gtceu.ownership.name.ftb":"FTB团队", - "gtceu.ownership.name.player":"玩家", - "gtceu.packer":"打包机", - "gtceu.plasma_generator":"等离子燃料", - "gtceu.polarizer":"两极磁化机", - "gtceu.primitive_blast_furnace":"土高炉", - "gtceu.pyrolyse_oven":"热解炉", - "gtceu.recipe.amperage":"电流:%s", - "gtceu.recipe.category.arc_furnace_recycling":"电弧炉:等离子回收", - "gtceu.recipe.category.chem_dyes":"化学浸洗机:化学染色", - "gtceu.recipe.category.extractor_recycling":"流体提取机:重熔回收", - "gtceu.recipe.category.ingot_molding":"合金炉:金属成型", - "gtceu.recipe.category.macerator_recycling":"研磨机:粉碎回收", - "gtceu.recipe.category.ore_bathing":"化学浸洗机:矿物处理", - "gtceu.recipe.category.ore_crushing":"研磨机:矿物处理", - "gtceu.recipe.category.ore_forging":"锻造锤:矿物处理", - "gtceu.recipe.chance":"概率:%s + %s/电压等级", - "gtceu.recipe.cleanroom":"需要%s", - "gtceu.recipe.cleanroom.display_name":"超净间", - "gtceu.recipe.cleanroom_sterile.display_name":"无菌超净间", - "gtceu.recipe.coil.tier":"线圈:%s", - "gtceu.recipe.computation_per_tick":"最小算力:%s CWU/t", - "gtceu.recipe.dimensions":"维度:%s", - "gtceu.recipe.duration":"耗时:%s秒", - "gtceu.recipe.environmental_hazard":"§c区域内必须有%s", - "gtceu.recipe.environmental_hazard.reverse":"§c区域内必须没有%s", - "gtceu.recipe.eu":"耗能功率:%s EU/t", - "gtceu.recipe.eu_inverted":"产能功率:%s EU/t", - "gtceu.recipe.eu_to_start":"启动耗能:%sEU%s", - "gtceu.recipe.explosive":"爆炸物:%s", - "gtceu.recipe.max_eu":"最大功率:%s EU", - "gtceu.recipe.not_consumed":"不在加工中消耗", - "gtceu.recipe.research":"需要研究", - "gtceu.recipe.scan_for_research":"装配线配方扫描", - "gtceu.recipe.temperature":"温度:%sK", - "gtceu.recipe.total":"总计:%s EU", - "gtceu.recipe.total_computation":"算力:%s CWU", - "gtceu.recipe_logic.condition_fails":"条件不足", - "gtceu.recipe_logic.insufficient_fuel":"燃料不足", - "gtceu.recipe_logic.insufficient_in":"需要输入", - "gtceu.recipe_logic.insufficient_out":"输出堵塞", - "gtceu.recipe_logic.no_capabilities":"机器无功能", - "gtceu.recipe_logic.no_contents":"配方无内容", - "gtceu.recipe_memory_widget.tooltip.0":"§7左键点击可自动将该配方输入至合成格", - "gtceu.recipe_memory_widget.tooltip.1":"§7按住Shift并点击以锁定或解锁该配方", - "gtceu.recipe_type.show_recipes":"查看配方", - "gtceu.rei.group.potion_fluids":"药水流体", - "gtceu.research_station":"研究站", - "gtceu.rock_breaker":"碎岩机", - "gtceu.scanner":"扫描仪", - "gtceu.scanner.copy_stick_empty":"§o空闪存", - "gtceu.scanner.copy_stick_from":"§o要复制的闪存", - "gtceu.scanner.copy_stick_to":"§o闪存(已复制)", - "gtceu.sifter":"筛选机", - "gtceu.steam_boiler":"蒸汽锅炉", - "gtceu.steam_turbine":"蒸汽涡轮", - "gtceu.subtitle.arc":"电弧炉:嗡——", - "gtceu.subtitle.assembler":"组装机:运行中", - "gtceu.subtitle.bath":"化学浸洗机:嘶嘶", - "gtceu.subtitle.boiler":"锅炉:液体沸腾", - "gtceu.subtitle.centrifuge":"离心机:旋转", - "gtceu.subtitle.chainsaw":"链锯:拉动油门", - "gtceu.subtitle.chemical":"化学反应釜:运行中", - "gtceu.subtitle.combustion":"内燃发电机:燃料燃烧", - "gtceu.subtitle.compressor":"压缩机:挤压", - "gtceu.subtitle.computation":"计算机:哔哔", - "gtceu.subtitle.cooling":"真空冷冻机:嗡——", - "gtceu.subtitle.cut":"切割机:嘶嘶叫", - "gtceu.subtitle.drill":"电钻:嗡嗡", - "gtceu.subtitle.electrolyzer":"电解机:爆出火花", - "gtceu.subtitle.file":"锉:磨削", - "gtceu.subtitle.fire":"火:爆裂", - "gtceu.subtitle.forge_hammer":"锻造锤:DUANG", - "gtceu.subtitle.furnace":"电炉:冶炼", - "gtceu.subtitle.jet_engine":"喷气背包:轰轰", - "gtceu.subtitle.macerator":"研磨机:破碎", - "gtceu.subtitle.metal_pipe":"流体管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", - "gtceu.subtitle.miner":"采矿机:开采", - "gtceu.subtitle.mixer":"搅拌机:搅动", - "gtceu.subtitle.mortar":"研钵:研磨", - "gtceu.subtitle.motor":"马达:转啊转", - "gtceu.subtitle.plunger":"搋子:清理流体", - "gtceu.subtitle.portable_scanner":"便携式扫描仪:扫描", - "gtceu.subtitle.portal_closing":"传送门:关闭", - "gtceu.subtitle.portal_opening":"传送门:开启", - "gtceu.subtitle.replicator":"复制机:运行", - "gtceu.subtitle.saw":"锯:切割", - "gtceu.subtitle.science":"化学反应釜:科!学!", - "gtceu.subtitle.screwdriver":"螺丝刀:拧螺丝", - "gtceu.subtitle.soft_hammer":"软锤:轻敲", - "gtceu.subtitle.spray_can":"喷漆罐:喷涂", - "gtceu.subtitle.sus":"唱片:你有嫌疑", - "gtceu.subtitle.turbine":"涡轮:呼啸", - "gtceu.subtitle.wirecutter":"剪线钳:剪断", - "gtceu.subtitle.wrench":"扳手:嘎啦", - "gtceu.thermal_centrifuge":"热力离心机", - "gtceu.tool.class.axe":"斧", - "gtceu.tool.class.butchery_knife":"屠刀", - "gtceu.tool.class.crowbar":"撬棍", - "gtceu.tool.class.drill":"电钻", - "gtceu.tool.class.file":"锉", - "gtceu.tool.class.hammer":"锤", - "gtceu.tool.class.hoe":"锄", - "gtceu.tool.class.knife":"刀", - "gtceu.tool.class.mallet":"软锤", - "gtceu.tool.class.mining_hammer":"采矿锤", - "gtceu.tool.class.mortar":"研钵", - "gtceu.tool.class.pickaxe":"镐", - "gtceu.tool.class.plunger":"搋子", - "gtceu.tool.class.rolling_pin":"擀面杖", - "gtceu.tool.class.saw":"锯", - "gtceu.tool.class.screwdriver":"螺丝刀", - "gtceu.tool.class.scythe":"镰刀", - "gtceu.tool.class.shears":"剪刀", - "gtceu.tool.class.shovel":"锹", - "gtceu.tool.class.spade":"铲", - "gtceu.tool.class.sword":"剑", - "gtceu.tool.class.wire_cutter":"剪线钳", - "gtceu.tool.class.wrench":"扳手", - "gtceu.tool_action.crowbar":"§8使用撬棍卸下覆盖板", - "gtceu.tool_action.hammer":"§8使用锻造锤消除声响", - "gtceu.tool_action.screwdriver.access_covers":"§8使用螺丝刀访问覆盖板", - "gtceu.tool_action.screwdriver.auto_collapse":"§8使用螺丝刀开关物品堆叠自动合并", - "gtceu.tool_action.screwdriver.auto_output":"§8使用螺丝刀切换自动输出", - "gtceu.tool_action.screwdriver.auto_output_covers":"§8使用螺丝刀设置允许从输出端输入或访问覆盖板", - "gtceu.tool_action.screwdriver.toggle_mode":"§8使用螺丝刀切换模式", - "gtceu.tool_action.screwdriver.toggle_mode_covers":"§8使用螺丝刀切换模式或访问覆盖板", - "gtceu.tool_action.show_tooltips":"§7按住§6SHIFT§7显示工具信息", - "gtceu.tool_action.soft_mallet.reset":"§8使用软锤开关机器", - "gtceu.tool_action.soft_mallet.toggle_mode":"§8使用软锤切换模式", - "gtceu.tool_action.tape":"§8使用胶带维护机器", - "gtceu.tool_action.wire_cutter.connect":"§8使用剪线钳连接/断开电线", - "gtceu.tool_action.wrench.connect":"§8使用扳手连接/断开管道,潜行可以阻止输入", - "gtceu.tool_action.wrench.set_facing":"§8使用扳手设置朝向", - "gtceu.tooltip.fluid_pipe_hold_shift":"§7按住§6SHIFT§7以查看流体容器详情", - "gtceu.tooltip.hold_ctrl":"§7按住CTRL获得更多信息", - "gtceu.tooltip.hold_shift":"§7按住§6SHIFT§7获得更多信息", - "gtceu.tooltip.potion.each":"§r%4$s%%§7概率获得§r%1$s %2$s§7(§r%3$s§7tick)", - "gtceu.tooltip.potion.header":"§6包含效果:", - "gtceu.tooltip.proxy_bind":"§f绑定到%s %s %s处的样板总成", - "gtceu.tooltip.status.trinary.false":"假", - "gtceu.tooltip.status.trinary.true":"真", - "gtceu.tooltip.status.trinary.unknown":"未知", - "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以查看流体容器及工具详情", - "gtceu.top.allow_output_input":"允许输入", - "gtceu.top.auto_output":"自动输出", - "gtceu.top.buffer_bound_pos":"已绑定至 - X:%s;Y:%s;Z:%s", - "gtceu.top.buffer_not_bound":"尚未绑定总成", - "gtceu.top.cable_amperage":"电流:", - "gtceu.top.cable_voltage":"电压:", - "gtceu.top.convert_eu":"转换模式:§eEU§r ->§cFE§r", - "gtceu.top.convert_fe":"转换模式:§cFE§r ->§eEU§r", - "gtceu.top.energy_consumption":"耗能", - "gtceu.top.energy_production":"产能", - "gtceu.top.energy_stored":" / %d EU", - "gtceu.top.exhaust_vent_blocked":"受阻", - "gtceu.top.exhaust_vent_direction":"排气口:%s", - "gtceu.top.filter.label":"过滤:", - "gtceu.top.fluid_auto_output":"流体输出:%s", - "gtceu.top.fuel_min_consume":"需要", - "gtceu.top.fuel_none":"无燃料", - "gtceu.top.invalid_structure":"结构不完整", - "gtceu.top.item_auto_output":"物品输出:%s", - "gtceu.top.link_cover.color":"颜色:", - "gtceu.top.machine_mode":"机器模式:", - "gtceu.top.maintenance.crowbar":"这东西不属于这儿", - "gtceu.top.maintenance.hard_hammer":"外壳有些凹痕", - "gtceu.top.maintenance.screwdriver":"螺丝没拧紧", - "gtceu.top.maintenance.soft_mallet":"有什么东西卡住了", - "gtceu.top.maintenance.wire_cutter":"有几根线烧焦了", - "gtceu.top.maintenance.wrench":"管道松动了", - "gtceu.top.maintenance_broken":"需要维护", - "gtceu.top.maintenance_fixed":"无需维护", - "gtceu.top.mode.export":"输出", - "gtceu.top.mode.import":"输入", - "gtceu.top.obstructed_structure":"结构受阻", - "gtceu.top.primitive_pump_production":"产出:%s mB/s", - "gtceu.top.progress_computation":" / %s CWU", - "gtceu.top.progress_sec":" / %s s", - "gtceu.top.progress_tick":" / %s t", - "gtceu.top.proxies_bound":"样板总成镜像绑定数量:%s", - "gtceu.top.recipe_output":"配方输出:", - "gtceu.top.stained":"颜色:%s", - "gtceu.top.transform_down":"§a降压§r %s", - "gtceu.top.transform_input":"§6输入:§r%s", - "gtceu.top.transform_output":"§9输出:§r%s", - "gtceu.top.transform_up":"§c升压§r %s", - "gtceu.top.unit.fluid_buckets":"kL", - "gtceu.top.unit.fluid_milibuckets":"L", - "gtceu.top.unit.items":"物品", - "gtceu.top.valid_structure":"结构已成型", - "gtceu.top.working_disabled":"已暂停工作", - "gtceu.universal.clear_nbt_recipe.tooltip":"§c这将清除所有内容物!", - "gtceu.universal.disabled":"多方块结构共享:§4禁止", - "gtceu.universal.enabled":"多方块结构共享:§a允许", - "gtceu.universal.kiloliters":"%s B", - "gtceu.universal.liters":"%s mB", - "gtceu.universal.tooltip.amperage_in":"§e输入电流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out":"§e输入/输出电流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out_till":"§e输入/输出电流上限:§f%dA", - "gtceu.universal.tooltip.amperage_in_till":"§e输入电流上限:§f%dA", - "gtceu.universal.tooltip.amperage_out":"§e输出电流:§f%dA", - "gtceu.universal.tooltip.amperage_out_till":"§e输出电流上限:§f%dA", - "gtceu.universal.tooltip.base_production_eut":"§e基础产能功率:§f%d EU/t", - "gtceu.universal.tooltip.base_production_fluid":"§e基础产出速率:§f%d mB/t", - "gtceu.universal.tooltip.chunk_mode":"区块模式:", - "gtceu.universal.tooltip.deprecated":"§4§l警告:§r§4已弃用。将在未来版本中移除。§r", - "gtceu.universal.tooltip.energy_storage_capacity":"§c能量缓存:§r%d EU", - "gtceu.universal.tooltip.energy_tier_range":"§a适配电压等级:§f%s§f-%s", - "gtceu.universal.tooltip.fluid_storage_capacity":"§9流体容量:§f%d mB", - "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流体容量:§r共§f%d§7个流体槽,每个§f%d mB§7", - "gtceu.universal.tooltip.fluid_stored":"§2内部流体:%2$d mB§f%1$s", - "gtceu.universal.tooltip.fluid_transfer_rate":"§b传输速率:§f%d mB/t", - "gtceu.universal.tooltip.item_storage_capacity":"§6物品槽位数量:§f%d", - "gtceu.universal.tooltip.item_storage_total":"§6物品容量:§f%d物品", - "gtceu.universal.tooltip.item_stored":"§d内部物品:§f%2$d个%1$s", - "gtceu.universal.tooltip.item_transfer_rate":"§b传输速率:§f%d物品/s", - "gtceu.universal.tooltip.item_transfer_rate_stacks":"§b传输速率:§f%d组/s", - "gtceu.universal.tooltip.max_voltage_in":"§a最大输入电压:§f%d(%s§f)", - "gtceu.universal.tooltip.max_voltage_in_out":"§a最大输入/输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.max_voltage_out":"§a最大输出电压:§f%d(%s§f)", - "gtceu.universal.tooltip.parallel":"§d最大并行:§f%d", - "gtceu.universal.tooltip.produces_fluid":"§e产出速率:§f%d mB/t", - "gtceu.universal.tooltip.requires_redstone":"§4需要红石信号", - "gtceu.universal.tooltip.silk_touch":"精准采集:", - "gtceu.universal.tooltip.terrain_resist":"该机器不会在暴露于恶劣天气时爆炸", - "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作时消耗§f%d mB/hr§7§6润滑油§7", - "gtceu.universal.tooltip.uses_per_op":"每次工作时消耗§f%d EU§7", - "gtceu.universal.tooltip.uses_per_second":"工作时消耗§f%d EU/s§7", - "gtceu.universal.tooltip.uses_per_tick":"工作时消耗§f%d EU/t§7", - "gtceu.universal.tooltip.uses_per_tick_steam":"工作时消耗§f%d mB/t§7§f蒸汽§7", - "gtceu.universal.tooltip.voltage_in":"§a输入电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_in_out":"§a输入/输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_out":"§a输出电压:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.working_area":"§b工作范围:§f%dx%d", - "gtceu.universal.tooltip.working_area_chunks":"§b工作范围:§f%dx%d 区块", - "gtceu.universal.tooltip.working_area_chunks_max":"§b最大工作范围:§f%dx%d 区块", - "gtceu.universal.tooltip.working_area_max":"§b最大工作范围:§f%dx%d", - "gtceu.vacuum_freezer":"真空冷冻机", - "gtceu.wiremill":"线材轧机", - "gui.gtceu.refund_all.desc":"将共享库存返还到AE2", - "gui.gtceu.rename.desc":"重命名样板总成", - "gui.gtceu.share_inventory.desc.0":"与总成内的所有样板共享物品!", - "gui.gtceu.share_inventory.desc.1":"保存不消耗的催化剂,实现更高效的自动化", - "gui.gtceu.share_inventory.title":"共享物品库存", - "gui.gtceu.share_tank.desc.0":"与总成内的所有样板共享流体!", - "gui.gtceu.share_tank.title":"共享流体库存", - "gui.widget.incrementButton.default_tooltip":"按住Shift,Ctrl键或同时按住这两个键来改变数量", - "gui.widget.recipeProgressWidget.default_tooltip":"查看配方", - "item.glass_lens":"玻璃透镜(白色)", - "item.gtceu.activity_detector_cover":"活跃探测覆盖板", - "item.gtceu.activity_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f机器活跃状态§7发出红石信号。", - "item.gtceu.advanced_activity_detector_cover":"进阶活跃状态探测器", - "item.gtceu.advanced_activity_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f机器处理进度§7发出红石信号。", - "item.gtceu.advanced_electric_jetpack":"进阶电力喷气背包", - "item.gtceu.advanced_energy_detector_cover":"进阶能量探测覆盖板", - "item.gtceu.advanced_energy_detector_cover.tooltip":"§7作§f覆盖板§7时依照由§fRS锁存器§7控制的§f能量状态§7发出红石信号。", - "item.gtceu.advanced_fluid_detector_cover":"进阶流体探测器", - "item.gtceu.advanced_fluid_detector_cover.tooltip":"作§f覆盖板§7时依照由§fRS锁存器§7控制的§f流体存储状态§7发出红石信号。", - "item.gtceu.advanced_fluid_voiding_cover":"进阶流体销毁覆盖板", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.0":"§7作§f覆盖板§7时允许按数量销毁§f流体§7。", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.1":"加装后使用§f软锤§7激活", - "item.gtceu.advanced_integrated_circuit":"进阶集成电路", - "item.gtceu.advanced_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.advanced_integrated_circuit.tooltip.1":"§6HV级电路", - "item.gtceu.advanced_item_detector_cover":"进阶物品探测器", - "item.gtceu.advanced_item_detector_cover.tooltip":"作§f覆盖板§7时依照由§fRS锁存器§7控制的§f物品存储状态§7发出红石信号。", - "item.gtceu.advanced_item_voiding_cover":"进阶物品销毁覆盖板", - "item.gtceu.advanced_item_voiding_cover.tooltip.0":"§7作§f覆盖板§7时销毁物品。", - "item.gtceu.advanced_item_voiding_cover.tooltip.1":"加装后使用§f软锤§7激活", - "item.gtceu.advanced_nanomuscle_chestplate":"纳米肌体™进阶套装胸甲", - "item.gtceu.advanced_power_thruster":"进阶电力推进器", - "item.gtceu.advanced_quarktech_chestplate":"夸克高科™进阶套装胸甲", - "item.gtceu.advanced_smd_capacitor":"高级贴片电容", - "item.gtceu.advanced_smd_capacitor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_diode":"高级贴片二极管", - "item.gtceu.advanced_smd_diode.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_inductor":"高级贴片电感", - "item.gtceu.advanced_smd_inductor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_resistor":"高级贴片电阻", - "item.gtceu.advanced_smd_resistor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_smd_transistor":"高级贴片晶体管", - "item.gtceu.advanced_smd_transistor.tooltip":"§7高级电子元件", - "item.gtceu.advanced_soc":"ASoC", - "item.gtceu.advanced_soc.tooltip":"§7先进系统级芯片", - "item.gtceu.advanced_soc_wafer":"ASoC晶圆", - "item.gtceu.advanced_soc_wafer.tooltip":"§7先进电路原料", - "item.gtceu.aluminium_fluid_cell":"%s铝单元", - "item.gtceu.anvil_casting_mold":"模具(砧)", - "item.gtceu.anvil_casting_mold.tooltip":"§7用来制作砧的模具", - "item.gtceu.ash_dust":"灰烬", - "item.gtceu.axe_extruder_mold.tooltip":"§7用来制作斧的模头", - "item.gtceu.ball_casting_mold":"模具(球)", - "item.gtceu.ball_casting_mold.tooltip":"§7用来制作球的模具", - "item.gtceu.basaltic_mineral_sand_dust":"玄武岩矿砂", - "item.gtceu.basic_electronic_circuit":"基础电子电路", - "item.gtceu.basic_electronic_circuit.tooltip.0":"§7你的第一块电路", - "item.gtceu.basic_electronic_circuit.tooltip.1":"§cLV级电路", - "item.gtceu.basic_integrated_circuit":"基础集成电路", - "item.gtceu.basic_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV级电路", - "item.gtceu.basic_tape":"胶带", - "item.gtceu.basic_tape.tooltip":"§7强度不足,无法解决机械故障\\n可以带走板条箱,且不丢失物品", - "item.gtceu.battery.charge_detailed":"%s/%sEU-%s级§7(剩余供能时长:%s/%s%s§7)", - "item.gtceu.battery.charge_time":"§a最大供能时长:%s%s(%s)", - "item.gtceu.battery.charge_unit.hour":"时", - "item.gtceu.battery.charge_unit.minute":"分", - "item.gtceu.battery.charge_unit.second":"秒", - "item.gtceu.bentonite_dust":"膨润土", - "item.gtceu.bio_chaff":"生物糠", - "item.gtceu.black_dye_spray_can":"喷漆罐(黑色)", - "item.gtceu.black_glass_lens":"玻璃透镜(黑色)", - "item.gtceu.blacklight":"黑光灯", - "item.gtceu.blacklight.tooltip":"§7长波§d紫外线§7光源", - "item.gtceu.block_casting_mold":"模具(块)", - "item.gtceu.block_casting_mold.tooltip":"§7用来制作块的模具", - "item.gtceu.block_extruder_mold":"模头(块)", - "item.gtceu.block_extruder_mold.tooltip":"§7用来制作块的模头", - "item.gtceu.blue_dye_spray_can":"喷漆罐(蓝色)", - "item.gtceu.blue_glass_lens":"玻璃透镜(蓝色)", - "item.gtceu.bolt_extruder_mold":"模头(螺栓)", - "item.gtceu.bolt_extruder_mold.tooltip":"§7用来制作螺栓的模头", - "item.gtceu.bone_dust":"骨粉", - "item.gtceu.borosilicate_glass_ingot":"硼硅玻璃条", - "item.gtceu.bottle.purple.drink.tooltip":"§7来点柠檬汽水,还是冰红茶?我手里这瓶可是紫色饮料!", - "item.gtceu.bottle_casting_mold":"模具(瓶子)", - "item.gtceu.bottle_casting_mold.tooltip":"§7用来制作瓶的模具", - "item.gtceu.bottle_extruder_mold":"模头(瓶子)", - "item.gtceu.bottle_extruder_mold.tooltip":"§7用来制作瓶子的模头", - "item.gtceu.brick_wooden_form":"木制砖模具", - "item.gtceu.brown_dye_spray_can":"喷漆罐(棕色)", - "item.gtceu.brown_glass_lens":"玻璃透镜(棕色)", - "item.gtceu.bucket":"%s桶", - "item.gtceu.capacitor":"电容", - "item.gtceu.capacitor.tooltip":"§7基础电子元件", - "item.gtceu.carbon_fiber_mesh":"碳纤维网", - "item.gtceu.carbon_fiber_plate":"碳板", - "item.gtceu.carbon_fibers":"生碳纤维", - "item.gtceu.casing_casting_mold.tooltip":"§7用来制作外壳的模具", - "item.gtceu.casing_extruder_mold.tooltip":"§7用来制作外壳的模头", - "item.gtceu.cassiterite_sand_dust":"锡石矿砂", - "item.gtceu.cell_extruder_mold":"模头(单元)", - "item.gtceu.cell_extruder_mold.tooltip":"§7用来制作单元的模头", - "item.gtceu.chemical_black_dye":"黑色化学染料", - "item.gtceu.chemical_blue_dye":"蓝色化学染料", - "item.gtceu.chemical_brown_dye":"棕色化学染料", - "item.gtceu.chemical_cyan_dye":"青色化学染料", - "item.gtceu.chemical_gray_dye":"灰色化学染料", - "item.gtceu.chemical_green_dye":"绿色化学染料", - "item.gtceu.chemical_light_blue_dye":"淡蓝色化学染料", - "item.gtceu.chemical_light_gray_dye":"淡灰色化学染料", - "item.gtceu.chemical_lime_dye":"黄绿色化学染料", - "item.gtceu.chemical_magenta_dye":"品红色化学染料", - "item.gtceu.chemical_orange_dye":"橙色化学染料", - "item.gtceu.chemical_pink_dye":"粉红色化学染料", - "item.gtceu.chemical_purple_dye":"紫色化学染料", - "item.gtceu.chemical_red_dye":"红色化学染料", - "item.gtceu.chemical_white_dye":"白色化学染料", - "item.gtceu.chemical_yellow_dye":"黄色化学染料", - "item.gtceu.chipped_glass_gem":"破碎的玻璃晶体", - "item.gtceu.chipped_sugar_gem":"小块方糖", - "item.gtceu.circuit.integrated.gui":"§7编程电路配置", - "item.gtceu.coke_oven_brick":"焦炉砖", - "item.gtceu.compressed_clay":"压缩黏土", - "item.gtceu.compressed_coke_clay":"压缩焦黏土", - "item.gtceu.compressed_fireclay":"压缩耐火黏土", - "item.gtceu.computer_monitor_cover":"电脑屏幕覆盖板", - "item.gtceu.computer_monitor_cover.tooltip":"§7作§f覆盖板§7时显示§f数据§7。", - "item.gtceu.conveyor.module.tooltip":"§7作§f覆盖板§7时以特定速率传输§f物品§7。", - "item.gtceu.cpu_chip":"CPU芯片", - "item.gtceu.cpu_chip.tooltip":"§7中央处理器", - "item.gtceu.cpu_wafer":"CPU晶圆", - "item.gtceu.cpu_wafer.tooltip":"§7中央处理器原料", - "item.gtceu.crushed_bentonite_ore":"精研膨润土", - "item.gtceu.crushed_cassiterite_sand_ore":"粉碎锡石矿砂", - "item.gtceu.crushed_pitchblende_ore":"精研沥青铀矿", - "item.gtceu.crushed_talc_ore_ore":"精研滑石", - "item.gtceu.crystal_cpu":"晶体CPU", - "item.gtceu.crystal_cpu.tooltip":"§7晶体处理器", - "item.gtceu.crystal_processor":"晶体处理器", - "item.gtceu.crystal_processor.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor.tooltip.1":"§9IV级电路", - "item.gtceu.crystal_processor_assembly":"晶体处理器集群", - "item.gtceu.crystal_processor_assembly.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_assembly.tooltip.1":"§9LuV级电路", - "item.gtceu.crystal_processor_computer":"晶体处理器超级计算机", - "item.gtceu.crystal_processor_computer.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_computer.tooltip.1":"§9ZPM级电路", - "item.gtceu.crystal_processor_mainframe":"晶体处理器主机", - "item.gtceu.crystal_processor_mainframe.tooltip.0":"§7得益于晶体蚀刻技术", - "item.gtceu.crystal_processor_mainframe.tooltip.1":"§9UV级电路", - "item.gtceu.crystal_soc":"晶体SoC", - "item.gtceu.crystal_soc.tooltip":"§7晶体系统级芯片", - "item.gtceu.cyan_dye_spray_can":"喷漆罐(青色)", - "item.gtceu.cyan_glass_lens":"玻璃透镜(青色)", - "item.gtceu.cylinder_casting_mold":"模具(圆柱)", - "item.gtceu.cylinder_casting_mold.tooltip":"§7用来制作圆柱的模具", - "item.gtceu.dark_ash_dust":"黑色灰烬", - "item.gtceu.data_module":"数据模块", - "item.gtceu.data_orb":"数据球", - "item.gtceu.data_orb.tooltip":" §7大容量的数据存储器", - "item.gtceu.data_stick":"闪存", - "item.gtceu.data_stick.tooltip":"§7小容量的数据存储器", - "item.gtceu.diamond_grinding_head":"钻石研磨头", - "item.gtceu.diode":"二极管", - "item.gtceu.diode.tooltip":"§7基础电子元件", - "item.gtceu.dough":"面团", - "item.gtceu.duct_tape":"布莱恩科技航空专用强化胶带FAL-84型", - "item.gtceu.duct_tape.tooltip":"§7如果一卷修不好,那就再来一卷!", - "item.gtceu.dynamite":"炸药", - "item.gtceu.electric.pump.tooltip":"§7作§f覆盖板§7时以特定速率传输§f流体§7。", - "item.gtceu.electric_jetpack":"电力喷气背包", - "item.gtceu.empty_mold":"空模板", - "item.gtceu.empty_mold.tooltip":"§7用以制作模具与压模器的模头", - "item.gtceu.empty_spray_can":"空喷漆罐", - "item.gtceu.empty_spray_can.tooltip":"§7可充入各种颜色的喷剂", - "item.gtceu.empty_wooden_form":"空木制模具", - "item.gtceu.ender_fluid_link_cover":"末影流体连接", - "item.gtceu.ender_fluid_link_cover.tooltip":"§7作§f覆盖板§7时利用§f无线§7§d末影§f连接§7传输§f流体§7。", - "item.gtceu.energium_dust":"能量粉", - "item.gtceu.energy_cluster":"能量簇", - "item.gtceu.energy_cluster.tooltip":"§7可充电电池", - "item.gtceu.energy_crystal":"能量水晶", - "item.gtceu.energy_crystal.tooltip":"§7可充电电池", - "item.gtceu.energy_detector_cover":"能量探测覆盖板", - "item.gtceu.energy_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f能量储量§7发出红石信号。", - "item.gtceu.energy_module":"能量模块", - "item.gtceu.energy_module.tooltip":"§7可充电电池", - "item.gtceu.engraved_crystal_chip":"刻蚀水晶芯片", - "item.gtceu.engraved_crystal_chip.tooltip":"§7晶体电路所需", - "item.gtceu.engraved_lapotron_crystal_chip":"刻蚀兰波顿芯片", - "item.gtceu.epoxy_circuit_board":"环氧树脂基板", - "item.gtceu.epoxy_circuit_board.tooltip":"§7进阶电路基板", - "item.gtceu.epoxy_printed_circuit_board":"环氧树脂印刷电路基板", - "item.gtceu.epoxy_printed_circuit_board.tooltip":"§7更高级的电路基板", - "item.gtceu.ev_battery_hull":"小型钒电池外壳", - "item.gtceu.ev_battery_hull.tooltip":"§7一个空的§5EV§7电池外壳", - "item.gtceu.ev_conveyor_module":"§5EV§r传送带", - "item.gtceu.ev_electric_motor":"§5EV§r电动马达", - "item.gtceu.ev_electric_piston":"§5EV§r电力活塞", - "item.gtceu.ev_electric_pump":"§5EV§r电动泵", - "item.gtceu.ev_emitter":"§5EV§r发射器", - "item.gtceu.ev_field_generator":"§5EV§r力场发生器", - "item.gtceu.ev_fluid_regulator":"§5EV§r流体校准器", - "item.gtceu.ev_power_unit":"§5EV§r能量单元", - "item.gtceu.ev_robot_arm":"§5EV§r机械臂", - "item.gtceu.ev_sensor":"§5EV§r传感器", - "item.gtceu.ev_solar_panel":"超高压太阳能板(§5EV§r)", - "item.gtceu.ev_vanadium_battery":"小型钒电池", - "item.gtceu.ev_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.ev_voltage_coil":"超高压线圈", - "item.gtceu.ev_voltage_coil.tooltip":"极限线圈", - "item.gtceu.exquisite_glass_gem":"精致的玻璃晶体", - "item.gtceu.facade_cover":"%s覆盖伪装板", - "item.gtceu.facade_cover.tooltip.0":"§7可作为§f覆盖板§7加装的装饰性外壳。", - "item.gtceu.facade_cover.tooltip.1":"§7使用三个铁板与任意方块合成", - "item.gtceu.face_mask":"面罩", - "item.gtceu.fertilizer":"肥料", - "item.gtceu.fiber_reinforced_circuit_board":"纤维强化电路基板", - "item.gtceu.fiber_reinforced_circuit_board.tooltip":"§7超级电路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board":"纤维强化印刷电路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip":"§7更高级的电路基板", - "item.gtceu.file_extruder_mold.tooltip":"§7用来制作锉的模头", - "item.gtceu.fine_borosilicate_glass_wire":"硼硅玻璃纤维", - "item.gtceu.firebrick":"耐火砖", - "item.gtceu.firebrick.tooltip":"§7耐热", - "item.gtceu.flawed_glass_gem":"有瑕的玻璃晶体", - "item.gtceu.flawed_sugar_gem":"小颗方糖", - "item.gtceu.flawless_glass_gem":"无瑕的玻璃晶体", - "item.gtceu.fluid.regulator.tooltip":"§7作§f覆盖板§7时§7限制§f§f流体§7的流量。", - "item.gtceu.fluid_cell":"%s单元", - "item.gtceu.fluid_detector_cover":"流体探测覆盖板", - "item.gtceu.fluid_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f流体储量§7发出红石信号。", - "item.gtceu.fluid_filter":"流体过滤卡", - "item.gtceu.fluid_filter.tooltip.0":"§7作§f覆盖板§7时过滤§流体§7的输入/输出。", - "item.gtceu.fluid_filter.tooltip.1":"亦可为§f电动泵§7和§f流体校准器§7提供此功能。", - "item.gtceu.fluid_tag_filter":"流体标签过滤卡", - "item.gtceu.fluid_tag_filter.tooltip.0":"§7作§f覆盖板§7时以§f流体标签§7过滤§f流体§7的输入/输出。", - "item.gtceu.fluid_tag_filter.tooltip.1":"§7可用于升级§f电动泵§7与§f流体校准器§7。", - "item.gtceu.fluid_voiding_cover":"流体销毁覆盖板", - "item.gtceu.fluid_voiding_cover.tooltip.0":"§7作§f覆盖板§7时允许销毁§f流体§7。", - "item.gtceu.fluid_voiding_cover.tooltip.1":"§7加装后使用§f软锤§7激活", - "item.gtceu.foam_sprayer.tooltip.0":"§7喷射建筑泡沫", - "item.gtceu.foam_sprayer.tooltip.1":"右击框架来给框架喷涂泡沫", - "item.gtceu.foam_sprayer.tooltip.2":"泡沫可以染色", - "item.gtceu.foil_extruder_mold":"模头(箔)", - "item.gtceu.foil_extruder_mold.tooltip":"§7用来制作箔的模头", - "item.gtceu.fullers_earth_dust":"漂白土", - "item.gtceu.garnet_sand_dust":"石榴石砂", - "item.gtceu.gear_casting_mold":"模具(齿轮)", - "item.gtceu.gear_casting_mold.small.tooltip":"§7用来制作小型齿轮的模具", - "item.gtceu.gear_casting_mold.tooltip":"§7用来制作齿轮的模具", - "item.gtceu.gear_extruder_mold":"模头(齿轮)", - "item.gtceu.gear_extruder_mold.tooltip":"§7用来制作齿轮的模头", - "item.gtceu.gear_small_extruder_mold.tooltip":"§7用来制作小型齿轮的模头", - "item.gtceu.gelled_toluene":"胶凝甲苯", - "item.gtceu.gelled_toluene.tooltip":"§7炸药原料", - "item.gtceu.glass_gem":"玻璃晶体", - "item.gtceu.glass_plate":"玻璃板", - "item.gtceu.glass_tube":"玻璃管", - "item.gtceu.glass_vial":"%s玻璃试管", - "item.gtceu.glauconite_sand_dust":"海绿石砂", - "item.gtceu.good_electronic_circuit":"优质电子电路", - "item.gtceu.good_electronic_circuit.tooltip.0":"§7你的第二块电路", - "item.gtceu.good_electronic_circuit.tooltip.1":"§cMV级电路", - "item.gtceu.good_integrated_circuit":"优质集成电路", - "item.gtceu.good_integrated_circuit.tooltip.0":"§7更小也更强", - "item.gtceu.good_integrated_circuit.tooltip.1":"§6MV级电路", - "item.gtceu.granitic_mineral_sand_dust":"花岗岩矿砂", - "item.gtceu.gravi_star":"重力之星", - "item.gtceu.gravi_star.tooltip":"§7终极下界之星", - "item.gtceu.gravitation_engine_unit":"重力引擎单元", - "item.gtceu.gray_dye_spray_can":"喷漆罐(灰色)", - "item.gtceu.gray_glass_lens":"玻璃透镜(灰色)", - "item.gtceu.green_dye_spray_can":"喷漆罐(绿色)", - "item.gtceu.green_glass_lens":"玻璃透镜(绿色)", - "item.gtceu.hammer_extruder_mold.tooltip":"§7用来制作锤的模头", - "item.gtceu.hazmat_boots":"防化靴子", - "item.gtceu.hazmat_chestpiece":"防化胸甲", - "item.gtceu.hazmat_headpiece":"防化头盔", - "item.gtceu.hazmat_leggings":"防化护腿", - "item.gtceu.highly_advanced_soc":"HASoC", - "item.gtceu.highly_advanced_soc.tooltip":"§7高度先进的系统级芯片", - "item.gtceu.highly_advanced_soc_wafer":"HASoC晶圆", - "item.gtceu.highly_advanced_soc_wafer.tooltip":"§7高度先进的电路原料", - "item.gtceu.hoe_extruder_mold.tooltip":"§7用来制作锄的模头", - "item.gtceu.hpic_chip":"HPIC芯片", - "item.gtceu.hpic_chip.tooltip":"§7高功率集成电路", - "item.gtceu.hpic_wafer":"HPIC晶圆", - "item.gtceu.hpic_wafer.tooltip":"§7高功率集成电路原料", - "item.gtceu.huge_pipe_extruder_mold":"模头(巨型管道)", - "item.gtceu.hv_battery_hull":"大型电池外壳", - "item.gtceu.hv_battery_hull.tooltip":"§7一个空的§6HV§7电池外壳", - "item.gtceu.hv_cadmium_battery":"大型镉电池", - "item.gtceu.hv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_conveyor_module":"§6HV§r传送带", - "item.gtceu.hv_electric_motor":"§6HV§r电动马达", - "item.gtceu.hv_electric_piston":"§6HV§r电力活塞", - "item.gtceu.hv_electric_pump":"§6HV§r电动泵", - "item.gtceu.hv_emitter":"§6HV§r发射器", - "item.gtceu.hv_field_generator":"§6HV§r力场发生器", - "item.gtceu.hv_fluid_regulator":"§6HV§r流体校准器", - "item.gtceu.hv_item_magnet":"§6HV§r物品磁铁", - "item.gtceu.hv_lithium_battery":"大型锂电池", - "item.gtceu.hv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_power_unit":"§6HV§r能量单元", - "item.gtceu.hv_robot_arm":"§6HV§r机械臂", - "item.gtceu.hv_sensor":"§6HV§r传感器", - "item.gtceu.hv_sodium_battery":"大型钠电池", - "item.gtceu.hv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.hv_solar_panel":"高压太阳能板(§6HV§r)", - "item.gtceu.hv_voltage_coil":"高压线圈", - "item.gtceu.hv_voltage_coil.tooltip":"高级线圈", - "item.gtceu.ice_dust":"碎冰", - "item.gtceu.ilc_chip":"IC芯片", - "item.gtceu.ilc_chip.tooltip":"§7集成逻辑电路", - "item.gtceu.ilc_wafer":"ILC晶圆", - "item.gtceu.ilc_wafer.tooltip":"§7集成电路原料", - "item.gtceu.impure_bentonite_dust":"含杂膨润土", - "item.gtceu.impure_cassiterite_sand_dust":"含杂锡石矿砂", - "item.gtceu.impure_pitchblende_dust":"含杂沥青铀矿", - "item.gtceu.impure_rock_salt_dust":"含杂岩盐", - "item.gtceu.impure_salt_dust":"含杂盐", - "item.gtceu.impure_talc_dust":"含杂滑石", - "item.gtceu.inductor":"电感", - "item.gtceu.inductor.tooltip":"§7一个小线圈", - "item.gtceu.inert_metal_mixture_dust":"惰性金属混合物", - "item.gtceu.infinite_water_cover":"无限水覆盖板", - "item.gtceu.infinite_water_cover.tooltip":"§7作§f覆盖板§7时为所附着的容器供§9水§7。", - "item.gtceu.ingot_casting_mold":"模具(锭)", - "item.gtceu.ingot_casting_mold.tooltip":"§7用来制作锭的模具", - "item.gtceu.ingot_extruder_mold":"模头(锭)", - "item.gtceu.ingot_extruder_mold.tooltip":"§7用来……等会,用熔炉不好吗?", - "item.gtceu.invar_lighter":"殷钢打火机", - "item.gtceu.iridium_metal_residue_dust":"铱金属渣", - "item.gtceu.iron_minecart_wheels":"铁矿车车轮", - "item.gtceu.item_detector_cover":"物品探测覆盖板", - "item.gtceu.item_detector_cover.tooltip":"§7作§f覆盖板§7时依照§f物品储量§7发出红石信号。", - "item.gtceu.item_filter":"物品过滤卡", - "item.gtceu.item_filter.tooltip.0":"§7作§f覆盖板§7时过滤§f物品§7的输入/输出。", - "item.gtceu.item_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.item_smart_filter":"智能物品过滤卡", - "item.gtceu.item_smart_filter.tooltip.0":"作§f覆盖板§7时以§f机器的配方§7过滤§f物品§7的输入/输出。", - "item.gtceu.item_smart_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.item_tag_filter":"物品标签过滤卡", - "item.gtceu.item_tag_filter.tooltip.0":"§7作§f覆盖板§7时以§f物品标签§7过滤§f物品§7的输入/输出。", - "item.gtceu.item_tag_filter.tooltip.1":"§7可用于升级§f传送带§7与§f机械臂§7。", - "item.gtceu.item_voiding_cover":"物品销毁覆盖板", - "item.gtceu.item_voiding_cover.tooltip.0":"§7作§f覆盖板§7时销毁物品。", - "item.gtceu.item_voiding_cover.tooltip.1":"§7加装后使用§f软锤§7激活", - "item.gtceu.iv_battery_hull":"中型钒电池外壳", - "item.gtceu.iv_battery_hull.tooltip":"§7一个空的§1IV§7电池外壳", - "item.gtceu.iv_conveyor_module":"§9IV§r传送带", - "item.gtceu.iv_electric_motor":"§9IV§r电动马达", - "item.gtceu.iv_electric_piston":"§9IV§r电力活塞", - "item.gtceu.iv_electric_pump":"§9IV§r电动泵", - "item.gtceu.iv_emitter":"§9IV§r发射器", - "item.gtceu.iv_field_generator":"§9IV§r力场发生器", - "item.gtceu.iv_fluid_regulator":"§9IV§r流体校准器", - "item.gtceu.iv_power_unit":"§9IV§r能量单元", - "item.gtceu.iv_robot_arm":"§9IV§r机械臂", - "item.gtceu.iv_sensor":"§9IV§r传感器", - "item.gtceu.iv_solar_panel":"强导压太阳能板(§9IV§r)", - "item.gtceu.iv_vanadium_battery":"中型钒电池", - "item.gtceu.iv_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.iv_voltage_coil":"强导压线圈", - "item.gtceu.iv_voltage_coil.tooltip":"精英线圈", - "item.gtceu.lapotron_crystal":"兰波顿水晶", - "item.gtceu.lapotron_crystal.tooltip":"§7可充电电池", - "item.gtceu.lapotronic_energy_orb":"兰波顿能量球", - "item.gtceu.lapotronic_energy_orb.tooltip":"§7可充电电池", - "item.gtceu.lapotronic_energy_orb_cluster":"兰波顿能量球簇", - "item.gtceu.lapotronic_energy_orb_cluster.tooltip":"§7可充电电池", - "item.gtceu.large_pipe_extruder_mold":"模头(大型管道)", - "item.gtceu.light_blue_dye_spray_can":"喷漆罐(淡蓝色)", - "item.gtceu.light_blue_glass_lens":"玻璃透镜(淡蓝色)", - "item.gtceu.light_gray_dye_spray_can":"喷漆罐(淡灰色)", - "item.gtceu.light_gray_glass_lens":"玻璃透镜(淡灰色)", - "item.gtceu.lime_dye_spray_can":"喷漆罐(黄绿色)", - "item.gtceu.lime_glass_lens":"玻璃透镜(黄绿色)", - "item.gtceu.liquid_fuel_jetpack":"液体燃料喷气背包", - "item.gtceu.long_rod_extruder_mold":"模头(长杆)", - "item.gtceu.long_treated_wood_rod":"长防腐木棍", - "item.gtceu.long_wood_rod":"长木棍", - "item.gtceu.lpic_chip":"LPIC芯片", - "item.gtceu.lpic_chip.tooltip":"§7低功率集成电路", - "item.gtceu.lpic_wafer":"LPIC晶圆", - "item.gtceu.lpic_wafer.tooltip":"§7低功率集成电路原料", - "item.gtceu.luv_battery_hull":"大型钒电池外壳", - "item.gtceu.luv_battery_hull.tooltip":"§7一个空的§dLuV§r电池外壳", - "item.gtceu.luv_conveyor_module":"§dLuV§r传送带", - "item.gtceu.luv_electric_motor":"§dLuV§r电动马达", - "item.gtceu.luv_electric_piston":"§dLuV§r电力活塞", - "item.gtceu.luv_electric_pump":"§dLuV§r电动泵", - "item.gtceu.luv_emitter":"§dLuV§r发射器", - "item.gtceu.luv_field_generator":"§dLuV§r力场发生器", - "item.gtceu.luv_fluid_regulator":"§dLuV§r流体校准器", - "item.gtceu.luv_robot_arm":"§dLuV§r机械臂", - "item.gtceu.luv_sensor":"§dLuV§r传感器", - "item.gtceu.luv_solar_panel":"剧差压太阳能板(§dLuV§r)", - "item.gtceu.luv_vanadium_battery":"大型钒电池", - "item.gtceu.luv_vanadium_battery.tooltip":"§7可充电电池", - "item.gtceu.luv_voltage_coil":"剧差压线圈", - "item.gtceu.luv_voltage_coil.tooltip":"大师线圈", - "item.gtceu.lv_battery_hull":"小型电池外壳", - "item.gtceu.lv_battery_hull.tooltip":"§7一个空的§7LV§7电池外壳", - "item.gtceu.lv_cadmium_battery":"小型镉电池", - "item.gtceu.lv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_conveyor_module":"§7LV§r传送带", - "item.gtceu.lv_electric_motor":"§7LV§r电动马达", - "item.gtceu.lv_electric_piston":"§7LV§r电力活塞", - "item.gtceu.lv_electric_pump":"§7LV§r电动泵", - "item.gtceu.lv_emitter":"§7LV§r发射器", - "item.gtceu.lv_field_generator":"§7LV§r力场发生器", - "item.gtceu.lv_fluid_regulator":"§7LV§r流体校准器", - "item.gtceu.lv_item_magnet":"§7LV§r物品磁铁", - "item.gtceu.lv_lithium_battery":"小型锂电池", - "item.gtceu.lv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_power_unit":"§7LV§r能量单元", - "item.gtceu.lv_robot_arm":"§7LV§r机械臂", - "item.gtceu.lv_sensor":"§7LV§r传感器", - "item.gtceu.lv_sodium_battery":"小型钠电池", - "item.gtceu.lv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.lv_solar_panel":"低压太阳能板(§7LV§r)", - "item.gtceu.lv_voltage_coil":"低压线圈", - "item.gtceu.lv_voltage_coil.tooltip":"基础线圈", - "item.gtceu.machine_controller.tooltip":"§7作§f覆盖板§7时可以§f开/关§7机器。", - "item.gtceu.machine_controller_cover":"机器控制覆盖板", - "item.gtceu.machine_memory_card":"机器内存卡", - "item.gtceu.magenta_dye_spray_can":"喷漆罐(品红色)", - "item.gtceu.magenta_glass_lens":"玻璃透镜(品红色)", - "item.gtceu.maintenance_detector_cover":"维护探测覆盖板", - "item.gtceu.mask_filter":"防毒面具过滤罐", - "item.gtceu.matchbox":"火柴盒", - "item.gtceu.matches":"火柴", - "item.gtceu.max_battery":"终极电池", - "item.gtceu.max_battery.tooltip":"§7填满就能通关Minecraft", - "item.gtceu.max_voltage_coil.tooltip":"至高线圈", - "item.gtceu.meat_dust":"肉末", - "item.gtceu.micro_processor":"微型处理器", - "item.gtceu.micro_processor.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor.tooltip.1":"§eMV级电路", - "item.gtceu.micro_processor_assembly":"微型处理器集群", - "item.gtceu.micro_processor_assembly.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_assembly.tooltip.1":"§eHV级电路", - "item.gtceu.micro_processor_computer":"微型处理器超级计算机", - "item.gtceu.micro_processor_computer.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_computer.tooltip.1":"§eEV级电路", - "item.gtceu.micro_processor_mainframe":"微型处理器主机", - "item.gtceu.micro_processor_mainframe.tooltip.0":"§7运算速度惊人!", - "item.gtceu.micro_processor_mainframe.tooltip.1":"§eIV级电路", - "item.gtceu.microchip_processor":"微芯片处理器", - "item.gtceu.microchip_processor.tooltip.0":"§7卓越的基础电路", - "item.gtceu.microchip_processor.tooltip.1":"§eLV级电路", - "item.gtceu.mpic_chip":"MPIC芯片", - "item.gtceu.mpic_chip.tooltip":"§7功率集成电路", - "item.gtceu.mpic_wafer":"MPIC晶圆", - "item.gtceu.mpic_wafer.tooltip":"§7功率集成电路原料", - "item.gtceu.multilayer_fiber_reinforced_circuit_board":"多层纤维强化电路基板", - "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip":"§7精英电路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board":"多层纤维强化印刷电路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip":"§7精英级电路基板", - "item.gtceu.mv_battery_hull":"中型电池外壳", - "item.gtceu.mv_battery_hull.tooltip":"§7一个空的§bMV§7电池外壳", - "item.gtceu.mv_cadmium_battery":"中型镉电池", - "item.gtceu.mv_cadmium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_conveyor_module":"§bMV§r传送带", - "item.gtceu.mv_electric_motor":"§bMV§r电动马达", - "item.gtceu.mv_electric_piston":"§bMV§r电力活塞", - "item.gtceu.mv_electric_pump":"§bMV§r电动泵", - "item.gtceu.mv_emitter":"§bMV§r发射器", - "item.gtceu.mv_field_generator":"§bMV§r力场发生器", - "item.gtceu.mv_fluid_regulator":"§bMV§r流体校准器", - "item.gtceu.mv_lithium_battery":"中型锂电池", - "item.gtceu.mv_lithium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_power_unit":"§bMV§r能量单元", - "item.gtceu.mv_robot_arm":"§bMV§r机械臂", - "item.gtceu.mv_sensor":"§bMV§r传感器", - "item.gtceu.mv_sodium_battery":"中型钠电池", - "item.gtceu.mv_sodium_battery.tooltip":"§7可充电电池", - "item.gtceu.mv_solar_panel":"中压太阳能板(§bMV§r)", - "item.gtceu.mv_voltage_coil":"中压线圈", - "item.gtceu.mv_voltage_coil.tooltip":"优质线圈", - "item.gtceu.name_casting_mold":"模具(命名)", - "item.gtceu.name_casting_mold.tooltip":"§7用来在冲压机床中为物品命名的模具(用铁砧重命名模具)", - "item.gtceu.nan_certificate":"不再是菜鸟的证明", - "item.gtceu.nan_certificate.tooltip":"已接受挑战!", - "item.gtceu.nand_chip":"NAND芯片", - "item.gtceu.nand_chip.tooltip.0":"§7卓越的简单电路", - "item.gtceu.nand_chip.tooltip.1":"§6ULV级电路", - "item.gtceu.nand_memory_chip":"NAND存储器芯片", - "item.gtceu.nand_memory_chip.tooltip":"§7与非逻辑门", - "item.gtceu.nand_memory_wafer":"NAND存储器晶圆", - "item.gtceu.nand_memory_wafer.tooltip":"§7逻辑门原料", - "item.gtceu.nano_cpu_chip":"纳米CPU芯片", - "item.gtceu.nano_cpu_chip.tooltip":"§7纳米中央处理器", - "item.gtceu.nano_cpu_wafer":"纳米CPU晶圆", - "item.gtceu.nano_cpu_wafer.tooltip":"§7纳米电路原料", - "item.gtceu.nano_processor":"纳米处理器", - "item.gtceu.nano_processor.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor.tooltip.1":"§bHV级电路", - "item.gtceu.nano_processor_assembly":"纳米处理器集群", - "item.gtceu.nano_processor_assembly.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_assembly.tooltip.1":"§bEV级电路", - "item.gtceu.nano_processor_computer":"纳米处理器超级计算机", - "item.gtceu.nano_processor_computer.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_computer.tooltip.1":"§bIV级电路", - "item.gtceu.nano_processor_mainframe":"纳米处理器主机", - "item.gtceu.nano_processor_mainframe.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_mainframe.tooltip.1":"§bLuV级电路", - "item.gtceu.nano_saber":"纳米剑", - "item.gtceu.nano_saber.tooltip":"§7尝尝龙神之剑!", - "item.gtceu.nanomuscle_boots":"纳米肌体™套装靴子", - "item.gtceu.nanomuscle_chestplate":"纳米肌体™套装胸甲", - "item.gtceu.nanomuscle_helmet":"纳米肌体™套装头盔", - "item.gtceu.nanomuscle_leggings":"纳米肌体™套装护腿", - "item.gtceu.naquadah_boule":"硅岩掺杂的单晶硅", - "item.gtceu.naquadah_boule.tooltip":"§7电路原料", - "item.gtceu.naquadah_wafer":"硅岩掺杂的晶圆", - "item.gtceu.naquadah_wafer.tooltip":"§7电路原料", - "item.gtceu.neuro_processing_unit":"神经处理单元", - "item.gtceu.neuro_processing_unit.tooltip":"§7神经CPU", - "item.gtceu.neutron_reflector":"铱中子反射板", - "item.gtceu.neutron_reflector.tooltip":"§7坚不可摧", - "item.gtceu.neutronium_boule":"中子素掺杂的单晶硅", - "item.gtceu.neutronium_boule.tooltip":"§7电路原料", - "item.gtceu.neutronium_wafer":"中子素掺杂的晶圆", - "item.gtceu.neutronium_wafer.tooltip":"§7电路原料", - "item.gtceu.nightvision_goggles":"夜视护目镜", - "item.gtceu.nor_memory_chip":"NOR存储器芯片", - "item.gtceu.nor_memory_chip.tooltip":"§7或非逻辑门", - "item.gtceu.nor_memory_wafer":"NOR存储器晶圆", - "item.gtceu.nor_memory_wafer.tooltip":"§7逻辑门原料", - "item.gtceu.normal_pipe_extruder_mold":"模头(普通管道)", - "item.gtceu.nugget_casting_mold":"模具(粒)", - "item.gtceu.nugget_casting_mold.tooltip":"§7用来制作粒的模具", - "item.gtceu.opv_conveyor_module":"§9§lOpV§r传送带", - "item.gtceu.opv_electric_motor":"§9§lOpV§r电动马达", - "item.gtceu.opv_electric_piston":"§9§lOpV§r电力活塞", - "item.gtceu.opv_electric_pump":"§9§lOpV§r电动泵", - "item.gtceu.opv_emitter":"§9OpV§r发射器", - "item.gtceu.opv_field_generator":"§9§lOpV§r力场发生器", - "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流体校准器", - "item.gtceu.opv_robot_arm":"§9§lOpV§r机械臂", - "item.gtceu.opv_sensor":"§9§lOpV§r传感器", - "item.gtceu.opv_voltage_coil.tooltip":"传奇线圈", - "item.gtceu.orange_dye_spray_can":"喷漆罐(橙色)", - "item.gtceu.orange_glass_lens":"玻璃透镜(橙色)", - "item.gtceu.palladium_raw_dust":"粗钯粉", - "item.gtceu.paper_dust":"纸屑", - "item.gtceu.paracetamol_pill":"对乙酰氨基酚药片", - "item.gtceu.petri_dish":"培养皿", - "item.gtceu.petri_dish.tooltip":"§7用来培育细胞", - "item.gtceu.phenolic_circuit_board":"酚醛树脂电路基板", - "item.gtceu.phenolic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.phenolic_printed_circuit_board":"酚醛树脂印刷电路基板", - "item.gtceu.phenolic_printed_circuit_board.tooltip":"§7优质电路基板", - "item.gtceu.phosphorus_boule":"磷掺杂的单晶硅", - "item.gtceu.phosphorus_boule.tooltip":"§7电路原料", - "item.gtceu.phosphorus_wafer":"磷掺杂的晶圆", - "item.gtceu.phosphorus_wafer.tooltip":"§7电路原料", - "item.gtceu.pickaxe_extruder_mold.tooltip":"§7用来制作镐的模头", - "item.gtceu.pill_casting_mold":"模具(药片)", - "item.gtceu.pink_dye_spray_can":"喷漆罐(粉红色)", - "item.gtceu.pink_glass_lens":"玻璃透镜(粉红色)", - "item.gtceu.pipe.huge_extruder_mold.tooltip":"§7用来制作占据整个方块的管道的模头", - "item.gtceu.pipe.large_extruder_mold.tooltip":"§7用来制作大型管道的模头", - "item.gtceu.pipe.normal_extruder_mold.tooltip":"§7用来制作管道的模头", - "item.gtceu.pipe.small_extruder_mold.tooltip":"§7用来制作小型管道的模头", - "item.gtceu.pipe.tiny_extruder_mold.tooltip":"§7用来制作微型管道的模头", - "item.gtceu.pitchblende_dust":"沥青铀矿", - "item.gtceu.plant_ball":"植物球", - "item.gtceu.plastic_circuit_board":"塑料电路基板", - "item.gtceu.plastic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.plastic_printed_circuit_board":"塑料印刷电路基板", - "item.gtceu.plastic_printed_circuit_board.tooltip":"§7优质电路基板", - "item.gtceu.plate_casting_mold":"模具(板)", - "item.gtceu.plate_casting_mold.tooltip":"§7用来制作板的模具", - "item.gtceu.plate_extruder_mold":"模头(板)", - "item.gtceu.plate_extruder_mold.tooltip":"§7用来制作板的模头", - "item.gtceu.platinum_group_sludge_dust":"铂系矿泥", - "item.gtceu.platinum_lighter":"铂打火机", - "item.gtceu.platinum_raw_dust":"粗铂粉", - "item.gtceu.platinum_sludge_residue_dust":"铂泥渣", - "item.gtceu.portable_debug_scanner":"便携式调试扫描仪", - "item.gtceu.portable_scanner":"便携式扫描仪", - "item.gtceu.power_thruster":"电力推进器", - "item.gtceu.programmed_circuit":"编程电路", - "item.gtceu.programmed_circuit.tooltip.0":"右击打开配置页面", - "item.gtceu.programmed_circuit.tooltip.1":"潜行右击有虚拟电路槽的", - "item.gtceu.programmed_circuit.tooltip.2":"机器,将其设置为本电路", - "item.gtceu.programmed_circuit.tooltip.3":"的值。", - "item.gtceu.prospector.hv":"进阶探矿仪(§6HV§r)", - "item.gtceu.prospector.luv":"超级探矿仪(§dLuV§r)", - "item.gtceu.prospector.lv":"探矿仪(§7LV§r)", - "item.gtceu.pure_bentonite_dust":"纯净膨润土", - "item.gtceu.pure_cassiterite_sand_dust":"纯净锡石矿砂", - "item.gtceu.pure_pitchblende_dust":"纯净沥青铀矿", - "item.gtceu.pure_rock_salt_dust":"纯净岩盐", - "item.gtceu.pure_salt_dust":"纯净盐", - "item.gtceu.pure_talc_dust":"纯净滑石", - "item.gtceu.purified_bentonite_ore":"纯净膨润土", - "item.gtceu.purified_cassiterite_sand_ore":"纯净锡石矿砂", - "item.gtceu.purified_pitchblende_ore":"纯净沥青铀矿", - "item.gtceu.purified_talc_ore":"纯净滑石", - "item.gtceu.purple_drink":"紫色饮料", - "item.gtceu.purple_dye_spray_can":"喷漆罐(紫色)", - "item.gtceu.purple_glass_lens":"玻璃透镜(紫色)", - "item.gtceu.qbit_cpu_chip":"量子位CPU芯片", - "item.gtceu.qbit_cpu_chip.tooltip":"§7量子位中央处理器", - "item.gtceu.qbit_cpu_wafer":"量子位CPU晶圆", - "item.gtceu.qbit_cpu_wafer.tooltip":"§7量子位电路原料", - "item.gtceu.quantum_eye":"量子之眼", - "item.gtceu.quantum_eye.tooltip":"§7改良的末影之眼", - "item.gtceu.quantum_processor":"量子处理器", - "item.gtceu.quantum_processor.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor.tooltip.1":"§aEV级电路", - "item.gtceu.quantum_processor_assembly":"量子处理器集群", - "item.gtceu.quantum_processor_assembly.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_assembly.tooltip.1":"§aIV级电路", - "item.gtceu.quantum_processor_computer":"量子处理器超级计算机", - "item.gtceu.quantum_processor_computer.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_computer.tooltip.1":"§aLuV级电路", - "item.gtceu.quantum_processor_mainframe":"量子处理器主机", - "item.gtceu.quantum_processor_mainframe.tooltip.0":"§7量子计算终成现实!", - "item.gtceu.quantum_processor_mainframe.tooltip.1":"§aZPM级电路", - "item.gtceu.quantum_star":"量子之星", - "item.gtceu.quantum_star.tooltip":"§7改良的下界之星", - "item.gtceu.quarktech_boots":"夸克高科™套装靴子", - "item.gtceu.quarktech_chestplate":"夸克高科™套装胸甲", - "item.gtceu.quarktech_helmet":"夸克高科™套装头盔", - "item.gtceu.quarktech_leggings":"夸克高科™套装护腿", - "item.gtceu.quartz_sand_dust":"石英砂", - "item.gtceu.rad_away_pill":"消辐宁™药片", - "item.gtceu.ram_chip":"RAM芯片", - "item.gtceu.ram_chip.tooltip":"§7随机存取存储器", - "item.gtceu.ram_wafer":"RAM晶圆", - "item.gtceu.ram_wafer.tooltip":"§7内存原料", - "item.gtceu.rare_earth_dust":"稀土", - "item.gtceu.rarest_metal_mixture_dust":"稀有金属混合物", - "item.gtceu.raw_crystal_chip":"晶体芯片原料", - "item.gtceu.raw_crystal_chip.tooltip":"§7晶体处理器原料", - "item.gtceu.raw_crystal_chip_parts":"晶体芯片部件原料", - "item.gtceu.raw_crystal_chip_parts.tooltip":"§7晶体处理器部件原料", - "item.gtceu.red_dye_spray_can":"喷漆罐(红色)", - "item.gtceu.red_glass_lens":"玻璃透镜(红色)", - "item.gtceu.refined_bentonite_ore":"精炼膨润土", - "item.gtceu.refined_cassiterite_sand_ore":"精炼锡石矿砂", - "item.gtceu.refined_pitchblende_ore":"精炼沥青铀矿", - "item.gtceu.refined_talc_ore":"精炼滑石", - "item.gtceu.resin_circuit_board":"覆膜电路基板", - "item.gtceu.resin_circuit_board.tooltip":"§7电路的基底", - "item.gtceu.resin_printed_circuit_board":"覆膜印刷电路基板", - "item.gtceu.resin_printed_circuit_board.tooltip":"§7基础电路基板", - "item.gtceu.resistor":"电阻", - "item.gtceu.resistor.tooltip":"§7基础电子元件", - "item.gtceu.ring_extruder_mold":"模头(环)", - "item.gtceu.ring_extruder_mold.tooltip":"§7用来制作环的模头", - "item.gtceu.robot.arm.tooltip":"作§f覆盖板§7时限制§f物品§7到特定数量。", - "item.gtceu.rock_salt_dust":"岩盐", - "item.gtceu.rod_extruder_mold":"模头(杆)", - "item.gtceu.rod_extruder_mold.tooltip":"§7用来制作杆的模头", - "item.gtceu.rod_long_extruder_mold.tooltip":"§7用来制作长杆的模头", - "item.gtceu.rotor_casting_mold":"模具(转子)", - "item.gtceu.rotor_casting_mold.tooltip":"§7用来制作转子的模具", - "item.gtceu.rotor_extruder_mold":"模头(转子)", - "item.gtceu.rotor_extruder_mold.tooltip":"§7用来制作转子的模头", - "item.gtceu.rubber_boat":"橡胶木船", - "item.gtceu.rubber_chest_boat":"橡胶木运输船", - "item.gtceu.rubber_gloves":"橡胶手套", - "item.gtceu.salt_dust":"盐", - "item.gtceu.saw_extruder_mold.tooltip":"§7用来制作锯的模头", - "item.gtceu.shovel_extruder_mold.tooltip":"§7用来制作锹的模头", - "item.gtceu.shutter_module_cover":"扇板", - "item.gtceu.shutter_module_cover.tooltip":"§7作§f覆盖板§7时§f阻止§7机器侧面的任何§f传输§7行为。", - "item.gtceu.silicon_boule":"单晶硅", - "item.gtceu.silicon_boule.tooltip":"§7电路原料", - "item.gtceu.silicon_wafer":"硅晶圆", - "item.gtceu.silicon_wafer.tooltip":"§7电路原料", - "item.gtceu.simple_soc":"简易SoC", - "item.gtceu.simple_soc.tooltip":"§7简易系统级芯片", - "item.gtceu.simple_soc_wafer":"简易SoC晶圆", - "item.gtceu.simple_soc_wafer.tooltip":"§7简易电路原料", - "item.gtceu.small_ash_dust":"小堆灰烬", - "item.gtceu.small_basaltic_mineral_sand_dust":"小堆玄武岩矿砂", - "item.gtceu.small_bentonite_dust":"小堆膨润土", - "item.gtceu.small_blaze_dust":"小堆烈焰粉", - "item.gtceu.small_bone_dust":"小堆骨粉", - "item.gtceu.small_cassiterite_sand_dust":"小堆锡石矿砂", - "item.gtceu.small_dark_ash_dust":"小堆黑色灰烬", - "item.gtceu.small_fullers_earth_dust":"小堆漂白土", - "item.gtceu.small_garnet_sand_dust":"小堆石榴石砂", - "item.gtceu.small_gear_casting_mold":"模具(小型齿轮)", - "item.gtceu.small_gear_extruder_mold":"模头(小型齿轮)", - "item.gtceu.small_glauconite_sand_dust":"小堆海绿石砂", - "item.gtceu.small_granitic_mineral_sand_dust":"小堆花岗岩矿砂", - "item.gtceu.small_gunpowder_dust":"小堆火药", - "item.gtceu.small_ice_dust":"小堆碎冰", - "item.gtceu.small_inert_metal_mixture_dust":"小堆惰性金属混合物", - "item.gtceu.small_iridium_metal_residue_dust":"小堆铱金属渣", - "item.gtceu.small_meat_dust":"小堆肉末", - "item.gtceu.small_palladium_raw_dust":"小堆粗钯粉", - "item.gtceu.small_paper_dust":"小堆纸屑", - "item.gtceu.small_pipe_extruder_mold":"模头(小型管道)", - "item.gtceu.small_pitchblende_dust":"小堆沥青铀矿", - "item.gtceu.small_platinum_group_sludge_dust":"小堆铂系矿泥", - "item.gtceu.small_platinum_raw_dust":"小堆粗铂粉", - "item.gtceu.small_platinum_sludge_residue_dust":"小堆铂泥渣", - "item.gtceu.small_quartz_sand_dust":"小堆石英砂", - "item.gtceu.small_rare_earth_dust":"小堆稀土", - "item.gtceu.small_rarest_metal_mixture_dust":"小堆稀有金属混合物", - "item.gtceu.small_rock_salt_dust":"小堆岩盐", - "item.gtceu.small_salt_dust":"小堆盐", - "item.gtceu.small_sugar_dust":"小堆糖", - "item.gtceu.small_talc_dust":"小堆滑石", - "item.gtceu.small_treated_wood_dust":"小堆防腐木浆", - "item.gtceu.small_wheat_dust":"小堆面粉", - "item.gtceu.small_wood_dust":"小堆木浆", - "item.gtceu.smd_capacitor":"贴片电容", - "item.gtceu.smd_capacitor.tooltip":"§7电子元件", - "item.gtceu.smd_diode":"贴片二极管", - "item.gtceu.smd_diode.tooltip":"§7电子元件", - "item.gtceu.smd_inductor":"贴片电感", - "item.gtceu.smd_inductor.tooltip":"§7电子元件", - "item.gtceu.smd_resistor":"贴片电阻", - "item.gtceu.smd_resistor.tooltip":"§7电子元件", - "item.gtceu.smd_transistor":"贴片晶体管", - "item.gtceu.smd_transistor.tooltip":"§7电子元件", - "item.gtceu.soc":"SoC", - "item.gtceu.soc.tooltip":"§7系统级芯片", - "item.gtceu.soc_wafer":"SoC晶圆", - "item.gtceu.soc_wafer.tooltip":"§7基础电路原料", - "item.gtceu.solar_panel":"太阳能板", - "item.gtceu.solar_panel.tooltip.0":"§7愿太阳与你同在。", - "item.gtceu.solar_panel.tooltip.1":"§7作§f覆盖板§7时利用§e太阳§7生产§f能量§7。", - "item.gtceu.solvent_spray_can":"喷漆罐(溶剂)", - "item.gtceu.stainless_steel_fluid_cell":"%s不锈钢单元", - "item.gtceu.steel_fluid_cell":"%s钢单元", - "item.gtceu.steel_minecart_wheels":"钢矿车车轮", - "item.gtceu.stem_cells":"干细胞", - "item.gtceu.stem_cells.tooltip":"§7智慧原料", - "item.gtceu.sticky_resin":"黏性树脂", - "item.gtceu.storage_cover":"存储覆盖板", - "item.gtceu.sugar_gem":"方糖", - "item.gtceu.sus_record":"音乐唱片", - "item.gtceu.sus_record.desc":"§7可疑!", - "item.gtceu.sword_extruder_mold.tooltip":"§7用来制作剑刃的模头", - "item.gtceu.tag_filter.tooltip.0":"作§f覆盖板§7时以§f标签§7过滤§f物品§7的输入/输出。", - "item.gtceu.tag_filter.tooltip.1":"亦可为§f传送带§7和§f机械臂§7提供此功能。", - "item.gtceu.talc_dust":"滑石", - "item.gtceu.tantalum_capacitor":"钽电容", - "item.gtceu.terminal":"终端", - "item.gtceu.terminal.tooltip":"潜行右击多方块控制器以自动搭建此多方块结构", - "item.gtceu.tiny_ash_dust":"小撮灰烬", - "item.gtceu.tiny_basaltic_mineral_sand_dust":"小撮玄武岩矿砂", - "item.gtceu.tiny_bentonite_dust":"小撮膨润土", - "item.gtceu.tiny_blaze_dust":"小撮烈焰粉", - "item.gtceu.tiny_bone_dust":"小撮骨粉", - "item.gtceu.tiny_cassiterite_sand_dust":"小撮锡石矿砂", - "item.gtceu.tiny_dark_ash_dust":"小撮黑色灰烬", - "item.gtceu.tiny_fullers_earth_dust":"小撮漂白土", - "item.gtceu.tiny_garnet_sand_dust":"小撮石榴石砂", - "item.gtceu.tiny_glauconite_sand_dust":"小撮海绿石砂", - "item.gtceu.tiny_granitic_mineral_sand_dust":"小撮花岗岩矿砂", - "item.gtceu.tiny_gunpowder_dust":"小撮火药", - "item.gtceu.tiny_ice_dust":"小撮碎冰", - "item.gtceu.tiny_inert_metal_mixture_dust":"小撮惰性金属混合物", - "item.gtceu.tiny_iridium_metal_residue_dust":"小撮铱金属渣", - "item.gtceu.tiny_meat_dust":"小撮肉末", - "item.gtceu.tiny_palladium_raw_dust":"小撮粗钯粉", - "item.gtceu.tiny_paper_dust":"小撮纸屑", - "item.gtceu.tiny_pipe_extruder_mold":"模头(微型管道)", - "item.gtceu.tiny_pitchblende_dust":"小撮沥青铀矿", - "item.gtceu.tiny_platinum_group_sludge_dust":"小撮铂系矿泥", - "item.gtceu.tiny_platinum_raw_dust":"小撮粗铂粉", - "item.gtceu.tiny_platinum_sludge_residue_dust":"小撮铂泥渣", - "item.gtceu.tiny_quartz_sand_dust":"小撮石英砂", - "item.gtceu.tiny_rare_earth_dust":"小撮稀土", - "item.gtceu.tiny_rarest_metal_mixture_dust":"小撮稀有金属混合物", - "item.gtceu.tiny_rock_salt_dust":"小撮岩盐", - "item.gtceu.tiny_salt_dust":"小撮盐", - "item.gtceu.tiny_sugar_dust":"小撮糖", - "item.gtceu.tiny_talc_dust":"小撮滑石", - "item.gtceu.tiny_treated_wood_dust":"小撮防腐木浆", - "item.gtceu.tiny_wheat_dust":"小撮面粉", - "item.gtceu.tiny_wood_dust":"小撮木浆", - "item.gtceu.titanium_fluid_cell":"%s钛单元", - "item.gtceu.tool.aoe.columns":"列", - "item.gtceu.tool.aoe.layers":"层", - "item.gtceu.tool.aoe.rows":"行", - "item.gtceu.tool.axe":"%s斧", - "item.gtceu.tool.behavior.aoe_mining":"§5作用范围:§f%sx%sx%s", - "item.gtceu.tool.behavior.block_rotation":"§2精械师傅:§f旋转方块", - "item.gtceu.tool.behavior.crop_harvesting":"§a庄稼收割:§f收获成熟的作物", - "item.gtceu.tool.behavior.damage_boost":"§4伤害增益:§f对%s造成额外伤害", - "item.gtceu.tool.behavior.grass_path":"§e园林策划:§f制造草径", - "item.gtceu.tool.behavior.ground_tilling":"§e耕地农夫:§f耕耘土地", - "item.gtceu.tool.behavior.plunger":"§9水管工人:§f清除流体", - "item.gtceu.tool.behavior.rail_rotation":"§e铁路技工:§f旋转轨道", - "item.gtceu.tool.behavior.relocate_mining":"§2磁力吸引:§f吸入采掘的方块与生物掉落物", - "item.gtceu.tool.behavior.remove_wax":"§6清洁试剂:§f脱蜡", - "item.gtceu.tool.behavior.scrape":"§b抛光工艺:§f除锈", - "item.gtceu.tool.behavior.shield_disable":"§c野兽蛮攻:§f无视盾牌", - "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f精准采集冰块", - "item.gtceu.tool.behavior.strip_log":"§5林业工匠:§f剥去原木的表皮", - "item.gtceu.tool.behavior.torch_place":"§e洞窟探客:§f右击放置火把", - "item.gtceu.tool.behavior.tree_felling":"§4伐木好手:§f连锁砍树", - "item.gtceu.tool.butchery_knife":"%s屠刀", - "item.gtceu.tool.butchery_knife.tooltip":"§8攻击速度较慢", - "item.gtceu.tool.buzzsaw":"%s圆锯(§7LV§r)", - "item.gtceu.tool.buzzsaw.tooltip":"§8并不适合用来采掘方块", - "item.gtceu.tool.crowbar":"%s撬棍", - "item.gtceu.tool.crowbar.tooltip":"§8卸下覆盖板", - "item.gtceu.tool.ev_drill":"%s电钻(§5EV§r)", - "item.gtceu.tool.file":"%s锉", - "item.gtceu.tool.hammer":"%s锻造锤", - "item.gtceu.tool.hammer.tooltip":"§8锤碎而非采掘方块", - "item.gtceu.tool.harvest_level.0":"§8木", - "item.gtceu.tool.harvest_level.1":"§7石头", - "item.gtceu.tool.harvest_level.2":"§a铁", - "item.gtceu.tool.harvest_level.3":"§b钻石", - "item.gtceu.tool.harvest_level.4":"§d下界合金", - "item.gtceu.tool.harvest_level.5":"§9铿铀", - "item.gtceu.tool.harvest_level.6":"§c中子素", - "item.gtceu.tool.hoe":"%s锄", - "item.gtceu.tool.hv_chainsaw":"%s链锯(§6HV§r)", - "item.gtceu.tool.hv_drill":"%s电钻(§6HV§r)", - "item.gtceu.tool.hv_wirecutter":"%s剪线钳(HV)", - "item.gtceu.tool.hv_wrench":"%s扳手(§6HV§r)", - "item.gtceu.tool.hv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.iv_drill":"%s电钻(§9IV§r)", - "item.gtceu.tool.iv_wirecutter":"%s剪线钳(IV)", - "item.gtceu.tool.iv_wrench":"%s扳手(§9IV§r)", - "item.gtceu.tool.iv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.knife":"%s刀", - "item.gtceu.tool.lighter.platinum.tooltip":"§7上面刻着一位知名的恶作剧大师", - "item.gtceu.tool.lv_chainsaw":"%s链锯(§7LV§r)", - "item.gtceu.tool.lv_drill":"%s电钻(§7LV§r)", - "item.gtceu.tool.lv_screwdriver":"%s螺丝刀(§7LV§r)", - "item.gtceu.tool.lv_screwdriver.tooltip":"§8调整覆盖板和机器", - "item.gtceu.tool.lv_wirecutter":"%s剪线钳(LV)", - "item.gtceu.tool.lv_wrench":"%s扳手(§7LV§r)", - "item.gtceu.tool.lv_wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.tool.mallet":"%s软锤", - "item.gtceu.tool.mallet.tooltip.0":"§8潜行以在当前配方完成后暂停机器。", - "item.gtceu.tool.mallet.tooltip.1":"§8关/开机", - "item.gtceu.tool.matchbox.tooltip":"§7别把它当成玩具车了", - "item.gtceu.tool.mining_hammer":"%s采矿锤", - "item.gtceu.tool.mining_hammer.tooltip":"§8一次性开采大片区域(除非你蹲下)", - "item.gtceu.tool.mortar":"%s研钵", - "item.gtceu.tool.mv_chainsaw":"%s链锯(§bMV§r)", - "item.gtceu.tool.mv_drill":"%s电钻(§bMV§r)", - "item.gtceu.tool.pickaxe":"%s镐", - "item.gtceu.tool.plunger":"%s搋子", - "item.gtceu.tool.plunger.tooltip":"§8从机器中抽除流体", - "item.gtceu.tool.replace_tool_head":"在合成栏用新的工具头替换", - "item.gtceu.tool.rolling_pin":"%s擀面杖", - "item.gtceu.tool.saw":"%s锯", - "item.gtceu.tool.screwdriver":"%s螺丝刀", - "item.gtceu.tool.screwdriver.tooltip":"§8调整覆盖板和机器", - "item.gtceu.tool.scythe":"%s镰刀", - "item.gtceu.tool.scythe.tooltip":"§8因为镰刀(scythe)没有意义(sense)", - "item.gtceu.tool.shears":"%s剪刀", - "item.gtceu.tool.shovel":"%s锹", - "item.gtceu.tool.spade":"%s铲", - "item.gtceu.tool.spade.tooltip":"§8一次性开采大片区域(除非你蹲下)", - "item.gtceu.tool.sword":"%s剑", - "item.gtceu.tool.tooltip.attack_damage":"§c攻击伤害§r:%s", - "item.gtceu.tool.tooltip.attack_speed":"§9攻击速度§r:%s", - "item.gtceu.tool.tooltip.crafting_uses":"§a合成耐久度§r:%s", - "item.gtceu.tool.tooltip.general_uses":"§b耐久度§r:%s", - "item.gtceu.tool.tooltip.harvest_level":"§e采掘等级:%s", - "item.gtceu.tool.tooltip.harvest_level_extra":"§e采掘等级:%s§f(%s§f)", - "item.gtceu.tool.tooltip.max_uses":"§e最大耐久度§r:%s", - "item.gtceu.tool.tooltip.mining_speed":"§d采掘速度§r:%s", - "item.gtceu.tool.tooltip.repair_info":"§8按住SHIFT显示修复详情", - "item.gtceu.tool.tooltip.repair_material":"§8修复材料§r:§f§a%s", - "item.gtceu.tool.usable_as":"§8可用作§r:§f%s", - "item.gtceu.tool.wire_cutter":"%s剪线钳", - "item.gtceu.tool.wrench":"%s扳手", - "item.gtceu.tool.wrench.tooltip":"§8按住左键以拆卸机器", - "item.gtceu.transistor":"晶体管", - "item.gtceu.transistor.tooltip":"§7基础电子元件", - "item.gtceu.treated_wood_boat":"防腐木船", - "item.gtceu.treated_wood_bolt":"短防腐木棍", - "item.gtceu.treated_wood_chest_boat":"防腐木运输船", - "item.gtceu.treated_wood_dust":"防腐木浆", - "item.gtceu.treated_wood_plate":"防腐木板", - "item.gtceu.treated_wood_rod":"防腐木棍", - "item.gtceu.tungsten_grinding_head":"钨研磨头", - "item.gtceu.tungsten_steel_fluid_cell":"%s钨钢单元", - "item.gtceu.turbine_rotor":"%s涡轮转子", - "item.gtceu.turbine_rotor.tooltip":"供涡轮机使用的涡轮转子", - "item.gtceu.uev_conveyor_module":"§aUEV§r传送带", - "item.gtceu.uev_electric_motor":"§aUEV§r电动马达", - "item.gtceu.uev_electric_piston":"§aUEV§r电力活塞", - "item.gtceu.uev_electric_pump":"§aUEV§r电动泵", - "item.gtceu.uev_emitter":"§aUEV§r发射器", - "item.gtceu.uev_field_generator":"§aUEV§r力场发生器", - "item.gtceu.uev_fluid_regulator":"§aUEV§r流体校准器", - "item.gtceu.uev_robot_arm":"§aUEV§r机械臂", - "item.gtceu.uev_sensor":"§aUEV§r传感器", - "item.gtceu.uev_voltage_coil.tooltip":"超凡线圈", - "item.gtceu.uhpic_chip":"UHPIC芯片", - "item.gtceu.uhpic_chip.tooltip":"§7超高功率集成电路", - "item.gtceu.uhpic_wafer":"UHPIC晶圆", - "item.gtceu.uhpic_wafer.tooltip":"§7超高功率集成电路原料", - "item.gtceu.uhv_conveyor_module":"§4UHV§r传送带", - "item.gtceu.uhv_electric_motor":"§4UHV§r电动马达", - "item.gtceu.uhv_electric_piston":"§4UHV§r电力活塞", - "item.gtceu.uhv_electric_pump":"§4UHV§r电动泵", - "item.gtceu.uhv_emitter":"§4UHV§r发射器", - "item.gtceu.uhv_field_generator":"§4UHV§r力场发生器", - "item.gtceu.uhv_fluid_regulator":"§4UHV§r流体校准器", - "item.gtceu.uhv_robot_arm":"§4UHV§r机械臂", - "item.gtceu.uhv_sensor":"§4UHV§r传感器", - "item.gtceu.uhv_voltage_coil.tooltip":"极致线圈", - "item.gtceu.uiv_conveyor_module":"§2UIV§r传送带", - "item.gtceu.uiv_electric_motor":"§2UIV§r电动马达", - "item.gtceu.uiv_electric_piston":"§2UIV§r电力活塞", - "item.gtceu.uiv_electric_pump":"§2UIV§r电动泵", - "item.gtceu.uiv_emitter":"§2UIV§r发射器", - "item.gtceu.uiv_field_generator":"§2UIV§r力场发生器", - "item.gtceu.uiv_fluid_regulator":"§2UIV§r流体校准器", - "item.gtceu.uiv_robot_arm":"§2UIV§r机械臂", - "item.gtceu.uiv_sensor":"§2UIV§r传感器", - "item.gtceu.uiv_voltage_coil.tooltip":"疯狂线圈", - "item.gtceu.ulpic_chip":"ULPIC芯片", - "item.gtceu.ulpic_chip.tooltip":"§7超低功率集成电路", - "item.gtceu.ulpic_wafer":"ULPIC晶圆", - "item.gtceu.ulpic_wafer.tooltip":"§7超低功率集成电路原料", - "item.gtceu.ulv_solar_panel":"超低压太阳能板(§8ULV§r)", - "item.gtceu.ulv_tantalum_battery.tooltip":"§7可充电电池", - "item.gtceu.ulv_voltage_coil":"超低压线圈", - "item.gtceu.ulv_voltage_coil.tooltip":"初级线圈", - "item.gtceu.universal_fluid_cell":"%s通用单元", - "item.gtceu.uv_battery_hull":"大型超能硅岩电池外壳", - "item.gtceu.uv_battery_hull.tooltip":"§7一个空的§3UV§7电池外壳", - "item.gtceu.uv_conveyor_module":"§3UV§r传送带", - "item.gtceu.uv_electric_motor":"§3UV§r电动马达", - "item.gtceu.uv_electric_piston":"§3UV§r电力活塞", - "item.gtceu.uv_electric_pump":"§3UV§r电动泵", - "item.gtceu.uv_emitter":"§3UV§r发射器", - "item.gtceu.uv_field_generator":"§3UV§r力场发生器", - "item.gtceu.uv_fluid_regulator":"§3UV§r流体校准器", - "item.gtceu.uv_naquadria_battery":"大型超能硅岩电池", - "item.gtceu.uv_naquadria_battery.tooltip":"§7可充电电池", - "item.gtceu.uv_robot_arm":"§3UV§r机械臂", - "item.gtceu.uv_sensor":"§3UV§r传感器", - "item.gtceu.uv_solar_panel":"极限压太阳能板(§3UV§r)", - "item.gtceu.uv_voltage_coil":"极限压线圈", - "item.gtceu.uv_voltage_coil.tooltip":"终极线圈", - "item.gtceu.uxv_conveyor_module":"§eUXV§r传送带", - "item.gtceu.uxv_electric_motor":"§eUXV§r电动马达", - "item.gtceu.uxv_electric_piston":"§eUXV§r电力活塞", - "item.gtceu.uxv_electric_pump":"§eUXV§r§r电动泵", - "item.gtceu.uxv_emitter":"§eUXV§r发射器", - "item.gtceu.uxv_field_generator":"§eUXV§r力场发生器", - "item.gtceu.uxv_fluid_regulator":"§eUXV§r流体校准器", - "item.gtceu.uxv_robot_arm":"§eUXV§r机械臂", - "item.gtceu.uxv_sensor":"§eUXV§r传感器", - "item.gtceu.uxv_voltage_coil.tooltip":"史诗线圈", - "item.gtceu.vacuum_tube":"真空管", - "item.gtceu.vacuum_tube.tooltip.0":"§7技术上是二极管", - "item.gtceu.vacuum_tube.tooltip.1":"§cULV等级", - "item.gtceu.wetware_circuit_board":"湿件电路基板", - "item.gtceu.wetware_circuit_board.tooltip":"§7维生之板", - "item.gtceu.wetware_printed_circuit_board":"湿件印刷电路基板", - "item.gtceu.wetware_printed_circuit_board.tooltip":"§7维生之板", - "item.gtceu.wetware_processor":"湿件处理器", - "item.gtceu.wetware_processor.tooltip.0":"§7祂在看我吗?", - "item.gtceu.wetware_processor.tooltip.1":"§4LuV级电路", - "item.gtceu.wetware_processor_assembly":"湿件处理器集群", - "item.gtceu.wetware_processor_assembly.tooltip.0":"§7可以玩Minecraft", - "item.gtceu.wetware_processor_assembly.tooltip.1":"§4ZPM级电路", - "item.gtceu.wetware_processor_computer":"湿件处理器超级计算机", - "item.gtceu.wetware_processor_computer.tooltip.0":"§7肉体与机器的终极结合", - "item.gtceu.wetware_processor_computer.tooltip.1":"§4UV级电路", - "item.gtceu.wetware_processor_mainframe":"湿件处理器主机", - "item.gtceu.wetware_processor_mainframe.tooltip.0":"§7千载独步,惟公一人", - "item.gtceu.wetware_processor_mainframe.tooltip.1":"§4UHV级电路", - "item.gtceu.wheat_dust":"面粉", - "item.gtceu.white_dye_spray_can":"喷漆罐(白色)", - "item.gtceu.wire_extruder_mold":"模头(导线)", - "item.gtceu.wire_extruder_mold.tooltip":"§7用来制作导线的模头", - "item.gtceu.wood_bolt":"短木棍", - "item.gtceu.wood_dust":"木浆", - "item.gtceu.wood_plate":"木板", - "item.gtceu.yellow_dye_spray_can":"喷漆罐(黄色)", - "item.gtceu.yellow_glass_lens":"玻璃透镜(黄色)", - "item.gtceu.zero_point_module":"零点模块", - "item.gtceu.zpm_battery_hull":"中型超能硅岩电池外壳", - "item.gtceu.zpm_battery_hull.tooltip":"§7一个空的§fZPM§7电池外壳", - "item.gtceu.zpm_conveyor_module":"§cZPM§r传送带", - "item.gtceu.zpm_electric_motor":"§cZPM§r电动马达", - "item.gtceu.zpm_electric_piston":"§cZPM§r电力活塞", - "item.gtceu.zpm_electric_pump":"§cZPM§r电动泵", - "item.gtceu.zpm_emitter":"§cZPM§r发射器", - "item.gtceu.zpm_field_generator":"§cZPM§r力场发生器", - "item.gtceu.zpm_fluid_regulator":"§cZPM§r流体校准器", - "item.gtceu.zpm_naquadria_battery":"中型超能硅岩电池", - "item.gtceu.zpm_naquadria_battery.tooltip":"§7可充电电池", - "item.gtceu.zpm_robot_arm":"§cZPM§r机械臂", - "item.gtceu.zpm_sensor":"§cZPM§r传感器", - "item.gtceu.zpm_solar_panel":"零点压太阳能板(§cZPM§r)", - "item.gtceu.zpm_voltage_coil":"零点压线圈", - "item.gtceu.zpm_voltage_coil.tooltip":"超级线圈", - "item.invalid.name":"无效物品", - "item.netherrack_nether_quartz":"下界石英矿石", - "item.toggle.advanced.info.tooltip":"§8<按住Shift查阅已存储配置信息>", - "itemGroup.gtceu.decoration":"格雷科技 | 装饰方块", - "itemGroup.gtceu.item":"格雷科技 | 物品", - "itemGroup.gtceu.machine":"格雷科技 | 机器", - "itemGroup.gtceu.material_block":"格雷科技 | 材料-方块", - "itemGroup.gtceu.material_fluid":"格雷科技 | 材料-流体容器", - "itemGroup.gtceu.material_item":"格雷科技 | 材料-物品", - "itemGroup.gtceu.material_pipe":"格雷科技 | 材料-管道", - "itemGroup.gtceu.tool":"格雷科技 | 工具", - "ldlib.gui.editor.register.editor.gtceu.mui":"机器UI项目", - "ldlib.gui.editor.register.editor.gtceu.rtui":"配方类型UI项目", - "ldlib.gui.editor.register.editor.gtceu.template_tab":"模板", - "mataarmor.hud.supply_mode":"供能模式:%s", - "material.gtceu.acetic_acid":"乙酸", - "material.gtceu.acetic_anhydride":"乙酸酐", - "material.gtceu.acetone":"丙酮", - "material.gtceu.acidic_enriched_naquadah_solution":"酸性富集硅岩溶液", - "material.gtceu.acidic_naquadria_solution":"酸性超能硅岩溶液", - "material.gtceu.acidic_osmium_solution":"酸性锇溶液", - "material.gtceu.actinium":"锕", - "material.gtceu.activated_carbon":"活性炭", - "material.gtceu.agar":"琼脂", - "material.gtceu.air":"空气", - "material.gtceu.allyl_chloride":"烯丙基氯", - "material.gtceu.almandine":"铁铝榴石", - "material.gtceu.aluminium":"铝", - "material.gtceu.aluminium_sulfite":"亚硫酸铝", - "material.gtceu.alunite":"明矾石", - "material.gtceu.americium":"镅", - "material.gtceu.amethyst":"紫水晶", - "material.gtceu.aminophenol":"氨基苯酚", - "material.gtceu.ammonia":"氨", - "material.gtceu.ammonium_chloride":"氯化铵", - "material.gtceu.ammonium_formate":"甲酸铵", - "material.gtceu.andesite":"安山岩", - "material.gtceu.andradite":"钙铁榴石", - "material.gtceu.annealed_copper":"退火铜", - "material.gtceu.antimony":"锑", - "material.gtceu.antimony_trifluoride":"三氟化锑", - "material.gtceu.antimony_trioxide":"三氧化二锑", - "material.gtceu.apatite":"磷灰石", - "material.gtceu.aqua_regia":"王水", - "material.gtceu.argon":"氩", - "material.gtceu.arsenic":"砷", - "material.gtceu.arsenic_trioxide":"三氧化二砷", - "material.gtceu.asbestos":"石棉", - "material.gtceu.ash":"灰烬", - "material.gtceu.astatine":"砹", - "material.gtceu.bacteria":"细菌", - "material.gtceu.bacterial_sludge":"细菌浆液", - "material.gtceu.barite":"重晶石", - "material.gtceu.barium":"钡", - "material.gtceu.barium_sulfide":"硫化钡", - "material.gtceu.basalt":"玄武岩", - "material.gtceu.basaltic_mineral_sand":"玄武岩矿砂", - "material.gtceu.bastnasite":"氟碳镧铈矿", - "material.gtceu.battery_alloy":"电池合金", - "material.gtceu.bauxite":"铝土矿", - "material.gtceu.bentonite":"膨润土", - "material.gtceu.benzene":"苯", - "material.gtceu.berkelium":"锫", - "material.gtceu.beryllium":"铍", - "material.gtceu.bio_diesel":"生物柴油", - "material.gtceu.biomass":"生物质", - "material.gtceu.biotite":"黑云母", - "material.gtceu.biphenyl":"联苯", - "material.gtceu.bismuth":"铋", - "material.gtceu.bismuth_bronze":"铋青铜", - "material.gtceu.bisphenol_a":"双酚A", - "material.gtceu.black_bronze":"黑青铜", - "material.gtceu.black_dye":"黑色染料", - "material.gtceu.black_steel":"黑钢", - "material.gtceu.blackstone":"黑石", - "material.gtceu.blaze":"烈焰", - "material.gtceu.blue_alloy":"蓝色合金", - "material.gtceu.blue_dye":"蓝色染料", - "material.gtceu.blue_steel":"蓝钢", - "material.gtceu.blue_topaz":"蓝黄玉", - "material.gtceu.bohrium":"钅波", - "material.gtceu.bone":"骨头", - "material.gtceu.borax":"硼砂", - "material.gtceu.bornite":"斑铜矿", - "material.gtceu.boron":"硼", - "material.gtceu.borosilicate_glass":"硼硅玻璃", - "material.gtceu.brass":"黄铜", - "material.gtceu.brick":"砖", - "material.gtceu.bromine":"溴", - "material.gtceu.bronze":"青铜", - "material.gtceu.brown_dye":"棕色染料", - "material.gtceu.butadiene":"丁二烯", - "material.gtceu.butane":"丁烷", - "material.gtceu.butene":"丁烯", - "material.gtceu.butyraldehyde":"丁醛", - "material.gtceu.cadmium":"镉", - "material.gtceu.caesium":"铯", - "material.gtceu.calcite":"方解石", - "material.gtceu.calcium":"钙", - "material.gtceu.calcium_carbonate":"碳酸钙", - "material.gtceu.calcium_chloride":"氯化钙", - "material.gtceu.calcium_ferrocyanide":"亚铁氰化钙", - "material.gtceu.calcium_hydroxide":"氢氧化钙", - "material.gtceu.calcium_phosphide":"磷化钙", - "material.gtceu.californium":"锎", - "material.gtceu.caprolactam":"己内酰胺", - "material.gtceu.carbon":"碳", - "material.gtceu.carbon_dioxide":"二氧化碳", - "material.gtceu.carbon_monoxide":"一氧化碳", - "material.gtceu.cassiterite":"锡石", - "material.gtceu.cassiterite_sand":"锡石矿砂", - "material.gtceu.cerium":"铈", - "material.gtceu.certus_quartz":"赛特斯石英", - "material.gtceu.cetane_boosted_diesel":"高十六烷值柴油", - "material.gtceu.chalcocite":"辉铜矿", - "material.gtceu.chalcopyrite":"黄铜矿", - "material.gtceu.charcoal":"木炭", - "material.gtceu.charcoal_byproducts":"木炭副产物", - "material.gtceu.chlorine":"氯", - "material.gtceu.chlorobenzene":"氯苯", - "material.gtceu.chloroform":"氯仿", - "material.gtceu.chloromethane":"氯甲烷", - "material.gtceu.chromite":"铬铁矿", - "material.gtceu.chromium":"铬", - "material.gtceu.chromium_trioxide":"三氧化铬", - "material.gtceu.cinnabar":"朱砂", - "material.gtceu.clay":"黏土", - "material.gtceu.coal":"煤炭", - "material.gtceu.coal_gas":"煤气", - "material.gtceu.coal_tar":"煤焦油", - "material.gtceu.cobalt":"钴", - "material.gtceu.cobalt_brass":"钴黄铜", - "material.gtceu.cobalt_oxide":"氧化钴", - "material.gtceu.cobaltite":"辉钴矿", - "material.gtceu.cocoa":"可可", - "material.gtceu.coke":"焦煤", - "material.gtceu.collagen":"胶原", - "material.gtceu.concrete":"混凝土", - "material.gtceu.construction_foam":"建筑泡沫", - "material.gtceu.cooperite":"谢尔顿矿", - "material.gtceu.copernicium":"钅哥", - "material.gtceu.copper":"铜", - "material.gtceu.creosote":"杂酚油", - "material.gtceu.cumene":"异丙苯", - "material.gtceu.cupric_oxide":"氧化铜", - "material.gtceu.cupronickel":"白铜", - "material.gtceu.curium":"锔", - "material.gtceu.cyan_dye":"青色染料", - "material.gtceu.cyclohexane":"环己烷", - "material.gtceu.cyclohexanone_oxime":"环己酮肟", - "material.gtceu.damascus_steel":"大马士革钢", - "material.gtceu.dark_ash":"黑色灰烬", - "material.gtceu.darmstadtium":"钅达", - "material.gtceu.deepslate":"深板岩", - "material.gtceu.depleted_uranium_hexafluoride":"枯竭六氟化铀", - "material.gtceu.deuterium":"氘", - "material.gtceu.diaminobenzidine":"二氨基联苯胺", - "material.gtceu.diamond":"钻石", - "material.gtceu.diatomite":"硅藻土", - "material.gtceu.dichlorobenzene":"二氯苯", - "material.gtceu.dichlorobenzidine":"二氯联苯胺", - "material.gtceu.dichloroethane":"二氯乙烷", - "material.gtceu.diesel":"柴油", - "material.gtceu.diethylenetriamine":"二乙烯三胺", - "material.gtceu.diethylenetriamine_pentaacetonitrile":"二乙烯三胺五乙腈", - "material.gtceu.diethylenetriaminepentaacetic_acid":"二乙烯三胺五乙酸", - "material.gtceu.diluted_hydrochloric_acid":"稀盐酸", - "material.gtceu.diluted_sulfuric_acid":"稀硫酸", - "material.gtceu.dimethylamine":"二甲胺", - "material.gtceu.dimethylbenzene":"二甲苯", - "material.gtceu.dimethyldichlorosilane":"二甲基二氯硅烷", - "material.gtceu.dimethylhydrazine":"二甲基肼", - "material.gtceu.dinitrogen_tetroxide":"四氧化二氮", - "material.gtceu.diorite":"闪长岩", - "material.gtceu.diphenyl_isophthalate":"间苯二甲酸二苯酯", - "material.gtceu.dissolved_calcium_acetate":"乙酸钙溶液", - "material.gtceu.distilled_water":"蒸馏水", - "material.gtceu.drilling_fluid":"钻井液", - "material.gtceu.dubnium":"钅杜", - "material.gtceu.duranium":"铿铀", - "material.gtceu.dysprosium":"镝", - "material.gtceu.echo_shard":"回响碎片", - "material.gtceu.einsteinium":"锿", - "material.gtceu.electrotine":"蓝石", - "material.gtceu.electrum":"琥珀金", - "material.gtceu.emerald":"绿宝石", - "material.gtceu.ender_air":"末地空气", - "material.gtceu.ender_eye":"末影之眼", - "material.gtceu.ender_pearl":"末影珍珠", - "material.gtceu.endstone":"末地石", - "material.gtceu.enriched_bacterial_sludge":"富集细菌浆液", - "material.gtceu.enriched_naquadah":"富集硅岩", - "material.gtceu.enriched_naquadah_solution":"富集硅岩溶液", - "material.gtceu.enriched_naquadah_sulfate":"硫酸富集硅岩", - "material.gtceu.enriched_naquadah_trinium_europium_duranide":"富集硅岩凯金铕铿铀合金", - "material.gtceu.enriched_naquadah_waste":"富集硅岩废液", - "material.gtceu.enriched_uranium_hexafluoride":"富集六氟化铀", - "material.gtceu.epichlorohydrin":"环氧氯丙烷", - "material.gtceu.epoxy":"环氧树脂", - "material.gtceu.erbium":"铒", - "material.gtceu.ethane":"乙烷", - "material.gtceu.ethanol":"乙醇", - "material.gtceu.ethenone":"乙烯酮", - "material.gtceu.ethyl_tertbutyl_ether":"乙基叔丁基醚", - "material.gtceu.ethylbenzene":"乙苯", - "material.gtceu.ethylene":"乙烯", - "material.gtceu.europium":"铕", - "material.gtceu.fermented_biomass":"发酵生物质", - "material.gtceu.fermium":"镄", - "material.gtceu.ferrite_mixture":"铁氧体混合物", - "material.gtceu.ferrosilite":"铁辉石", - "material.gtceu.fireclay":"耐火黏土", - "material.gtceu.fish_oil":"鱼油", - "material.gtceu.flerovium":"钅夫", - "material.gtceu.flint":"燧石", - "material.gtceu.fluorine":"氟", - "material.gtceu.fluoroantimonic_acid":"氟锑酸", - "material.gtceu.formaldehyde":"甲醛", - "material.gtceu.formamide":"甲酰胺", - "material.gtceu.formic_acid":"甲酸", - "material.gtceu.francium":"钫", - "material.gtceu.fullers_earth":"漂白土", - "material.gtceu.gadolinium":"钆", - "material.gtceu.galena":"方铅矿", - "material.gtceu.gallium":"镓", - "material.gtceu.gallium_arsenide":"砷化镓", - "material.gtceu.gallium_sulfide":"硫化镓", - "material.gtceu.garnet_sand":"石榴石砂", - "material.gtceu.garnierite":"硅镁镍矿", - "material.gtceu.gasoline":"汽油", - "material.gtceu.gelatin":"明胶", - "material.gtceu.gelatin_mixture":"明胶混合物", - "material.gtceu.germanium":"锗", - "material.gtceu.glass":"玻璃", - "material.gtceu.glauconite_sand":"海绿石砂", - "material.gtceu.glowstone":"荧石", - "material.gtceu.glue":"胶水", - "material.gtceu.glycerol":"甘油", - "material.gtceu.glyceryl_trinitrate":"硝酸甘油", - "material.gtceu.glycolonitrile":"乙腈", - "material.gtceu.goethite":"针铁矿", - "material.gtceu.gold":"金", - "material.gtceu.granite":"花岗岩", - "material.gtceu.granite_red":"红花岗岩", - "material.gtceu.granitic_mineral_sand":"花岗岩矿砂", - "material.gtceu.graphene":"石墨烯", - "material.gtceu.graphite":"石墨", - "material.gtceu.gray_dye":"灰色染料", - "material.gtceu.green_dye":"绿色染料", - "material.gtceu.green_sapphire":"绿色蓝宝石", - "material.gtceu.green_sapphire_slurry":"绿色蓝宝石浆液", - "material.gtceu.grossular":"钙铝榴石", - "material.gtceu.gunpowder":"火药", - "material.gtceu.gypsum":"石膏", - "material.gtceu.hafnium":"铪", - "material.gtceu.hassium":"钅黑", - "material.gtceu.hastelloy_c_276":"哈斯特洛依合金 C-276", - "material.gtceu.hastelloy_x":"哈斯特洛依合金-X", - "material.gtceu.heavy_fuel":"重燃油", - "material.gtceu.helium":"氦", - "material.gtceu.helium_3":"氦-3", - "material.gtceu.hematite":"赤铁矿", - "material.gtceu.high_octane_gasoline":"高辛烷值汽油", - "material.gtceu.holmium":"钬", - "material.gtceu.hsla_steel":"HSLA钢", - "material.gtceu.hsse":"高速钢-E", - "material.gtceu.hssg":"高速钢-G", - "material.gtceu.hsss":"高速钢-S", - "material.gtceu.hydro_cracked_butadiene":"加氢裂化丁二烯", - "material.gtceu.hydro_cracked_butane":"加氢裂化丁烷", - "material.gtceu.hydro_cracked_butene":"加氢裂化丁烯", - "material.gtceu.hydro_cracked_ethane":"加氢裂化乙烷", - "material.gtceu.hydro_cracked_ethylene":"加氢裂化乙烯", - "material.gtceu.hydro_cracked_propane":"加氢裂化丙烷", - "material.gtceu.hydro_cracked_propene":"加氢裂化丙烯", - "material.gtceu.hydrochloric_acid":"盐酸", - "material.gtceu.hydrofluoric_acid":"氢氟酸", - "material.gtceu.hydrogen":"氢", - "material.gtceu.hydrogen_cyanide":"氰化氢", - "material.gtceu.hydrogen_peroxide":"过氧化氢", - "material.gtceu.hydrogen_sulfide":"硫化氢", - "material.gtceu.hypochlorous_acid":"次氯酸", - "material.gtceu.ice":"冰", - "material.gtceu.ilmenite":"钛铁矿", - "material.gtceu.impure_enriched_naquadah_solution":"含杂富集硅岩溶液", - "material.gtceu.impure_naquadria_solution":"含杂超能硅岩溶液", - "material.gtceu.incoloy_ma_956":"耐热铬铁合金 MA-956", - "material.gtceu.indium":"铟", - "material.gtceu.indium_concentrate":"铟富集溶液", - "material.gtceu.indium_gallium_phosphide":"磷化铟镓", - "material.gtceu.indium_phosphide":"磷化铟", - "material.gtceu.indium_tin_barium_titanium_cuprate":"铟锡钡钛铜氧化物", - "material.gtceu.inert_metal_mixture":"惰性金属混合物", - "material.gtceu.invar":"殷钢", - "material.gtceu.iodine":"碘", - "material.gtceu.iridium":"铱", - "material.gtceu.iridium_chloride":"氯化铱", - "material.gtceu.iridium_metal_residue":"铱金属渣", - "material.gtceu.iron":"铁", - "material.gtceu.iron_ii_chloride":"氯化亚铁", - "material.gtceu.iron_iii_chloride":"氯化铁", - "material.gtceu.isoprene":"异戊二烯", - "material.gtceu.kanthal":"坎塔尔合金", - "material.gtceu.krypton":"氪", - "material.gtceu.kyanite":"蓝晶石", - "material.gtceu.lanthanum":"镧", - "material.gtceu.lapis":"青金石", - "material.gtceu.lapotron":"兰波顿", - "material.gtceu.lava":"熔岩", - "material.gtceu.lawrencium":"铹", - "material.gtceu.lazurite":"蓝金石", - "material.gtceu.lead":"铅", - "material.gtceu.lead_zinc_solution":"铅锌溶液", - "material.gtceu.lepidolite":"锂云母", - "material.gtceu.light_blue_dye":"淡蓝色染料", - "material.gtceu.light_fuel":"轻燃油", - "material.gtceu.light_gray_dye":"淡灰色染料", - "material.gtceu.lightly_hydro_cracked_gas":"轻度加氢裂化炼油气", - "material.gtceu.lightly_hydro_cracked_heavy_fuel":"轻度加氢裂化重燃油", - "material.gtceu.lightly_hydro_cracked_light_fuel":"轻度加氢裂化轻燃油", - "material.gtceu.lightly_hydro_cracked_naphtha":"轻度加氢裂化石脑油", - "material.gtceu.lightly_steam_cracked_gas":"轻度蒸汽裂化炼油气", - "material.gtceu.lightly_steam_cracked_heavy_fuel":"轻度蒸汽裂化重燃油", - "material.gtceu.lightly_steam_cracked_light_fuel":"轻度蒸汽裂化轻燃油", - "material.gtceu.lightly_steam_cracked_naphtha":"轻度蒸汽裂化石脑油", - "material.gtceu.lime_dye":"黄绿色染料", - "material.gtceu.liquid_air":"液态空气", - "material.gtceu.liquid_ender_air":"液态末地空气", - "material.gtceu.liquid_nether_air":"液态下界空气", - "material.gtceu.lithium":"锂", - "material.gtceu.lithium_chloride":"氯化锂", - "material.gtceu.livermorium":"钅立", - "material.gtceu.lpg":"液化石油气", - "material.gtceu.lubricant":"润滑油", - "material.gtceu.lutetium":"镥", - "material.gtceu.magenta_dye":"品红色染料", - "material.gtceu.magnalium":"镁铝合金", - "material.gtceu.magnesia":"氧化镁", - "material.gtceu.magnesite":"菱镁矿", - "material.gtceu.magnesium":"镁", - "material.gtceu.magnesium_chloride":"氯化镁", - "material.gtceu.magnesium_diboride":"二硼化镁", - "material.gtceu.magnetic_iron":"磁化铁", - "material.gtceu.magnetic_neodymium":"磁化钕", - "material.gtceu.magnetic_samarium":"磁化钐", - "material.gtceu.magnetic_steel":"磁化钢", - "material.gtceu.magnetite":"磁铁矿", - "material.gtceu.malachite":"孔雀石", - "material.gtceu.manganese":"锰", - "material.gtceu.manganese_phosphide":"磷化锰", - "material.gtceu.maraging_steel_300":"马氏体时效钢-300", - "material.gtceu.marble":"大理石", - "material.gtceu.massicot":"铅黄", - "material.gtceu.mc_guffium_239":"麦高芬-239", - "material.gtceu.meat":"肉", - "material.gtceu.meitnerium":"钅麦", - "material.gtceu.mendelevium":"钔", - "material.gtceu.mercury":"汞", - "material.gtceu.mercury_barium_calcium_cuprate":"汞钡钙铜氧化物", - "material.gtceu.metal_mixture":"金属混合物", - "material.gtceu.methane":"甲烷", - "material.gtceu.methanol":"甲醇", - "material.gtceu.methyl_acetate":"乙酸甲酯", - "material.gtceu.mica":"云母", - "material.gtceu.milk":"牛奶", - "material.gtceu.mirabilite":"芒硝", - "material.gtceu.molybdenite":"辉钼矿", - "material.gtceu.molybdenum":"钼", - "material.gtceu.molybdenum_disilicide":"二硅化钼", - "material.gtceu.monazite":"独居石", - "material.gtceu.monochloramine":"氯胺", - "material.gtceu.moscovium":"镆", - "material.gtceu.mutagen":"诱变剂", - "material.gtceu.naphtha":"石脑油", - "material.gtceu.naphthalene":"萘", - "material.gtceu.naquadah":"硅岩", - "material.gtceu.naquadah_alloy":"硅岩合金", - "material.gtceu.naquadria":"超能硅岩", - "material.gtceu.naquadria_solution":"超能硅岩溶液", - "material.gtceu.naquadria_sulfate":"硫酸超能硅岩", - "material.gtceu.naquadria_waste":"超能硅岩废液", - "material.gtceu.natural_gas":"天然气", - "material.gtceu.neodymium":"钕", - "material.gtceu.neon":"氖", - "material.gtceu.neptunium":"镎", - "material.gtceu.nether_air":"下界空气", - "material.gtceu.nether_quartz":"下界石英", - "material.gtceu.nether_star":"下界之星", - "material.gtceu.netherite":"下界合金", - "material.gtceu.netherrack":"地狱岩", - "material.gtceu.neutronium":"中子素", - "material.gtceu.nichrome":"镍铬合金", - "material.gtceu.nickel":"镍", - "material.gtceu.nickel_zinc_ferrite":"镍锌铁氧体", - "material.gtceu.nihonium":"钅尔", - "material.gtceu.niobium":"铌", - "material.gtceu.niobium_nitride":"氮化铌", - "material.gtceu.niobium_titanium":"铌钛合金", - "material.gtceu.nitration_mixture":"硝酸混酸", - "material.gtceu.nitric_acid":"硝酸", - "material.gtceu.nitric_oxide":"一氧化氮", - "material.gtceu.nitrobenzene":"硝基苯", - "material.gtceu.nitrochlorobenzene":"硝基氯苯", - "material.gtceu.nitrogen":"氮", - "material.gtceu.nitrogen_dioxide":"二氧化氮", - "material.gtceu.nitrosyl_chloride":"亚硝酰氯", - "material.gtceu.nitrous_oxide":"一氧化二氮", - "material.gtceu.nobelium":"锘", - "material.gtceu.obsidian":"黑曜石", - "material.gtceu.octane":"辛烷", - "material.gtceu.oganesson":"气奥", - "material.gtceu.oil":"石油", - "material.gtceu.oil_heavy":"重油", - "material.gtceu.oil_light":"轻油", - "material.gtceu.oil_medium":"原油", - "material.gtceu.oilsands":"油砂", - "material.gtceu.olivine":"橄榄石", - "material.gtceu.opal":"猫眼石", - "material.gtceu.orange_dye":"橙色染料", - "material.gtceu.osmiridium":"铱锇合金", - "material.gtceu.osmium":"锇", - "material.gtceu.osmium_tetroxide":"四氧化锇", - "material.gtceu.oxygen":"氧", - "material.gtceu.palladium":"钯", - "material.gtceu.palladium_raw":"粗钯", - "material.gtceu.paper":"纸", - "material.gtceu.paracetamol":"对乙酰氨基酚", - "material.gtceu.pcb_coolant":"多氯联苯冷却液 ", - "material.gtceu.pentlandite":"镍黄铁矿", - "material.gtceu.perlite":"珍珠岩", - "material.gtceu.phenol":"苯酚", - "material.gtceu.phosphate":"磷酸盐", - "material.gtceu.phosphoric_acid":"磷酸", - "material.gtceu.phosphorus":"磷", - "material.gtceu.phosphorus_pentoxide":"五氧化二磷", - "material.gtceu.phthalic_acid":"邻苯二甲酸", - "material.gtceu.pink_dye":"粉红色染料", - "material.gtceu.pitchblende":"沥青铀矿", - "material.gtceu.platinum":"铂", - "material.gtceu.platinum_group_sludge":"铂系矿泥", - "material.gtceu.platinum_raw":"粗铂", - "material.gtceu.platinum_sludge_residue":"铂泥渣", - "material.gtceu.plutonium":"钚", - "material.gtceu.plutonium_241":"钚-241", - "material.gtceu.pollucite":"铯榴石", - "material.gtceu.polonium":"钋", - "material.gtceu.polybenzimidazole":"聚苯并咪唑", - "material.gtceu.polycaprolactam":"聚己内酰胺", - "material.gtceu.polychlorinated_biphenyl":"多氯联苯", - "material.gtceu.polydimethylsiloxane":"聚二甲基硅氧烷", - "material.gtceu.polyethylene":"聚乙烯", - "material.gtceu.polyphenylene_sulfide":"聚苯硫醚", - "material.gtceu.polytetrafluoroethylene":"聚四氟乙烯", - "material.gtceu.polyvinyl_acetate":"聚乙酸乙烯酯", - "material.gtceu.polyvinyl_butyral":"聚乙烯醇缩丁醛", - "material.gtceu.polyvinyl_chloride":"聚氯乙烯", - "material.gtceu.potash":"钾碱", - "material.gtceu.potassium":"钾", - "material.gtceu.potassium_carbonate":"碳酸钾", - "material.gtceu.potassium_cyanide":"氰化钾", - "material.gtceu.potassium_dichromate":"重铬酸钾", - "material.gtceu.potassium_feldspar":"钾长石", - "material.gtceu.potassium_ferrocyanide":"亚铁氰化钾", - "material.gtceu.potassium_hydroxide":"氢氧化钾", - "material.gtceu.potassium_iodide":"碘化钾", - "material.gtceu.potassium_sulfate":"硫酸钾", - "material.gtceu.potin":"粗青铜合金", - "material.gtceu.powellite":"钼钙矿", - "material.gtceu.praseodymium":"镨", - "material.gtceu.promethium":"钷", - "material.gtceu.propane":"丙烷", - "material.gtceu.propene":"丙烯", - "material.gtceu.protactinium":"镤", - "material.gtceu.prussian_blue":"普鲁士蓝", - "material.gtceu.purple_dye":"紫色染料", - "material.gtceu.pyrite":"黄铁矿", - "material.gtceu.pyrochlore":"烧绿石", - "material.gtceu.pyrolusite":"软锰矿", - "material.gtceu.pyrope":"镁铝榴石", - "material.gtceu.quartz_sand":"石英砂", - "material.gtceu.quartzite":"石英岩", - "material.gtceu.quicklime":"生石灰", - "material.gtceu.rad_away":"消辐宁", - "material.gtceu.radium":"镭", - "material.gtceu.radon":"氡", - "material.gtceu.rare_earth":"稀土", - "material.gtceu.rarest_metal_mixture":"稀有金属混合物", - "material.gtceu.raw_gasoline":"粗汽油", - "material.gtceu.raw_growth_medium":"培养基原液", - "material.gtceu.raw_rubber":"生橡胶", - "material.gtceu.raw_styrene_butadiene_rubber":"生丁苯橡胶", - "material.gtceu.realgar":"雄黄", - "material.gtceu.red_alloy":"红色合金", - "material.gtceu.red_dye":"红色染料", - "material.gtceu.red_garnet":"红石榴石", - "material.gtceu.red_steel":"红钢", - "material.gtceu.redrock":"红岩", - "material.gtceu.redstone":"红石", - "material.gtceu.refinery_gas":"炼油气", - "material.gtceu.reinforced_epoxy_resin":"强化环氧树脂", - "material.gtceu.rhenium":"铼", - "material.gtceu.rhodium":"铑", - "material.gtceu.rhodium_plated_palladium":"镀铑钯", - "material.gtceu.rhodium_sulfate":"硫酸铑", - "material.gtceu.rock_salt":"岩盐", - "material.gtceu.rocket_fuel":"火箭燃料", - "material.gtceu.roentgenium":"钅仑", - "material.gtceu.rose_gold":"玫瑰金", - "material.gtceu.rtm_alloy":"钌钨钼合金", - "material.gtceu.rubber":"橡胶", - "material.gtceu.rubidium":"铷", - "material.gtceu.ruby":"红宝石", - "material.gtceu.ruby_slurry":"红宝石浆液", - "material.gtceu.ruridit":"钌铱合金", - "material.gtceu.ruthenium":"钌", - "material.gtceu.ruthenium_tetroxide":"四氧化钌", - "material.gtceu.ruthenium_trinium_americium_neutronate":"钌凯金镅中子素氧化物", - "material.gtceu.rutherfordium":"钅卢", - "material.gtceu.rutile":"金红石", - "material.gtceu.salt":"盐", - "material.gtceu.salt_water":"盐水", - "material.gtceu.saltpeter":"硝石", - "material.gtceu.samarium":"钐", - "material.gtceu.samarium_iron_arsenic_oxide":"钐铁砷氧化物", - "material.gtceu.sapphire":"蓝宝石", - "material.gtceu.sapphire_slurry":"蓝宝石浆液", - "material.gtceu.scandium":"钪", - "material.gtceu.scheelite":"白钨矿", - "material.gtceu.sculk":"幽匿", - "material.gtceu.seaborgium":"钅喜", - "material.gtceu.seed_oil":"种子油", - "material.gtceu.selenium":"硒", - "material.gtceu.severely_hydro_cracked_gas":"重度加氢裂化炼油气", - "material.gtceu.severely_hydro_cracked_heavy_fuel":"重度加氢裂化重燃油", - "material.gtceu.severely_hydro_cracked_light_fuel":"重度加氢裂化轻燃油", - "material.gtceu.severely_hydro_cracked_naphtha":"重度加氢裂化石脑油", - "material.gtceu.severely_steam_cracked_gas":"重度蒸汽裂化炼油气", - "material.gtceu.severely_steam_cracked_heavy_fuel":"重度蒸汽裂化重燃油", - "material.gtceu.severely_steam_cracked_light_fuel":"重度蒸汽裂化轻燃油", - "material.gtceu.severely_steam_cracked_naphtha":"重度蒸汽裂化石脑油", - "material.gtceu.silicon":"硅", - "material.gtceu.silicon_dioxide":"二氧化硅", - "material.gtceu.silicone_rubber":"硅橡胶", - "material.gtceu.silver":"银", - "material.gtceu.soapstone":"皂石", - "material.gtceu.soda_ash":"纯碱", - "material.gtceu.sodalite":"方钠石", - "material.gtceu.sodium":"钠", - "material.gtceu.sodium_bicarbonate":"碳酸氢钠", - "material.gtceu.sodium_bisulfate":"硫酸氢钠", - "material.gtceu.sodium_hydroxide":"氢氧化钠", - "material.gtceu.sodium_nitrite":"亚硝酸钠", - "material.gtceu.sodium_persulfate":"过硫酸钠", - "material.gtceu.sodium_potassium":"钠钾合金", - "material.gtceu.sodium_sulfide":"硫化钠", - "material.gtceu.soldering_alloy":"焊锡", - "material.gtceu.spessartine":"锰铝榴石", - "material.gtceu.sphalerite":"闪锌矿", - "material.gtceu.spodumene":"锂辉石", - "material.gtceu.stainless_steel":"不锈钢", - "material.gtceu.steam":"蒸汽", - "material.gtceu.steam_cracked_butadiene":"蒸汽裂化丁二烯", - "material.gtceu.steam_cracked_butane":"蒸汽裂化丁烷", - "material.gtceu.steam_cracked_butene":"蒸汽裂化丁烯", - "material.gtceu.steam_cracked_ethane":"蒸汽裂化乙烷", - "material.gtceu.steam_cracked_ethylene":"蒸汽裂化乙烯", - "material.gtceu.steam_cracked_propane":"蒸汽裂化丙烷", - "material.gtceu.steam_cracked_propene":"蒸汽裂化丙烯", - "material.gtceu.steel":"钢", - "material.gtceu.stellite_100":"司太立-100", - "material.gtceu.sterilized_growth_medium":"无菌培养基", - "material.gtceu.sterling_silver":"标准纯银", - "material.gtceu.stibnite":"辉锑矿", - "material.gtceu.stone":"石头", - "material.gtceu.strontium":"锶", - "material.gtceu.styrene":"苯乙烯", - "material.gtceu.styrene_butadiene_rubber":"丁苯橡胶", - "material.gtceu.sugar":"糖", - "material.gtceu.sulfur":"硫", - "material.gtceu.sulfur_dioxide":"二氧化硫", - "material.gtceu.sulfur_trioxide":"三氧化硫", - "material.gtceu.sulfuric_acid":"硫酸", - "material.gtceu.sulfuric_copper_solution":"硫酸铜溶液", - "material.gtceu.sulfuric_gas":"含硫炼油气", - "material.gtceu.sulfuric_heavy_fuel":"含硫重燃油", - "material.gtceu.sulfuric_light_fuel":"含硫轻燃油", - "material.gtceu.sulfuric_naphtha":"含硫石脑油", - "material.gtceu.sulfuric_nickel_solution":"硫酸镍溶液", - "material.gtceu.talc":"滑石", - "material.gtceu.tantalite":"钽铁矿", - "material.gtceu.tantalum":"钽", - "material.gtceu.tantalum_carbide":"碳化钽", - "material.gtceu.technetium":"锝", - "material.gtceu.tellurium":"碲", - "material.gtceu.tennessine":"石田", - "material.gtceu.terbium":"铽", - "material.gtceu.tetrafluoroethylene":"四氟乙烯", - "material.gtceu.tetrahedrite":"黝铜矿", - "material.gtceu.tetranitromethane":"四硝基甲烷", - "material.gtceu.thallium":"铊", - "material.gtceu.thorium":"钍", - "material.gtceu.thulium":"铥", - "material.gtceu.tin":"锡", - "material.gtceu.tin_alloy":"锡铁合金", - "material.gtceu.titanium":"钛", - "material.gtceu.titanium_carbide":"碳化钛", - "material.gtceu.titanium_tetrachloride":"四氯化钛", - "material.gtceu.titanium_trifluoride":"三氟化钛", - "material.gtceu.titanium_tungsten_carbide":"碳化钛钨", - "material.gtceu.toluene":"甲苯", - "material.gtceu.topaz":"黄玉", - "material.gtceu.treated_wood":"防腐木", - "material.gtceu.tricalcium_phosphate":"磷酸三钙", - "material.gtceu.trinium":"凯金", - "material.gtceu.trinium_sulfide":"硫化凯金", - "material.gtceu.tritanium":"三钛", - "material.gtceu.tritium":"氚", - "material.gtceu.trona":"天然碱", - "material.gtceu.tungstate":"钨酸锂", - "material.gtceu.tungsten":"钨", - "material.gtceu.tungsten_carbide":"碳化钨", - "material.gtceu.tungsten_steel":"钨钢", - "material.gtceu.tungstic_acid":"钨酸", - "material.gtceu.ultimet":"哈氏合金", - "material.gtceu.uraninite":"晶质铀矿", - "material.gtceu.uranium":"铀", - "material.gtceu.uranium_235":"铀-235", - "material.gtceu.uranium_hexafluoride":"六氟化铀", - "material.gtceu.uranium_rhodium_dinaquadide":"铀铑硅岩合金", - "material.gtceu.uranium_triplatinum":"三铂化铀", - "material.gtceu.uu_matter":"UU物质", - "material.gtceu.uvarovite":"钙铬榴石", - "material.gtceu.vanadium":"钒", - "material.gtceu.vanadium_gallium":"钒镓合金", - "material.gtceu.vanadium_magnetite":"钒磁铁矿", - "material.gtceu.vanadium_steel":"钒钢", - "material.gtceu.vinyl_acetate":"乙酸乙烯酯", - "material.gtceu.vinyl_chloride":"氯乙烯", - "material.gtceu.water":"水", - "material.gtceu.watertight_steel":"防水钢", - "material.gtceu.wax":"蜡", - "material.gtceu.wheat":"小麦", - "material.gtceu.white_dye":"白色染料", - "material.gtceu.wood":"木", - "material.gtceu.wood_gas":"木煤气", - "material.gtceu.wood_tar":"木焦油", - "material.gtceu.wood_vinegar":"木醋酸", - "material.gtceu.wrought_iron":"锻铁", - "material.gtceu.wulfenite":"钼铅矿", - "material.gtceu.xenon":"氙", - "material.gtceu.yellow_dye":"黄色染料", - "material.gtceu.yellow_garnet":"黄石榴石", - "material.gtceu.yellow_limonite":"黄褐铁矿", - "material.gtceu.ytterbium":"镱", - "material.gtceu.yttrium":"钇", - "material.gtceu.yttrium_barium_cuprate":"钇钡铜氧化物", - "material.gtceu.zeolite":"沸石", - "material.gtceu.zeron_100":"赛龙-100", - "material.gtceu.zinc":"锌", - "material.gtceu.zinc_sulfide":"硫化锌", - "material.gtceu.zincite":"红锌矿", - "material.gtceu.zirconium":"锆", - "message.gtceu.new_veins.amount":"勘探到%d条新矿脉!", - "message.gtceu.new_veins.name":"勘探到%s!", - "metaarmor.energy_share.disable":"能量供给:工具充能已禁用", - "metaarmor.energy_share.enable":"能量供给:工具充能已启用", - "metaarmor.energy_share.error":"能量供给:§c能量不足,无法为工具充能!", - "metaarmor.energy_share.tooltip":"供能模式:%s", - "metaarmor.energy_share.tooltip.guide":"手持物品并潜行右击以更换模式", - "metaarmor.hud.energy_lvl":"能量存储:%s", - "metaarmor.hud.engine_enabled":"引擎已启用:%s", - "metaarmor.hud.fuel_lvl":"燃料存储:%s", - "metaarmor.hud.gravi_engine":"重力引擎:%s", - "metaarmor.hud.hover_mode":"悬浮模式:%s", - "metaarmor.hud.status.disabled":"§c关", - "metaarmor.hud.status.enabled":"§a开", - "metaarmor.jetpack.emergency_hover_mode":"紧急悬停模式已启用!", - "metaarmor.jetpack.flight.disable":"喷气背包:飞行已禁用", - "metaarmor.jetpack.flight.enable":"喷气背包:飞行已启用", - "metaarmor.jetpack.hover.disable":"喷气背包:悬停模式已禁用", - "metaarmor.jetpack.hover.enable":"喷气背包:悬停模式已启用", - "metaarmor.message.nightvision.disabled":"§b夜视:§c关闭", - "metaarmor.message.nightvision.enabled":"§b夜视:§a开启", - "metaarmor.message.nightvision.error":"§c能量不足!", - "metaarmor.nms.boosted_jump.disabled":"纳米肌体™套装:跳跃提升已禁用", - "metaarmor.nms.boosted_jump.enabled":"纳米肌体™套装:跳跃提升已启用", - "metaarmor.nms.nightvision.disabled":"纳米肌体™套装:夜视已禁用", - "metaarmor.nms.nightvision.enabled":"纳米肌体™套装:夜视已启用", - "metaarmor.nms.nightvision.error":"纳米肌体™套装:§c能量不足!", - "metaarmor.nms.share.disable":"纳米肌体™套装:供能模式已禁用", - "metaarmor.nms.share.enable":"纳米肌体™套装:供能模式已启用", - "metaarmor.nms.share.error":"纳米肌体™套装:§c能量不足,无法供能!", - "metaarmor.qts.nightvision.disabled":"夸克高科™套装:夜视已禁用", - "metaarmor.qts.nightvision.enabled":"夸克高科™套装:夜视已启用", - "metaarmor.qts.nightvision.error":"夸克高科™套装:§c能量不足!", - "metaarmor.qts.share.disable":"夸克高科™套装:供能模式已禁用", - "metaarmor.qts.share.enable":"夸克高科™套装:供能模式已启用", - "metaarmor.qts.share.error":"夸克高科™套装:§c能量不足,无法供能!", - "metaarmor.tooltip.autoeat":"使用物品栏中的食物补充饱食度", - "metaarmor.tooltip.breath":"补充氧气条", - "metaarmor.tooltip.burning":"扑灭身上的火焰", - "metaarmor.tooltip.falldamage":"消除摔落伤害", - "metaarmor.tooltip.freezing":"防止寒冷侵袭", - "metaarmor.tooltip.jump":"提升跳跃高度与距离", - "metaarmor.tooltip.potions":"消除负面效果", - "metaarmor.tooltip.speed":"提升奔跑速度", - "metaarmor.tooltip.stepassist":"提供步行辅助", - "metaitem.behavior.mode_switch.current_mode":"模式:%s", - "metaitem.behavior.mode_switch.mode_switched":"§e模式设置为:%s", - "metaitem.behavior.mode_switch.tooltip":"潜行右击以切换模式", - "metaitem.clipboard.tooltip":"可以在上面书写(无需任何书写工具)。手持右键在墙面上放置,潜行右击取下。", - "metaitem.cover.digital.mode.energy.disabled":"点击以启用能量模式", - "metaitem.cover.digital.mode.energy.enabled":"已启用能量模式", - "metaitem.cover.digital.mode.fluid.disabled":"点击以启用流体模式", - "metaitem.cover.digital.mode.fluid.enabled":"已启用流体模式", - "metaitem.cover.digital.mode.item.disabled":"点击以启用物品模式", - "metaitem.cover.digital.mode.item.enabled":"已启用物品模式", - "metaitem.cover.digital.mode.machine.disabled":"点击以启用机器模式", - "metaitem.cover.digital.mode.machine.enabled":"已启用机器模式", - "metaitem.cover.digital.mode.proxy.disabled":"点击以启用代理模式", - "metaitem.cover.digital.mode.proxy.enabled":"已启用代理模式", - "metaitem.cover.digital.tooltip":"§7作§f覆盖板§7时通过§f能量线缆f7将机器连接到§f中央监视器§7。", - "metaitem.cover.digital.wireless.tooltip.0":"§7作§f覆盖板§7时§f将机器§f无线§7接入§f中央监控器§7。", - "metaitem.cover.digital.wireless.tooltip.1":"§f手持右击中央监控器§7来进行远程绑定。", - "metaitem.cover.digital.wireless.tooltip.2":"§f手持并潜行右击§7则可移除现有绑定。", - "metaitem.cover.digital.wireless.tooltip.3":"§a绑定至:§f%s", - "metaitem.crushed.tooltip.purify":"右击盛有水的炼药锅以清洗", - "metaitem.debug_scanner.tooltip":"三录仪", - "metaitem.dust.tooltip.purify":"右击盛有水的炼药锅以清洗", - "metaitem.electric.discharge_mode.disabled":"§e释能模式已禁用", - "metaitem.electric.discharge_mode.enabled":"§e释能模式已启用", - "metaitem.electric.discharge_mode.tooltip":"潜行右击以开关释能模式", - "metaitem.generic.electric_item.stored":"%d/%d EU(%s)", - "metaitem.generic.electric_item.tooltip":"%d/%d EU - %s电压", - "metaitem.generic.fluid_container.tooltip":"%d/%dL %s", - "metaitem.int_circuit.configuration":"配置:%d", - "metaitem.liquid_fuel_jetpack.tooltip":"利用内燃发电机的燃料来提供推进动力", - "metaitem.machine_configuration.mode":"§a配置模式:§r%s", - "metaitem.plugin.proxy.tooltips.1":"(请将屏幕调整为代理模式)", - "metaitem.plugin.tooltips.1":"可为屏幕安装插件以实现更多功能。", - "metaitem.prospector.mode.bedrock_ore":"§b基岩矿石勘探模式§r", - "metaitem.prospector.mode.fluid":"§b流体勘探模式§r", - "metaitem.prospector.mode.ores":"§a矿石探勘模式§r", - "metaitem.prospector.tooltip.modes":"可用模式:", - "metaitem.prospector.tooltip.radius":"扫描半径:%s", - "metaitem.record.sus.tooltip":"§7Leonz - Among Us Drip", - "metaitem.terminal.tooltip":"工欲善其事,必先利其器。", - "metaitem.terminal.tooltip.creative":"§b创造模式", - "metaitem.terminal.tooltip.hardware":"§a硬件:%d", - "metaitem.tool.tooltip.durability":"§f耐久度:§a%d / %d", - "metaitem.tool.tooltip.primary_material":"§f材料:§e%s", - "metaitem.tool.tooltip.rotor.efficiency":"涡轮效率:§9%d%%", - "metaitem.tool.tooltip.rotor.power":"涡轮产能:§9%d%%", - "metaitem.tricorder_scanner.tooltip":"三录仪", - "monitor.gui.title.argb":"ARGB:", - "monitor.gui.title.back":"返回", - "monitor.gui.title.config":"配置", - "monitor.gui.title.plugin":"插件:", - "monitor.gui.title.scale":"尺寸:", - "monitor.gui.title.slot":"槽位:", - "ore.spawnlocation.name":"矿物生成信息", - "recipe.capability.eu.name":"GTCEu能量", - "recipe.capability.fluid.name":"流体", - "recipe.capability.item.name":"物品", - "recipe.condition.adjacent_block.tooltip":"水平相邻方块应为", - "recipe.condition.biome.tooltip":"生物群系:%s", - "recipe.condition.daytime.day.tooltip":"需要白天才能工作", - "recipe.condition.daytime.night.tooltip":"需要夜晚才能工作", - "recipe.condition.dimension.tooltip":"维度:%s", - "recipe.condition.dimension_marker.tooltip":"维度:", - "recipe.condition.eu_to_start.tooltip":"启动耗能:%d%s", - "recipe.condition.gamestage.locked_stage":"锁定阶段:%s", - "recipe.condition.gamestage.unlocked_stage":"解锁阶段:%s", - "recipe.condition.pos_y.tooltip":"Y轴高度:%d <= Y <= %d", - "recipe.condition.quest.completed.tooltip":"完成任务:%s", - "recipe.condition.quest.not_completed.tooltip":"未完成任务:%s", - "recipe.condition.rain.tooltip":"雨量:%d", - "recipe.condition.rock_breaker.tooltip":"水平相邻方块需要为流体源", - "recipe.condition.steam_vent.tooltip":"清洁蒸汽排气口", - "recipe.condition.thunder.tooltip":"雷级:%d", - "tagprefix.andesite":"安山岩%s矿石", - "tagprefix.basalt":"玄武岩%s矿石", - "tagprefix.blackstone":"黑石%s矿石", - "tagprefix.block":"%s块", - "tagprefix.bolt":"%s螺栓", - "tagprefix.buzz_saw_blade":"%s圆锯锯片", - "tagprefix.cable_gt_double":"2x%s线缆", - "tagprefix.cable_gt_hex":"16x%s线缆", - "tagprefix.cable_gt_octal":"8x%s线缆", - "tagprefix.cable_gt_quadruple":"4x%s线缆", - "tagprefix.cable_gt_single":"1x%s线缆", - "tagprefix.chainsaw_head":"%s链锯头", - "tagprefix.chipped_gem":"破碎的%s", - "tagprefix.crushed_ore":"粉碎%s矿石", - "tagprefix.deepslate":"深板岩%s矿石", - "tagprefix.dense_plate":"致密%s板", - "tagprefix.diorite":"闪长岩%s矿石", - "tagprefix.door":"%s门", - "tagprefix.double_plate":"双层%s板", - "tagprefix.drill_head":"%s钻头", - "tagprefix.dust":"%s粉", - "tagprefix.dye":"%s染料", - "tagprefix.endstone":"末地石%s矿石", - "tagprefix.exquisite_gem":"精致的%s", - "tagprefix.fence":"%s栅栏", - "tagprefix.fence_gate":"%s栅栏门", - "tagprefix.fine_wire":"细%s导线", - "tagprefix.flawed_gem":"有瑕的%s", - "tagprefix.flawless_gem":"无瑕的%s", - "tagprefix.foil":"%s箔", - "tagprefix.frame":"%s框架", - "tagprefix.gear":"%s齿轮", - "tagprefix.gem":"%s", - "tagprefix.granite":"花岗岩%s矿石", - "tagprefix.gravel":"沙砾%s矿石", - "tagprefix.hot_ingot":"热%s锭", - "tagprefix.impure_dust":"含杂%s粉", - "tagprefix.ingot":"%s锭", - "tagprefix.lens":"%s透镜", - "tagprefix.log":"%s原木", - "tagprefix.long_rod":"长%s杆", - "tagprefix.marble":"大理岩%s矿石", - "tagprefix.netherrack":"下界岩%s矿石", - "tagprefix.nugget":"%s粒", - "tagprefix.null":"%s Null", - "tagprefix.pipe_huge_fluid":"巨型%s流体管道", - "tagprefix.pipe_huge_item":"巨型%s物品管道", - "tagprefix.pipe_huge_restrictive":"巨型加固%s物品管道", - "tagprefix.pipe_large_fluid":"大型%s流体管道", - "tagprefix.pipe_large_item":"大型%s物品管道", - "tagprefix.pipe_large_restrictive":"大型加固%s物品管道", - "tagprefix.pipe_nonuple_fluid":"九重%s流体管道", - "tagprefix.pipe_normal_fluid":"普通%s流体管道", - "tagprefix.pipe_normal_item":"普通%s物品管道", - "tagprefix.pipe_normal_restrictive":"普通加固%s物品管道", - "tagprefix.pipe_quadruple_fluid":"四重%s流体管道", - "tagprefix.pipe_small_fluid":"小型%s流体管道", - "tagprefix.pipe_small_item":"小型%s物品管道", - "tagprefix.pipe_small_restrictive":"小型加固%s物品管道", - "tagprefix.pipe_tiny_fluid":"微型%s流体管道", - "tagprefix.planks":"%s木板", - "tagprefix.plate":"%s板", - "tagprefix.polymer.dense_plate":"致密%s片", - "tagprefix.polymer.double_plate":"双层%s片", - "tagprefix.polymer.dust":"%s末", - "tagprefix.polymer.foil":"薄%s片", - "tagprefix.polymer.ingot":"%s条", - "tagprefix.polymer.nugget":"%s颗粒", - "tagprefix.polymer.plate":"%s片", - "tagprefix.polymer.small_dust":"小堆%s末", - "tagprefix.polymer.tiny_dust":"小撮%s末", - "tagprefix.pure_dust":"洁净%s粉", - "tagprefix.purified_ore":"纯净%s矿石", - "tagprefix.raw":"粗%s", - "tagprefix.raw_ore_block":"粗%s块", - "tagprefix.red_granite":"红花岗岩%s矿石", - "tagprefix.red_sand":"红沙%s矿石", - "tagprefix.refined_ore":"精炼%s矿石", - "tagprefix.ring":"%s环", - "tagprefix.rock":"%s", - "tagprefix.rod":"%s杆", - "tagprefix.rotor":"%s转子", - "tagprefix.round":"%s滚珠", - "tagprefix.sand":"沙子%s矿石", - "tagprefix.screw":"%s螺丝", - "tagprefix.screwdriver_tip":"%s螺丝刀刀头", - "tagprefix.slab":"%s台阶", - "tagprefix.small_dust":"小堆%s粉", - "tagprefix.small_gear":"小型%s齿轮", - "tagprefix.small_spring":"小型%s弹簧", - "tagprefix.spring":"%s弹簧", - "tagprefix.stairs":"%s楼梯", - "tagprefix.stone":"%s矿石", - "tagprefix.tiny_dust":"小撮%s粉", - "tagprefix.tuff":"凝灰岩%s矿石", - "tagprefix.turbine_blade":"%s涡轮扇叶", - "tagprefix.wire_cutter_head":"%s剪线钳钳头", - "tagprefix.wire_gt_double":"2x%s导线", - "tagprefix.wire_gt_hex":"16x%s导线", - "tagprefix.wire_gt_octal":"8x%s导线", - "tagprefix.wire_gt_quadruple":"4x%s导线", - "tagprefix.wire_gt_single":"1x%s导线", - "tagprefix.wrench_tip":"%s扳手顶", - "tile.gtceu.brittle_charcoal.name":"脆木炭块", - "tile.gtceu.brittle_charcoal.tooltip.0":"产自木炭堆点火器。", - "tile.gtceu.brittle_charcoal.tooltip.1":"挖掘可掉落木炭。", - "tile.gtceu.foam.name":"建筑泡沫", - "tile.gtceu.petrified_foam.name":"石化建筑泡沫", - "tile.gtceu.reinforced_foam.name":"强化建筑泡沫", - "tile.gtceu.reinforced_stone.name":"防爆石", - "tile.gtceu.seal.name":"密封方块" + "behavior.data_item.assemblyline.data": "- §a%s", + "behavior.data_item.assemblyline.title": "§n装配线结构数据:", + "behavior.item_magnet.disabled": "§c磁场已禁用", + "behavior.item_magnet.enabled": "§a磁场已启用", + "behavior.portable_scanner.amp_per_sec": "平均(最后一秒):%s A", + "behavior.portable_scanner.bedrock_fluid.amount": "流体储量:%s %s - %s%%", + "behavior.portable_scanner.bedrock_fluid.amount_unknown": "流体储量:%s%%", + "behavior.portable_scanner.bedrock_fluid.nothing": "流体储量:§6无§r", + "behavior.portable_scanner.block_hardness": "硬度:%s;爆炸抗性:%s", + "behavior.portable_scanner.block_name": "名称:%s;元数据:%s", + "behavior.portable_scanner.debug_cpu_load": "%2$s刻内平均CPU负载约%1$sns,最差情况为%sns。", + "behavior.portable_scanner.debug_cpu_load_seconds": "负载秒数为%s秒。", + "behavior.portable_scanner.debug_lag_count": "已在服务器中造成%s次延迟尖峰警告(任何大于%sms的情况)。", + "behavior.portable_scanner.debug_machine": "元ID:%s", + "behavior.portable_scanner.debug_machine_invalid": " 无效!", + "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!", + "behavior.portable_scanner.debug_machine_valid": "无效!", + "behavior.portable_scanner.divider": "=========================", + "behavior.portable_scanner.energy_container_in": "输入上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_out": "输出上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_storage": "能量:%s EU / %s EU", + "behavior.portable_scanner.environmental_hazard": "区块内的环境污染:%s§r - %s ppm", + "behavior.portable_scanner.environmental_hazard.nothing": "区块内的环境污染:§6无§r", + "behavior.portable_scanner.eu_per_sec": "平均(最后一秒):%s EU/t", + "behavior.portable_scanner.guild_name": "§2公会名称:%s§r", + "behavior.portable_scanner.local_hazard": "区域内的其他污染:%s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing": "区域内的其他污染:§6无§r", + "behavior.portable_scanner.machine_disabled": "已停止。", + "behavior.portable_scanner.machine_front_facing": "控制器面向:%s", + "behavior.portable_scanner.machine_ownership": "§2机器所有者类型:%s§r", + "behavior.portable_scanner.machine_power_loss": "因断电而停止工作。", + "behavior.portable_scanner.machine_progress": "处理进度/总计:%s / %s", + "behavior.portable_scanner.machine_upwards_facing": "控制器正面朝向:%s", + "behavior.portable_scanner.mode.caption": "显示模式:%s", + "behavior.portable_scanner.mode.show_all_info": "显示所有信息", + "behavior.portable_scanner.mode.show_block_info": "显示方块信息", + "behavior.portable_scanner.mode.show_electrical_info": "显示电器信息", + "behavior.portable_scanner.mode.show_environmental_info": "显示环境信息", + "behavior.portable_scanner.mode.show_machine_info": "显示机器信息", + "behavior.portable_scanner.mode.show_recipe_info": "显示配方信息", + "behavior.portable_scanner.muffled": "已静音。", + "behavior.portable_scanner.multiblock_energy_input": "最大输入:%s EU/t,电压等级 %s", + "behavior.portable_scanner.multiblock_energy_output": "最大输出:%s EU/t,电压等级 %s", + "behavior.portable_scanner.multiblock_maintenance": "故障:%s", + "behavior.portable_scanner.multiblock_parallel": "并行处理:%s", + "behavior.portable_scanner.player_name": "§2玩家姓名:%s§r,§7玩家在线:%s§r", + "behavior.portable_scanner.position": "----- X:%s;Y:%s;Z:%s;D:%s -----", + "behavior.portable_scanner.state": "%s:%s", + "behavior.portable_scanner.tank": "流体储量(槽位%s):%s mB / %s mB %s", + "behavior.portable_scanner.tanks_empty": "未存储流体", + "behavior.portable_scanner.team_name": "§2团队名称:%s§r", + "behavior.portable_scanner.workable_consumption": "预计耗能:%s EU/t,%s A", + "behavior.portable_scanner.workable_production": "预计产能:%s EU/t,%s A", + "behavior.portable_scanner.workable_progress": "处理进度:%s s / %s s", + "behavior.portable_scanner.workable_stored_energy": "能量缓存:%s EU / %s EU", + "behavior.prospector.added_waypoint": "已创建路径点:%s!", + "behavior.prospector.not_enough_energy": "能量不足!", + "behavior.toggle_energy_consumer.tooltip": "右击切换模式", + "behaviour.boor.by": "通过%s", + "behaviour.hammer": "右击机器以开启或关闭消声功能", + "behaviour.hoe": "可以翻耕泥土", + "behaviour.lighter.fluid.tooltip": "可使用丙烷或丁烷来生火", + "behaviour.lighter.tooltip.description": "可以点火", + "behaviour.lighter.tooltip.usage": "潜行右击以开/关", + "behaviour.lighter.uses": "剩余次数:%d", + "behaviour.meta.machine.config.copy.tooltip": "§7潜行右键单击以复制机器配置", + "behaviour.meta.machine.config.paste.tooltip": "§7右键单击以粘贴机器配置", + "behaviour.paintspray.black.tooltip": "可以将物品染成黑色", + "behaviour.paintspray.blue.tooltip": "可以将物品染成蓝色", + "behaviour.paintspray.brown.tooltip": "可以将物品染成棕色", + "behaviour.paintspray.cyan.tooltip": "可以将物品染成青色", + "behaviour.paintspray.gray.tooltip": "可以将物品染成灰色", + "behaviour.paintspray.green.tooltip": "可以将物品染成绿色", + "behaviour.paintspray.light_blue.tooltip": "可以将物品染成淡蓝色", + "behaviour.paintspray.light_gray.tooltip": "可以将物品染成银色", + "behaviour.paintspray.lime.tooltip": "可以将物品染成黄绿色", + "behaviour.paintspray.magenta.tooltip": "可以将物品染成品红色", + "behaviour.paintspray.orange.tooltip": "可以将物品染成橙色", + "behaviour.paintspray.pink.tooltip": "可以将物品染成粉红色", + "behaviour.paintspray.purple.tooltip": "可以将物品染成紫色", + "behaviour.paintspray.red.tooltip": "可以将物品染成红色", + "behaviour.paintspray.solvent.tooltip": "可以移除已染色物品的颜色", + "behaviour.paintspray.uses": "剩余次数:%d", + "behaviour.paintspray.white.tooltip": "可以将物品染成白色", + "behaviour.paintspray.yellow.tooltip": "可以将物品染成黄色", + "behaviour.prospecting": "适用于探矿", + "behaviour.setting.allow.input.from.output.tooltip": "%s-允许从输出面输入:%s", + "behaviour.setting.item_auto_output.tooltip": "%s-自动输出:%s", + "behaviour.setting.muffled.tooltip": "静音:%s", + "behaviour.setting.output.direction.tooltip": "%s-输出面方向:%s", + "behaviour.soft_hammer": "用来开启与关闭机器", + "behaviour.soft_hammer.disabled": "已暂停工作", + "behaviour.soft_hammer.enabled": "已恢复工作", + "behaviour.soft_hammer.idle_after_cycle": "当前周期结束后暂停机器", + "behaviour.wrench": "右击以旋转方块", + "block.filter_casing.tooltip": "创建一个§a无尘§r环境", + "block.gtceu.acid_hazard_sign_block": "强酸危害警示方块", + "block.gtceu.active_transformer": "有源变压器", + "block.gtceu.advanced_computer_casing": "高级计算机外壳", + "block.gtceu.advanced_data_access_hatch": "高级数据访问仓", + "block.gtceu.alloy_blast_smelter": "合金冶炼炉", + "block.gtceu.aluminium_crate": "铝板条箱", + "block.gtceu.aluminium_drum": "铝桶", + "block.gtceu.antimatter_hazard_sign_block": "反物质危害警示方块", + "block.gtceu.assembly_line": "装配线", + "block.gtceu.assembly_line_casing": "装配线外壳", + "block.gtceu.assembly_line_grating": "装配线格栅", + "block.gtceu.assembly_line_unit": "装配线控制外壳", + "block.gtceu.atomic_casing": "原子机械方块", + "block.gtceu.auto_maintenance_hatch": "自动维护仓", + "block.gtceu.bio_hazard_sign_block": "生化危害警示方块", + "block.gtceu.black_borderless_lamp": "黑色无框灯", + "block.gtceu.black_lamp": "黑色灯", + "block.gtceu.black_large_metal_sheet": "黑色粗纹金属板方块", + "block.gtceu.black_metal_sheet": "黑色金属板方块", + "block.gtceu.black_studs": "黑色橡胶混凝土", + "block.gtceu.blue_borderless_lamp": "蓝色无框灯", + "block.gtceu.blue_lamp": "蓝色灯", + "block.gtceu.blue_large_metal_sheet": "蓝色粗纹金属板方块", + "block.gtceu.blue_metal_sheet": "蓝色金属板方块", + "block.gtceu.blue_studs": "蓝色橡胶混凝土", + "block.gtceu.boss_hazard_sign_block": "Boss危害警示方块", + "block.gtceu.brittle_charcoal": "脆木炭块", + "block.gtceu.bronze_brick_casing": "砖砌青铜外壳", + "block.gtceu.bronze_crate": "青铜板条箱", + "block.gtceu.bronze_drum": "青铜桶", + "block.gtceu.bronze_firebox_casing": "青铜燃烧室", + "block.gtceu.bronze_gearbox": "青铜齿轮箱机械方块", + "block.gtceu.bronze_large_boiler": "大型青铜锅炉", + "block.gtceu.bronze_machine_casing": "青铜机器外壳", + "block.gtceu.bronze_pipe_casing": "青铜管道方块", + "block.gtceu.brown_borderless_lamp": "棕色无框灯", + "block.gtceu.brown_lamp": "棕色灯", + "block.gtceu.brown_large_metal_sheet": "棕色粗纹金属板方块", + "block.gtceu.brown_metal_sheet": "棕色金属板方块", + "block.gtceu.brown_studs": "棕色橡胶混凝土", + "block.gtceu.casing_coke_bricks": "焦炉砖块", + "block.gtceu.casing_grate": "栅格机械方块", + "block.gtceu.causality_hazard_sign_block": "因果律危害警示方块", + "block.gtceu.charcoal_pile_igniter": "木炭堆点火器", + "block.gtceu.chiseled_dark_concrete": "錾制深色混凝土", + "block.gtceu.chiseled_light_concrete": "錾制淡色混凝土", + "block.gtceu.chiseled_marble": "錾制大理岩", + "block.gtceu.chiseled_red_granite": "錾制红花岗岩", + "block.gtceu.clean_machine_casing": "洁净不锈钢机械方块", + "block.gtceu.cleaning_maintenance_hatch": "超净维护仓", + "block.gtceu.cleanroom": "超净间", + "block.gtceu.cleanroom_glass": "超净间玻璃", + "block.gtceu.coke_oven": "焦炉", + "block.gtceu.coke_oven_bricks": "焦炉砖块", + "block.gtceu.coke_oven_hatch": "焦炉仓", + "block.gtceu.computation_receiver_hatch": "算力数据靶仓", + "block.gtceu.computation_transmitter_hatch": "算力数据源仓", + "block.gtceu.computer_casing": "计算机外壳", + "block.gtceu.computer_heat_vent": "计算机散热口", + "block.gtceu.configurable_maintenance_hatch": "可配置维护仓", + "block.gtceu.corrosion_proof_casing": "耐腐蚀机械方块", + "block.gtceu.cracked_dark_concrete_bricks": "裂纹深色混凝土砖", + "block.gtceu.cracked_light_concrete_bricks": "裂纹淡色混凝土砖", + "block.gtceu.cracked_marble_bricks": "裂纹大理岩砖", + "block.gtceu.cracked_red_granite_bricks": "裂纹红花岗岩砖", + "block.gtceu.cracker": "裂化机", + "block.gtceu.creative_chest": "创造模式箱子", + "block.gtceu.creative_computation_provider": "创造模式计算机", + "block.gtceu.creative_data_access_hatch": "创造模式数据访问仓", + "block.gtceu.creative_energy": "创造模式能量单元", + "block.gtceu.creative_tank": "创造模式储罐", + "block.gtceu.crushing_wheels": "粉碎轮", + "block.gtceu.cupronickel_coil_block": "白铜线圈方块", + "block.gtceu.cyan_borderless_lamp": "青色无框灯", + "block.gtceu.cyan_lamp": "青色灯", + "block.gtceu.cyan_large_metal_sheet": "青色粗纹金属板方块", + "block.gtceu.cyan_metal_sheet": "青色金属板方块", + "block.gtceu.cyan_studs": "青色橡胶混凝土", + "block.gtceu.dark_concrete": "深色混凝土", + "block.gtceu.dark_concrete_bricks": "深色混凝土砖", + "block.gtceu.dark_concrete_cobblestone": "深色混凝土圆石", + "block.gtceu.dark_concrete_small_tile": "深色混凝土小片瓦", + "block.gtceu.dark_concrete_tile": "深色混凝土瓦", + "block.gtceu.dark_concrete_windmill_a": "深色混凝土风车形瓦 A", + "block.gtceu.dark_concrete_windmill_b": "深色混凝土风车形瓦 B", + "block.gtceu.data_access_hatch": "数据访问仓", + "block.gtceu.data_bank": "数据库", + "block.gtceu.data_receiver_hatch": "光学数据靶仓", + "block.gtceu.data_transmitter_hatch": "光学数据源仓", + "block.gtceu.distillation_tower": "蒸馏塔", + "block.gtceu.electric_blast_furnace": "电力高炉", + "block.gtceu.electrolytic_cell": "电解器", + "block.gtceu.empty_tier_i_battery": "空电容(Tier I)", + "block.gtceu.empty_tier_ii_battery": "空电容(Tier II)", + "block.gtceu.empty_tier_iii_battery": "空电容(Tier III)", + "block.gtceu.engine_intake_casing": "引擎进气机械方块", + "block.gtceu.ev_16a_energy_converter": "16§e安§r§5EV§r能量转换器", + "block.gtceu.ev_1a_energy_converter": "1§e安§r§5EV§r能量转换器", + "block.gtceu.ev_4a_energy_converter": "4§e安§r§5EV§r能量转换器", + "block.gtceu.ev_8a_energy_converter": "8§e安§r§5EV§r能量转换器", + "block.gtceu.ev_air_scrubber": "§5进阶空气净化器 III§r", + "block.gtceu.ev_alloy_smelter": "§5进阶合金炉 III§r", + "block.gtceu.ev_arc_furnace": "§5进阶电弧炉 III§r", + "block.gtceu.ev_assembler": "§5进阶组装机 III§r", + "block.gtceu.ev_autoclave": "§5进阶高压釜 III§r", + "block.gtceu.ev_battery_buffer_16x": "16x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_4x": "4x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_8x": "8x§5超高压§r电池箱(§5EV§r)", + "block.gtceu.ev_bedrock_ore_miner": "§5进阶基岩采矿机 III§r", + "block.gtceu.ev_bender": "§5进阶卷板机 III§r", + "block.gtceu.ev_block_breaker": "§5进阶方块破坏器 III§r", + "block.gtceu.ev_brewery": "§5进阶酿造室 III§r", + "block.gtceu.ev_canner": "§5进阶装罐机 III§r", + "block.gtceu.ev_centrifuge": "§5进阶离心机 III§r", + "block.gtceu.ev_charger_4x": "4x§5超高压§r闪聚充电箱(§5EV§r)", + "block.gtceu.ev_chemical_bath": "§5进阶化学浸洗机 III§r", + "block.gtceu.ev_chemical_reactor": "§5进阶化学反应釜 III§r", + "block.gtceu.ev_circuit_assembler": "§5进阶电路组装机 III§r", + "block.gtceu.ev_compressor": "§5进阶压缩机 III§r", + "block.gtceu.ev_cutter": "§5进阶切割机 III§r", + "block.gtceu.ev_diode": "§5EV§r二极管", + "block.gtceu.ev_distillery": "§5进阶蒸馏室 III§r", + "block.gtceu.ev_electric_furnace": "§5进阶电炉 III§r", + "block.gtceu.ev_electrolyzer": "§5进阶电解机 III§r", + "block.gtceu.ev_electromagnetic_separator": "§5进阶电磁选矿机 III§r", + "block.gtceu.ev_energy_input_hatch": "§5EV§r能源仓", + "block.gtceu.ev_energy_input_hatch_16a": "16安§5EV§r能源仓", + "block.gtceu.ev_energy_input_hatch_4a": "4安§5EV§r能源仓 ", + "block.gtceu.ev_energy_output_hatch": "§5EV§r动力仓", + "block.gtceu.ev_energy_output_hatch_16a": "16安§5EV§r动力仓", + "block.gtceu.ev_energy_output_hatch_4a": "4安§5EV§r动力仓", + "block.gtceu.ev_extractor": "§5进阶提取机 III§r", + "block.gtceu.ev_extruder": "§5进阶压模器 III§r", + "block.gtceu.ev_fermenter": "§5进阶发酵槽 III§r", + "block.gtceu.ev_fisher": "§5进阶捕鱼机 III§r", + "block.gtceu.ev_fluid_drilling_rig": "§5进阶流体钻机 III§r", + "block.gtceu.ev_fluid_heater": "§5进阶流体加热器 III§r", + "block.gtceu.ev_fluid_passthrough_hatch": "§5EV§r流体通行仓", + "block.gtceu.ev_fluid_solidifier": "§5进阶流体固化器 III§r", + "block.gtceu.ev_forge_hammer": "§5进阶锻造锤 III§r", + "block.gtceu.ev_forming_press": "§5进阶冲压机床 III§r", + "block.gtceu.ev_gas_collector": "§5进阶集气室 III§r", + "block.gtceu.ev_hermetic_casing": "密封机械方块 IV", + "block.gtceu.ev_input_bus": "§5EV§r输入总线", + "block.gtceu.ev_input_hatch": "§5EV§r输入仓", + "block.gtceu.ev_input_hatch_4x": "§5EV§r四重输入仓", + "block.gtceu.ev_input_hatch_9x": "§5EV§r九重输入仓", + "block.gtceu.ev_item_collector": "§5进阶物品收集器 III§r", + "block.gtceu.ev_item_passthrough_hatch": "§5EV§r物品通行仓", + "block.gtceu.ev_lapotronic_battery": "兰波顿电容(§5EV§r)", + "block.gtceu.ev_large_miner": "§5进阶大型采矿机 III§r", + "block.gtceu.ev_laser_engraver": "§5进阶激光蚀刻机 III§r", + "block.gtceu.ev_lathe": "§5进阶车床 III§r", + "block.gtceu.ev_macerator": "§5进阶研磨机 III§r", + "block.gtceu.ev_machine_casing": "§5EV§r机械方块", + "block.gtceu.ev_machine_hull": "§5EV§f机器外壳", + "block.gtceu.ev_mixer": "§5进阶搅拌机 III§r", + "block.gtceu.ev_muffler_hatch": "§5EV§r消声仓", + "block.gtceu.ev_ore_washer": "§5进阶洗矿厂 III§r", + "block.gtceu.ev_output_bus": "§5EV§r输出总线", + "block.gtceu.ev_output_hatch": "§5EV§r输出仓", + "block.gtceu.ev_output_hatch_4x": "§5EV§r四重输出仓", + "block.gtceu.ev_output_hatch_9x": "§5EV§r九重输出仓", + "block.gtceu.ev_packer": "§5进阶打包机 III§r", + "block.gtceu.ev_polarizer": "§5进阶两极磁化机 III§r", + "block.gtceu.ev_pump": "§5进阶泵 III§r", + "block.gtceu.ev_rock_crusher": "§5进阶碎岩机 III§r", + "block.gtceu.ev_rotor_holder": "§5EV§r转子支架", + "block.gtceu.ev_scanner": "§5进阶扫描仪 III§r", + "block.gtceu.ev_sifter": "§5进阶筛选机 III§r", + "block.gtceu.ev_substation_input_hatch_64a": "64安§5EV§r变电能源仓", + "block.gtceu.ev_substation_output_hatch_64a": "64安§5EV§r变电动力仓", + "block.gtceu.ev_super_chest": "超级箱 IV", + "block.gtceu.ev_super_tank": "超级缸 IV", + "block.gtceu.ev_thermal_centrifuge": "§5进阶热力离心机 III§r", + "block.gtceu.ev_transformer_16a": "§5超高压§r高能变压器(§5EV§r)", + "block.gtceu.ev_transformer_1a": "§5超高压§r变压器(§5EV§r)", + "block.gtceu.ev_transformer_2a": "§5超高压§r进阶变压器(§5EV§r)", + "block.gtceu.ev_transformer_4a": "§5超高压§r高流变压器(§5EV§r)", + "block.gtceu.ev_wiremill": "§5进阶线材轧机 III§r", + "block.gtceu.ev_world_accelerator": "§5进阶世界加速器 III§r", + "block.gtceu.explosion_hazard_sign_block": "爆炸危害警示方块", + "block.gtceu.explosive.breaking_tooltip": "破坏它会引爆火药,潜行挖掘以重新拾取", + "block.gtceu.explosive.lighting_tooltip": "无法用红石信号引爆", + "block.gtceu.extreme_combustion_engine": "极限内燃引擎", + "block.gtceu.extreme_engine_intake_casing": "极限引擎进气机械方块", + "block.gtceu.filter_casing": "过滤器机械方块", + "block.gtceu.fire_hazard_sign_block": "易燃危害警示方块", + "block.gtceu.firebricks": "耐火砖块", + "block.gtceu.foam": "建筑泡沫", + "block.gtceu.frost_hazard_sign_block": "低温危害警示方块", + "block.gtceu.frostproof_machine_casing": "铝制防冻机械方块", + "block.gtceu.fusion_casing": "聚变机械方块", + "block.gtceu.fusion_casing_mk2": "聚变机械方块 MK-II", + "block.gtceu.fusion_casing_mk3": "聚变机械方块 MK-III", + "block.gtceu.fusion_coil": "聚变线圈方块", + "block.gtceu.fusion_glass": "聚变玻璃", + "block.gtceu.gas_large_turbine": "大型燃气涡轮", + "block.gtceu.generic_hazard_sign_block": "泛用危害警示方块", + "block.gtceu.gold_drum": "金桶", + "block.gtceu.gray_borderless_lamp": "灰色无框灯", + "block.gtceu.gray_lamp": "灰色灯", + "block.gtceu.gray_large_metal_sheet": "灰色粗纹金属板方块", + "block.gtceu.gray_metal_sheet": "灰色金属板方块", + "block.gtceu.gray_studs": "灰色橡胶混凝土", + "block.gtceu.green_borderless_lamp": "绿色无框灯", + "block.gtceu.green_lamp": "绿色灯", + "block.gtceu.green_large_metal_sheet": "绿色粗纹金属板方块", + "block.gtceu.green_metal_sheet": "绿色金属板方块", + "block.gtceu.green_studs": "绿色橡胶混凝土", + "block.gtceu.gregification_hazard_sign_block": "格雷化危害警示方块", + "block.gtceu.heat_vent": "散热片", + "block.gtceu.heatproof_machine_casing": "殷钢隔热机械方块", + "block.gtceu.high_performance_computation_array": "高性能计算阵列(HPCA)", + "block.gtceu.high_power_casing": "高能机械方块", + "block.gtceu.high_pressure_hazard_sign_block": "高压力危害警示方块", + "block.gtceu.high_temperature_hazard_sign_block": "高温危害警示方块", + "block.gtceu.high_temperature_smelting_casing": "高温冶炼机械方块", + "block.gtceu.high_voltage_hazard_sign_block": "高压电危害警示方块", + "block.gtceu.hp_steam_alloy_smelter": "高压蒸汽合金炉", + "block.gtceu.hp_steam_compressor": "高压蒸汽压缩机", + "block.gtceu.hp_steam_extractor": "高压蒸汽提取机", + "block.gtceu.hp_steam_forge_hammer": "高压蒸汽锻造锤", + "block.gtceu.hp_steam_furnace": "高压蒸汽熔炉", + "block.gtceu.hp_steam_liquid_boiler": "高压蒸汽液体燃料锅炉", + "block.gtceu.hp_steam_macerator": "高压蒸汽研磨机", + "block.gtceu.hp_steam_miner": "高压蒸汽采矿机", + "block.gtceu.hp_steam_rock_crusher": "高压蒸汽碎岩机", + "block.gtceu.hp_steam_solar_boiler": "高压蒸汽太阳能锅炉", + "block.gtceu.hp_steam_solid_boiler": "高压蒸汽固体燃料锅炉", + "block.gtceu.hpca_active_cooler_component": "HPCA主动冷却组件", + "block.gtceu.hpca_advanced_computation_component": "HPCA高级计算组件", + "block.gtceu.hpca_bridge_component": "HPCA桥接组件", + "block.gtceu.hpca_computation_component": "HPCA计算组件", + "block.gtceu.hpca_empty_component": "空HPCA组件", + "block.gtceu.hpca_heat_sink_component": "HPCA散热组件", + "block.gtceu.hssg_coil_block": "高速钢-G线圈方块", + "block.gtceu.huge_duct_pipe": "巨型风管", + "block.gtceu.hv_16a_energy_converter": "16§e安§r§6HV§r能量转换器", + "block.gtceu.hv_1a_energy_converter": "1§e安§r§6HV§r能量转换器", + "block.gtceu.hv_4a_energy_converter": "4§e安§r§6HV§r能量转换器", + "block.gtceu.hv_8a_energy_converter": "8§e安§r§6HV§r能量转换器", + "block.gtceu.hv_air_scrubber": "§6进阶空气净化器 II§r", + "block.gtceu.hv_alloy_smelter": "§6进阶合金炉 II§r", + "block.gtceu.hv_arc_furnace": "§6进阶电弧炉 II§r", + "block.gtceu.hv_assembler": "§6进阶组装机 II§r", + "block.gtceu.hv_autoclave": "§6进阶高压釜 II§r", + "block.gtceu.hv_battery_buffer_16x": "16x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_4x": "4x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_8x": "8x§6高压§r电池箱(§6HV§r)", + "block.gtceu.hv_bedrock_ore_miner": "§6进阶基岩采矿机 II§r", + "block.gtceu.hv_bender": "§6进阶卷板机 II§r", + "block.gtceu.hv_block_breaker": "§6进阶方块破坏机 II§r", + "block.gtceu.hv_brewery": "§6进阶酿造室 II§r", + "block.gtceu.hv_buffer": "§6进阶缓存器 II§r", + "block.gtceu.hv_canner": "§6进阶装罐机 II§r", + "block.gtceu.hv_centrifuge": "§6进阶离心机 II§r", + "block.gtceu.hv_charger_4x": "4x§6高压§r闪聚充电箱(§6HV§r)", + "block.gtceu.hv_chemical_bath": "§6进阶化学浸洗机 II§r", + "block.gtceu.hv_chemical_reactor": "§6进阶化学反应釜 II§r", + "block.gtceu.hv_circuit_assembler": "§6进阶电路组装机 II§r", + "block.gtceu.hv_combustion": "§6进阶内燃发电机 II§r", + "block.gtceu.hv_compressor": "§6进阶压缩机 II§r", + "block.gtceu.hv_cutter": "§6进阶切割机 II§r", + "block.gtceu.hv_diode": "§6HV§r二极管", + "block.gtceu.hv_distillery": "§6进阶蒸馏室 II§r", + "block.gtceu.hv_electric_furnace": "§6进阶电炉 II§r", + "block.gtceu.hv_electrolyzer": "§6进阶电解机 II§r", + "block.gtceu.hv_electromagnetic_separator": "§6进阶电磁选矿机 II§r", + "block.gtceu.hv_energy_input_hatch": "§6HV§r能源仓", + "block.gtceu.hv_energy_output_hatch": "§6HV§r动力仓", + "block.gtceu.hv_extractor": "§6进阶提取机 II§r", + "block.gtceu.hv_extruder": "§6进阶压模器 II§r", + "block.gtceu.hv_fermenter": "§6进阶发酵槽 II§r", + "block.gtceu.hv_fisher": "§6进阶捕鱼机 II§r", + "block.gtceu.hv_fluid_drilling_rig": "§6进阶流体钻机 II§r", + "block.gtceu.hv_fluid_heater": "§6进阶流体加热器 II§r", + "block.gtceu.hv_fluid_passthrough_hatch": "§6HV§r流体通行仓", + "block.gtceu.hv_fluid_solidifier": "§6进阶流体固化器 II§r", + "block.gtceu.hv_forge_hammer": "§6进阶锻造锤 II§r", + "block.gtceu.hv_forming_press": "§6进阶冲压机床 II§r", + "block.gtceu.hv_gas_collector": "§6进阶集气室 II§r", + "block.gtceu.hv_gas_turbine": "§6进阶燃气轮机 II§r", + "block.gtceu.hv_hermetic_casing": "密封机械方块 III", + "block.gtceu.hv_input_bus": "§6HV§r输入总线", + "block.gtceu.hv_input_hatch": "§6HV§r输入仓", + "block.gtceu.hv_item_collector": "§6进阶物品收集器 II§r", + "block.gtceu.hv_item_passthrough_hatch": "§6HV§r物品通行仓", + "block.gtceu.hv_laser_engraver": "§6进阶激光蚀刻机 II§r", + "block.gtceu.hv_lathe": "§6进阶车床 II§r", + "block.gtceu.hv_macerator": "§6进阶研磨机 II§r", + "block.gtceu.hv_machine_casing": "§6HV§r机械方块", + "block.gtceu.hv_machine_hull": "§6HV§f机器外壳", + "block.gtceu.hv_miner": "§6进阶采矿机 II§r", + "block.gtceu.hv_mixer": "§6进阶搅拌机 II§r", + "block.gtceu.hv_muffler_hatch": "§6HV§r消声仓", + "block.gtceu.hv_ore_washer": "§6进阶洗矿厂 II§r", + "block.gtceu.hv_output_bus": "§6HV§r输出总线", + "block.gtceu.hv_output_hatch": "§6HV§r输出仓", + "block.gtceu.hv_packer": "§6进阶打包机 II§r", + "block.gtceu.hv_polarizer": "§6进阶两极磁化机 II§r", + "block.gtceu.hv_pump": "§6进阶泵 II§r", + "block.gtceu.hv_rock_crusher": "§6进阶碎岩机 II§r", + "block.gtceu.hv_rotor_holder": "§6HV§r转子支架", + "block.gtceu.hv_scanner": "§6进阶扫描仪 II§r", + "block.gtceu.hv_sifter": "§6进阶筛选机 II§r", + "block.gtceu.hv_steam_turbine": "§6进阶蒸汽轮机 II§r", + "block.gtceu.hv_super_chest": "超级箱 III", + "block.gtceu.hv_super_tank": "超级缸 III", + "block.gtceu.hv_thermal_centrifuge": "§6进阶热力离心机 II§r", + "block.gtceu.hv_transformer_16a": "§6高压§r高能变压器(§6HV§r)", + "block.gtceu.hv_transformer_1a": "§6高压§r变压器(§6HV§r)", + "block.gtceu.hv_transformer_2a": "§6高压§r进阶变压器(§6HV§r)", + "block.gtceu.hv_transformer_4a": "§6高压§r高流变压器(§6HV§r)", + "block.gtceu.hv_wiremill": "§6进阶线材轧机 II§r", + "block.gtceu.hv_world_accelerator": "§6进阶世界加速器 II§r", + "block.gtceu.implosion_compressor": "聚爆压缩机", + "block.gtceu.industrial_steam_casing": "工业蒸汽机械方块", + "block.gtceu.industrial_tnt": "工业TNT", + "block.gtceu.inert_machine_casing": "聚四氟乙烯化学惰性机械方块", + "block.gtceu.itnt.drops_tooltip": "爆炸范围比TNT大得多,所有被摧毁的方块都会掉落", + "block.gtceu.iv_1024a_laser_source_hatch": "1024§e安§r§9IV§r激光源仓", + "block.gtceu.iv_1024a_laser_target_hatch": "1024§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_16a_energy_converter": "16§e安§r§9IV§r能量转换器", + "block.gtceu.iv_1a_energy_converter": "1§e安§r§9IV§r能量转换器", + "block.gtceu.iv_256a_laser_source_hatch": "256§e安§r§9IV§r激光源仓", + "block.gtceu.iv_256a_laser_target_hatch": "256§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_4096a_laser_source_hatch": "4096§e安§r§9IV§r激光源仓", + "block.gtceu.iv_4096a_laser_target_hatch": "4096§e安§r§9IV§r激光靶仓", + "block.gtceu.iv_4a_energy_converter": "4§e安§r§9IV§r能量转换器", + "block.gtceu.iv_8a_energy_converter": "8§e安§r§9IV§r能量转换器", + "block.gtceu.iv_alloy_smelter": "§9精英合金炉§r", + "block.gtceu.iv_arc_furnace": "§9精英电弧炉§r", + "block.gtceu.iv_assembler": "§9精英组装机§r", + "block.gtceu.iv_autoclave": "§9精英高压釜§r", + "block.gtceu.iv_battery_buffer_16x": "16x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_4x": "4x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_8x": "8x§9强导压§r电池箱(§9IV§r)", + "block.gtceu.iv_bender": "§9精英卷板机§r", + "block.gtceu.iv_brewery": "§9精英酿造室§r", + "block.gtceu.iv_canner": "§9精英装罐机§r", + "block.gtceu.iv_centrifuge": "§9精英离心机§r", + "block.gtceu.iv_charger_4x": "4x§9强导压§r闪聚充电箱(§9IV§r)", + "block.gtceu.iv_chemical_bath": "§9精英化学浸洗机§r", + "block.gtceu.iv_chemical_reactor": "§9精英化学反应釜§r", + "block.gtceu.iv_circuit_assembler": "§9精英电路组装机§r", + "block.gtceu.iv_compressor": "§9精英压缩机§r", + "block.gtceu.iv_cutter": "§9精英切割机§r", + "block.gtceu.iv_diode": "§9IV§r二极管", + "block.gtceu.iv_distillery": "§9精英蒸馏室§r", + "block.gtceu.iv_electric_furnace": "§9精英电炉§r", + "block.gtceu.iv_electrolyzer": "§9精英电解机§r", + "block.gtceu.iv_electromagnetic_separator": "§9精英电磁选矿机§r", + "block.gtceu.iv_energy_input_hatch": "§9IV§r能源仓", + "block.gtceu.iv_energy_input_hatch_16a": "16安§9IV§r能源仓", + "block.gtceu.iv_energy_input_hatch_4a": "4安§9IV§r能源仓", + "block.gtceu.iv_energy_output_hatch": "§9IV§r动力仓", + "block.gtceu.iv_energy_output_hatch_16a": "16安§9IV§r动力仓", + "block.gtceu.iv_energy_output_hatch_4a": "4安§9IV§r动力仓", + "block.gtceu.iv_extractor": "§9精英提取机§r", + "block.gtceu.iv_extruder": "§9精英压模器§r", + "block.gtceu.iv_fermenter": "§9精英发酵槽§r", + "block.gtceu.iv_fisher": "§9精英捕鱼机§r", + "block.gtceu.iv_fluid_heater": "§9精英流体加热器§r", + "block.gtceu.iv_fluid_passthrough_hatch": "§9IV§r流体通行仓", + "block.gtceu.iv_fluid_solidifier": "§9精英流体固化器§r", + "block.gtceu.iv_forge_hammer": "§9精英锻造锤§r", + "block.gtceu.iv_forming_press": "§9精英冲压机床§r", + "block.gtceu.iv_gas_collector": "§9精英集气室§r", + "block.gtceu.iv_hermetic_casing": "密封机械方块 V", + "block.gtceu.iv_input_bus": "§9IV§r输入总线", + "block.gtceu.iv_input_hatch": "§9IV§r输入仓", + "block.gtceu.iv_input_hatch_4x": "§9IV§r四重输入仓", + "block.gtceu.iv_input_hatch_9x": "§9IV§r九重输入仓", + "block.gtceu.iv_item_passthrough_hatch": "§9IV§r物品通行仓", + "block.gtceu.iv_lapotronic_battery": "兰波顿电容(§1IV§r)", + "block.gtceu.iv_large_miner": "§9精英大型采矿机§r", + "block.gtceu.iv_laser_engraver": "§9精英激光蚀刻机§r", + "block.gtceu.iv_lathe": "§9精英车床§r", + "block.gtceu.iv_macerator": "§9精英研磨机§r", + "block.gtceu.iv_machine_casing": "§9IV§r机械方块", + "block.gtceu.iv_machine_hull": "§9IV§f机器外壳", + "block.gtceu.iv_mixer": "§9精英搅拌机§r", + "block.gtceu.iv_muffler_hatch": "§9IV§r消声仓", + "block.gtceu.iv_ore_washer": "§9精英洗矿厂§r", + "block.gtceu.iv_output_bus": "§9IV§r输出总线", + "block.gtceu.iv_output_hatch": "§9IV§r输出仓", + "block.gtceu.iv_output_hatch_4x": "§9IV§r四重输出仓", + "block.gtceu.iv_output_hatch_9x": "§9IV§r九重输出仓", + "block.gtceu.iv_packer": "§9精英打包机§r", + "block.gtceu.iv_parallel_hatch": "§9IV§r并行控制仓", + "block.gtceu.iv_polarizer": "§9精英两极磁化机§r", + "block.gtceu.iv_quantum_chest": "量子箱 V", + "block.gtceu.iv_quantum_tank": "量子缸 V", + "block.gtceu.iv_rock_crusher": "§9精英碎岩机§r", + "block.gtceu.iv_rotor_holder": "§9IV§r转子支架", + "block.gtceu.iv_scanner": "§9精英扫描仪§r", + "block.gtceu.iv_sifter": "§9精英筛选机§r", + "block.gtceu.iv_substation_input_hatch_64a": "64安§9IV§r变电能源仓", + "block.gtceu.iv_substation_output_hatch_64a": "64安§9IV§r变电动力仓", + "block.gtceu.iv_thermal_centrifuge": "§9精英热力离心机§r", + "block.gtceu.iv_transformer_16a": "§9强导压§r高能变压器(§9IV§r)", + "block.gtceu.iv_transformer_1a": "§9强导压§r变压器(§9IV§r)", + "block.gtceu.iv_transformer_2a": "§9强导压§r进阶变压器(§9IV§r)", + "block.gtceu.iv_transformer_4a": "§9强导压§r高流变压器(§9IV§r)", + "block.gtceu.iv_wiremill": "§9精英线材轧机§r", + "block.gtceu.iv_world_accelerator": "§9精英世界加速器§r", + "block.gtceu.kanthal_coil_block": "坎塔尔合金线圈方块", + "block.gtceu.laminated_glass": "夹层玻璃", + "block.gtceu.lamp.tooltip.inverted": "反相", + "block.gtceu.lamp.tooltip.no_bloom": "无泛光", + "block.gtceu.lamp.tooltip.no_light": "无光照", + "block.gtceu.large_arc_smelter": "大型电弧炉", + "block.gtceu.large_assembler": "大型组装厂", + "block.gtceu.large_autoclave": "大型高压结晶室", + "block.gtceu.large_brewer": "大型酿造厂", + "block.gtceu.large_centrifuge": "大型离心机组", + "block.gtceu.large_chemical_bath": "大型化学浸洗机", + "block.gtceu.large_chemical_reactor": "大型化学反应釜", + "block.gtceu.large_circuit_assembler": "大型电路组装设施", + "block.gtceu.large_combustion_engine": "大型内燃引擎", + "block.gtceu.large_cutter": "大型切割机", + "block.gtceu.large_distillery": "大型分馏蒸馏厂", + "block.gtceu.large_duct_pipe": "大型风管", + "block.gtceu.large_electrolyzer": "大型电解槽", + "block.gtceu.large_electromagnet": "大型电磁工厂", + "block.gtceu.large_engraving_laser": "大型激光蚀刻机", + "block.gtceu.large_extractor": "大型提取机", + "block.gtceu.large_extruder": "大型压模机", + "block.gtceu.large_maceration_tower": "大型研磨塔", + "block.gtceu.large_material_press": "大型挤压机", + "block.gtceu.large_mixer": "大型搅拌罐", + "block.gtceu.large_packer": "大型打包机", + "block.gtceu.large_scale_assembler_casing": "大型组装机机械方块", + "block.gtceu.large_sifting_funnel": "大型筛选漏斗", + "block.gtceu.large_solidifier": "大型固化阵列", + "block.gtceu.large_wiremill": "大型线材工厂", + "block.gtceu.laser_hazard_sign_block": "激光危害警示方块", + "block.gtceu.laser_safe_engraving_casing": "激光安全机械方块", + "block.gtceu.light_blue_borderless_lamp": "淡蓝色无框灯", + "block.gtceu.light_blue_lamp": "淡蓝色灯", + "block.gtceu.light_blue_large_metal_sheet": "淡蓝色粗纹金属板方块", + "block.gtceu.light_blue_metal_sheet": "淡蓝色金属板方块", + "block.gtceu.light_blue_studs": "淡蓝色橡胶混凝土", + "block.gtceu.light_concrete": "淡色混凝土", + "block.gtceu.light_concrete_bricks": "淡色混凝土砖", + "block.gtceu.light_concrete_cobblestone": "淡色混凝土圆石", + "block.gtceu.light_concrete_small_tile": "淡色混凝土小片瓦", + "block.gtceu.light_concrete_tile": "淡色混凝土瓦", + "block.gtceu.light_concrete_windmill_a": "淡色混凝土风车形瓦 A", + "block.gtceu.light_concrete_windmill_b": "淡色混凝土风车形瓦 B", + "block.gtceu.light_gray_borderless_lamp": "淡灰色无框灯", + "block.gtceu.light_gray_lamp": "淡灰色灯", + "block.gtceu.light_gray_large_metal_sheet": "淡灰色粗纹金属板方块", + "block.gtceu.light_gray_metal_sheet": "淡灰色金属板方块", + "block.gtceu.light_gray_studs": "淡灰色橡胶混凝土", + "block.gtceu.lime_borderless_lamp": "黄绿色无框灯", + "block.gtceu.lime_lamp": "黄绿色灯", + "block.gtceu.lime_large_metal_sheet": "黄绿色粗纹金属板方块", + "block.gtceu.lime_metal_sheet": "黄绿色金属板方块", + "block.gtceu.lime_studs": "黄绿色橡胶混凝土", + "block.gtceu.long_distance_fluid_pipeline": "长距离流体管道", + "block.gtceu.long_distance_fluid_pipeline_endpoint": "长距离流体管道接口", + "block.gtceu.long_distance_item_pipeline": "长距离物品管道", + "block.gtceu.long_distance_item_pipeline_endpoint": "长距离物品管道接口", + "block.gtceu.long_distance_item_pipeline_input_endpoint": "输入接口", + "block.gtceu.long_distance_item_pipeline_input_pos": " - 输入:%s", + "block.gtceu.long_distance_item_pipeline_network_header": "网络:", + "block.gtceu.long_distance_item_pipeline_no_network": "找不到网络", + "block.gtceu.long_distance_item_pipeline_output_endpoint": "输出接口", + "block.gtceu.long_distance_item_pipeline_output_pos": " - 输出:%s", + "block.gtceu.long_distance_item_pipeline_pipe_count": " - 管道:%s", + "block.gtceu.lp_steam_alloy_smelter": "低压蒸汽合金炉", + "block.gtceu.lp_steam_compressor": "低压蒸汽压缩机", + "block.gtceu.lp_steam_extractor": "低压蒸汽提取机", + "block.gtceu.lp_steam_forge_hammer": "低压蒸汽锻造锤", + "block.gtceu.lp_steam_furnace": "低压蒸汽熔炉", + "block.gtceu.lp_steam_liquid_boiler": "低压蒸汽液体燃料锅炉", + "block.gtceu.lp_steam_macerator": "低压蒸汽研磨机", + "block.gtceu.lp_steam_miner": "低压蒸汽采矿机", + "block.gtceu.lp_steam_rock_crusher": "低压蒸汽碎岩机", + "block.gtceu.lp_steam_solar_boiler": "低压蒸汽太阳能锅炉", + "block.gtceu.lp_steam_solid_boiler": "低压蒸汽固体燃料锅炉", + "block.gtceu.luv_1024a_laser_source_hatch": "1024§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_1024a_laser_target_hatch": "1024§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_16a_energy_converter": "16§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_1a_energy_converter": "1§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_256a_laser_source_hatch": "256§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_256a_laser_target_hatch": "256§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_4096a_laser_source_hatch": "4096§e安§r§dLuV§r激光源仓", + "block.gtceu.luv_4096a_laser_target_hatch": "4096§e安§r§dLuV§r激光靶仓", + "block.gtceu.luv_4a_energy_converter": "4§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_8a_energy_converter": "8§e安§r§dLuV§r能量转换器", + "block.gtceu.luv_alloy_smelter": "§d精英合金炉 II§r", + "block.gtceu.luv_arc_furnace": "§d精英电弧炉 II§r", + "block.gtceu.luv_assembler": "§d精英组装机 II§r", + "block.gtceu.luv_autoclave": "§d精英高压釜 II§r", + "block.gtceu.luv_battery_buffer_16x": "16x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_4x": "4x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_8x": "8x§d剧差压§r电池箱(§dLuV§r)", + "block.gtceu.luv_bender": "§d精英卷板机 II§r", + "block.gtceu.luv_brewery": "§d精英酿造室 II§r", + "block.gtceu.luv_canner": "§d精英装罐机 II§r", + "block.gtceu.luv_centrifuge": "§d精英离心机 II§r", + "block.gtceu.luv_charger_4x": "4x§d剧差压§r闪聚充电箱(§dLuV§r)", + "block.gtceu.luv_chemical_bath": "§d精英化学浸洗机 II§r", + "block.gtceu.luv_chemical_reactor": "§d精英化学反应釜 II§r", + "block.gtceu.luv_circuit_assembler": "§d精英电路组装机 II§r", + "block.gtceu.luv_compressor": "§d精英压缩机 II§r", + "block.gtceu.luv_cutter": "§d精英切割机 II§r", + "block.gtceu.luv_diode": "§dLuV§r二极管", + "block.gtceu.luv_distillery": "§d精英蒸馏室 II§r", + "block.gtceu.luv_dual_input_hatch": "§dLuV§r输入总成", + "block.gtceu.luv_dual_output_hatch": "§dLuV§r输出总成", + "block.gtceu.luv_electric_furnace": "§d精英电炉 II§r", + "block.gtceu.luv_electrolyzer": "§d精英电解机 II§r", + "block.gtceu.luv_electromagnetic_separator": "§d精英电磁选矿机 II§r", + "block.gtceu.luv_energy_input_hatch": "§dLuV§r能源仓", + "block.gtceu.luv_energy_input_hatch_16a": "16安§dLuV§r能源仓", + "block.gtceu.luv_energy_input_hatch_4a": "4安§dLuV§r能源仓", + "block.gtceu.luv_energy_output_hatch": "§dLuV§r动力仓", + "block.gtceu.luv_energy_output_hatch_16a": "16安§dLuV§r动力仓", + "block.gtceu.luv_energy_output_hatch_4a": "4安§dLuV§r动力仓", + "block.gtceu.luv_extractor": "§d精英提取机 II§r", + "block.gtceu.luv_extruder": "§d精英压模器 II§r", + "block.gtceu.luv_fermenter": "§d精英发酵槽 II§r", + "block.gtceu.luv_fisher": "§d精英捕鱼机 II§r", + "block.gtceu.luv_fluid_heater": "§d精英流体加热器 II§r", + "block.gtceu.luv_fluid_passthrough_hatch": "§dLuV§r流体通行仓", + "block.gtceu.luv_fluid_solidifier": "§d精英流体固化器 II§r", + "block.gtceu.luv_forge_hammer": "§d精英锻造锤 II§r", + "block.gtceu.luv_forming_press": "§d精英冲压机床 II§r", + "block.gtceu.luv_fusion_reactor": "核聚变反应堆控制电脑 MK-I", + "block.gtceu.luv_gas_collector": "§d精英集气室 II§r", + "block.gtceu.luv_hermetic_casing": "密封机械方块 VI", + "block.gtceu.luv_input_bus": "§dLuV§r输入总线", + "block.gtceu.luv_input_hatch": "§dLuV§r输入仓", + "block.gtceu.luv_input_hatch_4x": "§dLuV§r四重输入仓", + "block.gtceu.luv_input_hatch_9x": "§dLuV§r九重输入仓", + "block.gtceu.luv_item_passthrough_hatch": "§dLuV§r物品通行仓", + "block.gtceu.luv_lapotronic_battery": "兰波顿电容(§dLuV§r)", + "block.gtceu.luv_large_miner": "§d精英大型采矿机 II§r", + "block.gtceu.luv_laser_engraver": "§d精英激光蚀刻机 II§r", + "block.gtceu.luv_lathe": "§d精英车床 II§r", + "block.gtceu.luv_macerator": "§d精英研磨机 II§r", + "block.gtceu.luv_machine_casing": "§dLuV§r机械方块", + "block.gtceu.luv_machine_hull": "§dLuV§f机器外壳", + "block.gtceu.luv_mixer": "§d精英搅拌机 II§r", + "block.gtceu.luv_muffler_hatch": "§dLuV§r消声仓", + "block.gtceu.luv_ore_washer": "§d精英洗矿厂 II§r", + "block.gtceu.luv_output_bus": "§dLuV§r输出总线", + "block.gtceu.luv_output_hatch": "§dLuV§r输出仓", + "block.gtceu.luv_output_hatch_4x": "§dLuV§r四重输出仓", + "block.gtceu.luv_output_hatch_9x": "§dLuV§r九重输出仓", + "block.gtceu.luv_packer": "§d精英打包机 II§r", + "block.gtceu.luv_parallel_hatch": "§dLuV§r并行控制仓", + "block.gtceu.luv_polarizer": "§d精英两极磁化机 II§r", + "block.gtceu.luv_quantum_chest": "量子箱 VI", + "block.gtceu.luv_quantum_tank": "量子缸 VI", + "block.gtceu.luv_rock_crusher": "§d精英碎岩机 II§r", + "block.gtceu.luv_rotor_holder": "§dLuV§r转子支架", + "block.gtceu.luv_scanner": "§d精英扫描仪 II§r", + "block.gtceu.luv_sifter": "§d精英筛选机 II§r", + "block.gtceu.luv_substation_input_hatch_64a": "64安§dLuV§r变电能源仓", + "block.gtceu.luv_substation_output_hatch_64a": "64安§dLuV§r变电动力仓", + "block.gtceu.luv_thermal_centrifuge": "§d精英热力离心机 II§r", + "block.gtceu.luv_transformer_16a": "§d剧差压§r高能变压器(§dLuV§r)", + "block.gtceu.luv_transformer_1a": "§d剧差压§r变压器(§dLuV§r)", + "block.gtceu.luv_transformer_2a": "§d剧差压§r进阶变压器(§dLuV§r)", + "block.gtceu.luv_transformer_4a": "§d剧差压§r高流变压器(§dLuV§r)", + "block.gtceu.luv_wiremill": "§d精英线材轧机 II§r", + "block.gtceu.luv_world_accelerator": "§d精英世界加速器 II§r", + "block.gtceu.lv_16a_energy_converter": "16§e安§r§7LV§r能量转换器", + "block.gtceu.lv_1a_energy_converter": "1§e安§r§7LV§r能量转换器", + "block.gtceu.lv_4a_energy_converter": "4§e安§r§7LV§r能量转换器", + "block.gtceu.lv_8a_energy_converter": "8§e安§r§7LV§r能量转换器", + "block.gtceu.lv_air_scrubber": "基础空气净化器§r", + "block.gtceu.lv_alloy_smelter": "基础合金炉§r", + "block.gtceu.lv_arc_furnace": "基础电弧炉§r", + "block.gtceu.lv_assembler": "基础组装机§r", + "block.gtceu.lv_autoclave": "基础高压釜§r", + "block.gtceu.lv_battery_buffer_16x": "16x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_4x": "4x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_8x": "8x§7低压§r电池箱(§7LV§r)", + "block.gtceu.lv_bender": "基础卷板机§r", + "block.gtceu.lv_block_breaker": "基础方块破坏器§r", + "block.gtceu.lv_brewery": "基础酿造室§r", + "block.gtceu.lv_buffer": "基础缓存器§r", + "block.gtceu.lv_canner": "基础装罐机§r", + "block.gtceu.lv_centrifuge": "基础离心机§r", + "block.gtceu.lv_charger_4x": "4x§7低压§r闪聚充电箱(§7LV§r)", + "block.gtceu.lv_chemical_bath": "基础化学浸洗机§r", + "block.gtceu.lv_chemical_reactor": "基础化学反应釜§r", + "block.gtceu.lv_circuit_assembler": "基础电路组装机§r", + "block.gtceu.lv_combustion": "基础内燃发电机§r", + "block.gtceu.lv_compressor": "基础压缩机§r", + "block.gtceu.lv_cutter": "基础切割机§r", + "block.gtceu.lv_diode": "§7LV§r二极管", + "block.gtceu.lv_distillery": "基础蒸馏室§r", + "block.gtceu.lv_electric_furnace": "基础电炉§r", + "block.gtceu.lv_electrolyzer": "基础电解机§r", + "block.gtceu.lv_electromagnetic_separator": "基础电磁选矿机§r", + "block.gtceu.lv_energy_input_hatch": "§7LV§r能源仓", + "block.gtceu.lv_energy_output_hatch": "§7LV§r动力仓", + "block.gtceu.lv_extractor": "基础提取机§r", + "block.gtceu.lv_extruder": "基础压模器§r", + "block.gtceu.lv_fermenter": "基础发酵槽§r", + "block.gtceu.lv_fisher": "基础捕鱼机§r", + "block.gtceu.lv_fluid_heater": "基础流体加热器§r", + "block.gtceu.lv_fluid_passthrough_hatch": "§7LV§r流体通行仓", + "block.gtceu.lv_fluid_solidifier": "基础流体固化器§r", + "block.gtceu.lv_forge_hammer": "基础锻造锤§r", + "block.gtceu.lv_forming_press": "基础冲压机床§r", + "block.gtceu.lv_gas_collector": "基础集气室§r", + "block.gtceu.lv_gas_turbine": "基础燃气轮机§r", + "block.gtceu.lv_hermetic_casing": "密封机械方块 I", + "block.gtceu.lv_input_bus": "§7LV§r输入总线", + "block.gtceu.lv_input_hatch": "§7LV§r输入仓", + "block.gtceu.lv_item_collector": "基础物品收集器§r", + "block.gtceu.lv_item_passthrough_hatch": "§7LV§r物品通行仓", + "block.gtceu.lv_laser_engraver": "基础激光蚀刻机§r", + "block.gtceu.lv_lathe": "基础车床§r", + "block.gtceu.lv_macerator": "基础研磨机§r", + "block.gtceu.lv_machine_casing": "§7LV§r机械方块", + "block.gtceu.lv_machine_hull": "§7LV§f机器外壳", + "block.gtceu.lv_miner": "基础采矿机§r", + "block.gtceu.lv_mixer": "基础搅拌机§r", + "block.gtceu.lv_muffler_hatch": "§7LV§r消声仓", + "block.gtceu.lv_ore_washer": "基础洗矿厂§r", + "block.gtceu.lv_output_bus": "§7LV§r输出总线", + "block.gtceu.lv_output_hatch": "§7LV§r输出仓", + "block.gtceu.lv_packer": "基础打包机§r", + "block.gtceu.lv_polarizer": "基础两极磁化机§r", + "block.gtceu.lv_pump": "基础泵§r", + "block.gtceu.lv_rock_crusher": "基础碎岩机§r", + "block.gtceu.lv_scanner": "基础扫描仪§r", + "block.gtceu.lv_sifter": "基础筛选机§r", + "block.gtceu.lv_steam_turbine": "基础蒸汽轮机§r", + "block.gtceu.lv_super_chest": "超级箱 I", + "block.gtceu.lv_super_tank": "超级缸 I", + "block.gtceu.lv_thermal_centrifuge": "基础热力离心机§r", + "block.gtceu.lv_transformer_16a": "§7低压§r高能变压器(§7LV§r)", + "block.gtceu.lv_transformer_1a": "§7低压§r变压器(§7LV§r)", + "block.gtceu.lv_transformer_2a": "§7低压§r进阶变压器(§7LV§r)", + "block.gtceu.lv_transformer_4a": "§7低压§r高流变压器(§7LV§r)", + "block.gtceu.lv_wiremill": "基础线材轧机§r", + "block.gtceu.lv_world_accelerator": "基础世界加速器§r", + "block.gtceu.magenta_borderless_lamp": "品红色无框灯", + "block.gtceu.magenta_lamp": "品红色灯", + "block.gtceu.magenta_large_metal_sheet": "品红色粗纹金属板方块", + "block.gtceu.magenta_metal_sheet": "品红色金属板方块", + "block.gtceu.magenta_studs": "品红色橡胶混凝土", + "block.gtceu.magic_hazard_sign_block": "魔力危害警示方块", + "block.gtceu.magnetic_hazard_sign_block": "强磁危害警示方块", + "block.gtceu.maintenance_hatch": "维护仓", + "block.gtceu.marble": "大理岩", + "block.gtceu.marble_bricks": "大理岩砖", + "block.gtceu.marble_cobblestone": "大理岩圆石", + "block.gtceu.marble_small_tile": "大理岩小片瓦", + "block.gtceu.marble_tile": "大理岩瓦", + "block.gtceu.marble_windmill_a": "大理岩风车形瓦 A", + "block.gtceu.marble_windmill_b": "大理岩风车形瓦 B", + "block.gtceu.max_16a_energy_converter": "16§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_1a_energy_converter": "1§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_4a_energy_converter": "4§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_8a_energy_converter": "8§e安§r§c§lMAX§r能量转换器", + "block.gtceu.max_battery_buffer_16x": "16x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_4x": "4x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_8x": "8x§c上限压§r电池箱(§c§lMAX§r)", + "block.gtceu.max_charger_4x": "4x§c上限压§r闪聚充电箱(§c§lMAX§r)", + "block.gtceu.max_dual_input_hatch": "§c§lMAX§r输入总成", + "block.gtceu.max_dual_output_hatch": "§c§lMAX§r输出总成", + "block.gtceu.max_energy_input_hatch": "§c§lMAX§r能源仓", + "block.gtceu.max_energy_input_hatch_16a": "16安§c§lMAX§r能源仓", + "block.gtceu.max_energy_input_hatch_4a": "4安§c§lMAX§r能源仓", + "block.gtceu.max_energy_output_hatch": "§c§lMAX§r动力仓", + "block.gtceu.max_energy_output_hatch_16a": "16安§c§lMAX§r动力仓", + "block.gtceu.max_energy_output_hatch_4a": "4安§c§lMAX§r动力仓", + "block.gtceu.max_input_bus": "§c§lMAX§r输入总线", + "block.gtceu.max_input_hatch": "§c§lMAX§r输入仓", + "block.gtceu.max_input_hatch_4x": "§c§lMAX§r四重输入仓", + "block.gtceu.max_input_hatch_9x": "§c§lMAX§r九重输入仓", + "block.gtceu.max_machine_casing": "§c§lMAX§r机械方块", + "block.gtceu.max_machine_hull": "§c§lMAX§f机器外壳", + "block.gtceu.max_output_bus": "§c§lMAX§r输出总线", + "block.gtceu.max_output_hatch": "§c§lMAX§r输出仓", + "block.gtceu.max_output_hatch_4x": "§c§lMAX§r四重输出仓", + "block.gtceu.max_output_hatch_9x": "§c§lMAX§r九重输出仓", + "block.gtceu.max_substation_input_hatch_64a": "64安§c§lMAX§r变电能源仓", + "block.gtceu.max_substation_output_hatch_64a": "64安§c§lMAX§r变电动力仓", + "block.gtceu.me_input_bus": "ME输入总线", + "block.gtceu.me_input_hatch": "ME输入仓", + "block.gtceu.me_output_bus": "ME输出总线", + "block.gtceu.me_output_hatch": "ME输出仓", + "block.gtceu.me_pattern_buffer": "ME样板总成", + "block.gtceu.me_pattern_buffer_proxy": "ME样板总成镜像", + "block.gtceu.me_stocking_input_bus": "ME库存输入总线", + "block.gtceu.me_stocking_input_hatch": "ME库存输入仓", + "block.gtceu.mega_blast_furnace": "转底炉", + "block.gtceu.mega_vacuum_freezer": "巨型真空冷冻机", + "block.gtceu.miner_pipe": "采矿管道", + "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵袭危害警示方块", + "block.gtceu.mob_spawner_hazard_sign_block": "刷怪笼危害警示方块", + "block.gtceu.molybdenum_disilicide_coil_block": "二硅化钼线圈方块", + "block.gtceu.mossy_dark_concrete_bricks": "覆苔深色混凝土砖", + "block.gtceu.mossy_dark_concrete_cobblestone": "覆苔深色混凝土圆石", + "block.gtceu.mossy_light_concrete_bricks": "覆苔淡色混凝土砖", + "block.gtceu.mossy_light_concrete_cobblestone": "覆苔淡色混凝土圆石", + "block.gtceu.mossy_marble_bricks": "覆苔大理岩砖", + "block.gtceu.mossy_marble_cobblestone": "覆苔大理岩圆石", + "block.gtceu.mossy_red_granite_bricks": "覆苔红花岗岩砖", + "block.gtceu.mossy_red_granite_cobblestone": "覆苔红花岗岩圆石", + "block.gtceu.multi_smelter": "工业熔炉", + "block.gtceu.mv_16a_energy_converter": "16§e安§r§bMV§r能量转换器", + "block.gtceu.mv_1a_energy_converter": "1§e安§r§bMV§r能量转换器", + "block.gtceu.mv_4a_energy_converter": "4§e安§r§bMV§r能量转换器", + "block.gtceu.mv_8a_energy_converter": "8§e安§r§bMV§r能量转换器", + "block.gtceu.mv_air_scrubber": "§b进阶空气净化器§r", + "block.gtceu.mv_alloy_smelter": "§b进阶合金炉§r", + "block.gtceu.mv_arc_furnace": "§b进阶电弧炉§r", + "block.gtceu.mv_assembler": "§b进阶组装机§r", + "block.gtceu.mv_autoclave": "§b进阶高压釜§r", + "block.gtceu.mv_battery_buffer_16x": "16x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_4x": "4x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_8x": "8x§b中压§r电池箱(§bMV§r)", + "block.gtceu.mv_bedrock_ore_miner": "§b进阶基岩采矿机§r", + "block.gtceu.mv_bender": "§b进阶卷板机§r", + "block.gtceu.mv_block_breaker": "§b进阶方块破坏器§r", + "block.gtceu.mv_brewery": "§b进阶酿造室§r", + "block.gtceu.mv_buffer": "§b进阶缓存器§r", + "block.gtceu.mv_canner": "§b进阶装罐机§r", + "block.gtceu.mv_centrifuge": "§b进阶离心机§r", + "block.gtceu.mv_charger_4x": "4x§b中压§r闪聚充电箱(§bMV§r)", + "block.gtceu.mv_chemical_bath": "§b进阶化学浸洗机§r", + "block.gtceu.mv_chemical_reactor": "§b进阶化学反应釜§r", + "block.gtceu.mv_circuit_assembler": "§b进阶电路组装机§r", + "block.gtceu.mv_combustion": "§b进阶内燃发电机§r", + "block.gtceu.mv_compressor": "§b进阶压缩机§r", + "block.gtceu.mv_cutter": "§b进阶切割机§r", + "block.gtceu.mv_diode": "§bMV§r二极管", + "block.gtceu.mv_distillery": "§b进阶蒸馏室§r", + "block.gtceu.mv_electric_furnace": "§b进阶电炉§r", + "block.gtceu.mv_electrolyzer": "§b进阶电解机§r", + "block.gtceu.mv_electromagnetic_separator": "§b进阶电磁选矿机§r", + "block.gtceu.mv_energy_input_hatch": "§bMV§r能源仓", + "block.gtceu.mv_energy_output_hatch": "§bMV§r动力仓", + "block.gtceu.mv_extractor": "§b进阶提取机§r", + "block.gtceu.mv_extruder": "§b进阶压模器§r", + "block.gtceu.mv_fermenter": "§b进阶发酵槽§r", + "block.gtceu.mv_fisher": "§b进阶捕鱼机§r", + "block.gtceu.mv_fluid_drilling_rig": "§b进阶流体钻机 §r", + "block.gtceu.mv_fluid_heater": "§b进阶流体加热器§r", + "block.gtceu.mv_fluid_passthrough_hatch": "§bMV§r流体通行仓", + "block.gtceu.mv_fluid_solidifier": "§b进阶流体固化器§r", + "block.gtceu.mv_forge_hammer": "§b进阶锻造锤§r", + "block.gtceu.mv_forming_press": "§b进阶冲压机床§r", + "block.gtceu.mv_gas_collector": "§b进阶集气室§r", + "block.gtceu.mv_gas_turbine": "§b进阶燃气轮机§r", + "block.gtceu.mv_hermetic_casing": "密封机械方块 II", + "block.gtceu.mv_input_bus": "§bMV§r输入总线", + "block.gtceu.mv_input_hatch": "§bMV§r输入仓", + "block.gtceu.mv_item_collector": "§b进阶物品收集器§r", + "block.gtceu.mv_item_passthrough_hatch": "§bMV§r物品通行仓", + "block.gtceu.mv_laser_engraver": "§b进阶激光蚀刻机§r", + "block.gtceu.mv_lathe": "§b进阶车床§r", + "block.gtceu.mv_macerator": "§b进阶研磨机§r", + "block.gtceu.mv_machine_casing": "§bMV§r机械方块", + "block.gtceu.mv_machine_hull": "§bMV§f机器外壳", + "block.gtceu.mv_miner": "§b进阶采矿机§r", + "block.gtceu.mv_mixer": "§b进阶搅拌机§r", + "block.gtceu.mv_muffler_hatch": "§bMV§r消声仓", + "block.gtceu.mv_ore_washer": "§b进阶洗矿厂§r", + "block.gtceu.mv_output_bus": "§bMV§r输出总线", + "block.gtceu.mv_output_hatch": "§bMV§r输出仓", + "block.gtceu.mv_packer": "§b进阶打包机§r", + "block.gtceu.mv_polarizer": "§b进阶两极磁化机§r", + "block.gtceu.mv_pump": "§b进阶泵§r", + "block.gtceu.mv_rock_crusher": "§b进阶碎岩机§r", + "block.gtceu.mv_scanner": "§b进阶扫描仪§r", + "block.gtceu.mv_sifter": "§b进阶筛选机§r", + "block.gtceu.mv_steam_turbine": "§b进阶蒸汽轮机§r", + "block.gtceu.mv_super_chest": "超级箱 II", + "block.gtceu.mv_super_tank": "超级缸 II", + "block.gtceu.mv_thermal_centrifuge": "§b进阶热力离心机§r", + "block.gtceu.mv_transformer_16a": "§b中压§r高能变压器(§bMV§r)", + "block.gtceu.mv_transformer_1a": "§b中压§r变压器(§bMV§r)", + "block.gtceu.mv_transformer_2a": "§b中压§r进阶变压器(§bMV§r)", + "block.gtceu.mv_transformer_4a": "§b中压§r高流变压器(§bMV§r)", + "block.gtceu.mv_wiremill": "§b进阶线材轧机§r", + "block.gtceu.mv_world_accelerator": "§b进阶世界加速器§r", + "block.gtceu.naquadah_coil_block": "硅岩线圈方块", + "block.gtceu.network_switch": "网络交换机", + "block.gtceu.nichrome_coil_block": "镍铬合金线圈方块", + "block.gtceu.noise_hazard_sign_block": "噪声危害警示方块", + "block.gtceu.nonconducting_casing": "绝缘机械方块", + "block.gtceu.normal_duct_pipe": "普通风管", + "block.gtceu.normal_laser_pipe": "普通激光管道", + "block.gtceu.normal_laser_pipe.tooltip": "§f无损§7传递能量,仅限直线摆放", + "block.gtceu.normal_optical_pipe": "光缆", + "block.gtceu.normal_optical_pipe.tooltip": "§7传递§f算力§7或§f研究数据§7", + "block.gtceu.object_holder": "物品支架", + "block.gtceu.oil_heavy": "重油", + "block.gtceu.oil_light": "轻油", + "block.gtceu.oil_medium": "原油", + "block.gtceu.opv_1024a_laser_source_hatch": "1024§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_1024a_laser_target_hatch": "1024§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_16a_energy_converter": "16§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_1a_energy_converter": "1§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_256a_laser_source_hatch": "256§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_256a_laser_target_hatch": "256§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_4096a_laser_source_hatch": "4096§e安§r§9§lOpV§r激光源仓", + "block.gtceu.opv_4096a_laser_target_hatch": "4096§e安§r§9§lOpV§r激光靶仓", + "block.gtceu.opv_4a_energy_converter": "4§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_8a_energy_converter": "8§e安§r§9§lOpV§r能量转换器", + "block.gtceu.opv_alloy_smelter": "§9§l传奇合金炉§r", + "block.gtceu.opv_arc_furnace": "§9§l传奇电弧炉§r", + "block.gtceu.opv_assembler": "§9§l传奇组装机§r", + "block.gtceu.opv_autoclave": "§9§l传奇高压釜§r", + "block.gtceu.opv_battery_buffer_16x": "16x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_4x": "4x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_8x": "8x§9过载压§r电池箱(§9§lOpV§r)", + "block.gtceu.opv_bender": "§9§l传奇卷板机§r", + "block.gtceu.opv_brewery": "§9§l传奇酿造室§r", + "block.gtceu.opv_canner": "§9§l传奇装罐机§r", + "block.gtceu.opv_centrifuge": "§9§l传奇离心机§r", + "block.gtceu.opv_charger_4x": "4x§9过载压§r闪聚充电箱(§9§lOpV§r)", + "block.gtceu.opv_chemical_bath": "§9§l传奇化学浸洗机§r", + "block.gtceu.opv_chemical_reactor": "§9§l传奇化学反应釜§r", + "block.gtceu.opv_circuit_assembler": "§9§l传奇电路组装机§r", + "block.gtceu.opv_compressor": "§9§l传奇压缩机§r", + "block.gtceu.opv_cutter": "§9§l传奇切割机§r", + "block.gtceu.opv_diode": "§9§lOpV§r二极管", + "block.gtceu.opv_distillery": "§9§l传奇蒸馏室§r", + "block.gtceu.opv_dual_input_hatch": "§9§lOpV§r输入总成", + "block.gtceu.opv_dual_output_hatch": "§9§lOpV§r输出总成", + "block.gtceu.opv_electric_furnace": "§9§l传奇电炉§r", + "block.gtceu.opv_electrolyzer": "§9§l传奇电解机§r", + "block.gtceu.opv_electromagnetic_separator": "§9§l传奇电磁选矿机§r", + "block.gtceu.opv_energy_input_hatch": "§9§lOpV§r能源仓", + "block.gtceu.opv_energy_input_hatch_16a": "16安§9§lOpV§r能源仓", + "block.gtceu.opv_energy_input_hatch_4a": "4安§9§lOpV§r能源仓", + "block.gtceu.opv_energy_output_hatch": "§9§lOpV§r动力仓", + "block.gtceu.opv_energy_output_hatch_16a": "16安§9§lOpV§r动力仓", + "block.gtceu.opv_energy_output_hatch_4a": "4安§9§lOpV§r动力仓", + "block.gtceu.opv_extractor": "§9§l传奇提取机§r", + "block.gtceu.opv_extruder": "§9§l传奇压模器§r", + "block.gtceu.opv_fermenter": "§9§l传奇发酵槽§r", + "block.gtceu.opv_fluid_heater": "§9§l传奇流体加热器§r", + "block.gtceu.opv_fluid_passthrough_hatch": "§9§lOpV§r流体通行仓", + "block.gtceu.opv_fluid_solidifier": "§9§l传奇流体固化器§r", + "block.gtceu.opv_forge_hammer": "§9§l传奇锻造锤§r", + "block.gtceu.opv_forming_press": "§9§l传奇冲压机床§r", + "block.gtceu.opv_gas_collector": "§9§l传奇集气室§r", + "block.gtceu.opv_input_bus": "§9§lOpV§r输入总线", + "block.gtceu.opv_input_hatch": "§9§lOpV§r输入仓", + "block.gtceu.opv_input_hatch_4x": "§9§lOpV§r四重输入仓", + "block.gtceu.opv_input_hatch_9x": "§9§lOpV§r九重输入仓", + "block.gtceu.opv_item_passthrough_hatch": "§9§lOpV§r物品通行仓", + "block.gtceu.opv_laser_engraver": "§9§l传奇激光蚀刻机§r", + "block.gtceu.opv_lathe": "§9§l传奇车床§r", + "block.gtceu.opv_macerator": "§9§l传奇研磨机§r", + "block.gtceu.opv_machine_casing": "§9§lOpV§r机械方块", + "block.gtceu.opv_machine_hull": "§9§lOpV§f机器外壳", + "block.gtceu.opv_mixer": "§9§l传奇搅拌机§r", + "block.gtceu.opv_muffler_hatch": "§9§lOpV§r消声仓", + "block.gtceu.opv_ore_washer": "§9§l传奇洗矿厂§r", + "block.gtceu.opv_output_bus": "§9§lOpV§r输出总线", + "block.gtceu.opv_output_hatch": "§9§lOpV§r输出仓", + "block.gtceu.opv_output_hatch_4x": "§9§lOpV§r四重输出仓", + "block.gtceu.opv_output_hatch_9x": "§9§lOpV§r九重输出仓", + "block.gtceu.opv_packer": "§9§l传奇打包机§r", + "block.gtceu.opv_polarizer": "§9§l传奇两极磁化机§r", + "block.gtceu.opv_quantum_chest": "量子箱 XIII", + "block.gtceu.opv_quantum_tank": "量子缸 XIII", + "block.gtceu.opv_rock_crusher": "§9§l传奇碎岩机§r", + "block.gtceu.opv_rotor_holder": "§9§lOpV§r转子支架", + "block.gtceu.opv_scanner": "§9§l传奇扫描仪§r", + "block.gtceu.opv_sifter": "§9§l传奇筛选机§r", + "block.gtceu.opv_substation_input_hatch_64a": "64安§9§lOpV§r变电能源仓", + "block.gtceu.opv_substation_output_hatch_64a": "64安§9§lOpV§r变电动力仓", + "block.gtceu.opv_thermal_centrifuge": "§9§l传奇热力离心机§r", + "block.gtceu.opv_transformer_16a": "§9过载压§r高能变压器(§9OpV§r)", + "block.gtceu.opv_transformer_1a": "§9过载压§r变压器(§9OpV§r)", + "block.gtceu.opv_transformer_2a": "§9过载压§r进阶变压器(§9OpV§r)", + "block.gtceu.opv_transformer_4a": "§9过载压§r高流变压器(§9OpV§r)", + "block.gtceu.opv_wiremill": "§9§l传奇线材轧机§r", + "block.gtceu.orange_borderless_lamp": "橙色无框灯", + "block.gtceu.orange_lamp": "橙色灯", + "block.gtceu.orange_large_metal_sheet": "橙色粗纹金属板方块", + "block.gtceu.orange_metal_sheet": "橙色金属板方块", + "block.gtceu.orange_studs": "橙色橡胶混凝土", + "block.gtceu.overworld_marker": "主世界", + "block.gtceu.palladium_substation": "镀钯变电站机械方块", + "block.gtceu.pattern_buffer.desc.0": "§f对于GT多方块结构的集成式§6AE2样板供应器§f。", + "block.gtceu.pattern_buffer.desc.1": "§fAE2样板可以利用§6共享库存§f中的一切。", + "block.gtceu.pattern_buffer.desc.2": "§f使用§b闪存§f绑定§6ME样板总成镜像§f,以使机器相互连接!", + "block.gtceu.pattern_buffer_proxy.desc.0": "§f可以将单单一个§6ME样板总成§f连接到众多机器。", + "block.gtceu.pattern_buffer_proxy.desc.1": "§f所有连接的总成镜像将共享§6原始总成§f中的样板。", + "block.gtceu.pattern_buffer_proxy.desc.2": "§f让工厂蓬勃发展!", + "block.gtceu.petrified_foam": "石化建筑泡沫", + "block.gtceu.pink_borderless_lamp": "粉红色无框灯", + "block.gtceu.pink_lamp": "粉红色灯", + "block.gtceu.pink_large_metal_sheet": "粉红色粗纹金属板方块", + "block.gtceu.pink_metal_sheet": "粉红色金属板方块", + "block.gtceu.pink_studs": "粉红色橡胶混凝土", + "block.gtceu.plascrete": "塑料混凝土", + "block.gtceu.plasma_large_turbine": "大型等离子涡轮", + "block.gtceu.polished_dark_concrete": "磨制深色混凝土", + "block.gtceu.polished_light_concrete": "磨制淡色混凝土", + "block.gtceu.polished_marble": "磨制大理岩", + "block.gtceu.polished_red_granite": "磨制红花岗岩", + "block.gtceu.powderbarrel": "火药桶", + "block.gtceu.powderbarrel.drops_tooltip": "爆炸范围略大于TNT,所有被摧毁的方块都会掉落", + "block.gtceu.power_substation": "蓄能变电站", + "block.gtceu.primitive_blast_furnace": "土高炉", + "block.gtceu.primitive_pump": "原始水泵", + "block.gtceu.ptfe_pipe_casing": "聚四氟乙烯管道方块", + "block.gtceu.pump_deck": "水泵盖板", + "block.gtceu.pump_hatch": "水泵仓", + "block.gtceu.purple_borderless_lamp": "紫色无框灯", + "block.gtceu.purple_lamp": "紫色灯", + "block.gtceu.purple_large_metal_sheet": "紫色粗纹金属板方块", + "block.gtceu.purple_metal_sheet": "紫色金属板方块", + "block.gtceu.purple_studs": "紫色橡胶混凝土", + "block.gtceu.pyrolyse_oven": "热解炉", + "block.gtceu.radioactive_hazard_sign_block": "辐射危害警示方块", + "block.gtceu.reaction_safe_mixing_casing": "惰性搅拌机械方块", + "block.gtceu.red_borderless_lamp": "红色无框灯", + "block.gtceu.red_granite": "红花岗岩", + "block.gtceu.red_granite_bricks": "红花岗岩砖", + "block.gtceu.red_granite_cobblestone": "红花岗岩圆石", + "block.gtceu.red_granite_small_tile": "红花岗岩小片瓦", + "block.gtceu.red_granite_tile": "红花岗岩瓦", + "block.gtceu.red_granite_windmill_a": "红花岗岩风车形瓦 A", + "block.gtceu.red_granite_windmill_b": "红花岗岩风车形瓦 B", + "block.gtceu.red_lamp": "红色灯", + "block.gtceu.red_large_metal_sheet": "红色粗纹金属板方块", + "block.gtceu.red_metal_sheet": "红色金属板方块", + "block.gtceu.red_studs": "红色橡胶混凝土", + "block.gtceu.reinforced_foam": "强化建筑泡沫", + "block.gtceu.reinforced_stone": "防爆石", + "block.gtceu.research_station": "研究站", + "block.gtceu.reservoir_hatch": "水库仓", + "block.gtceu.robust_machine_casing": "强化钨钢机械方块", + "block.gtceu.rtm_alloy_coil_block": "钌钨钼合金线圈方块", + "block.gtceu.rubber_button": "橡胶木按钮", + "block.gtceu.rubber_door": "橡胶木门", + "block.gtceu.rubber_fence": "橡胶木栅栏", + "block.gtceu.rubber_fence_gate": "橡胶木栅栏门", + "block.gtceu.rubber_hanging_sign": "墙上的悬挂式橡胶木告示牌", + "block.gtceu.rubber_leaves": "橡胶树叶", + "block.gtceu.rubber_log": "橡胶原木", + "block.gtceu.rubber_planks": "橡胶木板", + "block.gtceu.rubber_pressure_plate": "橡胶木压力板", + "block.gtceu.rubber_sapling": "橡胶树苗", + "block.gtceu.rubber_sign": "墙上的橡胶木告示牌", + "block.gtceu.rubber_slab": "橡胶木台阶", + "block.gtceu.rubber_stairs": "橡胶木楼梯", + "block.gtceu.rubber_trapdoor": "橡胶木活板门", + "block.gtceu.rubber_wood": "橡胶木", + "block.gtceu.secure_maceration_casing": "安全研磨机械方块", + "block.gtceu.shock_proof_cutting_casing": "防震切割机械方块", + "block.gtceu.slicing_blades": "切片刀", + "block.gtceu.small_dark_concrete_bricks": "深色混凝土小块砖", + "block.gtceu.small_duct_pipe": "小型风管", + "block.gtceu.small_light_concrete_bricks": "淡色混凝土小块砖", + "block.gtceu.small_marble_bricks": "大理岩小块砖", + "block.gtceu.small_red_granite_bricks": "红花岗岩小块砖", + "block.gtceu.solid_machine_casing": "脱氧钢机械方块", + "block.gtceu.spatial_storage_hazard_sign_block": "空间存储危害警示方块", + "block.gtceu.square_dark_concrete_bricks": "深色混凝土方形砖", + "block.gtceu.square_light_concrete_bricks": "淡色混凝土方形砖", + "block.gtceu.square_marble_bricks": "大理岩方形砖", + "block.gtceu.square_red_granite_bricks": "红花岗岩方形砖", + "block.gtceu.stable_machine_casing": "加强钛机械方块", + "block.gtceu.stainless_steel_crate": "不锈钢板条箱", + "block.gtceu.stainless_steel_drum": "不锈钢桶", + "block.gtceu.stainless_steel_gearbox": "不锈钢齿轮箱机械方块", + "block.gtceu.stainless_steel_turbine_casing": "不锈钢涡轮机械方块", + "block.gtceu.steam_casing_bricked_bronze": "砖砌青铜外壳", + "block.gtceu.steam_casing_bricked_bronze.tooltip": "§7用来制作你的第一批蒸汽机器", + "block.gtceu.steam_casing_bricked_steel": "砖砌锻铁外壳", + "block.gtceu.steam_casing_bricked_steel.tooltip": "§7用来制作更高等级的蒸汽机器", + "block.gtceu.steam_casing_bronze": "青铜外壳", + "block.gtceu.steam_casing_bronze.tooltip": "§7用来制作你的第一批蒸汽机器", + "block.gtceu.steam_casing_steel": "钢制外壳", + "block.gtceu.steam_casing_steel.tooltip": "§7用来制作更高等级的蒸汽机器", + "block.gtceu.steam_grinder": "蒸汽碾磨机", + "block.gtceu.steam_input_bus": "蒸汽输入总线", + "block.gtceu.steam_input_hatch": "蒸汽输入仓", + "block.gtceu.steam_large_turbine": "大型蒸汽涡轮", + "block.gtceu.steam_liquid_boiler.bronze": "小型蒸汽液体燃料锅炉", + "block.gtceu.steam_machine_casing": "蒸汽机械方块", + "block.gtceu.steam_output_bus": "蒸汽输出总线", + "block.gtceu.steam_oven": "蒸汽熔炼炉", + "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固体燃料锅炉", + "block.gtceu.steel_brick_casing": "砖砌锻铁外壳", + "block.gtceu.steel_crate": "钢板条箱", + "block.gtceu.steel_drum": "钢桶", + "block.gtceu.steel_firebox_casing": "钢制燃烧室", + "block.gtceu.steel_gearbox": "钢齿轮箱机械方块", + "block.gtceu.steel_large_boiler": "大型钢锅炉", + "block.gtceu.steel_machine_casing": "脱氧钢机械方块", + "block.gtceu.steel_multiblock_tank": "钢制多方块储罐", + "block.gtceu.steel_pipe_casing": "钢管道方块", + "block.gtceu.steel_tank_valve": "钢制储罐阀门", + "block.gtceu.steel_turbine_casing": "镁铝合金涡轮机械方块", + "block.gtceu.sterilizing_filter_casing": "除菌过滤器机械方块", + "block.gtceu.stress_proof_casing": "耐压机械方块", + "block.gtceu.stripped_rubber_log": "去皮橡胶原木", + "block.gtceu.stripped_rubber_wood": "去皮橡胶木", + "block.gtceu.sturdy_machine_casing": "坚固高速钢-E机械方块", + "block.gtceu.substation_capacitor.tooltip_empty": "§7用于填补蓄能变电站的结构空隙", + "block.gtceu.substation_capacitor.tooltip_filled": "§c电池容量:§f%d EU", + "block.gtceu.superconducting_coil": "超导线圈方块", + "block.gtceu.tempered_glass": "钢化玻璃", + "block.gtceu.the_end_marker": "末地", + "block.gtceu.the_nether_marker": "下界", + "block.gtceu.titanium_crate": "钛板条箱", + "block.gtceu.titanium_drum": "钛桶", + "block.gtceu.titanium_firebox_casing": "钛燃烧室", + "block.gtceu.titanium_gearbox": "钛齿轮箱机械方块", + "block.gtceu.titanium_large_boiler": "大型钛锅炉", + "block.gtceu.titanium_pipe_casing": "钛管道方块", + "block.gtceu.titanium_turbine_casing": "钛涡轮机械方块", + "block.gtceu.treated_wood_button": "防腐木按钮", + "block.gtceu.treated_wood_door": "防腐木门", + "block.gtceu.treated_wood_fence": "防腐木栅栏", + "block.gtceu.treated_wood_fence_gate": "防腐木栅栏门", + "block.gtceu.treated_wood_hanging_sign": "墙上的悬挂式防腐木告示牌", + "block.gtceu.treated_wood_planks": "防腐木板", + "block.gtceu.treated_wood_pressure_plate": "防腐木压力板", + "block.gtceu.treated_wood_sign": "墙上的防腐木告示牌", + "block.gtceu.treated_wood_slab": "防腐木台阶", + "block.gtceu.treated_wood_stairs": "防腐木楼梯", + "block.gtceu.treated_wood_trapdoor": "防腐木活板门", + "block.gtceu.trinium_coil_block": "凯金线圈方块", + "block.gtceu.tritanium_coil_block": "三钛线圈方块", + "block.gtceu.tungsten_steel_crate": "钨钢板条箱", + "block.gtceu.tungsten_steel_drum": "钨钢桶", + "block.gtceu.tungstensteel_firebox_casing": "钨钢燃烧室", + "block.gtceu.tungstensteel_gearbox": "钨钢齿轮箱机械方块", + "block.gtceu.tungstensteel_large_boiler": "大型钨钢锅炉", + "block.gtceu.tungstensteel_pipe_casing": "钨钢管道方块", + "block.gtceu.tungstensteel_turbine_casing": "钨钢涡轮机械方块", + "block.gtceu.turret_hazard_sign_block": "炮塔危害警示方块", + "block.gtceu.uev_1024a_laser_source_hatch": "1024§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_1024a_laser_target_hatch": "1024§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_16a_energy_converter": "16§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_1a_energy_converter": "1§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_256a_laser_source_hatch": "256§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_256a_laser_target_hatch": "256§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_4096a_laser_source_hatch": "4096§e安§r§aUEV§r激光源仓", + "block.gtceu.uev_4096a_laser_target_hatch": "4096§e安§r§aUEV§r激光靶仓", + "block.gtceu.uev_4a_energy_converter": "4§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_8a_energy_converter": "8§e安§r§aUEV§r能量转换器", + "block.gtceu.uev_alloy_smelter": "§a史诗合金炉 II§r", + "block.gtceu.uev_arc_furnace": "§a史诗电弧炉 II§r", + "block.gtceu.uev_assembler": "§a史诗组装机 II§r", + "block.gtceu.uev_autoclave": "§a史诗高压釜 II§r", + "block.gtceu.uev_battery_buffer_16x": "16x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_4x": "4x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_8x": "8x§a极超压§r电池箱(§aUEV§r)", + "block.gtceu.uev_bender": "§a史诗卷板机 II§r", + "block.gtceu.uev_brewery": "§a史诗酿造室 II§r", + "block.gtceu.uev_canner": "§a史诗装罐机 II§r", + "block.gtceu.uev_centrifuge": "§a史诗离心机 II§r", + "block.gtceu.uev_charger_4x": "4x§a极超压§r闪聚充电箱(§aUEV§r)", + "block.gtceu.uev_chemical_bath": "§a史诗化学浸洗机 II§r", + "block.gtceu.uev_chemical_reactor": "§a史诗化学反应釜 II§r", + "block.gtceu.uev_circuit_assembler": "§a史诗电路组装机 II§r", + "block.gtceu.uev_compressor": "§a史诗压缩机 II§r", + "block.gtceu.uev_cutter": "§a史诗切割机 II§r", + "block.gtceu.uev_diode": "§aUEV§r二极管", + "block.gtceu.uev_distillery": "§a史诗蒸馏室 II§r", + "block.gtceu.uev_dual_input_hatch": "§aUEV§r输入总成", + "block.gtceu.uev_dual_output_hatch": "§aUEV§r输出总成", + "block.gtceu.uev_electric_furnace": "§a史诗电炉 II§r", + "block.gtceu.uev_electrolyzer": "§a史诗电解机 II§r", + "block.gtceu.uev_electromagnetic_separator": "§a史诗电磁选矿机 II§r", + "block.gtceu.uev_energy_input_hatch": "§aUEV§r能源仓", + "block.gtceu.uev_energy_input_hatch_16a": "16安§aUEV§r能源仓", + "block.gtceu.uev_energy_input_hatch_4a": "4安§aUEV§r能源仓", + "block.gtceu.uev_energy_output_hatch": "§aUEV§r动力仓", + "block.gtceu.uev_energy_output_hatch_16a": "16安§aUEV§r动力仓", + "block.gtceu.uev_energy_output_hatch_4a": "4安§aUEV§r动力仓", + "block.gtceu.uev_extractor": "§a史诗提取机 II§r", + "block.gtceu.uev_extruder": "§a史诗压模器 II§r", + "block.gtceu.uev_fermenter": "§a史诗发酵槽 II§r", + "block.gtceu.uev_fluid_heater": "§a史诗流体加热器 II§r", + "block.gtceu.uev_fluid_passthrough_hatch": "§aUEV§r流体通行仓", + "block.gtceu.uev_fluid_solidifier": "§a史诗流体固化器 II§r", + "block.gtceu.uev_forge_hammer": "§a史诗锻造锤 II§r", + "block.gtceu.uev_forming_press": "§a史诗冲压机床 II§r", + "block.gtceu.uev_gas_collector": "§a史诗集气室 II§r", + "block.gtceu.uev_input_bus": "§aUEV§r输入总线", + "block.gtceu.uev_input_hatch": "§aUEV§r输入仓", + "block.gtceu.uev_input_hatch_4x": "§aUEV§r四重输入仓", + "block.gtceu.uev_input_hatch_9x": "§aUEV§r九重输入仓", + "block.gtceu.uev_item_passthrough_hatch": "§aUEV§r物品通行仓", + "block.gtceu.uev_laser_engraver": "§a史诗激光蚀刻机 II§r", + "block.gtceu.uev_lathe": "§a史诗车床 II§r", + "block.gtceu.uev_macerator": "§a史诗研磨机 II§r", + "block.gtceu.uev_machine_casing": "§aUEV§r机械方块", + "block.gtceu.uev_machine_hull": "§aUEV§f机器外壳", + "block.gtceu.uev_mixer": "§a史诗搅拌机 II§r", + "block.gtceu.uev_muffler_hatch": "§aUEV§r消声仓", + "block.gtceu.uev_ore_washer": "§a史诗洗矿厂 II§r", + "block.gtceu.uev_output_bus": "§aUEV§r输出总线", + "block.gtceu.uev_output_hatch": "§aUEV§r输出仓", + "block.gtceu.uev_output_hatch_4x": "§aUEV§r四重输出仓", + "block.gtceu.uev_output_hatch_9x": "§aUEV§r九重输出仓", + "block.gtceu.uev_packer": "§a史诗打包机 II§r", + "block.gtceu.uev_polarizer": "§a史诗两极磁化机 II§r", + "block.gtceu.uev_quantum_chest": "量子箱 X", + "block.gtceu.uev_quantum_tank": "量子缸 X", + "block.gtceu.uev_rock_crusher": "§a史诗碎岩机 II§r", + "block.gtceu.uev_rotor_holder": "§aUEV§r转子支架", + "block.gtceu.uev_scanner": "§a史诗扫描仪 II§r", + "block.gtceu.uev_sifter": "§a史诗筛选机 II§r", + "block.gtceu.uev_substation_input_hatch_64a": "64安§aUEV§r变电能源仓", + "block.gtceu.uev_substation_output_hatch_64a": "64安§aUEV§r变电动力仓", + "block.gtceu.uev_thermal_centrifuge": "§a史诗热力离心机 II§r", + "block.gtceu.uev_transformer_16a": "§a极超压§r高能变压器(§aUEV§r)", + "block.gtceu.uev_transformer_1a": "§a极超压§r变压器(§aUEV§r)", + "block.gtceu.uev_transformer_2a": "§a极超压§r进阶变压器(§aUEV§r)", + "block.gtceu.uev_transformer_4a": "§a极超压§r高流变压器(§aUEV§r)", + "block.gtceu.uev_wiremill": "§a史诗线材轧机 II§r", + "block.gtceu.uhv_1024a_laser_source_hatch": "1024§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_1024a_laser_target_hatch": "1024§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_16a_energy_converter": "16§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_1a_energy_converter": "1§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_256a_laser_source_hatch": "256§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_256a_laser_target_hatch": "256§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_4096a_laser_source_hatch": "4096§e安§r§4UHV§r激光源仓", + "block.gtceu.uhv_4096a_laser_target_hatch": "4096§e安§r§4UHV§r激光靶仓", + "block.gtceu.uhv_4a_energy_converter": "4§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_8a_energy_converter": "8§e安§r§4UHV§r能量转换器", + "block.gtceu.uhv_alloy_smelter": "§4史诗合金炉§r", + "block.gtceu.uhv_arc_furnace": "§4史诗电弧炉§r", + "block.gtceu.uhv_assembler": "§4史诗组装机§r", + "block.gtceu.uhv_autoclave": "§4史诗高压釜§r", + "block.gtceu.uhv_battery_buffer_16x": "16x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_4x": "4x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_8x": "8x§4极高压§r电池箱(§4UHV§r)", + "block.gtceu.uhv_bender": "§4史诗卷板机§r", + "block.gtceu.uhv_brewery": "§4史诗酿造室§r", + "block.gtceu.uhv_canner": "§4史诗装罐机§r", + "block.gtceu.uhv_centrifuge": "§4史诗离心机§r", + "block.gtceu.uhv_charger_4x": "4x§4极高压§r闪聚充电箱(§4UHV§r)", + "block.gtceu.uhv_chemical_bath": "§4史诗化学浸洗机§r", + "block.gtceu.uhv_chemical_reactor": "§4史诗化学反应釜§r", + "block.gtceu.uhv_circuit_assembler": "§4史诗电路组装机§r", + "block.gtceu.uhv_compressor": "§4史诗压缩机§r", + "block.gtceu.uhv_cutter": "§4史诗切割机§r", + "block.gtceu.uhv_diode": "§4UHV§r二极管", + "block.gtceu.uhv_distillery": "§4史诗蒸馏室§r", + "block.gtceu.uhv_dual_input_hatch": "§4UHV§r输入总成", + "block.gtceu.uhv_dual_output_hatch": "§4UHV§r输出总成", + "block.gtceu.uhv_electric_furnace": "§4史诗电炉§r", + "block.gtceu.uhv_electrolyzer": "§4史诗电解机§r", + "block.gtceu.uhv_electromagnetic_separator": "§4史诗电磁选矿机§r", + "block.gtceu.uhv_energy_input_hatch": "§4UHV§r能源仓", + "block.gtceu.uhv_energy_input_hatch_16a": "16安§4UHV§r能源仓", + "block.gtceu.uhv_energy_input_hatch_4a": "4安§4UHV§r能源仓", + "block.gtceu.uhv_energy_output_hatch": "§4UHV§r动力仓", + "block.gtceu.uhv_energy_output_hatch_16a": "16安§4UHV§r动力仓", + "block.gtceu.uhv_energy_output_hatch_4a": "4安§4UHV§r动力仓", + "block.gtceu.uhv_extractor": "§4史诗提取机§r", + "block.gtceu.uhv_extruder": "§4史诗压模器§r", + "block.gtceu.uhv_fermenter": "§4史诗发酵槽§r", + "block.gtceu.uhv_fluid_heater": "§4史诗流体加热器§r", + "block.gtceu.uhv_fluid_passthrough_hatch": "§4UHV§r流体通行仓", + "block.gtceu.uhv_fluid_solidifier": "§4史诗流体固化器§r", + "block.gtceu.uhv_forge_hammer": "§4史诗锻造锤§r", + "block.gtceu.uhv_forming_press": "§4史诗冲压机床§r", + "block.gtceu.uhv_gas_collector": "§4史诗集气室§r", + "block.gtceu.uhv_hermetic_casing": "密封机械方块 IX", + "block.gtceu.uhv_input_bus": "§4UHV§r输入总线", + "block.gtceu.uhv_input_hatch": "§4UHV§r输入仓", + "block.gtceu.uhv_input_hatch_4x": "§4UHV§r四重输入仓", + "block.gtceu.uhv_input_hatch_9x": "§4UHV§r九重输入仓", + "block.gtceu.uhv_item_passthrough_hatch": "§4UHV§r物品通行仓", + "block.gtceu.uhv_laser_engraver": "§4史诗激光蚀刻机§r", + "block.gtceu.uhv_lathe": "§4史诗车床§r", + "block.gtceu.uhv_macerator": "§4史诗研磨机§r", + "block.gtceu.uhv_machine_casing": "§4UHV§r机械方块", + "block.gtceu.uhv_machine_hull": "§4UHV§f机器外壳", + "block.gtceu.uhv_mixer": "§4史诗搅拌机§r", + "block.gtceu.uhv_muffler_hatch": "§4UHV§r消声仓", + "block.gtceu.uhv_ore_washer": "§4史诗洗矿厂§r", + "block.gtceu.uhv_output_bus": "§4UHV§r输出总线", + "block.gtceu.uhv_output_hatch": "§4UHV§r输出仓", + "block.gtceu.uhv_output_hatch_4x": "§4UHV§r四重输出仓", + "block.gtceu.uhv_output_hatch_9x": "§4UHV§r九重输出仓", + "block.gtceu.uhv_packer": "§4史诗打包机§r", + "block.gtceu.uhv_polarizer": "§4史诗两极磁化机§r", + "block.gtceu.uhv_quantum_chest": "量子箱 IX", + "block.gtceu.uhv_quantum_tank": "量子缸 IX", + "block.gtceu.uhv_rock_crusher": "§4史诗碎岩机§r", + "block.gtceu.uhv_rotor_holder": "§4UHV§r转子支架", + "block.gtceu.uhv_scanner": "§4史诗扫描仪 §r", + "block.gtceu.uhv_sifter": "§4史诗筛选机§r", + "block.gtceu.uhv_substation_input_hatch_64a": "64安§4UHV§r变电能源仓", + "block.gtceu.uhv_substation_output_hatch_64a": "64安§4UHV§r变电动力仓", + "block.gtceu.uhv_thermal_centrifuge": "§4史诗热力离心机§r", + "block.gtceu.uhv_transformer_16a": "§4极高压§r高能变压器(§4UHV§r)", + "block.gtceu.uhv_transformer_1a": "§4极高压§r变压器(§4UHV§r)", + "block.gtceu.uhv_transformer_2a": "§4极高压§r进阶变压器(§4UHV§r) ", + "block.gtceu.uhv_transformer_4a": "§4极高压§r高流变压器(§4UHV§r)", + "block.gtceu.uhv_ultimate_battery": "终极电容(§4UHV§r)", + "block.gtceu.uhv_wiremill": "§4史诗线材轧机§r", + "block.gtceu.uiv_1024a_laser_source_hatch": "1024§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_1024a_laser_target_hatch": "1024§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_16a_energy_converter": "16§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_1a_energy_converter": "1§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_256a_laser_source_hatch": "256§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_256a_laser_target_hatch": "256§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_4096a_laser_source_hatch": "4096§e安§r§2UIV§r激光源仓", + "block.gtceu.uiv_4096a_laser_target_hatch": "4096§e安§r§2UIV§r激光靶仓", + "block.gtceu.uiv_4a_energy_converter": "4§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_8a_energy_converter": "8§e安§r§2UIV§r能量转换器", + "block.gtceu.uiv_alloy_smelter": "§2史诗合金炉 III§r", + "block.gtceu.uiv_arc_furnace": "§2史诗电弧炉 III§r", + "block.gtceu.uiv_assembler": "§2史诗组装机 III§r", + "block.gtceu.uiv_autoclave": "§2史诗高压釜 III§r", + "block.gtceu.uiv_battery_buffer_16x": "16x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_4x": "4x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_8x": "8x§2极巨压§r电池箱(§2UIV§r)", + "block.gtceu.uiv_bender": "§2史诗卷板机 III§r", + "block.gtceu.uiv_brewery": "§2史诗酿造室 III§r", + "block.gtceu.uiv_canner": "§2史诗装罐机 III§r", + "block.gtceu.uiv_centrifuge": "§2史诗离心机 III§r", + "block.gtceu.uiv_charger_4x": "4x§2极巨压§r闪聚充电箱(§2UIV§r)", + "block.gtceu.uiv_chemical_bath": "§2史诗化学浸洗机 III§r", + "block.gtceu.uiv_chemical_reactor": "§2史诗化学反应釜 III§r", + "block.gtceu.uiv_circuit_assembler": "§2史诗电路组装机 III§r", + "block.gtceu.uiv_compressor": "§2史诗压缩机 III§r", + "block.gtceu.uiv_cutter": "§2史诗切割机 III§r", + "block.gtceu.uiv_diode": "§2UIV§r二极管", + "block.gtceu.uiv_distillery": "§2史诗蒸馏室 III§r", + "block.gtceu.uiv_dual_input_hatch": "§2UIV§r输入总成", + "block.gtceu.uiv_dual_output_hatch": "§2UIV§r输出总成", + "block.gtceu.uiv_electric_furnace": "§2史诗电炉 III§r", + "block.gtceu.uiv_electrolyzer": "§2史诗电解机 III§r", + "block.gtceu.uiv_electromagnetic_separator": "§2史诗电磁选矿机 III§r", + "block.gtceu.uiv_energy_input_hatch": "§2UIV§r能源仓", + "block.gtceu.uiv_energy_input_hatch_16a": "16安§2UIV§r能源仓", + "block.gtceu.uiv_energy_input_hatch_4a": "4安§2UIV§r能源仓", + "block.gtceu.uiv_energy_output_hatch": "§2UIV§r动力仓", + "block.gtceu.uiv_energy_output_hatch_16a": "16安§2UIV§r动力仓", + "block.gtceu.uiv_energy_output_hatch_4a": "4安§2UIV§r动力仓", + "block.gtceu.uiv_extractor": "§2史诗提取机 III§r", + "block.gtceu.uiv_extruder": "§2史诗压模器 III§r", + "block.gtceu.uiv_fermenter": "§2史诗发酵槽 III§r", + "block.gtceu.uiv_fluid_heater": "§2史诗流体加热器 III§r", + "block.gtceu.uiv_fluid_passthrough_hatch": "§2UIV§r流体通行仓", + "block.gtceu.uiv_fluid_solidifier": "§2史诗流体固化器 III§r", + "block.gtceu.uiv_forge_hammer": "§2史诗锻造锤 III§r", + "block.gtceu.uiv_forming_press": "§2史诗冲压机床 III§r", + "block.gtceu.uiv_gas_collector": "§2史诗集气室 III§r", + "block.gtceu.uiv_input_bus": "§2UIV§r输入总线", + "block.gtceu.uiv_input_hatch": "§2UIV§r输入仓", + "block.gtceu.uiv_input_hatch_4x": "§2UIV§r四重输入仓", + "block.gtceu.uiv_input_hatch_9x": "§2UIV§r九重输入仓", + "block.gtceu.uiv_item_passthrough_hatch": "§2UIV§r物品通行仓", + "block.gtceu.uiv_laser_engraver": "§2史诗激光蚀刻机 III§r", + "block.gtceu.uiv_lathe": "§2史诗车床 III§r", + "block.gtceu.uiv_macerator": "§2史诗研磨机 III§r", + "block.gtceu.uiv_machine_casing": "§2UIV§r机械方块", + "block.gtceu.uiv_machine_hull": "§2UIV§f机器外壳", + "block.gtceu.uiv_mixer": "§2史诗搅拌机 III§r", + "block.gtceu.uiv_muffler_hatch": "§2UIV§r消声仓", + "block.gtceu.uiv_ore_washer": "§2史诗洗矿厂 III§r", + "block.gtceu.uiv_output_bus": "§2UIV§r输出总线", + "block.gtceu.uiv_output_hatch": "§2UIV§r输出仓", + "block.gtceu.uiv_output_hatch_4x": "§2UIV§r四重输出仓", + "block.gtceu.uiv_output_hatch_9x": "§2UIV§r九重输出仓", + "block.gtceu.uiv_packer": "§2史诗打包机 III§r", + "block.gtceu.uiv_polarizer": "§2史诗两极磁化机 III§r", + "block.gtceu.uiv_quantum_chest": "量子箱 XI", + "block.gtceu.uiv_quantum_tank": "量子缸 XI", + "block.gtceu.uiv_rock_crusher": "§2史诗碎岩机 III§r", + "block.gtceu.uiv_rotor_holder": "§2UIV§r转子支架", + "block.gtceu.uiv_scanner": "§2史诗扫描仪 III§r", + "block.gtceu.uiv_sifter": "§2史诗筛选机 III§r", + "block.gtceu.uiv_substation_input_hatch_64a": "64安§2UIV§r变电能源仓", + "block.gtceu.uiv_substation_output_hatch_64a": "64安§2UIV§r变电动力仓", + "block.gtceu.uiv_thermal_centrifuge": "§2史诗热力离心机 III§r", + "block.gtceu.uiv_transformer_16a": "§2极巨压§r高能变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_1a": "§2极巨压§r变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_2a": "§2极巨压§r进阶变压器(§2UIV§r)", + "block.gtceu.uiv_transformer_4a": "§2极巨压§r高流变压器(§2UIV§r)", + "block.gtceu.uiv_wiremill": "§2史诗线材轧机 III§r", + "block.gtceu.ulv_16a_energy_converter": "16§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_1a_energy_converter": "1§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_4a_energy_converter": "4§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_8a_energy_converter": "8§e安§r§8ULV§r能量转换器", + "block.gtceu.ulv_battery_buffer_16x": "16x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_4x": "4x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_8x": "8x§8超低压§r电池箱(§8ULV§r)", + "block.gtceu.ulv_charger_4x": "4x§8超低压§r闪聚充电箱(§8ULV§r)", + "block.gtceu.ulv_energy_input_hatch": "§8ULV§r能源仓", + "block.gtceu.ulv_energy_output_hatch": "§8ULV§r动力仓", + "block.gtceu.ulv_input_bus": "§8ULV§r输入总线", + "block.gtceu.ulv_input_hatch": "§8ULV§r输入仓", + "block.gtceu.ulv_machine_casing": "§8ULV§r机械方块", + "block.gtceu.ulv_machine_hull": "§8ULV§f机器外壳", + "block.gtceu.ulv_output_bus": "§8ULV§r输出总线", + "block.gtceu.ulv_output_hatch": "§8ULV§r输出仓", + "block.gtceu.ulv_transformer_16a": "§8超低压§r高能变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_1a": "§8超低压§r变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_2a": "§8超低压§r进阶变压器(§8ULV§r)", + "block.gtceu.ulv_transformer_4a": "§8超低压§r高流变压器(§8ULV§r)", + "block.gtceu.uv_1024a_laser_source_hatch": "1024§e安§r§3UV§r激光源仓", + "block.gtceu.uv_1024a_laser_target_hatch": "1024§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_16a_energy_converter": "16§e安§r§3UV§r能量转换器", + "block.gtceu.uv_1a_energy_converter": "1§e安§r§3UV§r能量转换器", + "block.gtceu.uv_256a_laser_source_hatch": "256§e安§r§3UV§r激光源仓", + "block.gtceu.uv_256a_laser_target_hatch": "256§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_4096a_laser_source_hatch": "4096§e安§r§3UV§r激光源仓", + "block.gtceu.uv_4096a_laser_target_hatch": "4096§e安§r§3UV§r激光靶仓", + "block.gtceu.uv_4a_energy_converter": "4§e安§r§3UV§r能量转换器", + "block.gtceu.uv_8a_energy_converter": "8§e安§r§3UV§r能量转换器", + "block.gtceu.uv_alloy_smelter": "§3终极合金炉§r", + "block.gtceu.uv_arc_furnace": "§3终极电弧炉§r", + "block.gtceu.uv_assembler": "§3终极组装机§r", + "block.gtceu.uv_autoclave": "§3终极高压釜§r", + "block.gtceu.uv_battery_buffer_16x": "16x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_4x": "4x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_8x": "8x§3极限压§r电池箱(§3UV§r)", + "block.gtceu.uv_bender": "§3终极卷板机§r", + "block.gtceu.uv_brewery": "§3终极酿造室§r", + "block.gtceu.uv_canner": "§3终极装罐机§r", + "block.gtceu.uv_centrifuge": "§3终极离心机§r", + "block.gtceu.uv_charger_4x": "4x§3极限压§r闪聚充电箱(§3UV§r)", + "block.gtceu.uv_chemical_bath": "§3终极化学浸洗机§r", + "block.gtceu.uv_chemical_reactor": "§3终极化学反应釜§r", + "block.gtceu.uv_circuit_assembler": "§3终极电路组装机§r", + "block.gtceu.uv_compressor": "§3终极压缩机§r", + "block.gtceu.uv_cutter": "§3终极切割机§r", + "block.gtceu.uv_diode": "§3UV§r二极管", + "block.gtceu.uv_distillery": "§3终极蒸馏室§r", + "block.gtceu.uv_dual_input_hatch": "§3UV§r输入总成", + "block.gtceu.uv_dual_output_hatch": "§3UV§r输出总成", + "block.gtceu.uv_electric_furnace": "§3终极电炉§r", + "block.gtceu.uv_electrolyzer": "§3终极电解机§r", + "block.gtceu.uv_electromagnetic_separator": "§3终极电磁选矿机§r", + "block.gtceu.uv_energy_input_hatch": "§3UV§r能源仓", + "block.gtceu.uv_energy_input_hatch_16a": "16安§3UV§r能源仓", + "block.gtceu.uv_energy_input_hatch_4a": "4安§3UV§r能源仓", + "block.gtceu.uv_energy_output_hatch": "§3UV§r动力仓", + "block.gtceu.uv_energy_output_hatch_16a": "16安§3UV§r动力仓", + "block.gtceu.uv_energy_output_hatch_4a": "4安§3UV§r动力仓", + "block.gtceu.uv_extractor": "§3终极提取机§r", + "block.gtceu.uv_extruder": "§3终极压模器§r", + "block.gtceu.uv_fermenter": "§3终极发酵槽§r", + "block.gtceu.uv_fluid_heater": "§3终极流体加热器§r", + "block.gtceu.uv_fluid_passthrough_hatch": "§3UV§r流体通行仓", + "block.gtceu.uv_fluid_solidifier": "§3终极流体固化器§r", + "block.gtceu.uv_forge_hammer": "§3终极锻造锤§r", + "block.gtceu.uv_forming_press": "§3终极冲压机床§r", + "block.gtceu.uv_fusion_reactor": "核聚变反应堆控制电脑 MK-III", + "block.gtceu.uv_gas_collector": "§3终极集气室§r", + "block.gtceu.uv_hermetic_casing": "密封机械方块 VIII", + "block.gtceu.uv_input_bus": "§3UV§r输入总线", + "block.gtceu.uv_input_hatch": "§3UV§r输入仓", + "block.gtceu.uv_input_hatch_4x": "§3UV§r四重输入仓", + "block.gtceu.uv_input_hatch_9x": "§3UV§r九重输入仓", + "block.gtceu.uv_item_passthrough_hatch": "§3UV§r物品通行仓", + "block.gtceu.uv_lapotronic_battery": "兰波顿电容(§3UV§r)", + "block.gtceu.uv_laser_engraver": "§3终极激光蚀刻机§r", + "block.gtceu.uv_lathe": "§3终极车床§r", + "block.gtceu.uv_macerator": "§3终极研磨机§r", + "block.gtceu.uv_machine_casing": "§3UV§r机械方块", + "block.gtceu.uv_machine_hull": "§3UV§f机器外壳", + "block.gtceu.uv_mixer": "§3终极搅拌机§r", + "block.gtceu.uv_muffler_hatch": "§3UV§r消声仓", + "block.gtceu.uv_ore_washer": "§3终极洗矿厂§r", + "block.gtceu.uv_output_bus": "§3UV§r输出总线", + "block.gtceu.uv_output_hatch": "§3UV§r输出仓", + "block.gtceu.uv_output_hatch_4x": "§3UV§r四重输出仓", + "block.gtceu.uv_output_hatch_9x": "§3UV§r九重输出仓", + "block.gtceu.uv_packer": "§3终极打包机§r", + "block.gtceu.uv_parallel_hatch": "§3UV§r并行控制仓", + "block.gtceu.uv_polarizer": "§3终极两极磁化机§r", + "block.gtceu.uv_quantum_chest": "量子箱 VIII", + "block.gtceu.uv_quantum_tank": "量子缸 VIII", + "block.gtceu.uv_rock_crusher": "§3终极碎岩机§r", + "block.gtceu.uv_rotor_holder": "§3UV§r转子支架", + "block.gtceu.uv_scanner": "§3终极扫描仪§r", + "block.gtceu.uv_sifter": "§3终极筛选机§r", + "block.gtceu.uv_substation_input_hatch_64a": "64安§3UV§r变电能源仓", + "block.gtceu.uv_substation_output_hatch_64a": "64安§3UV§r变电动力仓", + "block.gtceu.uv_thermal_centrifuge": "§3终极热力离心机§r", + "block.gtceu.uv_transformer_16a": "§3极限压§r高能变压器(§3UV§r)", + "block.gtceu.uv_transformer_1a": "§3极限压§r变压器(§3UV§r)", + "block.gtceu.uv_transformer_2a": "§3极限压§r进阶变压器(§3UV§r)", + "block.gtceu.uv_transformer_4a": "§3极限压§r高流变压器(§3UV§r)", + "block.gtceu.uv_wiremill": "§3终极线材轧机§r", + "block.gtceu.uv_world_accelerator": "§3终极世界加速器§r", + "block.gtceu.uxv_1024a_laser_source_hatch": "1024§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_1024a_laser_target_hatch": "1024§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_16a_energy_converter": "16§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_1a_energy_converter": "1§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_256a_laser_source_hatch": "256§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_256a_laser_target_hatch": "256§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_4096a_laser_source_hatch": "4096§e安§r§eUXV§r激光源仓", + "block.gtceu.uxv_4096a_laser_target_hatch": "4096§e安§r§eUXV§r激光靶仓", + "block.gtceu.uxv_4a_energy_converter": "4§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_8a_energy_converter": "8§e安§r§eUXV§r能量转换器", + "block.gtceu.uxv_alloy_smelter": "§e史诗合金炉 IV§r", + "block.gtceu.uxv_arc_furnace": "§e史诗电弧炉 IV§r", + "block.gtceu.uxv_assembler": "§e史诗组装机 IV§r", + "block.gtceu.uxv_autoclave": "§e史诗高压釜 IV§r", + "block.gtceu.uxv_battery_buffer_16x": "16x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_4x": "4x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_8x": "8x§e极顶压§r电池箱(§eUXV§r)", + "block.gtceu.uxv_bender": "§e史诗卷板机 IV§r", + "block.gtceu.uxv_brewery": "§e史诗酿造室 IV§r", + "block.gtceu.uxv_canner": "§e史诗装罐机 IV§r", + "block.gtceu.uxv_centrifuge": "§e史诗离心机 IV§r", + "block.gtceu.uxv_charger_4x": "4x§e极顶压§r闪聚充电箱(§eUXV§r)", + "block.gtceu.uxv_chemical_bath": "§e史诗化学浸洗机 IV§r", + "block.gtceu.uxv_chemical_reactor": "§e史诗化学反应釜 IV§r", + "block.gtceu.uxv_circuit_assembler": "§e史诗电路组装机 IV§r", + "block.gtceu.uxv_compressor": "§e史诗压缩机 IV§r", + "block.gtceu.uxv_cutter": "§e史诗切割机 IV§r", + "block.gtceu.uxv_diode": "§eUXV§r二极管", + "block.gtceu.uxv_distillery": "§e史诗蒸馏室 IV§r", + "block.gtceu.uxv_dual_input_hatch": "§eUXV§r输入总成", + "block.gtceu.uxv_dual_output_hatch": "§eUXV§r输出总成", + "block.gtceu.uxv_electric_furnace": "§e史诗电炉 IV§r", + "block.gtceu.uxv_electrolyzer": "§e史诗电解机 IV§r", + "block.gtceu.uxv_electromagnetic_separator": "§e史诗电磁选矿机 IV§r", + "block.gtceu.uxv_energy_input_hatch": "§eUXV§r能源仓", + "block.gtceu.uxv_energy_input_hatch_16a": "16安§eUXV§r能源仓", + "block.gtceu.uxv_energy_input_hatch_4a": "4安§eUXV§r能源仓", + "block.gtceu.uxv_energy_output_hatch": "§eUXV§r动力仓", + "block.gtceu.uxv_energy_output_hatch_16a": "16安§eUXV§r动力仓", + "block.gtceu.uxv_energy_output_hatch_4a": "4安§eUXV§r动力仓", + "block.gtceu.uxv_extractor": "§e史诗提取机 IV§r", + "block.gtceu.uxv_extruder": "§e史诗压模器 IV§r", + "block.gtceu.uxv_fermenter": "§e史诗发酵槽 IV§r", + "block.gtceu.uxv_fluid_heater": "§e史诗流体加热器 IV§r", + "block.gtceu.uxv_fluid_passthrough_hatch": "§eUXV§r流体通行仓", + "block.gtceu.uxv_fluid_solidifier": "§e史诗流体固化器 IV§r", + "block.gtceu.uxv_forge_hammer": "§e史诗锻造锤 IV§r", + "block.gtceu.uxv_forming_press": "§e史诗冲压机床 IV§r", + "block.gtceu.uxv_gas_collector": "§e史诗集气室 IV§r", + "block.gtceu.uxv_input_bus": "§eUXV§r输入总线", + "block.gtceu.uxv_input_hatch": "§eUXV§r输入仓", + "block.gtceu.uxv_input_hatch_4x": "§eUXV§r四重输入仓", + "block.gtceu.uxv_input_hatch_9x": "§eUXV§r九重输入仓", + "block.gtceu.uxv_item_passthrough_hatch": "§eUXV§r物品通行仓", + "block.gtceu.uxv_laser_engraver": "§e史诗激光蚀刻机 IV§r", + "block.gtceu.uxv_lathe": "§e史诗车床 IV§r", + "block.gtceu.uxv_macerator": "§e史诗研磨机 IV§r", + "block.gtceu.uxv_machine_casing": "§eUXV§r机械方块", + "block.gtceu.uxv_machine_hull": "§eUXV§f机器外壳", + "block.gtceu.uxv_mixer": "§e史诗搅拌机 IV§r", + "block.gtceu.uxv_muffler_hatch": "§eUXV§r消声仓", + "block.gtceu.uxv_ore_washer": "§e史诗洗矿厂 IV§r", + "block.gtceu.uxv_output_bus": "§eUXV§r输出总线", + "block.gtceu.uxv_output_hatch": "§eUXV§r输出仓", + "block.gtceu.uxv_output_hatch_4x": "§eUXV§r四重输出仓", + "block.gtceu.uxv_output_hatch_9x": "§eUXV§r九重输出仓", + "block.gtceu.uxv_packer": "§e史诗打包机 IV§r", + "block.gtceu.uxv_polarizer": "§e史诗两极磁化机 IV§r", + "block.gtceu.uxv_quantum_chest": "量子箱 XII", + "block.gtceu.uxv_quantum_tank": "量子缸 XII", + "block.gtceu.uxv_rock_crusher": "§e史诗碎岩机 IV§r", + "block.gtceu.uxv_rotor_holder": "§eUXV§r转子支架", + "block.gtceu.uxv_scanner": "§e史诗扫描仪 IV§r", + "block.gtceu.uxv_sifter": "§e史诗筛选机 IV§r", + "block.gtceu.uxv_substation_input_hatch_64a": "64安§eUXV§r变电能源仓", + "block.gtceu.uxv_substation_output_hatch_64a": "64安§eUXV§r变电动力仓", + "block.gtceu.uxv_thermal_centrifuge": "§e史诗热力离心机 IV§r", + "block.gtceu.uxv_transformer_16a": "§e极顶压§r高能变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_1a": "§e极顶压§r变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_2a": "§e极顶压§r进阶变压器(§eUXV§r)", + "block.gtceu.uxv_transformer_4a": "§e极顶压§r高流变压器(§eUXV§r)", + "block.gtceu.uxv_wiremill": "§e史诗线材轧机 IV§r", + "block.gtceu.vacuum_freezer": "真空冷冻机", + "block.gtceu.vibration_safe_casing": "防震机械方块", + "block.gtceu.void_hazard_sign_block": "虚空危害警示方块", + "block.gtceu.watertight_casing": "防水机械方块", + "block.gtceu.white_borderless_lamp": "白色无框灯", + "block.gtceu.white_lamp": "白色灯", + "block.gtceu.white_large_metal_sheet": "白色粗纹金属板方块", + "block.gtceu.white_metal_sheet": "白色金属板方块", + "block.gtceu.white_studs": "白色橡胶混凝土", + "block.gtceu.wire_coil.tooltip_cracking": "§8裂化机:", + "block.gtceu.wire_coil.tooltip_energy_cracking": "§a耗能:§f%s%%", + "block.gtceu.wire_coil.tooltip_energy_smelter": "§a耗能:§8每配方§f%s EU/t", + "block.gtceu.wire_coil.tooltip_extended_info": "§7按住§6SHIFT§7获得更多线圈信息", + "block.gtceu.wire_coil.tooltip_heat": "§c基础热容:§f%d K", + "block.gtceu.wire_coil.tooltip_parallel_smelter": "§5最大并行:§f%s", + "block.gtceu.wire_coil.tooltip_pyro": "§8热解炉:", + "block.gtceu.wire_coil.tooltip_smelter": "§8工业熔炉:", + "block.gtceu.wire_coil.tooltip_speed_pyro": "§b处理速度:§f%s%%", + "block.gtceu.wood_crate": "木板条箱", + "block.gtceu.wood_drum": "木桶", + "block.gtceu.wood_wall": "木壁", + "block.gtceu.wooden_multiblock_tank": "木制多方块储罐", + "block.gtceu.wooden_tank_valve": "木制储罐阀门", + "block.gtceu.yellow_borderless_lamp": "黄色无框灯", + "block.gtceu.yellow_lamp": "黄色灯", + "block.gtceu.yellow_large_metal_sheet": "黄色粗纹金属板方块", + "block.gtceu.yellow_metal_sheet": "黄色金属板方块", + "block.gtceu.yellow_stripes_block.a": "黄色路障方块", + "block.gtceu.yellow_stripes_block.b": "黄色路障方块", + "block.gtceu.yellow_stripes_block.c": "黄色路障方块", + "block.gtceu.yellow_stripes_block.d": "黄色路障方块", + "block.gtceu.yellow_stripes_block_a": "黄色路障方块A", + "block.gtceu.yellow_stripes_block_b": "黄色路障方块B", + "block.gtceu.yellow_studs": "黄色橡胶混凝土", + "block.gtceu.zpm_1024a_laser_source_hatch": "1024§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_1024a_laser_target_hatch": "1024§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_16a_energy_converter": "16§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_1a_energy_converter": "1§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_256a_laser_source_hatch": "256§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_256a_laser_target_hatch": "256§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_4096a_laser_source_hatch": "4096§e安§r§cZPM§r激光源仓", + "block.gtceu.zpm_4096a_laser_target_hatch": "4096§e安§r§cZPM§r激光靶仓", + "block.gtceu.zpm_4a_energy_converter": "4§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_8a_energy_converter": "8§e安§r§cZPM§r能量转换器", + "block.gtceu.zpm_alloy_smelter": "§c精英合金炉 III§r", + "block.gtceu.zpm_arc_furnace": "§c精英电弧炉 III§r", + "block.gtceu.zpm_assembler": "§c精英组装机 III§r", + "block.gtceu.zpm_autoclave": "§c精英高压釜 III§r", + "block.gtceu.zpm_battery_buffer_16x": "16x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_4x": "4x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_8x": "8x§c零点压§r电池箱(§cZPM§r)", + "block.gtceu.zpm_bender": "§c精英卷板机 III§r", + "block.gtceu.zpm_brewery": "§c精英酿造室 III§r", + "block.gtceu.zpm_canner": "§c精英装罐机 III§r", + "block.gtceu.zpm_centrifuge": "§c精英离心机 III§r", + "block.gtceu.zpm_charger_4x": "4x§c零点压§r闪聚充电箱(§cZPM§r)", + "block.gtceu.zpm_chemical_bath": "§c精英化学浸洗机 III§r", + "block.gtceu.zpm_chemical_reactor": "§c精英化学反应釜 III§r", + "block.gtceu.zpm_circuit_assembler": "§c精英电路组装机 III§r", + "block.gtceu.zpm_compressor": "§c精英压缩机 III§r", + "block.gtceu.zpm_cutter": "§c精英切割机 III§r", + "block.gtceu.zpm_diode": "§cZPM§r二极管", + "block.gtceu.zpm_distillery": "§c精英蒸馏室 III§r", + "block.gtceu.zpm_dual_input_hatch": "§cZPM§r输入总成", + "block.gtceu.zpm_dual_output_hatch": "§cZPM§r输出总成", + "block.gtceu.zpm_electric_furnace": "§c精英电炉 III§r", + "block.gtceu.zpm_electrolyzer": "§c精英电解机 III§r", + "block.gtceu.zpm_electromagnetic_separator": "§c精英电磁选矿机 III§r", + "block.gtceu.zpm_energy_input_hatch": "§cZPM§r能源仓", + "block.gtceu.zpm_energy_input_hatch_16a": "16安§cZPM§r能源仓", + "block.gtceu.zpm_energy_input_hatch_4a": "4安§cZPM§r能源仓", + "block.gtceu.zpm_energy_output_hatch": "§cZPM§r动力仓", + "block.gtceu.zpm_energy_output_hatch_16a": "16安§cZPM§r动力仓", + "block.gtceu.zpm_energy_output_hatch_4a": "4安§cZPM§r动力仓", + "block.gtceu.zpm_extractor": "§c精英提取机 III§r", + "block.gtceu.zpm_extruder": "§c精英压模器 III§r", + "block.gtceu.zpm_fermenter": "§c精英发酵槽 III§r", + "block.gtceu.zpm_fluid_heater": "§c精英流体加热器 III§r", + "block.gtceu.zpm_fluid_passthrough_hatch": "§cZPM§r流体通行仓", + "block.gtceu.zpm_fluid_solidifier": "§c精英流体固化器 III§r", + "block.gtceu.zpm_forge_hammer": "§c精英锻造锤 III§r", + "block.gtceu.zpm_forming_press": "§c精英冲压机床 III§r", + "block.gtceu.zpm_fusion_reactor": "核聚变反应堆控制电脑 MK-II", + "block.gtceu.zpm_gas_collector": "§c精英集气室 III§r", + "block.gtceu.zpm_hermetic_casing": "密封机械方块 VII", + "block.gtceu.zpm_input_bus": "§cZPM§r输入总线", + "block.gtceu.zpm_input_hatch": "§cZPM§r输入仓", + "block.gtceu.zpm_input_hatch_4x": "§cZPM§r四重输入仓", + "block.gtceu.zpm_input_hatch_9x": "§cZPM§r九重输入仓", + "block.gtceu.zpm_item_passthrough_hatch": "§cZPM§r物品通行仓", + "block.gtceu.zpm_lapotronic_battery": "兰波顿电容(§cZPM§r)", + "block.gtceu.zpm_laser_engraver": "§c精英激光蚀刻机 III§r", + "block.gtceu.zpm_lathe": "§c精英车床 III§r", + "block.gtceu.zpm_macerator": "§c精英研磨机 III§r", + "block.gtceu.zpm_machine_casing": "§cZPM§r机械方块", + "block.gtceu.zpm_machine_hull": "§cZPM§f机器外壳", + "block.gtceu.zpm_mixer": "§c精英搅拌机 III§r", + "block.gtceu.zpm_muffler_hatch": "§cZPM§r消声仓", + "block.gtceu.zpm_ore_washer": "§c精英洗矿厂 III§r", + "block.gtceu.zpm_output_bus": "§cZPM§r输出总线", + "block.gtceu.zpm_output_hatch": "§cZPM§r输出仓", + "block.gtceu.zpm_output_hatch_4x": "§cZPM§r四重输出仓", + "block.gtceu.zpm_output_hatch_9x": "§cZPM§r九重输出仓", + "block.gtceu.zpm_packer": "§c精英打包机 III§r", + "block.gtceu.zpm_parallel_hatch": "§cZPM§r并行控制仓", + "block.gtceu.zpm_polarizer": "§c精英两极磁化机 III§r", + "block.gtceu.zpm_quantum_chest": "量子箱 VII", + "block.gtceu.zpm_quantum_tank": "量子缸 VII", + "block.gtceu.zpm_rock_crusher": "§c精英碎岩机 III§r", + "block.gtceu.zpm_rotor_holder": "§cZPM§r转子支架", + "block.gtceu.zpm_scanner": "§c精英扫描仪III§r", + "block.gtceu.zpm_sifter": "§c精英筛选机 III§r", + "block.gtceu.zpm_substation_input_hatch_64a": "64安§cZPM§r变电能源仓", + "block.gtceu.zpm_substation_output_hatch_64a": "64安§cZPM§r变电动力仓", + "block.gtceu.zpm_thermal_centrifuge": "§c精英热力离心机 III§r", + "block.gtceu.zpm_transformer_16a": "§c零点压§r高能变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_1a": "§c零点压§r变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_2a": "§c零点压§r进阶变压器(§cZPM§r)", + "block.gtceu.zpm_transformer_4a": "§c零点压§r高流变压器(§cZPM§r)", + "block.gtceu.zpm_wiremill": "§c精英线材轧机 III§r", + "block.gtceu.zpm_world_accelerator": "§c精英世界加速器 III§r", + "block.sterilizing_filter_casing.tooltip": "创造一个§a无菌§r环境", + "block.surface_rock": "地表岩石(%s)", + "button.gtceu.mark_as_depleted.name": "标记为枯竭", + "button.gtceu.toggle_waypoint.name": "切换路径点", + "command.gtceu.dump_data.success": "已将注册表%2$s中的%1$s个资源转储到%3$s", + "command.gtceu.medical_condition.get": "玩家%s有以下疾病:", + "command.gtceu.medical_condition.get.element": "症状【%s】§r:%s分%s秒", + "command.gtceu.medical_condition.get.element.permanent": "症状【%s】§r:%s分%s秒(永久)", + "command.gtceu.medical_condition.get.empty": "玩家%s没有疾病。", + "command.gtceu.place_vein.failure": "无法放置%s矿脉于%s", + "command.gtceu.place_vein.success": "成功放置%s矿脉于%s", + "command.gtceu.share_prospection_data.notification": "%s向你分享了矿脉数据!", + "config.gtceu.option.addLoot": "添加战利品", + "config.gtceu.option.ae2": "ae2", + "config.gtceu.option.allUniqueStoneTypes": "所有独特石头类型", + "config.gtceu.option.animationTime": "动画时间", + "config.gtceu.option.armorHud": "盔甲HUD", + "config.gtceu.option.bedrockOreDistance": "基岩矿石距离", + "config.gtceu.option.bedrockOreDropTagPrefix": "基岩矿石掉落Tag", + "config.gtceu.option.borderColor": "边框颜色", + "config.gtceu.option.bronzeBoilerHeatSpeed": "青铜锅炉-加热速度", + "config.gtceu.option.bronzeBoilerMaxTemperature": "青铜锅炉-最高温度", + "config.gtceu.option.buttonAnchor": "按钮位置", + "config.gtceu.option.casingsPerCraft": "每次合成机械方块数量", + "config.gtceu.option.cleanMultiblocks": "多方块结构是否洁净", + "config.gtceu.option.client": "客户端", + "config.gtceu.option.compat": "兼容", + "config.gtceu.option.debug": "调试", + "config.gtceu.option.debugWorldgen": "矿石位置Debug模式", + "config.gtceu.option.defaultPaintingColor": "机器默认喷漆颜色", + "config.gtceu.option.defaultUIColor": "默认UI颜色", + "config.gtceu.option.dev": "开发", + "config.gtceu.option.direction": "方向", + "config.gtceu.option.disableManualCompression": "关闭手工压缩", + "config.gtceu.option.doBedrockOres": "添加基岩矿石", + "config.gtceu.option.doSuperflatOres": "超平坦世界生成矿石", + "config.gtceu.option.doesExplosionDamagesTerrain": "机器爆炸是否破坏地形", + "config.gtceu.option.dumpAssets": "导出资源", + "config.gtceu.option.dumpRecipes": "导出配方", + "config.gtceu.option.enableCleanroom": "启用超净间", + "config.gtceu.option.enableFEConverters": "启用FE转换器", + "config.gtceu.option.enableMaintenance": "启用维护仓", + "config.gtceu.option.enableResearch": "启用研究", + "config.gtceu.option.enableTieredCasings": "启用分级机械方块", + "config.gtceu.option.enableWorldAccelerators": "启用世界加速器", + "config.gtceu.option.enchantedTools": "附魔工具", + "config.gtceu.option.energy": "能量", + "config.gtceu.option.energyConsumption": "能耗", + "config.gtceu.option.energyUsageMultiplier": "能源消耗倍率", + "config.gtceu.option.environmentalHazardDecayRate": "环境污染衰减速率", + "config.gtceu.option.environmentalHazards": "环境污染", + "config.gtceu.option.euToFeRatio": "GTEU到FE的转换比例", + "config.gtceu.option.feToEuRatio": "FE到GTEU的转换比例", + "config.gtceu.option.flintAndSteelRequireSteel": "打火石配方是否需要钢", + "config.gtceu.option.ftbChunksIntegration": "FTB区块-集成", + "config.gtceu.option.gameplay": "游戏玩法", + "config.gtceu.option.generateLowQualityGems": "生成劣质宝石", + "config.gtceu.option.ghostCircuit": "虚拟电路", + "config.gtceu.option.gt6StylePipesCables": "类GT6管道/线缆", + "config.gtceu.option.hardAdvancedIronRecipes": "更难的高级铁制品配方", + "config.gtceu.option.hardDyeRecipes": "更难的染料配方", + "config.gtceu.option.hardGlassRecipes": "更难的玻璃配方", + "config.gtceu.option.hardIronRecipes": "更难的铁制品配方", + "config.gtceu.option.hardMiscRecipes": "更难的杂项配方", + "config.gtceu.option.hardMultiRecipes": "更难的多方块控制器配方", + "config.gtceu.option.hardRedstoneRecipes": "更难的红石配方", + "config.gtceu.option.hardToolArmorRecipes": "更难的工具盔甲配方", + "config.gtceu.option.hardWoodRecipes": "更难的木头配方", + "config.gtceu.option.harderBrickRecipes": "更难的砖块配方", + "config.gtceu.option.harderCharcoalRecipe": "更难的木炭配方", + "config.gtceu.option.harderCircuitRecipes": "更难的电路板配方", + "config.gtceu.option.harderRods": "更难的杆配方", + "config.gtceu.option.harmlessActiveTransformers": "无害的有源变压器", + "config.gtceu.option.hazardsEnabled": "启用危险物质", + "config.gtceu.option.hideFacadesInRecipeViewer": "配方浏览器中隐藏伪装板", + "config.gtceu.option.hideFilledCellsInRecipeViewer": "配方浏览器中隐藏装满的单元", + "config.gtceu.option.hideOreProcessingDiagrams": "隐藏矿物处理流程图", + "config.gtceu.option.highTierContent": "极高电压内容", + "config.gtceu.option.hpLiquidBoilerBaseOutput": "高压液体锅炉-基础输出", + "config.gtceu.option.hpSolarBoilerBaseOutput": "高压太阳能锅炉-基础输出", + "config.gtceu.option.hpSolidBoilerBaseOutput": "高压固体锅炉-基础输出", + "config.gtceu.option.hudLocation": "HUD位置", + "config.gtceu.option.hudOffsetX": "HUD偏移X", + "config.gtceu.option.hudOffsetY": "HUD偏移Y", + "config.gtceu.option.inWorldPreviewDuration": "世界中预览时长", + "config.gtceu.option.increaseDungeonLoot": "更多的地牢战利品", + "config.gtceu.option.infiniteBedrockOresFluids": "无限基岩矿石流体", + "config.gtceu.option.journeyMapIntegration": "旅行地图-集成", + "config.gtceu.option.largeBoilers": "大型锅炉", + "config.gtceu.option.ldFluidPipeMinDistance": "长距流体管道最小距离", + "config.gtceu.option.ldItemPipeMinDistance": "长距物品管道最小距离", + "config.gtceu.option.liquidBoilerBaseOutput": "液体锅炉-基础输出", + "config.gtceu.option.machineSounds": "机器音效", + "config.gtceu.option.machines": "机器", + "config.gtceu.option.machinesEmissiveTextures": "启用机器泛光纹理", + "config.gtceu.option.meHatchEnergyUsage": "ME仓能耗", + "config.gtceu.option.minerSpeed": "采矿机速度", + "config.gtceu.option.minimap": "小地图", + "config.gtceu.option.nanoSaber": "纳米剑", + "config.gtceu.option.nanoSaberBaseDamage": "纳米剑基础伤害", + "config.gtceu.option.nanoSaberDamageBoost": "纳米剑伤害增幅", + "config.gtceu.option.nativeEUToFE": "线缆直接给FE机器供能", + "config.gtceu.option.nerfPaperCrafting": "削弱纸配方", + "config.gtceu.option.nerfWoodCrafting": "削弱木板木棍合成", + "config.gtceu.option.onlyOwnerBreak": "仅所有者可破坏", + "config.gtceu.option.onlyOwnerGUI": "仅所有者可开启GUI", + "config.gtceu.option.orderedAssemblyLineFluids": "有序的装配线-流体", + "config.gtceu.option.orderedAssemblyLineItems": "有序的装配线-物品", + "config.gtceu.option.oreBlockProspectRange": "矿石方块探测半径", + "config.gtceu.option.oreGenerationChunkCacheSize": "矿物生成区块缓存大小", + "config.gtceu.option.oreIconSize": "矿石图标大小", + "config.gtceu.option.oreIndicatorChunkCacheSize": "矿脉指示物区块缓存大小", + "config.gtceu.option.oreIndicators": "矿脉指示物", + "config.gtceu.option.oreNamePrefix": "矿石名称前缀", + "config.gtceu.option.oreScaleStop": "最大图标缩放比例", + "config.gtceu.option.oreVeinGridSize": "矿脉网格大小", + "config.gtceu.option.oreVeinRandomOffset": "矿脉随机偏移", + "config.gtceu.option.oreVeins": "矿脉", + "config.gtceu.option.ownerOPBypass": "跳过所有权检查的最低权限等级", + "config.gtceu.option.prospectorEnergyUseMultiplier": "探矿仪能源消耗乘数", + "config.gtceu.option.recipeProgressLowEnergy": "跳电时,机器进度将", + "config.gtceu.option.recipes": "配方", + "config.gtceu.option.removeSmeltingForEBFMetals": "移除需要电力高炉冶炼的金属的熔炉配方", + "config.gtceu.option.removeVanillaBlockRecipes": "移除原版方块配方", + "config.gtceu.option.removeVanillaLargeOreVeins": "移除原版大型矿脉", + "config.gtceu.option.removeVanillaOreGen": "移除原版矿石", + "config.gtceu.option.removeVanillaTNTRecipe": "移除原版TNT配方", + "config.gtceu.option.renderFluids": "渲染流体", + "config.gtceu.option.renderer": "渲染器", + "config.gtceu.option.replaceMinedBlocksWith": "用...替换采矿机采过的方块", + "config.gtceu.option.requireGTToolsForBlocks": "方块需要格雷工具", + "config.gtceu.option.rngDamageElectricTools": "电动工具耐久度消耗概率", + "config.gtceu.option.rubberTreeSpawnChance": "橡胶树生成权重", + "config.gtceu.option.sandOresFall": "沙子矿石受重力吗", + "config.gtceu.option.shouldWeatherOrTerrainExplosion": "机器是否因天气或地形爆炸", + "config.gtceu.option.showDimensionTier": "显示维度等级", + "config.gtceu.option.smallBoilers": "小型锅炉", + "config.gtceu.option.solarBoilerBaseOutput": "太阳能锅炉-基础输出", + "config.gtceu.option.solidBoilerBaseOutput": "固体锅炉-基础输出", + "config.gtceu.option.sprayCanChainLength": "喷雾罐单次可喷涂长度", + "config.gtceu.option.steamMultiParallelAmount": "蒸汽多方块机器并行数", + "config.gtceu.option.steamPerWater": "蒸汽-水转化率", + "config.gtceu.option.steelBoilerHeatSpeed": "钢锅炉-加热速度", + "config.gtceu.option.steelBoilerMaxTemperature": "钢锅炉-最高温度", + "config.gtceu.option.steelSteamMultiblocks": "用钢的蒸汽多方块结构", + "config.gtceu.option.surfaceRockProspectRange": "地表岩石探测半径", + "config.gtceu.option.titaniumBoilerHeatSpeed": "钛锅炉-加热速度", + "config.gtceu.option.titaniumBoilerMaxTemperature": "钛锅炉-最高温度", + "config.gtceu.option.toggle": "切换", + "config.gtceu.option.toolCraftingSounds": "使用工具合成时播放声音", + "config.gtceu.option.toolUseSounds": "使用工具时播放声音", + "config.gtceu.option.tools": "工具", + "config.gtceu.option.treeFellingDelay": "砍树延迟", + "config.gtceu.option.tungstensteelBoilerHeatSpeed": "钨钢锅炉-加热速度", + "config.gtceu.option.tungstensteelBoilerMaxTemperature": "钨钢锅炉-最高温度", + "config.gtceu.option.universalHazards": "普遍化的危险物质", + "config.gtceu.option.updateIntervals": "更新间隔", + "config.gtceu.option.useVBO": "使用VBO", + "config.gtceu.option.voltageTierAdvImpeller": "进阶喷气背包电压等级", + "config.gtceu.option.voltageTierAdvNanoSuit": "进阶纳米胸甲电压等级", + "config.gtceu.option.voltageTierAdvQuarkTech": "进阶夸克胸甲电压等级", + "config.gtceu.option.voltageTierImpeller": "喷气背包电压等级", + "config.gtceu.option.voltageTierNanoSuit": "纳米套电压等级", + "config.gtceu.option.voltageTierNightVision": "夜视仪电压等级", + "config.gtceu.option.voltageTierQuarkTech": "夸克套电压等级", + "config.gtceu.option.worldAcceleratorBlacklist": "世界加速器黑名单", + "config.gtceu.option.worldgen": "世界生成", + "config.gtceu.option.xOffset": "x偏移", + "config.gtceu.option.xaerosMapIntegration": "Xaero地图-集成", + "config.gtceu.option.yOffset": "y偏移", + "config.gtceu.option.zombieSpawnWithSabers": "带纳米剑的僵尸生成", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] 自动输出信息", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] 线缆信息", + "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] 是否停工", + "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] 电力槽", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] 能量转换器模式", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] 排气口信息", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] 污染清理", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] 机器模式", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] 维护信息", + "config.jade.plugin_gtceu.me_pattern_buffer": "[GTCEu] 样板总成信息", + "config.jade.plugin_gtceu.me_pattern_buffer_proxy": "[GTCEu] 样板总成镜像信息", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] 多方块结构", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] 并行信息", + "config.jade.plugin_gtceu.primitive_pump": "[GTCEu] 原始水泵信息", + "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] 配方信息", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] 配方输出信息", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] 染色方块信息", + "config.jade.plugin_gtceu.steam_boiler_info": "[GTCEu] 蒸汽锅炉信息", + "config.jade.plugin_gtceu.transformer": "[GTCEu] 变压器信息", + "config.jade.plugin_gtceu.workable_provider": "[GTCEu] 工作信息", + "cover.advanced_detector.latch.disabled.0": "行为:线性", + "cover.advanced_detector.latch.disabled.1": "", + "cover.advanced_detector.latch.disabled.2": "更改此覆盖板的红石行为。", + "cover.advanced_detector.latch.disabled.3": "§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", + "cover.advanced_detector.latch.disabled.4": "§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", + "cover.advanced_detector.latch.enabled.0": "行为:锁存", + "cover.advanced_detector.latch.enabled.1": "", + "cover.advanced_detector.latch.enabled.2": "更改此覆盖板的红石行为。", + "cover.advanced_detector.latch.enabled.3": "§e线性§7 - 默认模式;物品数量小于最小值时不发出红石信号,大于最大值时发出信号强度15的红石信号,数量介于二者之间发出信号强度在0 - 15之间的红石信号", + "cover.advanced_detector.latch.enabled.4": "§e锁存§7 - 发出满级红石信号,直到物品数量大于最大值;然后停止发出红石信号,直到数量低于最小值", + "cover.advanced_energy_detector.invert.disabled.0": "输出:普通", + "cover.advanced_energy_detector.invert.disabled.1": "", + "cover.advanced_energy_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_energy_detector.invert.disabled.3": "默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", + "cover.advanced_energy_detector.invert.enabled.0": "输出:反相", + "cover.advanced_energy_detector.invert.enabled.1": "", + "cover.advanced_energy_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_energy_detector.invert.enabled.3": "默认情况下,能量小于所设定的最小 EU 时覆盖板将发出红石信号,大于最大 EU 时则停止发出红石信号", + "cover.advanced_energy_detector.label": "进阶能量探测覆盖板", + "cover.advanced_energy_detector.max": "最大值", + "cover.advanced_energy_detector.min": "最小值", + "cover.advanced_energy_detector.use_percent.disabled.0": "模式:EU设定值", + "cover.advanced_energy_detector.use_percent.disabled.1": "", + "cover.advanced_energy_detector.use_percent.disabled.2": "使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", + "cover.advanced_energy_detector.use_percent.enabled.0": "模式: 百分比", + "cover.advanced_energy_detector.use_percent.enabled.1": "", + "cover.advanced_energy_detector.use_percent.enabled.2": "使用给定的EU数值或百分比来比较所附着的能量存储中能量的最大/最小值。", + "cover.advanced_fluid_detector.invert.disabled.0": "输出:普通", + "cover.advanced_fluid_detector.invert.disabled.1": "", + "cover.advanced_fluid_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_fluid_detector.invert.disabled.3": "默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_fluid_detector.invert.enabled.0": "输出:反相", + "cover.advanced_fluid_detector.invert.enabled.1": "", + "cover.advanced_fluid_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_fluid_detector.invert.enabled.3": "默认情况下,流体量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_fluid_detector.label": "进阶流体探测器", + "cover.advanced_fluid_detector.max": "最大流体量(mB)", + "cover.advanced_fluid_detector.min": "最小流体量(mB)", + "cover.advanced_item_detector.invert.disabled.0": "输出:普通", + "cover.advanced_item_detector.invert.disabled.1": "", + "cover.advanced_item_detector.invert.disabled.2": "切换以反转红石逻辑", + "cover.advanced_item_detector.invert.disabled.3": "默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_item_detector.invert.enabled.0": "输出:反相", + "cover.advanced_item_detector.invert.enabled.1": "", + "cover.advanced_item_detector.invert.enabled.2": "切换以反转红石逻辑", + "cover.advanced_item_detector.invert.enabled.3": "默认情况下,物品数量介于所设定的最小值和最大值之间时覆盖板将发出红石信号,小于最小值时则停止发出红石信号", + "cover.advanced_item_detector.label": "进阶物品探测器", + "cover.advanced_item_detector.max": "最大物品数量", + "cover.advanced_item_detector.min": "最小物品数量", + "cover.bucket.mode.bucket": "B", + "cover.bucket.mode.milli_bucket": "mB", + "cover.conveyor.blocks_input.disabled.0": "若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", + "cover.conveyor.blocks_input.disabled.1": "§c已禁用", + "cover.conveyor.blocks_input.enabled.0": "若启用,覆盖板设置为将物品从存储空间输出至管道时将阻止物品从所在面输入。", + "cover.conveyor.blocks_input.enabled.1": "§a已启用", + "cover.conveyor.distribution.insert_first.0": "分配模式:§b优先级", + "cover.conveyor.distribution.insert_first.1": "§7将物品输入至所搜寻到的优先级最高的物品存储空间", + "cover.conveyor.distribution.insert_first.2": "§7加固物品管道会降低管道路径的优先级。", + "cover.conveyor.distribution.round_robin_global.0": "分配模式:§b轮询调度", + "cover.conveyor.distribution.round_robin_global.1": "§7将物品平分至相连的物品存储空间。", + "cover.conveyor.distribution.round_robin_prio.0": "分配模式:§b轮询调度(次序式)", + "cover.conveyor.distribution.round_robin_prio.1": "§7尝试将物品平分至相连的物品存储空间,并优先考虑优先级更高的。", + "cover.conveyor.distribution.round_robin_prio.2": "§7加固物品管道会降低管道路径的优先级。", + "cover.conveyor.item_filter.title": "物品过滤", + "cover.conveyor.mode": "模式:%s", + "cover.conveyor.mode.export": "模式:输出", + "cover.conveyor.mode.import": "模式:输入", + "cover.conveyor.tag.title.0": "标签名称", + "cover.conveyor.tag.title.1": "(*可作通配符)", + "cover.conveyor.title": "传送带覆盖板配置(%s)", + "cover.conveyor.transfer_rate": "§7物品/秒", + "cover.detector_base.message_inverted_state": "监控状态:反相", + "cover.detector_base.message_normal_state": "监控状态:普通", + "cover.ender_fluid_link.incomplete_hex.0": "输入的颜色不正确!", + "cover.ender_fluid_link.incomplete_hex.1": "输入正确的八位十六进制颜色码方可应用", + "cover.ender_fluid_link.incomplete_hex.2": "此时关闭界面将导致丢失编辑内容!", + "cover.ender_fluid_link.iomode.disabled": "已禁用I/O", + "cover.ender_fluid_link.iomode.enabled": "已启用I/O", + "cover.ender_fluid_link.private.tooltip.disabled.0": "切换至私有储罐模式", + "cover.ender_fluid_link.private.tooltip.disabled.1": "私有权归最初加装该覆盖板的玩家所有", + "cover.ender_fluid_link.private.tooltip.enabled": "切换至公共储罐模式", + "cover.ender_fluid_link.title": "末影流体连接", + "cover.filter.blacklist.disabled": "白名单", + "cover.filter.blacklist.enabled": "黑名单", + "cover.filter.mode.filter_both": "过滤两者", + "cover.filter.mode.filter_extract": "过滤输出", + "cover.filter.mode.filter_insert": "过滤输入", + "cover.fluid.voiding.advanced.title": "高级流体销毁设置", + "cover.fluid.voiding.title": "流体销毁设置", + "cover.fluid_filter.config_amount.0": "向上或向下滚动鼠标滚轮以增加或减少流体量。", + "cover.fluid_filter.config_amount.1": "Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", + "cover.fluid_filter.config_amount.2": "亦可通过右击或左击来增减流体量。", + "cover.fluid_filter.config_amount.3": "按住Shift时点击鼠标则将使流体量翻倍或减半。", + "cover.fluid_filter.config_amount.4": "点击中键以清除", + "cover.fluid_filter.mode.filter_both": "过滤两者", + "cover.fluid_filter.mode.filter_drain": "过滤输出", + "cover.fluid_filter.mode.filter_fill": "过滤输入", + "cover.fluid_filter.title": "流体过滤卡", + "cover.fluid_regulator.keep_exact": "保持供应:%s", + "cover.fluid_regulator.supply_exact": "精确供应:%s", + "cover.fluid_regulator.title": "流体校准器设置(%s)", + "cover.fluid_regulator.transfer_mode.description.0": "§e任意传输§r-在此模式下,覆盖板将传输任何与过滤器匹配的流体。", + "cover.fluid_regulator.transfer_mode.description.1": "§e精确供应-在此模式下,覆盖板会将此按钮下方窗口中指定的流体按指定量打包传输。若流体量小于指定量,流体不会被传输。", + "cover.fluid_regulator.transfer_mode.description.2": "§e保持供应-在此模式下,覆盖板将在目标容器中保持指定数量的液体,低于保持量时传输相应量的流体。", + "cover.fluid_regulator.transfer_mode.description.3": "§7小提示:按住Shift/Crtl把增加或减少的数量乘以10/100。", + "cover.item.voiding.advanced.title": "高级物品销毁设置", + "cover.item.voiding.title": "物品销毁设置", + "cover.item_filter.ignore_damage.disabled": "匹配耐久度", + "cover.item_filter.ignore_damage.enabled": "无视耐久度", + "cover.item_filter.ignore_nbt.disabled": "匹配NBT", + "cover.item_filter.ignore_nbt.enabled": "忽略NBT", + "cover.item_filter.title": "物品过滤卡", + "cover.item_smart_filter.filtering_mode.centrifuge": "离心机", + "cover.item_smart_filter.filtering_mode.description.0": "为该智能覆盖板选择目标机器。", + "cover.item_smart_filter.filtering_mode.description.1": "它能够自动挑选符合机器配方的物品。", + "cover.item_smart_filter.filtering_mode.electrolyzer": "电解机", + "cover.item_smart_filter.filtering_mode.sifter": "筛选机", + "cover.item_smart_filter.title": "智能物品过滤", + "cover.machine_controller.invert.disabled.0": "§e普通§r - 该模式下的覆盖板需要比设定强度小的红石信号来触发", + "cover.machine_controller.invert.enabled.0": "§e反相§r - 该模式下的覆盖板需要比设定强度大的红石信号来触发", + "cover.machine_controller.inverted": "反相", + "cover.machine_controller.mode.cover_down": "控制目标:覆盖板(底面)", + "cover.machine_controller.mode.cover_east": "控制目标:覆盖板(东面)", + "cover.machine_controller.mode.cover_north": "控制目标:覆盖板(北面)", + "cover.machine_controller.mode.cover_south": "控制目标:覆盖板(南面)", + "cover.machine_controller.mode.cover_up": "控制目标:覆盖板(顶面)", + "cover.machine_controller.mode.cover_west": "控制目标:覆盖板(西面)", + "cover.machine_controller.mode.machine": "控制目标:机器", + "cover.machine_controller.mode.null": "控制目标:无", + "cover.machine_controller.normal": "普通", + "cover.machine_controller.redstone": "最小红石信号强度:%d", + "cover.machine_controller.title": "机器控制设置", + "cover.pump.fluid_filter.title": "流体过滤", + "cover.pump.mode.export": "模式:输出", + "cover.pump.mode.import": "模式:输入", + "cover.pump.title": "泵覆盖板设置(%s)", + "cover.pump.transfer_rate": "%s", + "cover.robotic_arm.title": "机械臂设置(%s)", + "cover.robotic_arm.transfer_mode.description.0": "§e任意传输§r-在此模式下,覆盖板将尽可能传输一切符合过滤设置的物品。", + "cover.robotic_arm.transfer_mode.description.1": "§e精确补给§r-在此模式下,覆盖板每次都会输入在物品过滤卡的过滤槽中指定(或者在标签过滤卡的按钮里指定)数量的物品。若物品的数量小于指定数量,则不会被输入。", + "cover.robotic_arm.transfer_mode.description.2": "§e保持补给§r-在此模式下,覆盖板将保持目标容器中指定物品的数量,需要物品时则供应相应量的物品。", + "cover.robotic_arm.transfer_mode.description.3": "§7小提示:左/右击过滤槽可以调整物品数量,同时按住Shift可以更快地调整。", + "cover.robotic_arm.transfer_mode.keep_exact": "保持补给", + "cover.robotic_arm.transfer_mode.transfer_any": "任意传输", + "cover.robotic_arm.transfer_mode.transfer_exact": "精确补给", + "cover.shutter.message.disabled": "扇板已开启", + "cover.shutter.message.enabled": "扇板已关闭", + "cover.storage.title": "存储覆盖板", + "cover.tag_filter.info.0": "§b接受复杂表达式", + "cover.tag_filter.info.1": "§6a & b§r = 且(AND)", + "cover.tag_filter.info.10": "§b使用范例:§6*dusts/gold | (gtceu:circuits & !*lv)", + "cover.tag_filter.info.11": "这将匹配所有种类的金粉或LV以外的电路", + "cover.tag_filter.info.2": "§6a | b§r = 或(OR)", + "cover.tag_filter.info.3": "§6a ^ b§r = 异或(XOR)", + "cover.tag_filter.info.4": "§6!a§r = 非(NOT)", + "cover.tag_filter.info.5": "§6(a)§r 改变优先级", + "cover.tag_filter.info.6": "§6*§r 为通配符", + "cover.tag_filter.info.7": "§6$§r 为没有标签的物品/流体等", + "cover.tag_filter.info.8": "§b标签的格式为'命名空间:标签/子类型'。", + "cover.tag_filter.info.9": "如果没有提供命名空间,则为'forge:'。", + "cover.tag_filter.matches": "物品匹配", + "cover.tag_filter.matches_not": "物品不匹配", + "cover.tag_filter.test_slot.info": "放入一件物品以测试是否匹配过滤表达式", + "cover.tag_filter.title": "标签过滤", + "cover.universal.manual_import_export.mode.description.0": "§e禁用§r-仅依照覆盖板与内部过滤器的指定规则传输。", + "cover.universal.manual_import_export.mode.description.1": "§e过滤§r-外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", + "cover.universal.manual_import_export.mode.description.2": "§e无过滤§r-外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", + "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\n§7仅依照覆盖板与内部过滤器的指定规则传输。", + "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b过滤\n§7外部I/O将只根据过滤器的指定规则传输,不受覆盖板的限制。", + "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b无过滤\n§7外部I/O无视所有传输规则,过滤器将仅控制覆盖板进行的I/O。", + "cover.voiding.label.disabled": "禁用", + "cover.voiding.label.enabled": "启用", + "cover.voiding.message.disabled": "已禁用销毁覆盖板", + "cover.voiding.message.enabled": "已启用销毁覆盖板", + "cover.voiding.tooltip": "§c警告!§7“启用”时所有流体和物品全部都会被销毁。", + "cover.voiding.voiding_mode.description.0": "§e匹配销毁§r:匹配过滤规则即销毁。", + "cover.voiding.voiding_mode.description.1": "§e溢出销毁§r:匹配过滤规则即销毁超出设定数量的部分物品/流体。", + "cover.voiding.voiding_mode.void_any": "匹配销毁", + "cover.voiding.voiding_mode.void_overflow": "溢出销毁", + "curios.identifier.gtceu_magnet": "GTCEu磁铁", + "death.attack.gtceu.axe": "%s被%s用斧子砍死了", + "death.attack.gtceu.butchery_knife": "%s死在了%s的屠刀之下", + "death.attack.gtceu.buzzsaw": "%2$手中圆锯的嗞嗞声成为了%1$s生命中最后听到的声音", + "death.attack.gtceu.chainsaw_lv": "%2$s的链锯切碎了%1$s", + "death.attack.gtceu.chemical": "%s历经了一场化学事故", + "death.attack.gtceu.crowbar": "%s被%s用撬棍撬走了半条命", + "death.attack.gtceu.drill_ev": "%2$s的超高压电钻洞穿了%1$s", + "death.attack.gtceu.drill_hv": "%2$s的高压电钻洞穿了%1$s", + "death.attack.gtceu.drill_iv": "%2$s的强导压电钻洞穿了%1$s", + "death.attack.gtceu.drill_lv": "%2$s的低压电钻洞穿了%1$s", + "death.attack.gtceu.drill_mv": "%2$s的中压电钻洞穿了%1$s", + "death.attack.gtceu.electric": "%s触电身亡", + "death.attack.gtceu.explosion": "%s爆炸了", + "death.attack.gtceu.explosion.player": "拜%2$s所赐,%1$s爆炸了", + "death.attack.gtceu.file": "%s历尽了%s的“锉”折", + "death.attack.gtceu.frost": "%s探索到了低温的奥秘", + "death.attack.gtceu.hammer": "%s被%s锤死了", + "death.attack.gtceu.heat": "%s被活活煮熟了", + "death.attack.gtceu.heat.player": "%s被%s活活煮熟了", + "death.attack.gtceu.hoe": "%s被%s锄死了", + "death.attack.gtceu.knife": "%2$s绅士地捅了%1$s几刀", + "death.attack.gtceu.mallet": "%s被%s用锤头活活敲死了", + "death.attack.gtceu.medical_condition/arsenicosis": "%s死于砷中毒", + "death.attack.gtceu.medical_condition/asbestosis": "%s得了间皮瘤", + "death.attack.gtceu.medical_condition/berylliosis": "%s贪婪地挖掘绿宝石,结果有点过火了", + "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning": "%s离开时炉子还开着", + "death.attack.gtceu.medical_condition/carcinogen": "%s身患白血病", + "death.attack.gtceu.medical_condition/chemical_burns": "%s历经了一场化学事故", + "death.attack.gtceu.medical_condition/irritant": "%s身上长了§n§l极其严重§r的皮疹", + "death.attack.gtceu.medical_condition/methanol_poisoning": "%s在禁酒令下尝试饮用私酿烈酒", + "death.attack.gtceu.medical_condition/nausea": "%s死于恶心", + "death.attack.gtceu.medical_condition/none": "%s死于...什么都没有?", + "death.attack.gtceu.medical_condition/poison": "%s忘了毒物的确有毒", + "death.attack.gtceu.medical_condition/silicosis": "%s不是死于肺结核,而是矽肺病", + "death.attack.gtceu.medical_condition/weak_poison": "%s吞下了铅(或水银!)", + "death.attack.gtceu.mining_hammer": "%s被%s当成矿石砸死了", + "death.attack.gtceu.mortar": "%s被%s用研钵磨成了粉", + "death.attack.gtceu.pickaxe": "%s被%s用镐子凿死了", + "death.attack.gtceu.radiation": "%s放射出了喜悦的光芒", + "death.attack.gtceu.screwdriver": "%s被%s用螺丝刀钻死了", + "death.attack.gtceu.screwdriver_lv": "%s的螺丝被%s扭掉了", + "death.attack.gtceu.scythe": "%s一镰刀下去,%s的灵魂灰飞烟灭", + "death.attack.gtceu.shovel": "%s被%s用锹掏死了", + "death.attack.gtceu.spade": "%s被%s用铲子挖死了", + "death.attack.gtceu.turbine": "%s一头扎进了涡轮里", + "death.attack.gtceu.wire_cutter": "%s用剪线钳剪断了%s的血管", + "death.attack.gtceu.wrench": "%s被%s用扳手夯死了!", + "death.attack.gtceu.wrench_hv": "%s的血管被%s狠狠拧松了", + "death.attack.gtceu.wrench_iv": "%2$s一扳手下去,扳倒了%1$s的美好人生", + "death.attack.gtceu.wrench_lv": "%s的血管被%s狠狠拧松了", + "effect.gtceu.weak_poison": "轻度中毒", + "enchantment.damage.disjunction": "末影离析", + "enchantment.disjunction": "末影离析", + "enchantment.gtceu.disjunction.description": "对末影生物施加虚弱和缓慢效果。", + "enchantment.gtceu.hard_hammer.description": "像格雷科技的锤一样粉碎所采掘的方块。", + "enchantment.hard_hammer": "锤碎", + "entity.gtceu.boat": "船", + "entity.gtceu.chest_boat": "运输船", + "entity.gtceu.dynamite": "炸药", + "entity.gtceu.industrial_tnt": "工业TNT", + "entity.gtceu.powderbarrel": "火药桶", + "fluid.empty": "空", + "fluid.gtceu.potion": "药水", + "fluid.spawnlocation.name": "流体矿脉信息", + "fluid.tile.lava": "熔岩", + "fluid.tile.water": "水", + "fluid_cell.empty": "空", + "gtceu.air_scrubber": "空气净化器", + "gtceu.alloy_blast_smelter": "合金冶炼炉", + "gtceu.alloy_smelter": "合金炉", + "gtceu.arc_furnace": "电弧炉", + "gtceu.assembler": "组装机", + "gtceu.assembly_line": "装配线", + "gtceu.auto_decomp.rotor": "涡轮转子", + "gtceu.auto_decomp.tool": "非电动工具", + "gtceu.autoclave": "高压釜", + "gtceu.battery_buffer.average_input": "平均输入:%s EU/t", + "gtceu.battery_buffer.average_output": "平均输出:%s EU/t", + "gtceu.bender": "卷板机", + "gtceu.brewery": "酿造室", + "gtceu.bus.collapse.error": "总线位于已成型的多方块结构后方可进行该操作", + "gtceu.bus.collapse_false": "已禁用物品堆叠自动合并", + "gtceu.bus.collapse_true": "已启用物品堆叠自动合并", + "gtceu.button.bedrock_fluids": "显示基岩流体矿脉", + "gtceu.button.hide_depleted": "隐藏枯竭的矿脉", + "gtceu.button.ore_veins": "显示GT矿脉", + "gtceu.button.show_depleted": "显示枯竭的矿脉", + "gtceu.cable.amperage": "§e最大电流:§r§e%d", + "gtceu.cable.loss_per_block": "§c线损/米/安:§r§c%d§7 伏", + "gtceu.cable.superconductor": "%s§d超导体", + "gtceu.cable.voltage": "§a最大电压:§r§a%d§a(%s§a)", + "gtceu.canner": "装罐机", + "gtceu.centrifuge": "离心机", + "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.none": "NONE", + "gtceu.chance_logic.or": "OR", + "gtceu.chance_logic.xor": "XOR", + "gtceu.chat.cape": "§5恭喜你:你刚刚解锁了一件新披风!查看终端应用程序“披风选择器”来使用它。§r", + "gtceu.chemical_bath": "化学浸洗机", + "gtceu.chemical_reactor": "化学反应釜", + "gtceu.circuit_assembler": "电路组装机", + "gtceu.coke_oven": "焦炉", + "gtceu.combustion_generator": "内燃发电机", + "gtceu.command.copy.click_to_copy": "点击复制", + "gtceu.command.copy.copied_and_click": "已复制到剪贴板,点击再次复制", + "gtceu.command.copy.copied_end": "]到剪贴板", + "gtceu.command.copy.copied_start": "已复制[", + "gtceu.command.hand.electric": "电量信息:%d / %d EU - 等级:%d; 是否为电池:%s", + "gtceu.command.hand.fluid": "流体信息:%d / %d mB;是否可输入:%s; 是否可输出:%s", + "gtceu.command.hand.fluid2": "流体 ID:", + "gtceu.command.hand.groovy": "考虑使用§6/gs hand", + "gtceu.command.hand.item_id": "物品:%s(元数据:%d)", + "gtceu.command.hand.material": "材料 ID:", + "gtceu.command.hand.meta_item": "元物品 ID:", + "gtceu.command.hand.no_item": "在执行此命令之前,您的主手或副手必须拿着物品。", + "gtceu.command.hand.not_a_player": "这个命令只有玩家可以使用。", + "gtceu.command.hand.ore_prefix": "矿物前缀:", + "gtceu.command.hand.tag_entries": "§3标签条目:", + "gtceu.command.hand.tool_stats": "工具状态类:%s", + "gtceu.command.hand.usage": "用法:/gtceu hand", + "gtceu.command.recipecheck.begin": "开始配方冲突检查...", + "gtceu.command.recipecheck.end": "配方冲突检查找到%d可能存在的冲突,查看服务器日志以了解更多信息", + "gtceu.command.recipecheck.end_no_conflicts": "未发现配方冲突!", + "gtceu.command.recipecheck.usage": "用法:/gtceu recipecheck", + "gtceu.command.usage": "用法:/gtceu ", + "gtceu.command.worldgen.reload.failed": "Worldgen重新加载失败。检查控制台是否有错误。", + "gtceu.command.worldgen.reload.success": "Worldgen已成功从配置重新加载。", + "gtceu.command.worldgen.reload.usage": "用法:/gtceu worldgen reload", + "gtceu.command.worldgen.usage": "用法:/gtceu worldgen ", + "gtceu.compressor": "压缩机", + "gtceu.cover.activity_detector.message_activity_inverted": "正在以反相模式监控活动状态", + "gtceu.cover.activity_detector.message_activity_normal": "正在以普通模式监控活动状态", + "gtceu.cover.activity_detector_advanced.message_activity_inverted": "正在以反相模式监控处理状态", + "gtceu.cover.activity_detector_advanced.message_activity_normal": "正在以普通模式监控处理状态", + "gtceu.cover.energy_detector.message_electricity_storage_inverted": "正在以反相模式监控电力存储", + "gtceu.cover.energy_detector.message_electricity_storage_normal": "正在以普通模式监控电力存储", + "gtceu.cover.fluid_detector.message_fluid_storage_inverted": "正在以反相模式监控流体存储", + "gtceu.cover.fluid_detector.message_fluid_storage_normal": "正在以普通模式监控流体存储", + "gtceu.cover.item_detector.message_item_storage_inverted": "正在以反相模式监控物品存储", + "gtceu.cover.item_detector.message_item_storage_normal": "正在以普通模式监控物品存储", + "gtceu.cracker": "裂化机", + "gtceu.creative.activity.off": "未激活", + "gtceu.creative.activity.on": "已激活", + "gtceu.creative.chest.ipc": "每次输出物品数", + "gtceu.creative.chest.item": "物品", + "gtceu.creative.chest.tpc": "每次输出间隔Tick", + "gtceu.creative.computation.average": "平均CWU/t请求", + "gtceu.creative.energy.amperage": "电流", + "gtceu.creative.energy.sink": "归零", + "gtceu.creative.energy.source": "最大值", + "gtceu.creative.energy.voltage": "电压", + "gtceu.creative.tank.fluid": "流体", + "gtceu.creative.tank.mbpc": "每次输出流体量", + "gtceu.creative.tank.tpc": "每次输出间隔Tick", + "gtceu.creative_tooltip.1": "§7你需要", + "gtceu.creative_tooltip.2": "§b创造模式", + "gtceu.creative_tooltip.3": "§7来使用它", + "gtceu.cutter": "切割机", + "gtceu.debug.f3_h.enabled": "格雷科技修改了调试信息!对于开发人员:在GregTech配置文件中启用misc:debug以查看更多信息", + "gtceu.direction.tooltip.back": "背面", + "gtceu.direction.tooltip.down": "底面", + "gtceu.direction.tooltip.front": "正面", + "gtceu.direction.tooltip.left": "左面", + "gtceu.direction.tooltip.right": "右面", + "gtceu.direction.tooltip.up": "顶面", + "gtceu.distillation_tower": "蒸馏塔", + "gtceu.distillery": "蒸馏室", + "gtceu.duct_pipe.transfer_rate": "§b空气传输速率:%s", + "gtceu.dummy": "占位符", + "gtceu.electric_blast_furnace": "电力高炉", + "gtceu.electric_furnace": "电炉", + "gtceu.electrolyzer": "电解机", + "gtceu.electromagnetic_separator": "电磁选矿机", + "gtceu.extractor": "提取机", + "gtceu.extruder": "压模器", + "gtceu.fermenter": "发酵槽", + "gtceu.fluid.amount": "§9总量:%d/%d mB", + "gtceu.fluid.click_combined": "§7手持流体容器点击流体槽以§c倒出§7或§b填入§7流体(Shift+单击以用整组容器倒出流体或用整组容器中的流体填入)", + "gtceu.fluid.click_to_empty": "§7手持流体容器点击流体槽以§c倒出§7流体(Shift+单击以用整组容器倒出流体)", + "gtceu.fluid.click_to_fill": "§7手持流体容器点击流体槽以§b填入§7流体(Shift+单击以用整组容器中的流体填入)", + "gtceu.fluid.empty": "空", + "gtceu.fluid.gas_generic": "气态%s", + "gtceu.fluid.gas_vapor": "%s蒸气", + "gtceu.fluid.generic": "%s", + "gtceu.fluid.liquid_generic": "液态%s", + "gtceu.fluid.molten": "熔融%s", + "gtceu.fluid.plasma": "%s等离子体", + "gtceu.fluid.state_gas": "§a状态:气态", + "gtceu.fluid.state_liquid": "§a状态:液态", + "gtceu.fluid.state_plasma": "§a状态:等离子态", + "gtceu.fluid.temperature": "§c温度:%d K", + "gtceu.fluid.temperature.cryogenic": "§b低温流体!轻拿轻放!", + "gtceu.fluid.type_acid.tooltip": "§6酸性流体!轻拿轻放!", + "gtceu.fluid_heater": "流体加热器", + "gtceu.fluid_pipe.acid_proof": "§6可传输酸性物质", + "gtceu.fluid_pipe.capacity": "§9容积:§f%d mB", + "gtceu.fluid_pipe.channels": "§e并行管道:§f%d", + "gtceu.fluid_pipe.cryo_proof": "§6可传输低温物质", + "gtceu.fluid_pipe.gas_proof": "§6可以传输气体", + "gtceu.fluid_pipe.max_temperature": "§c温度上限:§f%d K", + "gtceu.fluid_pipe.not_gas_proof": "§4气体可能泄漏!", + "gtceu.fluid_pipe.plasma_proof": "§6可传输所有等离子体", + "gtceu.fluid_solidifier": "流体固化器", + "gtceu.forge_hammer": "锻造锤", + "gtceu.forming_press": "冲压机床", + "gtceu.forming_press.naming.named": "§o已命名物品", + "gtceu.forming_press.naming.press": "§o名称模板", + "gtceu.forming_press.naming.to_name": "§o待命名物品", + "gtceu.fusion_reactor": "核聚变反应堆", + "gtceu.gas_collector": "集气室", + "gtceu.gas_turbine": "燃气轮机", + "gtceu.gui.auto_output.name": "自动", + "gtceu.gui.charger_slot.tooltip.0": "§f充电槽§r", + "gtceu.gui.charger_slot.tooltip.1": "§7从%s电池中取电§7", + "gtceu.gui.charger_slot.tooltip.2": "§7也可为%s工具或电池充电", + "gtceu.gui.chunkmode.disabled.0": "区块模式§c禁用§r:单击启用。", + "gtceu.gui.chunkmode.disabled.1": "§7切换需要机器待机。", + "gtceu.gui.chunkmode.enabled.0": "区块模式§a启用§r:单击禁用。", + "gtceu.gui.chunkmode.enabled.1": "§7切换需要机器待机。", + "gtceu.gui.circuit.title": "电路设置", + "gtceu.gui.config_slot": "§f配置槽位§r", + "gtceu.gui.config_slot.auto_pull_managed": "§4禁用:§7由ME自动拉取管理", + "gtceu.gui.config_slot.remove": "§7右击§4清除§7配置槽位。§r", + "gtceu.gui.config_slot.scroll": "§7使用滚轮§a切换§7配置数。§r", + "gtceu.gui.config_slot.set": "§7点击§b设置/选择§7配置槽位。§r", + "gtceu.gui.config_slot.set_only": "§7点击§b设置§7配置槽位。§r", + "gtceu.gui.configurator_slot.tooltip.0": "§f配置器槽§r", + "gtceu.gui.configurator_slot.tooltip.1": "§7在此插槽放置一个§6编程电路§7以", + "gtceu.gui.configurator_slot.tooltip.2": "§7更改其配置值。", + "gtceu.gui.configurator_slot.tooltip.3": "§7按住§6Shift§7时点击按钮,一次加减§6§75个编号", + "gtceu.gui.configurator_slot.tooltip.4": "§a此插槽中的编程电路也视为一个配方输入。§r", + "gtceu.gui.content.chance_base": "基础概率:%s%%", + "gtceu.gui.content.chance_base_logic": "基础概率:%s%% (%s)", + "gtceu.gui.content.chance_boosted": "当前等级概率:%s%%", + "gtceu.gui.content.chance_boosted_logic": "当前等级概率:%s%%(%s)", + "gtceu.gui.content.chance_nc": "§c不会被消耗§r", + "gtceu.gui.content.chance_nc_short": "§c不消耗§r", + "gtceu.gui.content.chance_tier_boost_minus": "奖励概率:- %s%%/电压等级", + "gtceu.gui.content.chance_tier_boost_plus": "奖励概率:+ %s%%/电压等级", + "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.per_tick": "§a每刻(tick)消耗/产生§r", + "gtceu.gui.content.tips.per_second_short": "§a/秒§r", + "gtceu.gui.content.tips.per_tick_short": "§a/刻(tick)§r", + "gtceu.gui.content.units.per_second": "/s", + "gtceu.gui.content.units.per_tick": "/t", + "gtceu.gui.cover_setting.title": "覆盖板设置", + "gtceu.gui.editor.group.recipe_type": "封顶", + "gtceu.gui.editor.tips.citation": "引用次数", + "gtceu.gui.fisher_mode.tooltip.0": "捕捉垃圾物品", + "gtceu.gui.fisher_mode.tooltip.1": "关闭时,每次运行消耗两根线。", + "gtceu.gui.fluid_amount": "流体总量:", + "gtceu.gui.fluid_auto_input.tooltip.disabled": "流体自动输入已禁用", + "gtceu.gui.fluid_auto_input.tooltip.enabled": "流体自动输入已启用", + "gtceu.gui.fluid_auto_output.allow_input.disabled": "禁止从输出面输入流体", + "gtceu.gui.fluid_auto_output.allow_input.enabled": "允许从输出面输入流体", + "gtceu.gui.fluid_auto_output.tooltip.disabled": "流体自动输出已禁用", + "gtceu.gui.fluid_auto_output.tooltip.enabled": "流体自动输出已启用", + "gtceu.gui.fluid_lock.tooltip.disabled": "流体锁定已禁用", + "gtceu.gui.fluid_lock.tooltip.enabled": "流体锁定已启用", + "gtceu.gui.fluid_voiding_partial.tooltip.disabled": "过量流体销毁已禁用", + "gtceu.gui.fluid_voiding_partial.tooltip.enabled": "过量流体销毁已启用", + "gtceu.gui.fuel_amount": "燃料总量:", + "gtceu.gui.item_auto_input.tooltip.disabled": "物品自动输入已禁用", + "gtceu.gui.item_auto_input.tooltip.enabled": "物品自动输入已启用", + "gtceu.gui.item_auto_output.allow_input.disabled": "禁止从输出面输入物品", + "gtceu.gui.item_auto_output.allow_input.enabled": "允许从输出面输入物品", + "gtceu.gui.item_auto_output.tooltip.disabled": "物品自动输出已禁用", + "gtceu.gui.item_auto_output.tooltip.enabled": "物品自动输出已启用", + "gtceu.gui.item_lock.tooltip.disabled": "物品锁定已禁用", + "gtceu.gui.item_lock.tooltip.enabled": "物品锁定已启用", + "gtceu.gui.item_voiding_partial.tooltip.disabled": "物品过量销毁已禁用", + "gtceu.gui.item_voiding_partial.tooltip.enabled": "物品过量销毁已开启", + "gtceu.gui.machinemode": "当前机器模式:%s", + "gtceu.gui.machinemode.title": "当前机器模式", + "gtceu.gui.me_bus.auto_pull_button": "单击以切换ME自动拉取模式", + "gtceu.gui.me_network.offline": "网络状态:§4离线§r", + "gtceu.gui.me_network.online": "网络状态:§2在线§r", + "gtceu.gui.multiblock_fluid_voiding.0": "销毁模式", + "gtceu.gui.multiblock_fluid_voiding.1": "§7销毁§9流体", + "gtceu.gui.multiblock_item_fluid_voiding.0": "销毁模式", + "gtceu.gui.multiblock_item_fluid_voiding.1": "§7销毁§6物品§7和§9流体", + "gtceu.gui.multiblock_item_voiding.0": "销毁模式", + "gtceu.gui.multiblock_item_voiding.1": "§7销毁§6物品", + "gtceu.gui.multiblock_no_voiding.0": "销毁模式", + "gtceu.gui.multiblock_no_voiding.1": "§7不进行销毁", + "gtceu.gui.output_setting.title": "输出设置", + "gtceu.gui.output_setting.tooltips.0": "左键单击以自动输出物品", + "gtceu.gui.output_setting.tooltips.1": "右键单击以自动输出流体", + "gtceu.gui.overclock.description.0": "超频按钮", + "gtceu.gui.overclock.description.1": "§7配方可以超频到设定的电压等级", + "gtceu.gui.overclock.disabled.0": "超频已禁用", + "gtceu.gui.overclock.disabled.1": "单击启用", + "gtceu.gui.overclock.enabled.0": "超频已启用", + "gtceu.gui.overclock.enabled.1": "单击禁用", + "gtceu.gui.overclock.off": "X", + "gtceu.gui.overclock.range": "可用电压级 [%s,%s]", + "gtceu.gui.overclock.title": "超频电压级", + "gtceu.gui.silktouch.disabled.0": "精准采集已禁用:单击启用。", + "gtceu.gui.silktouch.disabled.1": "§7切换需要机器待机。", + "gtceu.gui.silktouch.enabled.0": "精准采集已启用:单击禁用。", + "gtceu.gui.silktouch.enabled.1": "§7切换需要机器待机。", + "gtceu.gui.sort": "分类", + "gtceu.gui.title_bar.back": "返回", + "gtceu.gui.title_bar.page_switcher": "页面", + "gtceu.gui.toggle_view.disabled": "切换视图(流体)", + "gtceu.gui.toggle_view.enabled": "切换视图(物品)", + "gtceu.gui.waiting_list": "发送队列:", + "gtceu.hazard_trigger.any": "任何方式", + "gtceu.hazard_trigger.description": "由此导致:", + "gtceu.hazard_trigger.inhalation": "吸入", + "gtceu.hazard_trigger.none": "无", + "gtceu.hazard_trigger.protection.description": "免受:", + "gtceu.hazard_trigger.skin_contact": "皮肤接触", + "gtceu.implosion_compressor": "聚爆压缩机", + "gtceu.io.both": "同时", + "gtceu.io.export": "输出", + "gtceu.io.import": "输入", + "gtceu.io.none": "无", + "gtceu.item_filter.empty_item": "空(无物品)", + "gtceu.item_filter.footer": "§e手持物品右键覆盖设置", + "gtceu.item_list.item_stored": "§7储量:%d", + "gtceu.item_pipe.priority": "§9优先级:§f%d", + "gtceu.jade.cleaned_this_second": "污染清理速率:%s/s", + "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.progress_computation": "%s / %s CWU", + "gtceu.jade.progress_sec": "%s / %s s", + "gtceu.jade.progress_tick": "%s / %s t", + "gtceu.jei.bedrock_fluid.heavy_oil_deposit": "重油矿藏", + "gtceu.jei.bedrock_fluid.lava_deposit": "熔岩矿藏", + "gtceu.jei.bedrock_fluid.light_oil_deposit": "轻油矿藏", + "gtceu.jei.bedrock_fluid.natural_gas_deposit": "天然气矿藏", + "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit": "下界天然气矿藏", + "gtceu.jei.bedrock_fluid.oil_deposit": "石油矿藏", + "gtceu.jei.bedrock_fluid.raw_oil_deposit": "原油矿藏", + "gtceu.jei.bedrock_fluid.salt_water_deposit": "盐水矿藏", + "gtceu.jei.bedrock_fluid_diagram": "基岩流体生成信息", + "gtceu.jei.bedrock_ore_diagram": "基岩矿脉生成信息", + "gtceu.jei.fluid.dep_amount_hover": "消耗后消耗的量", + "gtceu.jei.fluid.dep_chance_hover": "开采流体矿脉时消耗的概率", + "gtceu.jei.fluid.dep_yield_hover": "流体矿脉殆尽后能开采的最大流体量", + "gtceu.jei.fluid.depleted_rate": "殆尽后产量:%d", + "gtceu.jei.fluid.depletion_amount": "消耗量:%d", + "gtceu.jei.fluid.depletion_chance": "消耗概率:%d%%", + "gtceu.jei.fluid.dimension": "维度:", + "gtceu.jei.fluid.max_hover": "流体矿脉所能具有的的最大产量", + "gtceu.jei.fluid.max_yield": "最大产量:%d", + "gtceu.jei.fluid.min_hover": "流体矿脉所能具有的的最小产量", + "gtceu.jei.fluid.min_yield": "最小产量:%d", + "gtceu.jei.fluid.vein_weight": "矿脉权重:%d", + "gtceu.jei.fluid.weight_hover": "流体矿脉的生成权重。鼠标悬于图标可查看该流体在特定生物群系中特殊的生成权重", + "gtceu.jei.materials.average_mass": "平均质量:%d", + "gtceu.jei.materials.average_neutrons": "平均中子数:%d", + "gtceu.jei.materials.average_protons": "平均质子数:%d", + "gtceu.jei.multiblock_info": "多方块结构信息", + "gtceu.jei.ore.between.0": "中层矿石", + "gtceu.jei.ore.between.1": "和其他矿石一起生成在矿脉的中间%d层", + "gtceu.jei.ore.biome_weighting": "§d%s的生成权重:§3%d", + "gtceu.jei.ore.biome_weighting_no_spawn": "§d%s的生成权重:§c无法生成", + "gtceu.jei.ore.biome_weighting_title": "§d特定生物群系中的例外权重:", + "gtceu.jei.ore.ore_weight": "矿脉内生成权重:%d%%", + "gtceu.jei.ore.primary.0": "顶层矿石", + "gtceu.jei.ore.primary.1": "在矿脉的顶部%d层生成", + "gtceu.jei.ore.secondary.0": "底层矿石", + "gtceu.jei.ore.secondary.1": "在矿脉的底部%d层生成", + "gtceu.jei.ore.sporadic.0": "散布矿石", + "gtceu.jei.ore.sporadic.1": "生成在矿脉的任何地方", + "gtceu.jei.ore.surface_rock.0": "这种地表岩石标志着矿脉的生成位置。", + "gtceu.jei.ore.surface_rock.1": "挖掘掉落3小撮粉受时运加成", + "gtceu.jei.ore_processing_diagram": "矿物处理流程图", + "gtceu.jei.ore_vein.apatite_vein": "磷灰石矿脉", + "gtceu.jei.ore_vein.banded_iron_vein": "带状铁矿脉", + "gtceu.jei.ore_vein.bauxite_vein_end": "末地铝土矿脉", + "gtceu.jei.ore_vein.beryllium_vein": "铍矿脉", + "gtceu.jei.ore_vein.cassiterite_vein": "锡石矿脉", + "gtceu.jei.ore_vein.certus_quartz": "赛特斯石英", + "gtceu.jei.ore_vein.coal_vein": "煤炭矿脉", + "gtceu.jei.ore_vein.copper_tin_vein": "铜锡矿脉", + "gtceu.jei.ore_vein.copper_vein": "铜矿脉", + "gtceu.jei.ore_vein.diamond_vein": "钻石矿脉", + "gtceu.jei.ore_vein.galena_vein": "方铅矿脉", + "gtceu.jei.ore_vein.garnet_tin_vein": "锡石榴石矿脉", + "gtceu.jei.ore_vein.garnet_vein": "石榴石矿脉", + "gtceu.jei.ore_vein.iron_vein": "铁矿脉", + "gtceu.jei.ore_vein.lapis_vein": "青金石矿脉", + "gtceu.jei.ore_vein.lubricant_vein": "皂滑矿脉", + "gtceu.jei.ore_vein.magnetite_vein_end": "末地磁铁矿脉", + "gtceu.jei.ore_vein.magnetite_vein_ow": "主世界磁铁矿脉", + "gtceu.jei.ore_vein.manganese_vein": "锰矿脉", + "gtceu.jei.ore_vein.manganese_vein_ow": "主世界锰矿脉", + "gtceu.jei.ore_vein.mica_vein": "云母矿脉", + "gtceu.jei.ore_vein.mineral_sand_vein": "矿砂矿脉", + "gtceu.jei.ore_vein.molybdenum_vein": "钼矿脉", + "gtceu.jei.ore_vein.monazite_vein": "独居石矿脉", + "gtceu.jei.ore_vein.naquadah_vein": "硅岩矿脉", + "gtceu.jei.ore_vein.nether_quartz_vein": "下界石英矿脉", + "gtceu.jei.ore_vein.nickel_vein": "镍矿脉", + "gtceu.jei.ore_vein.oilsands_vein": "油砂矿脉", + "gtceu.jei.ore_vein.olivine_vein": "橄榄石矿脉", + "gtceu.jei.ore_vein.pitchblende_vein_end": "末地沥青铀矿脉", + "gtceu.jei.ore_vein.redstone_vein": "红石矿脉", + "gtceu.jei.ore_vein.redstone_vein_ow": "主世界红石矿脉", + "gtceu.jei.ore_vein.saltpeter_vein": "硝石矿脉", + "gtceu.jei.ore_vein.salts_vein": "盐矿脉", + "gtceu.jei.ore_vein.sapphire_vein": "蓝宝石矿脉", + "gtceu.jei.ore_vein.scheelite_vein": "白钨矿脉", + "gtceu.jei.ore_vein.sheldonite_vein": "谢尔顿矿脉", + "gtceu.jei.ore_vein.sulfur_vein": "硫矿脉", + "gtceu.jei.ore_vein.tetrahedrite_vein": "黝铜矿脉", + "gtceu.jei.ore_vein.topaz_vein": "黄玉矿脉", + "gtceu.jei.ore_vein_diagram": "矿脉生成信息", + "gtceu.jei.ore_vein_diagram.chance": "§e概率:%s§r", + "gtceu.jei.ore_vein_diagram.dimensions": "维度:", + "gtceu.jei.ore_vein_diagram.spawn_range": "生成范围:", + "gtceu.jei.ore_vein_diagram.weight": "权重:%s", + "gtceu.jei.programmed_circuit": "编程电路页", + "gtceu.journeymap.options.layers": "勘探层", + "gtceu.journeymap.options.layers.bedrock_fluids": "显示基岩流体矿脉", + "gtceu.journeymap.options.layers.hide_depleted": "隐藏枯竭的矿脉", + "gtceu.journeymap.options.layers.ore_veins": "显示矿脉", + "gtceu.key.armor_charging": "启用/禁用盔甲向物品栏充能", + "gtceu.key.armor_hover": "切换盔甲悬浮模式", + "gtceu.key.armor_mode_switch": "切换盔甲模式", + "gtceu.key.enable_boots": "启用跳跃提升", + "gtceu.key.enable_jetpack": "启用喷气背包", + "gtceu.key.tool_aoe_change": "切换工具范围模式", + "gtceu.large_boiler": "大型锅炉", + "gtceu.large_chemical_reactor": "大型化学反应釜", + "gtceu.laser_engraver": "激光蚀刻机", + "gtceu.lathe": "车床", + "gtceu.macerator": "研磨机", + "gtceu.machine.active_transformer.tooltip.0": "§7变形金刚:伪装的激光", + "gtceu.machine.active_transformer.tooltip.1": "§7可以将任意数量的能量§f输入§7整合为任意数量的能量§f输出§7。", + "gtceu.machine.active_transformer.tooltip.2": "§7当你使用§d激光§7进行能量传输时,拥有惊人的传输距离。", + "gtceu.machine.active_transformer.tooltip.3": " ", + "gtceu.machine.advanced_processing_array.tooltip": "这个世界需要更多并行", + "gtceu.machine.assembly_line.tooltip": "真不是什么多方块组装机!", + "gtceu.machine.available_recipe_map_1.tooltip": "可用配方类型:%s", + "gtceu.machine.available_recipe_map_2.tooltip": "可用配方类型:%s,%s", + "gtceu.machine.available_recipe_map_3.tooltip": "可用配方类型:%s,%s,%s", + "gtceu.machine.available_recipe_map_4.tooltip": "可用配方类型:%s,%s,%s,%s", + "gtceu.machine.basic.input_from_output_side.allow": "允许从输出面输入:", + "gtceu.machine.basic.input_from_output_side.disallow": "禁止从输出面输入:", + "gtceu.machine.bedrock_ore_miner.depletion": "§b损耗率:§f%s%%", + "gtceu.machine.bedrock_ore_miner.description": "§7钻掘基岩之下的叠叠矿石。", + "gtceu.machine.bedrock_ore_miner.production": "§e产量乘数:§f%dx,超频后%fx", + "gtceu.machine.block_breaker.speed_bonus": "§e速度奖励:§f%d%%", + "gtceu.machine.block_breaker.tooltip": "§7挖掘正面的方块并收集掉落物", + "gtceu.machine.boiler.info.cooling.down": "§9冷却中§r%s", + "gtceu.machine.boiler.info.heating.up": "§c加热中§r%s", + "gtceu.machine.boiler.info.producing.steam": " §a(沸腾)", + "gtceu.machine.buffer.tooltip": "存储物品和流体的小小缓冲器", + "gtceu.machine.canner.jei_description": "填入或倒空流体容器,例如桶和流体单元", + "gtceu.machine.central_monitor.tooltip": "但它能运行《毁灭战士》吗?", + "gtceu.machine.charcoal_pile.tooltip": "不烤面包烤燃料的地下面包房", + "gtceu.machine.charcoal_pile.tooltip.0": "§c点火后§7将原木烧制成§a木炭§7。", + "gtceu.machine.charcoal_pile.tooltip.1": "使用可点火的物品右击即可启动。", + "gtceu.machine.charcoal_pile.tooltip.2": "热解发生在下方至多§b9x4x9§7的空间内。", + "gtceu.machine.charcoal_pile.tooltip.3": "原木不可暴露在§e空气§7中!", + "gtceu.machine.cleanroom.tooltip": "将那些讨厌的灰尘拒之门外", + "gtceu.machine.cleanroom.tooltip.0": "将机器放在内部运行超净间配方。", + "gtceu.machine.cleanroom.tooltip.1": "清理污染时耗能为§f30EU/t§7,洁净状态耗能为§f4EU/t§7。", + "gtceu.machine.cleanroom.tooltip.2": "超频增加每个周期的清洁度。", + "gtceu.machine.cleanroom.tooltip.3": "§b大小:§f5x5x5到15x15x15", + "gtceu.machine.cleanroom.tooltip.4": "天花板需要§f过滤器机械方块§7,不包含天花板的边缘。", + "gtceu.machine.cleanroom.tooltip.5": "接受最多§f四扇门§7!门处于打开状态时不会影响洁净度。", + "gtceu.machine.cleanroom.tooltip.6": "发电机、消声仓、采矿机和原始机器对于超净间来说太脏了!", + "gtceu.machine.cleanroom.tooltip.7": "通过墙壁上的§f机器外壳§7或§f二极管§7向内部输入能量。", + "gtceu.machine.cleanroom.tooltip.ae2.channels": "通过墙壁上的§f机器外壳§7发送最多§f8个AE2频道§7。", + "gtceu.machine.cleanroom.tooltip.ae2.no_channels": "通过墙壁上的§f机器外壳§7连通§aAE2网络§7。", + "gtceu.machine.cleanroom.tooltip.hold_ctrl": "按住CTRL以显示完整的结构信息", + "gtceu.machine.coke_oven.tooltip": "为炼钢和发电提供更优质的燃料", + "gtceu.machine.coke_oven_hatch.tooltip": "§7允许自动化焦炉的物品吞吐。", + "gtceu.machine.combustion_generator.tooltip": "§7需要液体燃料", + "gtceu.machine.computation_receiver_hatch.tooltip": "为多方块结构输入算力数据", + "gtceu.machine.computation_transmitter_hatch.tooltip": "从多方块结构输出算力数据", + "gtceu.machine.cracker.tooltip": "有它,石油才有用", + "gtceu.machine.cracker.tooltip.1": "使用§6白铜§7后的每个线圈等级可以减少§f10%%§7的能源消耗。", + "gtceu.machine.data_access_hatch.tooltip.0": "令多方块结构得以访问数据", + "gtceu.machine.data_access_hatch.tooltip.1": "添加了§a%s§7个数据容器(闪存等)插槽", + "gtceu.machine.data_bank.tooltip.0": "你的个人网络存储器", + "gtceu.machine.data_bank.tooltip.1": "大容量数据存储,使用光缆传输。", + "gtceu.machine.data_bank.tooltip.2": "数据库间可以相互连接。", + "gtceu.machine.data_bank.tooltip.3": "每个数据/光学仓耗能为§f%s EU/t§7。", + "gtceu.machine.data_bank.tooltip.4": "每个已连接的数据/光学仓耗能为§f%s EU/t§7。", + "gtceu.machine.data_receiver_hatch.tooltip": "为多方块结构输入研究数据", + "gtceu.machine.data_transmitter_hatch.tooltip": "从多方块结构输出研究数据", + "gtceu.machine.diode.message": "最大电流:%s", + "gtceu.machine.diode.tooltip_general": "将只允许能量向一个方向流动,并限制电流。", + "gtceu.machine.diode.tooltip_starts_at": "默认允许§f1A§r电流通行,使用软锤切换。", + "gtceu.machine.diode.tooltip_tool_usage": "用软锤右击以改变电流。", + "gtceu.machine.distillation_tower.tooltip": "流体精炼厂", + "gtceu.machine.drum.disable_output": "不排出液体", + "gtceu.machine.drum.enable_output": "将液体排到底面相邻的容器中", + "gtceu.machine.dual_hatch.export.tooltip": "为多方块结构输出物品和流体", + "gtceu.machine.dual_hatch.import.tooltip": "为多方块结构输入物品和流体", + "gtceu.machine.electric_blast_furnace.tooltip": "电力高炉有了,那电力烟熏炉呢?", + "gtceu.machine.electric_blast_furnace.tooltip.0": "每超过配方温度§f900K§7,耗能均将乘以§f95%%§7(不计超频)。", + "gtceu.machine.electric_blast_furnace.tooltip.1": "每超过配方温度§f1800K§7,将一次超频的效率变为§f100%%§7(无损超频)。", + "gtceu.machine.electric_blast_furnace.tooltip.2": "超过§fMV§7后的每一级电压,都会将温度提高§f100K§7。", + "gtceu.machine.endpoint.tooltip.0": "使用§f长距离管道§7方块连接管道接口以创建管路。", + "gtceu.machine.endpoint.tooltip.1": "管路必须有且仅有一个§f1输入§7接口和一个§f1输出§7接口。", + "gtceu.machine.endpoint.tooltip.2": "只有管道接口需要被§f区块加载§7。", + "gtceu.machine.endpoint.tooltip.min_length": "§b最低接口间距:§f%d格方块", + "gtceu.machine.energy_converter.description": "在EU和FE之间转换能量形式。", + "gtceu.machine.energy_converter.message_conversion_eu": "EU转为FE,输入:%dA %d EU,输出:%d FE", + "gtceu.machine.energy_converter.message_conversion_native": "FE转为EU,输入:%dFE,输出:%dA %d EU", + "gtceu.machine.energy_converter.tooltip_conversion_eu": "§aEU转换:§f%dA %d EU(%s§f)§7 -> %d FE", + "gtceu.machine.energy_converter.tooltip_conversion_native": "§cFE转换:§f%d FE -> %dA %d EU (%s§f)", + "gtceu.machine.energy_converter.tooltip_tool_usage": "默认§f转换为FE§r,使用软锤切换。", + "gtceu.machine.energy_hatch.input.tooltip": "为多方块结构输入能量", + "gtceu.machine.energy_hatch.input_hi_amp.tooltip": "为多方块结构输入更多电流", + "gtceu.machine.energy_hatch.output.tooltip": "为多方块结构输出能量", + "gtceu.machine.energy_hatch.output_hi_amp.tooltip": "为多方块结构输出更多电流", + "gtceu.machine.ev_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.ev_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.ev_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.ev_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.ev_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.ev_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.ev_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.ev_centrifuge.tooltip": "§7分子分离机", + "gtceu.machine.ev_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.ev_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.ev_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.ev_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.ev_cutter.tooltip": "§7切片,切块", + "gtceu.machine.ev_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.ev_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.ev_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.ev_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.ev_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.ev_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.ev_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.ev_fluid_drilling_rig.tooltip": "甚至可以抽空整个油田", + "gtceu.machine.ev_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.ev_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.ev_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.ev_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.ev_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.ev_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.ev_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.ev_macerator.tooltip": "§7粉碎矿石并获得副产物", + "gtceu.machine.ev_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.ev_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.ev_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.ev_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.ev_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.ev_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.ev_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.ev_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.ev_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.ev_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.ev_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.extreme_combustion_engine.tooltip": "极限化学能释放者", + "gtceu.machine.fisher.requirement": "需要以机器正下方为中心的%dx%d正方形水源。", + "gtceu.machine.fisher.speed": "每%d刻抓到一些东西", + "gtceu.machine.fisher.tooltip": "每次消耗一根线捕鱼", + "gtceu.machine.fluid_drilling_rig.depletion": "§b损耗率:§f%s%%", + "gtceu.machine.fluid_drilling_rig.description": "§7钻取基岩之下的漫漫流体。", + "gtceu.machine.fluid_drilling_rig.production": "§e产量乘数:§f%dx,超频后%fx", + "gtceu.machine.fluid_hatch.export.tooltip": "为多方块结构输出流体", + "gtceu.machine.fluid_hatch.import.tooltip": "为多方块结构输入流体", + "gtceu.machine.fluid_tank.fluid": "含有%sL%s", + "gtceu.machine.fluid_tank.max_multiblock": "多方块结构最大尺寸:%dx%dx%d", + "gtceu.machine.fusion_reactor.capacity": "§7储能上限:§e%sM EU", + "gtceu.machine.fusion_reactor.luv.tooltip": "原子级合金熔炼机", + "gtceu.machine.fusion_reactor.overclocking": "超频时消耗两倍能量,工作时间减半", + "gtceu.machine.fusion_reactor.uv.tooltip": "化 作 白 矮 星 砸 向 你", + "gtceu.machine.fusion_reactor.zpm.tooltip": "一 轮 红 日 落 大 地", + "gtceu.machine.gas_turbine.tooltip": "§7需要气体燃料", + "gtceu.machine.high_performance_computation_array.tooltip.0": "只是普通的超级计算机", + "gtceu.machine.high_performance_computation_array.tooltip.1": "用于生产§f算力§7(同时会产生热量)。", + "gtceu.machine.high_performance_computation_array.tooltip.2": "需要HPCA组件来生产§fCWU/t§7(计算工作单元)。", + "gtceu.machine.hp_steam_alloy_smelter.tooltip": "§7融合冶炼炉", + "gtceu.machine.hp_steam_compressor.tooltip": "§7压缩物品", + "gtceu.machine.hp_steam_extractor.tooltip": "§7提取你的第一块橡胶", + "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7锻造锤", + "gtceu.machine.hp_steam_furnace.tooltip": "§7利用蒸汽冶炼物品", + "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7比小型液体燃料锅炉更快", + "gtceu.machine.hp_steam_macerator.tooltip": "§7粉碎你的矿石", + "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7来自太阳的蒸汽能源", + "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7比小型固体燃料锅炉更快", + "gtceu.machine.hpca.active_cooler_component.tooltip": "不再免费,但效果更好", + "gtceu.machine.hpca.advanced_computation_component.damaged.name": "损坏的HPCA高级计算组件", + "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip": "只花了一只胳膊和一条腿", + "gtceu.machine.hpca.advanced_computation_component.tooltip": "计算大联盟", + "gtceu.machine.hpca.bridge_component.tooltip": "这就是高性能计算阵列中“阵列”一词的来源", + "gtceu.machine.hpca.component_general.max_eut": "§6最大能量:§f%d EU/t", + "gtceu.machine.hpca.component_general.upkeep_eut": "§e维持耗能:§f%d EU/t", + "gtceu.machine.hpca.component_type.bridge": "允许§fHPCA§7与§f网络交换机§7连接", + "gtceu.machine.hpca.component_type.computation_cooling": "§c最多需要:§f%d 冷却", + "gtceu.machine.hpca.component_type.computation_cwut": "§9算力:§f%d CWU/t", + "gtceu.machine.hpca.component_type.cooler_active": "§b冷却类型:§f主动", + "gtceu.machine.hpca.component_type.cooler_active_coolant": "§c最多需要:§f%d mB/t %s", + "gtceu.machine.hpca.component_type.cooler_cooling": "§a提供:§f%d 冷却", + "gtceu.machine.hpca.component_type.cooler_passive": "§b冷却类型:§f被动", + "gtceu.machine.hpca.component_type.damaged": "HPCA过热可能会损坏!", + "gtceu.machine.hpca.computation_component.damaged.name": "损坏的HPCA计算组件", + "gtceu.machine.hpca.computation_component.damaged.tooltip": "免费的可回收材料", + "gtceu.machine.hpca.computation_component.tooltip": "宝宝的第一次计算", + "gtceu.machine.hpca.empty_component.tooltip": "只是为了填充空间", + "gtceu.machine.hpca.heat_sink_component.tooltip": "免费冷却!有免费的吗?", + "gtceu.machine.hull.tooltip": "§7你需要§5绝§d对§4天§c马§e行§a空§b的§3想§9象§1能§5力§7来使用它", + "gtceu.machine.hv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.hv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.hv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.hv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.hv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.hv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.hv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.hv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.hv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.hv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.hv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.hv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.hv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.hv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.hv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.hv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.hv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.hv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.hv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.hv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.hv_fluid_drilling_rig.tooltip": "并不能用来液压破碎", + "gtceu.machine.hv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.hv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.hv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.hv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.hv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.hv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.hv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.hv_macerator.tooltip": "§7粉碎矿石并获得副产物", + "gtceu.machine.hv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.hv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.hv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.hv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.hv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.hv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.hv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.hv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.hv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.hv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.hv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.implosion_compressor.tooltip": "唯一一台你想要爆一爆的机器", + "gtceu.machine.item_bus.export.tooltip": "为多方块结构输出物品", + "gtceu.machine.item_bus.import.tooltip": "为多方块结构输入物品", + "gtceu.machine.item_collector.gui.collect_range": "作用区域:%sx%s格", + "gtceu.machine.item_collector.tooltip": "吸取它周围的掉落物", + "gtceu.machine.iv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.iv_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.iv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.iv_autoclave.tooltip": "§7高压锅", + "gtceu.machine.iv_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.iv_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.iv_canner.tooltip": "§7罐作机", + "gtceu.machine.iv_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.iv_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.iv_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.iv_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.iv_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.iv_cutter.tooltip": "§7物质切削器", + "gtceu.machine.iv_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.iv_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.iv_electrolyzer.tooltip": "§7分子崩解机 E-4906", + "gtceu.machine.iv_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.iv_extractor.tooltip": "§7真空提取机", + "gtceu.machine.iv_extruder.tooltip": "§7材料压出器", + "gtceu.machine.iv_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.iv_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.iv_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.iv_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.iv_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.iv_gas_collector.tooltip": "§7依照维度从大气层中收集种类各异的气体", + "gtceu.machine.iv_laser_engraver.tooltip": "§7功率高达两百零四万瓦", + "gtceu.machine.iv_lathe.tooltip": "§7全自动旋转车削机 L-5906", + "gtceu.machine.iv_macerator.tooltip": "§7全自动破壁机 9001", + "gtceu.machine.iv_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.iv_mixer.tooltip": "§7物质组织器", + "gtceu.machine.iv_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-360", + "gtceu.machine.iv_packer.tooltip": "§7装箱者", + "gtceu.machine.iv_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.iv_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.iv_rock_crusher.tooltip": "§7岩浆冷却固化器 R-8200", + "gtceu.machine.iv_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.iv_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.iv_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6350", + "gtceu.machine.iv_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.machine.large_boiler.bronze.tooltip": "再多来点蒸汽!", + "gtceu.machine.large_boiler.steel.tooltip": "木炭吞噬者", + "gtceu.machine.large_boiler.titanium.tooltip": "我超级魔法燃料呢?", + "gtceu.machine.large_boiler.tungstensteel.tooltip": "你手上有几座煤矿也不够它吃的吧?", + "gtceu.machine.large_chemical_reactor.tooltip": "黑盒反应器", + "gtceu.machine.large_combustion_engine.tooltip": "燃料点火室", + "gtceu.machine.large_combustion_engine.tooltip.boost_extreme": "提供§f80 mB/s§7的液态氧,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_regular": "提供§f20 mB/s§7的氧气,并消耗§f双倍§7燃料以产生高达§f%s§7EU/t的功率。", + "gtceu.machine.large_miner.ev.tooltip": "替你挖矿", + "gtceu.machine.large_miner.iv.tooltip": "挖掉整个生物群系", + "gtceu.machine.large_miner.luv.tooltip": "掀翻整片大陆", + "gtceu.machine.large_turbine.gas.tooltip": "并不是喷气发动机", + "gtceu.machine.large_turbine.plasma.tooltip": "等离子能量虹吸器", + "gtceu.machine.large_turbine.steam.tooltip": "别把头伸进去", + "gtceu.machine.laser_hatch.both.tooltip": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.laser_hatch.source.tooltip": "§7远距离发射能量", + "gtceu.machine.laser_hatch.target.tooltip": "§7远距离接收能量", + "gtceu.machine.laser_source_hatch.tooltip.0": "远距离发射能量", + "gtceu.machine.laser_source_hatch.tooltip.1": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.laser_target_hatch.tooltip.0": "远距离接收能量", + "gtceu.machine.laser_target_hatch.tooltip.1": "§c激光传导线缆必须直线摆放!§7", + "gtceu.machine.locked_safe.malfunctioning": "§c故障中!", + "gtceu.machine.locked_safe.requirements": "§7需要更换以下部件:", + "gtceu.machine.lp_steam_alloy_smelter.tooltip": "§7融合冶炼炉", + "gtceu.machine.lp_steam_compressor.tooltip": "§7压缩物品", + "gtceu.machine.lp_steam_extractor.tooltip": "§7提取你的第一块橡胶", + "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7锻造锤", + "gtceu.machine.lp_steam_furnace.tooltip": "§7利用蒸汽冶炼物品", + "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7消耗液体的锅炉", + "gtceu.machine.lp_steam_macerator.tooltip": "§7粉碎你的矿石", + "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7来自太阳的蒸汽能源", + "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7获取蒸汽能源的早期手段", + "gtceu.machine.luv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.luv_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.luv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.luv_autoclave.tooltip": "§7高压锅", + "gtceu.machine.luv_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.luv_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.luv_canner.tooltip": "§7罐作机", + "gtceu.machine.luv_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.luv_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.luv_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.luv_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.luv_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.luv_cutter.tooltip": "§7物质切削器", + "gtceu.machine.luv_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.luv_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.luv_electrolyzer.tooltip": "§7分子崩解机 E-4907", + "gtceu.machine.luv_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.luv_extractor.tooltip": "§7真空提取机", + "gtceu.machine.luv_extruder.tooltip": "§7材料压出器", + "gtceu.machine.luv_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.luv_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.luv_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.luv_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.luv_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.luv_gas_collector.tooltip": "§7依照维度从大气层中收集种类各异的气体", + "gtceu.machine.luv_laser_engraver.tooltip": "§7功率高达八百一十六万瓦", + "gtceu.machine.luv_lathe.tooltip": "§7全自动旋转车削机 L-5907", + "gtceu.machine.luv_macerator.tooltip": "§7全自动破壁机 9002", + "gtceu.machine.luv_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.luv_mixer.tooltip": "§7物质组织器", + "gtceu.machine.luv_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-361", + "gtceu.machine.luv_packer.tooltip": "§7装箱者", + "gtceu.machine.luv_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.luv_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.luv_rock_crusher.tooltip": "§7岩浆冷却固化器 R-9200", + "gtceu.machine.luv_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.luv_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.luv_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6351", + "gtceu.machine.luv_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.machine.lv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.lv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.lv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.lv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.lv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.lv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.lv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.lv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.lv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.lv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.lv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.lv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.lv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.lv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.lv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.lv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.lv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.lv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.lv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.lv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.lv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.lv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.lv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.lv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.lv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.lv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.lv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.lv_macerator.tooltip": "§7粉碎矿石,但没有副产物", + "gtceu.machine.lv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.lv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.lv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.lv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.lv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.lv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.lv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.lv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.lv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.lv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.lv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.machine_hatch.locked": "机器接口已锁定", + "gtceu.machine.machine_hatch.processing_array": "当在§e处理阵列§7中时,仅可搭载适用于§e处理阵列§7的机器", + "gtceu.machine.machine_hatch.tooltip": "仅可容纳有效物品的特型访问总线", + "gtceu.machine.maintenance_hatch.tooltip": "用于维护多方块结构", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0": "可以自动维护多方块结构,附带清洁功能!", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1": "清洁方式:", + "gtceu.machine.maintenance_hatch_configurable.tooltip.0": "更精细的维护多方块结构", + "gtceu.machine.maintenance_hatch_configurable.tooltip.1": "起手无需维护!", + "gtceu.machine.maintenance_hatch_full_auto.tooltip": "可以自动维护多方块结构", + "gtceu.machine.maintenance_hatch_tape_slot.tooltip": "放入胶带以防止出现故障", + "gtceu.machine.maintenance_hatch_tool_slot.tooltip": "所需工具处于物品栏时空手点击该槽位来维护", + "gtceu.machine.me.copy_paste.tooltip": "手持闪存潜行右键点击以复制设置,右键点击以应用", + "gtceu.machine.me.export.tooltip": "在连接到ME网络之前,它具有无限容量。", + "gtceu.machine.me.fluid_export.tooltip": "将流体直接存储到ME网络中。", + "gtceu.machine.me.fluid_import.data_stick.name": "§oME输入仓配置数据", + "gtceu.machine.me.fluid_import.tooltip": "自动从ME网络获取流体。", + "gtceu.machine.me.import_copy_settings": "已将设置保存到闪存", + "gtceu.machine.me.import_paste_settings": "已从闪存应用设置", + "gtceu.machine.me.item_export.tooltip": "将物品直接存储到ME网络中。", + "gtceu.machine.me.item_import.data_stick.name": "§oME输入总线配置数据", + "gtceu.machine.me.item_import.tooltip": "自动从ME网络获取物品。", + "gtceu.machine.me.stocking_auto_pull_disabled": "ME自动拉取已禁用", + "gtceu.machine.me.stocking_auto_pull_enabled": "ME自动拉取已启用", + "gtceu.machine.me.stocking_fluid.tooltip.0": "直接从ME网络抽取流体", + "gtceu.machine.me.stocking_fluid.tooltip.1": "ME自动拉取模式将自动标记ME网络中的前16种流体,每5秒更新一次。", + "gtceu.machine.me.stocking_item.tooltip.0": "直接从ME网络抽取物品", + "gtceu.machine.me.stocking_item.tooltip.1": "ME自动拉取模式将自动标记ME网络中的前16种物品,每5秒更新一次。", + "gtceu.machine.me_import_fluid_hatch.configs.tooltip": "可标记16种流体", + "gtceu.machine.me_import_item_hatch.configs.tooltip": "可标记16种物品", + "gtceu.machine.miner.chunkradius": "区块半径:%d", + "gtceu.machine.miner.fluid_usage": "消耗§f%d mB/t§7的§f%s§7,每次超频都会使消耗量加倍。", + "gtceu.machine.miner.minex": "mX:%d", + "gtceu.machine.miner.miney": "mY:%d", + "gtceu.machine.miner.minez": "mZ:%d", + "gtceu.machine.miner.multi.description": "一种占地面积大、产矿量大的多方块采矿机。", + "gtceu.machine.miner.multi.modes": "具有精准采集和区块对齐模式。", + "gtceu.machine.miner.multi.production": "它能产出§f三倍§7于§f研磨机§7的粉碎矿石。", + "gtceu.machine.miner.per_block": "§7每个方块需要§f%d§7秒。", + "gtceu.machine.miner.radius": "半径:%d", + "gtceu.machine.miner.startx": "sX:%d", + "gtceu.machine.miner.starty": "sY:%d", + "gtceu.machine.miner.startz": "sZ:%d", + "gtceu.machine.miner.tooltip": "§7只挖掘机器下方的矿石!工作范围默认为§f%sx%s§7。", + "gtceu.machine.muffle.off": "静音:已禁用", + "gtceu.machine.muffle.on": "静音:已启用", + "gtceu.machine.muffler_hatch.tooltip.0": "从机器中回收废料", + "gtceu.machine.muffler_hatch.tooltip.1": "§l切 勿 阻 隔 输 出 口!", + "gtceu.machine.multi_furnace.tooltip": "就像家里的烤箱一样", + "gtceu.machine.multiblock.tank.tooltip": "通过控制器或储罐阀门进行吞吐。", + "gtceu.machine.mv_alloy_smelter.tooltip": "§7高科技融合冶炼炉", + "gtceu.machine.mv_arc_furnace.tooltip": "§7谁需要高炉?", + "gtceu.machine.mv_assembler.tooltip": "§7复仇者,集结!", + "gtceu.machine.mv_autoclave.tooltip": "§7使粉末结晶", + "gtceu.machine.mv_bender.tooltip": "§7吁,他不行!我们要的是BENDER!!!", + "gtceu.machine.mv_brewery.tooltip": "§7紧凑高效的药剂酿造", + "gtceu.machine.mv_canner.tooltip": "§7为容器填入或从中倒出物品及流体", + "gtceu.machine.mv_centrifuge.tooltip": "§7分离分子", + "gtceu.machine.mv_chemical_bath.tooltip": "§7用化学品浸渍以分离矿物", + "gtceu.machine.mv_chemical_reactor.tooltip": "§7让化学品相互反应", + "gtceu.machine.mv_circuit_assembler.tooltip": "§7一拿一放,东拣西装", + "gtceu.machine.mv_compressor.tooltip": "§7全自动压缩机 C77", + "gtceu.machine.mv_cutter.tooltip": "§7切片,切块", + "gtceu.machine.mv_distillery.tooltip": "§7提取流体精华", + "gtceu.machine.mv_electric_furnace.tooltip": "§7别把它当成 Commodore 64 了", + "gtceu.machine.mv_electrolyzer.tooltip": "§7电离分子", + "gtceu.machine.mv_electromagnetic_separator.tooltip": "§7分离出磁性矿物", + "gtceu.machine.mv_extractor.tooltip": "§7毁灭级榨汁机 - D123", + "gtceu.machine.mv_extruder.tooltip": "§7通用型金属加工器", + "gtceu.machine.mv_fermenter.tooltip": "§7发酵流体", + "gtceu.machine.mv_fluid_drilling_rig.tooltip": "我猜你做这个是为了采油", + "gtceu.machine.mv_fluid_heater.tooltip": "§7加热你的流体", + "gtceu.machine.mv_fluid_solidifier.tooltip": "§7冷却液体形成固体", + "gtceu.machine.mv_forge_hammer.tooltip": "§7停,抡锤时间到!", + "gtceu.machine.mv_forming_press.tooltip": "§7图像拓印者", + "gtceu.machine.mv_gas_collector.tooltip": "§7依照维度从空气中收集种类各异的气体", + "gtceu.machine.mv_laser_engraver.tooltip": "§7请勿直视激光", + "gtceu.machine.mv_lathe.tooltip": "§7以更高的效率生产杆", + "gtceu.machine.mv_macerator.tooltip": "§7粉碎矿石,但没有副产物", + "gtceu.machine.mv_mass_fabricator.tooltip": "§7UU物质 = “质量” * “发生”的平方", + "gtceu.machine.mv_mixer.tooltip": "§7它能被搅碎吗?", + "gtceu.machine.mv_ore_washer.tooltip": "§7清洗矿石以获得更多副产物", + "gtceu.machine.mv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.mv_polarizer.tooltip": "§7将你的磁体极化", + "gtceu.machine.mv_replicator.tooltip": "§7生产最纯净的元素", + "gtceu.machine.mv_rock_crusher.tooltip": "§7在水平相邻处放置熔岩和水", + "gtceu.machine.mv_scanner.tooltip": "§7扫描材料及其它物质", + "gtceu.machine.mv_sifter.tooltip": "§7保持冷静,继续筛选", + "gtceu.machine.mv_thermal_centrifuge.tooltip": "§7更精确地分离矿石", + "gtceu.machine.mv_wiremill.tooltip": "§7更高效地生产导线", + "gtceu.machine.network_switch.tooltip.0": "以太网集线器", + "gtceu.machine.network_switch.tooltip.1": "用于路由与分发§f算力§7。", + "gtceu.machine.network_switch.tooltip.2": "可以将任意数量的算力§f输入§7整合为为任意数量的算力§f输出§7。", + "gtceu.machine.network_switch.tooltip.3": "每个算力数据仓使用§f%s EU/t§7。", + "gtceu.machine.object_holder.tooltip": "研究站的先进支撑机构", + "gtceu.machine.opv_gas_collector.tooltip": "§7依照维度从宇宙中收集种类各异的气体", + "gtceu.machine.opv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.parallel_hatch.display": "调整多方块的最多并行处理数。", + "gtceu.machine.parallel_hatch_mk5.tooltip": "允许同时处理至多4个配方。", + "gtceu.machine.parallel_hatch_mk6.tooltip": "允许同时处理至多16个配方。", + "gtceu.machine.parallel_hatch_mk7.tooltip": "允许同时处理至多64个配方。", + "gtceu.machine.parallel_hatch_mk8.tooltip": "允许同时处理至多256个配方。", + "gtceu.machine.parallel_limit": "可同时处理至多§b%d§r§7个配方。", + "gtceu.machine.passthrough_hatch_fluid.tooltip": "将流体从一侧输送到另一侧", + "gtceu.machine.passthrough_hatch_item.tooltip": "将物品从一侧发送到另一侧", + "gtceu.machine.perfect_oc": "超频不会损失能效。", + "gtceu.machine.power_substation.tooltip.0": "集中电网的核心", + "gtceu.machine.power_substation.tooltip.1": "所有§f电容§r不需要保持同一电压等级。", + "gtceu.machine.power_substation.tooltip.2": "最多容许§f%d层电容§r。", + "gtceu.machine.power_substation.tooltip.3": "每§f24小时§7损失相当于总容量的§f1%%§r的能量。", + "gtceu.machine.power_substation.tooltip.4": "每个电容的损失上限为§f%d kEU/t§r。", + "gtceu.machine.power_substation.tooltip.5": "可以使用", + "gtceu.machine.power_substation.tooltip.6": "激光仓§r。", + "gtceu.machine.primitive_blast_furnace.bronze.tooltip": "为你带来第一块钢", + "gtceu.machine.primitive_water_pump.tooltip": "末影接口蓄水库-家用款", + "gtceu.machine.processing_array.tooltip": "当几台机器无法解决问题时", + "gtceu.machine.pump.tooltip": "§7抽干大海的最佳手段!", + "gtceu.machine.pump.tooltip_buckets": "每桶§f%d§7tick", + "gtceu.machine.pump_hatch.tooltip": "原始水泵专用流体输出口", + "gtceu.machine.pyrolyse_oven.tooltip": "电力焦炉", + "gtceu.machine.pyrolyse_oven.tooltip.1": "§a白铜§7线圈会使效率降低§f25%%§7,§a坎塔尔合金§7后的每个线圈都会增加§f50%%§7的速度。", + "gtceu.machine.quantum_chest.items_stored": "物品数量:", + "gtceu.machine.quantum_chest.tooltip": "§7比储物抽屉好", + "gtceu.machine.quantum_tank.tooltip": "§7小小身体,大大肚量", + "gtceu.machine.research_station.researching": "研究中。", + "gtceu.machine.research_station.tooltip.0": "不仅仅是一个多方块扫描仪", + "gtceu.machine.research_station.tooltip.1": "用于扫描§f数据球§7和§f数据模块§7。", + "gtceu.machine.research_station.tooltip.2": "需要§f算力§7来进行工作。", + "gtceu.machine.research_station.tooltip.3": "提供更多的算力可以使研究进展的更快。", + "gtceu.machine.rotor_holder.tooltip.0": "为多方块结构固定转子,", + "gtceu.machine.rotor_holder.tooltip.1": "使其不能飞走", + "gtceu.machine.steam.steam_hatch.tooltip": "§e接受流体:§f蒸汽", + "gtceu.machine.steam_boiler.heat_amount": "热容:%s %%", + "gtceu.machine.steam_bus.tooltip": "无法作用于非蒸汽驱动的多方块结构", + "gtceu.machine.steam_grinder.tooltip": "多方块研磨机,但是没有副产物", + "gtceu.machine.steam_miner.tooltip": "§7只挖掘机器下方的矿石!", + "gtceu.machine.steam_oven.tooltip": "不要与工业熔炉混淆", + "gtceu.machine.steam_turbine.tooltip": "§7将蒸汽转化为 EU", + "gtceu.machine.substation_hatch.input.tooltip": "为蓄能变电站输入能量", + "gtceu.machine.substation_hatch.output.tooltip": "为蓄能变电站输出能量", + "gtceu.machine.tank_valve.tooltip": "用于吞吐多方块储罐中的流体。正面向下时可自动输出。", + "gtceu.machine.transformer.description": "§7转换能量的电压等级", + "gtceu.machine.transformer.message_transform_down": "降压,输入:%s EU %dA,输出:%s EU %dA", + "gtceu.machine.transformer.message_transform_up": "升压,输入:%s EU %dA,输出:%s EU %dA", + "gtceu.machine.transformer.tooltip_tool_usage": "默认§f降压§r,使用螺丝刀切换。", + "gtceu.machine.transformer.tooltip_transform_down": "§a降压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", + "gtceu.machine.transformer.tooltip_transform_up": "§c升压:§f%dA %s EU(%s§f)-> %dA %s EU(%s§f)", + "gtceu.machine.uev_gas_collector.tooltip": "§7依照维度从太阳系中收集种类各异的气体", + "gtceu.machine.uev_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uhv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uhv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uiv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uiv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_alloy_smelter.tooltip": "§7金属混合调制装置", + "gtceu.machine.uv_arc_furnace.tooltip": "§7短路加热器", + "gtceu.machine.uv_assembler.tooltip": "§7装配构建者", + "gtceu.machine.uv_autoclave.tooltip": "§7重压单元", + "gtceu.machine.uv_bender.tooltip": "§7物质畸变者", + "gtceu.machine.uv_brewery.tooltip": "§7强劲酿制者", + "gtceu.machine.uv_canner.tooltip": "§7罐子致动器", + "gtceu.machine.uv_centrifuge.tooltip": "§7分子龙卷风", + "gtceu.machine.uv_chemical_bath.tooltip": "§7化学沉浸洗涤者", + "gtceu.machine.uv_chemical_reactor.tooltip": "§7反应催化器", + "gtceu.machine.uv_circuit_assembler.tooltip": "§7计算机工厂", + "gtceu.machine.uv_compressor.tooltip": "§7物质约束器", + "gtceu.machine.uv_cutter.tooltip": "§7对象分割者", + "gtceu.machine.uv_distillery.tooltip": "§7馏分分离器", + "gtceu.machine.uv_electric_furnace.tooltip": "§7原子激发器", + "gtceu.machine.uv_electrolyzer.tooltip": "§7原子离子化装置", + "gtceu.machine.uv_electromagnetic_separator.tooltip": "§7电磁场驱离装置", + "gtceu.machine.uv_extractor.tooltip": "§7液化吸取者", + "gtceu.machine.uv_extruder.tooltip": "§7形制驱动者", + "gtceu.machine.uv_fermenter.tooltip": "§7呼吸控制器", + "gtceu.machine.uv_fluid_heater.tooltip": "§7热量灌输器", + "gtceu.machine.uv_fluid_solidifier.tooltip": "§7流体硬化器", + "gtceu.machine.uv_forge_hammer.tooltip": "§7冲击调制器", + "gtceu.machine.uv_forming_press.tooltip": "§7表面移相器", + "gtceu.machine.uv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uv_laser_engraver.tooltip": "§7高精度光子加农炮", + "gtceu.machine.uv_lathe.tooltip": "§7飞旋磨轮", + "gtceu.machine.uv_macerator.tooltip": "§7形态毁灭者", + "gtceu.machine.uv_mass_fabricator.tooltip": "§7存在之源", + "gtceu.machine.uv_mixer.tooltip": "§7材料均质机", + "gtceu.machine.uv_ore_washer.tooltip": "§7微型洗车房", + "gtceu.machine.uv_packer.tooltip": "§7亚马逊仓库", + "gtceu.machine.uv_polarizer.tooltip": "§7磁场重置设备", + "gtceu.machine.uv_replicator.tooltip": "§7元素创制者", + "gtceu.machine.uv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_scanner.tooltip": "§7电子显微镜", + "gtceu.machine.uv_sifter.tooltip": "§7脉冲过滤器", + "gtceu.machine.uv_thermal_centrifuge.tooltip": "§7腾焰旋风", + "gtceu.machine.uv_wiremill.tooltip": "§7导线易形者", + "gtceu.machine.uxv_gas_collector.tooltip": "§7根据维度从太阳系中收集气体", + "gtceu.machine.uxv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.vacuum_freezer.tooltip": "啊哈我的大冰箱!", + "gtceu.machine.workbench.storage_note.0": "(相邻的物品容器中", + "gtceu.machine.workbench.storage_note.1": "可参与合成的物品)", + "gtceu.machine.workbench.tab.container": "存储", + "gtceu.machine.workbench.tab.crafting": "合成", + "gtceu.machine.workbench.tab.item_list": "存储空间", + "gtceu.machine.workbench.tab.workbench": "合成", + "gtceu.machine.workbench.tooltip.0": "比林业的好", + "gtceu.machine.workbench.tooltip.1": "具有物品存储、工具存储、从相邻的存储容器中读取物品和保存配方功能。", + "gtceu.machine.world_accelerator.description": "以两种模式之一加速周围方块的更新刻:§f方块实体§r或§f随机刻§7。使用螺丝刀切换模式。", + "gtceu.machine.world_accelerator.mode_entity": "随机刻模式", + "gtceu.machine.world_accelerator.mode_tile": "方块实体模式", + "gtceu.machine.world_accelerator.working_area": "§b作用范围:", + "gtceu.machine.world_accelerator.working_area_random": " 随机刻模式:§f%dx%d", + "gtceu.machine.world_accelerator.working_area_tile": " 方块实体模式:§f相邻方块", + "gtceu.machine.zpm_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.zpm_arc_furnace.tooltip": "§7放电加热器", + "gtceu.machine.zpm_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.zpm_autoclave.tooltip": "§7高压锅", + "gtceu.machine.zpm_bender.tooltip": "§7形态扭曲器", + "gtceu.machine.zpm_brewery.tooltip": "§7酿酒好手", + "gtceu.machine.zpm_canner.tooltip": "§7罐作机", + "gtceu.machine.zpm_centrifuge.tooltip": "§7分子旋风", + "gtceu.machine.zpm_chemical_bath.tooltip": "§7化学品浸润器", + "gtceu.machine.zpm_chemical_reactor.tooltip": "§7化学表演艺术家", + "gtceu.machine.zpm_circuit_assembler.tooltip": "§7电子厂", + "gtceu.machine.zpm_compressor.tooltip": "§7奇点凝缩机", + "gtceu.machine.zpm_cutter.tooltip": "§7物质切削器", + "gtceu.machine.zpm_distillery.tooltip": "§7凝结物质分离器", + "gtceu.machine.zpm_electric_furnace.tooltip": "§7电子激发处理器", + "gtceu.machine.zpm_electrolyzer.tooltip": "§7分子崩解机 E-4908", + "gtceu.machine.zpm_electromagnetic_separator.tooltip": "§7电磁分类器", + "gtceu.machine.zpm_extractor.tooltip": "§7真空提取机", + "gtceu.machine.zpm_extruder.tooltip": "§7材料压出器", + "gtceu.machine.zpm_fermenter.tooltip": "§7发酵加速器", + "gtceu.machine.zpm_fluid_heater.tooltip": "§7热量灌注器", + "gtceu.machine.zpm_fluid_solidifier.tooltip": "§7并不是制冰机", + "gtceu.machine.zpm_forge_hammer.tooltip": "§7锻板机", + "gtceu.machine.zpm_forming_press.tooltip": "§7对象层化机", + "gtceu.machine.zpm_gas_collector.tooltip": "§7收集不同维度的大气中种类各异的气体", + "gtceu.machine.zpm_laser_engraver.tooltip": "§7功率高达三千两百六十四万瓦", + "gtceu.machine.zpm_lathe.tooltip": "§7全自动旋转车削机 L-5908", + "gtceu.machine.zpm_macerator.tooltip": "§7全自动破壁机 9003", + "gtceu.machine.zpm_mass_fabricator.tooltip": "§7创世纪工厂", + "gtceu.machine.zpm_mixer.tooltip": "§7物质组织器", + "gtceu.machine.zpm_ore_washer.tooltip": "§7全新用途滚筒洗衣机 I-362", + "gtceu.machine.zpm_packer.tooltip": "§7装箱者", + "gtceu.machine.zpm_polarizer.tooltip": "§7磁性引入机", + "gtceu.machine.zpm_replicator.tooltip": "§7物质粘贴机", + "gtceu.machine.zpm_rock_crusher.tooltip": "§7岩浆冷却固化器 R-10200", + "gtceu.machine.zpm_scanner.tooltip": "§7异常探测仪", + "gtceu.machine.zpm_sifter.tooltip": "§7由群峦传说赞助提供", + "gtceu.machine.zpm_thermal_centrifuge.tooltip": "§7烈焰血汗工厂 T-6352", + "gtceu.machine.zpm_wiremill.tooltip": "§7锭材拉伸机", + "gtceu.maintenance.configurable_duration": "处理耗时:%fx", + "gtceu.maintenance.configurable_duration.changed_description": "配方处理速度现为正常速度(不计超频)的%f倍。", + "gtceu.maintenance.configurable_duration.modify": "修改耗时:", + "gtceu.maintenance.configurable_duration.unchanged_description": "配方以正常速度运行。更改配置以更新。", + "gtceu.maintenance.configurable_time": "故障概率:%fx", + "gtceu.maintenance.configurable_time.changed_description": "故障的发生概率现为正常值的%f倍。", + "gtceu.maintenance.configurable_time.unchanged_description": "故障的发生概率为正常值。更改配置以更新。", + "gtceu.medical_condition.antidote.description": "§a解毒剂 §7按住Shift以显示详情", + "gtceu.medical_condition.antidote.description.effect_removed": "疾病效果持续时间降低%s%%", + "gtceu.medical_condition.antidote.description.effect_removed.all": "消除所有疾病效果", + "gtceu.medical_condition.antidote.description_shift": "§a治愈以下疾病:", + "gtceu.medical_condition.arsenicosis": "§b砷中毒", + "gtceu.medical_condition.asbestosis": "§d石棉肺", + "gtceu.medical_condition.berylliosis": "§5铍中毒", + "gtceu.medical_condition.carbon_monoxide_poisoning": "§7一氧化碳污染", + "gtceu.medical_condition.carcinogen": "§e致癌", + "gtceu.medical_condition.chemical_burns": "§5化学烧伤", + "gtceu.medical_condition.description": "§c§l危险物质 §7按住Shift以显示详情", + "gtceu.medical_condition.description_shift": "§c§l危险物质:", + "gtceu.medical_condition.irritant": "§6刺激性", + "gtceu.medical_condition.methanol_poisoning": "§6甲醇中毒", + "gtceu.medical_condition.nausea": "§3恶心", + "gtceu.medical_condition.none": "§2无害", + "gtceu.medical_condition.poison": "§2中毒", + "gtceu.medical_condition.silicosis": "§1矽肺病", + "gtceu.medical_condition.weak_poison": "§a轻度中毒", + "gtceu.minimap.ore_vein.depleted": "已枯竭", + "gtceu.mixer": "搅拌机", + "gtceu.mode.both": "§d全部(流体和物品)§r", + "gtceu.mode.fluid": "§9流体§r", + "gtceu.mode.item": "§6物品§r", + "gtceu.muffler.recovery_tooltip": "§b回收概率:§f%d%%", + "gtceu.multiblock.active_transformer.average_in": "§b平均输入:§f%s EU/t", + "gtceu.multiblock.active_transformer.average_out": "§b平均输出:§f%s EU/t", + "gtceu.multiblock.active_transformer.danger_enabled": "§c§b危险:易爆", + "gtceu.multiblock.active_transformer.max_input": "§a最大输入:§f%s EU/t", + "gtceu.multiblock.active_transformer.max_output": "§c最大输出:§f%s EU/t", + "gtceu.multiblock.assembly_line.description": "装配线是由5到16“片”组成的大型多方块结构。理论上,它是一个大型组装机,用于生产高级元件。", + "gtceu.multiblock.blast_furnace.max_temperature": "热容:%s", + "gtceu.multiblock.central_monitor.height": "屏幕高度:%d", + "gtceu.multiblock.central_monitor.height_modify": "调整高度:%d", + "gtceu.multiblock.central_monitor.low_power": "供能不足", + "gtceu.multiblock.central_monitor.tooltip.0": "这台机器可以监控由数字接口覆盖板代理的机器。您可以方便地监视能源网络中代理的机器的流体、物品、能量和状态。", + "gtceu.multiblock.central_monitor.tooltip.1": "监控器屏幕的搭建尺寸为3x2到%dx%d (宽x高)。", + "gtceu.multiblock.central_monitor.tooltip.2": "默认高度为3,在结构形成之前,您可以在GUI中调整屏幕高度。", + "gtceu.multiblock.central_monitor.tooltip.3": "能源消耗:每块屏幕%d EU/s。", + "gtceu.multiblock.central_monitor.width": "屏幕宽度:%d", + "gtceu.multiblock.charcoal_pile.description.0": "将下方最大9x4x9区域内的原木烧制成脆木炭块。", + "gtceu.multiblock.charcoal_pile.description.1": "", + "gtceu.multiblock.charcoal_pile.description.2": "木炭堆底部必须由砖块构成,壁面和顶面则可选用泥土、沙子等任何土地类方块。堆内必须填满,不可存在空气。", + "gtceu.multiblock.charcoal_pile.description.3": "", + "gtceu.multiblock.charcoal_pile.description.4": "木炭堆的尺寸越大,所需的处理时间就越长,但效率更高。", + "gtceu.multiblock.cleanroom.clean_amount": "洁净度:§a%s%%", + "gtceu.multiblock.cleanroom.clean_state": "状态:§a洁净", + "gtceu.multiblock.cleanroom.dirty_state": "状态:§4污染", + "gtceu.multiblock.coke_oven.description": "焦炉是一种多方块结构,用于在早期生产焦煤和杂酚油,无需燃料即可工作,内部至多可容纳 32 桶杂酚油。其存储可通过焦炉仓进行访问。", + "gtceu.multiblock.computation.max": "最大算力:%s", + "gtceu.multiblock.computation.non_bridging": "发现非桥接连接", + "gtceu.multiblock.computation.non_bridging.detailed": "算力数据仓与一台无法桥接的机器连接", + "gtceu.multiblock.computation.not_enough_computation": "机器需要更多算力!", + "gtceu.multiblock.computation.usage": "使用:%s", + "gtceu.multiblock.cracker.description": "裂化机是一种用于将轻燃油和重燃油裂化为相应裂化物的多方块结构。", + "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", + "gtceu.multiblock.data_bank.description": "数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", + "gtceu.multiblock.data_bank.providing": "提供数据。", + "gtceu.multiblock.distillation_tower.description": "蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", + "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸馏%s", + "gtceu.multiblock.electric_blast_furnace.description": "电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", + "gtceu.multiblock.energy_consumption": "能量消耗:%s EU/t(%s)", + "gtceu.multiblock.exact_hatch_1.tooltip": "§f只允许有且仅有§6一个§f能源仓。", + "gtceu.multiblock.extreme_combustion_engine.description": "极限内燃引擎是一种产出§9IV§r能量的多方块结构,工作方式与内燃发电机类似。", + "gtceu.multiblock.fluid_rig.drilled_fluid": "流体:%s", + "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", + "gtceu.multiblock.fluid_rig.no_fluid_in_area": "区域内没有。", + "gtceu.multiblock.fluid_rig.vein_depleted": "矿脉已殆尽", + "gtceu.multiblock.fluid_rig.vein_depletion": "矿脉大小:%s", + "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", + "gtceu.multiblock.fusion_reactor.heat": "热量:%d", + "gtceu.multiblock.generation_eu": "输出功率:§a%s EU/t", + "gtceu.multiblock.hpca.computation": "提供:%s", + "gtceu.multiblock.hpca.description": "高性能计算阵列(HPCA)是个多方块结构,用于为更复杂的装配线研究数据提供计算工作单元(CWU/t)。该结构中有3×3的区域可以以任意方式填充HPCA组件,不同的组件提供不同数量的算力,冷却与能源成本,并且影响热量的产出与冷却液的消耗。当存在桥接组件时,HPCA可以连接入网络交换机,让不同来源的算力整合并输出到一个或多个目的地。", + "gtceu.multiblock.hpca.energy": "使用:%s / %s EU/t (%s)", + "gtceu.multiblock.hpca.error_damaged": "计算组件损坏!", + "gtceu.multiblock.hpca.error_temperature": "温度超过100℃,可能导致计算组件损坏!", + "gtceu.multiblock.hpca.hover_for_info": "悬停以显示细节", + "gtceu.multiblock.hpca.info_bridging_disabled": "桥接已关闭", + "gtceu.multiblock.hpca.info_bridging_enabled": "桥接已启动", + "gtceu.multiblock.hpca.info_coolant_name": "多氯联苯冷却液", + "gtceu.multiblock.hpca.info_max_computation": "最大算力:%s", + "gtceu.multiblock.hpca.info_max_coolant_required": "冷却液需求:%s mB/t", + "gtceu.multiblock.hpca.info_max_cooling_available": "冷却可用:%s", + "gtceu.multiblock.hpca.info_max_cooling_demand": "冷却需求:%s", + "gtceu.multiblock.hpca.temperature": "温度:%s", + "gtceu.multiblock.hpca.warning_low_cooling": "- 冷却不足", + "gtceu.multiblock.hpca.warning_multiple_bridges": "- 多个桥接组件(没有额外好处)", + "gtceu.multiblock.hpca.warning_no_computation": "- 没有计算组件", + "gtceu.multiblock.hpca.warning_structure_header": "结构警告:", + "gtceu.multiblock.hpca.warning_temperature": "温度超过50℃,超过100℃时可能导致计算组件损坏!", + "gtceu.multiblock.hpca.warning_temperature_active_cool": "充分利用主动冷却组件", + "gtceu.multiblock.idling": "§6待机。", + "gtceu.multiblock.implosion_compressor.description": "聚爆压缩机是一种多方块结构,能够借助炸药将宝石粉转化为相应的宝石。", + "gtceu.multiblock.invalid_structure": "结构无效。", + "gtceu.multiblock.invalid_structure.tooltip": "该方块是多方块结构的控制器,请查看该方块的JEI界面以获取搭建图示。", + "gtceu.multiblock.large_boiler.description": "大型锅炉是一种使用水和能量源产生蒸汽的多方块结构。这里说的“能量源”通常是指固体燃料和高密度流体。不同等级的锅炉仅在蒸汽产量上有所差别。", + "gtceu.multiblock.large_boiler.efficiency": "效率:%s", + "gtceu.multiblock.large_boiler.explosion_tooltip": "无水时提供燃料将爆炸", + "gtceu.multiblock.large_boiler.heat_time_tooltip": "§7需要§f%d秒§7预热", + "gtceu.multiblock.large_boiler.max_temperature": "最高温度:%dK,蒸汽产量:%dmB/t", + "gtceu.multiblock.large_boiler.rate_tooltip": "§7每块§1煤炭§7可以生产§f%dL§7的蒸汽", + "gtceu.multiblock.large_boiler.steam_output": "蒸汽输出:%s mB/t", + "gtceu.multiblock.large_boiler.temperature": "温度:%sK / %sK", + "gtceu.multiblock.large_boiler.throttle": "节流:%d", + "gtceu.multiblock.large_boiler.throttle.tooltip": "锅炉可以节流,以减少燃料消耗与蒸汽产出,并且不损失效率,不影响加热时间。", + "gtceu.multiblock.large_boiler.throttle_modify": "修改节流:", + "gtceu.multiblock.large_chemical_reactor.description": "大型化学反应釜能够以 100% 的能效进行化学反应。超频将使得处理速度与耗能提升 4 倍。该多方块结构需要在中心位置的聚四氟乙烯管道方块旁放置 1 个白铜线圈方块。", + "gtceu.multiblock.large_combustion_engine.boost_disallowed": "§b升级你的动力仓以激活氧气促燃", + "gtceu.multiblock.large_combustion_engine.description": "大型内燃引擎是一种产出§5EV§r能量的多方块结构,工作方式与内燃发电机类似。", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount": "液氧存量:%sL", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted": "§b液氧促燃中", + "gtceu.multiblock.large_combustion_engine.lubricant_amount": "润滑油存量:%sL", + "gtceu.multiblock.large_combustion_engine.obstructed": "引擎进气口受阻。", + "gtceu.multiblock.large_combustion_engine.oxygen_amount": "氧气存量:%sL", + "gtceu.multiblock.large_combustion_engine.oxygen_boosted": "§b氧气促燃中", + "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost": "提供液氧来促燃", + "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost": "提供氧气来促燃", + "gtceu.multiblock.large_miner.done": "完成!", + "gtceu.multiblock.large_miner.errorradius": "§c工作中不能调整半径!", + "gtceu.multiblock.large_miner.invfull": "存储空间已满!", + "gtceu.multiblock.large_miner.needsfluid": "需要钻井液", + "gtceu.multiblock.large_miner.needspower": "需要能量!", + "gtceu.multiblock.large_miner.radius": "半径:§a%d§r格", + "gtceu.multiblock.large_miner.steam": "需要蒸汽!", + "gtceu.multiblock.large_miner.vent": "排气口受阻!", + "gtceu.multiblock.large_miner.working": "工作中……", + "gtceu.multiblock.large_turbine.description": "大型涡轮是一种使用蒸汽、燃气或等离子体转动涡轮转子来发电的多方块结构。转子效率和转子转速影响能量的输出。", + "gtceu.multiblock.luv_fusion_reactor.description": "核聚变反应堆MK-I是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用LuV,ZPM或UV等级的能源仓。每个能源仓可增加10MEU的能量缓存,最大能量缓存为160MEU。", + "gtceu.multiblock.max_energy_per_tick": "最大功率:§a%s EU/t(%s§r)", + "gtceu.multiblock.max_energy_per_tick_amps": "最大功率:%s(%sA %s)", + "gtceu.multiblock.max_energy_per_tick_hover": "可用于运行配方或超频的最大EU/t", + "gtceu.multiblock.max_recipe_tier": "最大配方等级:%s", + "gtceu.multiblock.max_recipe_tier_hover": "可运行配方的最大等级", + "gtceu.multiblock.monitor_screen.tooltip.0": "用螺丝刀右击即可打开GUI。", + "gtceu.multiblock.monitor_screen.tooltip.1": "数字接口覆盖板的代理模式可托管机器的功能与界面(是的,你可以在屏幕上直接连接管道)。", + "gtceu.multiblock.monitor_screen.tooltip.2": "该屏幕也支持插件。", + "gtceu.multiblock.multi_furnace.description": "工业熔炉是一种用于一次性烧制大量物品的多方块结构。不同级别的线圈会提供速度增幅和能量效率增幅。每次运作的基础烧制数量为32,且可以使用高等级的线圈增加烧制数量。", + "gtceu.multiblock.multi_furnace.heating_coil_discount": "加热线圈增幅:%sx", + "gtceu.multiblock.multi_furnace.heating_coil_level": "加热线圈等级:%s", + "gtceu.multiblock.multiple_recipemaps.header": "机器模式:", + "gtceu.multiblock.multiple_recipemaps.switch_message": "机器必须关闭才能切换模式!", + "gtceu.multiblock.multiple_recipemaps.tooltip": "使用螺丝刀右键控制器以更改机器模式。", + "gtceu.multiblock.multiple_recipemaps_recipes.tooltip": "机器模式:§e%s§r", + "gtceu.multiblock.network_switch.description": "网络交换机是个多方块结构,可以接受任意数量的算力数据靶仓输入,并从任意数量的算力数据源仓输出。对于需要更高算力的研究数据配方,网络交换机的存在是必要的,这是因为研究站只接受一个算力数据靶仓。当与HPCA连接时,HPCA必须具有桥接组件才可以令网络交换机接收其算力。", + "gtceu.multiblock.not_enough_energy": "警告:能量不足。", + "gtceu.multiblock.not_enough_energy_output": "警告:能源/动力仓等级过低!", + "gtceu.multiblock.ore_rig.drilled_ore_entry": " - %s", + "gtceu.multiblock.ore_rig.drilled_ores_list": "矿石:", + "gtceu.multiblock.ore_rig.ore_amount": "钻进速率:%s", + "gtceu.multiblock.output_line.0": "%s x §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.1": "%s x §e%s§r(%s/s)", + "gtceu.multiblock.output_line.2": "%s ≈ §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.3": "%s ≈ §e%s§r (%s/s)", + "gtceu.multiblock.page_switcher.io.both": "§5兼顾输入/输出", + "gtceu.multiblock.page_switcher.io.export": "§4输出", + "gtceu.multiblock.page_switcher.io.import": "§2输入", + "gtceu.multiblock.parallel": "同时处理至多%d个配方", + "gtceu.multiblock.parallel.exact": "同时处理%d个配方", + "gtceu.multiblock.parallelizable.tooltip": "通过并行控制仓让机器同时处理多个相同配方。", + "gtceu.multiblock.pattern.clear_amount_1": "§6前方必须有1x1x1大小的空间§r", + "gtceu.multiblock.pattern.clear_amount_3": "§6前方必须有3x3x1大小的空间§r", + "gtceu.multiblock.pattern.error": "在%2$s处需要%1$s。", + "gtceu.multiblock.pattern.error.batteries": "§c必须使用同种电池§r", + "gtceu.multiblock.pattern.error.coils": "§c必须使用同种线圈方块§r", + "gtceu.multiblock.pattern.error.filters": "§c必须使用同种过滤器§r", + "gtceu.multiblock.pattern.error.limited.0": "§c最多:%d个§r", + "gtceu.multiblock.pattern.error.limited.1": "§c最少:%d个§r", + "gtceu.multiblock.pattern.error.limited.2": "§c最多:每层%d个§r", + "gtceu.multiblock.pattern.error.limited.3": "§c最少:每层%d个§r", + "gtceu.multiblock.pattern.error.limited_exact": "§c精确:%d§r", + "gtceu.multiblock.pattern.error.limited_within": "§c最少%d个,最多%d个§r", + "gtceu.multiblock.pattern.location_end": "§c最末端§r", + "gtceu.multiblock.pattern.replaceable_air": "可为空气", + "gtceu.multiblock.pattern.single": "§6仅可使用该种方块§r", + "gtceu.multiblock.power_substation.average_in": "§7平均输入:%s §7EU/t", + "gtceu.multiblock.power_substation.average_in_hover": "蓄能变电站内部的平均功率输入", + "gtceu.multiblock.power_substation.average_out": "§7平均输出:%s §7EU/t", + "gtceu.multiblock.power_substation.average_out_hover": "蓄能变电站内部的平均功率输出", + "gtceu.multiblock.power_substation.capacity": "§7容量:%s §7EU", + "gtceu.multiblock.power_substation.passive_drain": "§7被动损失:%s §7EU/t", + "gtceu.multiblock.power_substation.stored": "§7存储:%s §7EU", + "gtceu.multiblock.power_substation.time_days": "%s天", + "gtceu.multiblock.power_substation.time_forever": "永远", + "gtceu.multiblock.power_substation.time_hours": "%s时", + "gtceu.multiblock.power_substation.time_minutes": "%s分", + "gtceu.multiblock.power_substation.time_seconds": "%s秒", + "gtceu.multiblock.power_substation.time_to_drain": "§7预计耗空时间:%s", + "gtceu.multiblock.power_substation.time_to_fill": "§7预计充满时间:%s", + "gtceu.multiblock.power_substation.time_years": "%s年", + "gtceu.multiblock.power_substation.under_one_hour_left": "不到一小时就会完全耗光!", + "gtceu.multiblock.preview.rotate": "左键拖拽以旋转", + "gtceu.multiblock.preview.select": "右击方块以查看其他可选方块", + "gtceu.multiblock.preview.zoom": "使用鼠标滚轮或右键拖拽以缩放", + "gtceu.multiblock.primitive_blast_furnace.bronze.description": "土高炉是一种在游戏前期用来生产钢的多方块结构。尽管它不是很快,却能为你的发展提供钢材。", + "gtceu.multiblock.primitive_water_pump.description": "原始水泵是一台前蒸汽时代的多方块设施,每秒进行一次水资源收集,每秒的收集量取决于其所处的生物群系。水泵输出仓以及 §8ULV§r 和 §7LV§r 的输出仓均可用于该设施,输出仓的等级越高,水资源的产出量也越高。产出量遵循的公式为:生物群系系数 * 输出仓倍数。", + "gtceu.multiblock.primitive_water_pump.extra1.0": "生物群系系数:", + "gtceu.multiblock.primitive_water_pump.extra1.1": " 海洋,河流:1000 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.2": " 沼泽:800 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.3": " 丛林:350 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.4": " 覆雪群系:300 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.5": " 平原,森林:250 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.6": " 针叶林:175 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.7": " 沙滩:170 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.8": " 其他:100 mB/s", + "gtceu.multiblock.primitive_water_pump.extra2.0": "输出乘数:", + "gtceu.multiblock.primitive_water_pump.extra2.1": " 水泵仓:1x", + "gtceu.multiblock.primitive_water_pump.extra2.2": "§8ULV§r输出仓:2x", + "gtceu.multiblock.primitive_water_pump.extra2.3": "§7LV§r输出仓:4x", + "gtceu.multiblock.primitive_water_pump.extra2.4": "", + "gtceu.multiblock.primitive_water_pump.extra2.5": "当水泵所处的生物群系下雨时,总产水量将增加50%%。", + "gtceu.multiblock.progress": "进度:%ss / %ss(%s%%)", + "gtceu.multiblock.progress_percent": "进度:%s%%", + "gtceu.multiblock.pyrolyse_oven.description": "热解炉是一种用于将原木处理为木炭、杂酚油、灰烬或重油的多方块结构。", + "gtceu.multiblock.pyrolyse_oven.speed": "处理速度:%s%%", + "gtceu.multiblock.require_steam_parts": "需要蒸汽仓与输入/输出总线(蒸汽)!", + "gtceu.multiblock.research_station.description": "研究站是个多方块结构,用于研究更复杂的装配线研究数据。任何需要数据球或数据模块的研究必须使用研究站而非扫描仪来扫描。研究站需要计算工作单位(CWU/t)来进行工作,这由高性能计算阵列(HPCA)提供。", + "gtceu.multiblock.research_station.researching": "§6研究中…", + "gtceu.multiblock.running": "运行正常。", + "gtceu.multiblock.steam.duration_modifier": "处理耗时为基础的§f1.5§7倍,不受物品数量影响。", + "gtceu.multiblock.steam.low_steam": "蒸汽不足,无法运行!", + "gtceu.multiblock.steam.steam_stored": "蒸汽:%s / %s mB", + "gtceu.multiblock.steam_grinder.description": "蒸汽时代的多方块研磨机。需要至少14块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。", + "gtceu.multiblock.steam_oven.description": "蒸汽时代的多方块熔炉。需要至少6块青铜机械方块成型。仅可使用输入/输出总线(蒸汽),并且只能用蒸汽仓供给蒸汽。蒸汽仓必须放置于结构底层,数量至多为一个。", + "gtceu.multiblock.title": "多方块结构", + "gtceu.multiblock.turbine.efficiency": "涡轮效率:%s%%", + "gtceu.multiblock.turbine.efficiency_tooltip": "转子支架等级超过%s§r时,每级§7增加§f10%%效率,并翻倍输出功率§7。", + "gtceu.multiblock.turbine.energy_per_tick": "能量输出:%s/%s EU/t", + "gtceu.multiblock.turbine.energy_per_tick_maxed": "能量输出:%s EU/t", + "gtceu.multiblock.turbine.fuel_amount": "燃料量:%sL(%s)", + "gtceu.multiblock.turbine.fuel_needed": "消耗量:%s / %s ticks", + "gtceu.multiblock.turbine.obstructed": "涡轮受阻", + "gtceu.multiblock.turbine.rotor_durability": "转子耐久度:%s%%", + "gtceu.multiblock.turbine.rotor_speed": "转子转速:%s/%sRPM", + "gtceu.multiblock.universal.distinct": "总线隔离:", + "gtceu.multiblock.universal.distinct.info": "启用时,每个物品总线将在配方识别中被视为完全独立。对于消耗材料相同,使用的非消耗材料(模头、透镜等)不同则产物也不同的配方来说作用显著。", + "gtceu.multiblock.universal.distinct.no": "否", + "gtceu.multiblock.universal.distinct.yes": "是", + "gtceu.multiblock.universal.has_problems": "存在故障!", + "gtceu.multiblock.universal.has_problems_header": "在维护仓中修复以下问题:", + "gtceu.multiblock.universal.muffler_obstructed": "消声仓受阻!", + "gtceu.multiblock.universal.muffler_obstructed.tooltip": "消音仓口前方必须有一格空气。", + "gtceu.multiblock.universal.no_problems": "无故障!", + "gtceu.multiblock.universal.problem.crowbar": "§7这东西不属于这儿。(§a撬棍§7)", + "gtceu.multiblock.universal.problem.hard_hammer": "§7外壳有些凹痕。(§a锻造锤§7)", + "gtceu.multiblock.universal.problem.screwdriver": "§7螺丝没拧紧。(§a螺丝刀§7)", + "gtceu.multiblock.universal.problem.soft_mallet": "§7有什么东西卡住了。(§a软锤§7)", + "gtceu.multiblock.universal.problem.wire_cutter": "§7有几根线烧焦了(§a剪线钳§7)", + "gtceu.multiblock.universal.problem.wrench": "§7管道松动了。(§a扳手§7)", + "gtceu.multiblock.universal.rotor_obstructed": "转子进气口受阻!", + "gtceu.multiblock.uv_fusion_reactor.description": "核聚变反应堆MK-III是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用UV等级的能源仓。每个能源仓可增加40MEU的能量缓存,最大能量缓存为640MEU。", + "gtceu.multiblock.vacuum_freezer.description": "真空冷冻机是一种多方块结构,主要用于将热锭冷却为成品锭。此外,它还可以冻结水等其他物质。", + "gtceu.multiblock.validation_failed": "输入仓/输出仓数量无效。", + "gtceu.multiblock.waiting": "警告:机器待机", + "gtceu.multiblock.work_paused": "暂停。", + "gtceu.multiblock.zpm_fusion_reactor.description": "核聚变反应堆MK-II是台大型多方块结构,用于融合元素形成更重的元素。它仅可使用ZPM或UV等级的能源仓。每个能源仓可增加20MEU的能量缓存,最大能量缓存为320MEU。", + "gtceu.oc.tooltip.0": "最低:%s", + "gtceu.oc.tooltip.1": "左键单击增加超频等级", + "gtceu.oc.tooltip.2": "右键单击降低超频等级", + "gtceu.oc.tooltip.3": "中键单击重设超频等级", + "gtceu.oc.tooltip.4": "按住Shift以无损超频显示", + "gtceu.ore_washer": "洗矿厂", + "gtceu.ownership.name.argonauts": "Argonauts公会", + "gtceu.ownership.name.ftb": "FTB团队", + "gtceu.ownership.name.player": "玩家", + "gtceu.packer": "打包机", + "gtceu.plasma_generator": "等离子燃料", + "gtceu.polarizer": "两极磁化机", + "gtceu.primitive_blast_furnace": "土高炉", + "gtceu.pyrolyse_oven": "热解炉", + "gtceu.recipe.amperage": "电流:%s", + "gtceu.recipe.category.arc_furnace_recycling": "电弧炉:等离子回收", + "gtceu.recipe.category.chem_dyes": "化学浸洗机:化学染色", + "gtceu.recipe.category.extractor_recycling": "流体提取机:重熔回收", + "gtceu.recipe.category.ingot_molding": "合金炉:金属成型", + "gtceu.recipe.category.macerator_recycling": "研磨机:粉碎回收", + "gtceu.recipe.category.ore_bathing": "化学浸洗机:矿物处理", + "gtceu.recipe.category.ore_crushing": "研磨机:矿物处理", + "gtceu.recipe.category.ore_forging": "锻造锤:矿物处理", + "gtceu.recipe.chance": "概率:%s + %s/电压等级", + "gtceu.recipe.cleanroom": "需要%s", + "gtceu.recipe.cleanroom.display_name": "超净间", + "gtceu.recipe.cleanroom_sterile.display_name": "无菌超净间", + "gtceu.recipe.coil.tier": "线圈:%s", + "gtceu.recipe.computation_per_tick": "最小算力:%s CWU/t", + "gtceu.recipe.dimensions": "维度:%s", + "gtceu.recipe.duration": "耗时:%s秒", + "gtceu.recipe.environmental_hazard": "§c区域内必须有%s", + "gtceu.recipe.environmental_hazard.reverse": "§c区域内必须没有%s", + "gtceu.recipe.eu": "耗能功率:%s EU/t", + "gtceu.recipe.eu_inverted": "产能功率:%s EU/t", + "gtceu.recipe.eu_to_start": "启动耗能:%sEU%s", + "gtceu.recipe.explosive": "爆炸物:%s", + "gtceu.recipe.max_eu": "最大功率:%s EU", + "gtceu.recipe.not_consumed": "不在加工中消耗", + "gtceu.recipe.research": "需要研究", + "gtceu.recipe.scan_for_research": "装配线配方扫描", + "gtceu.recipe.temperature": "温度:%sK", + "gtceu.recipe.total": "总计:%s EU", + "gtceu.recipe.total_computation": "算力:%s CWU", + "gtceu.recipe_logic.condition_fails": "条件不足", + "gtceu.recipe_logic.insufficient_fuel": "燃料不足", + "gtceu.recipe_logic.insufficient_in": "需要输入", + "gtceu.recipe_logic.insufficient_out": "输出堵塞", + "gtceu.recipe_logic.no_capabilities": "机器无功能", + "gtceu.recipe_logic.no_contents": "配方无内容", + "gtceu.recipe_memory_widget.tooltip.0": "§7左键点击可自动将该配方输入至合成格", + "gtceu.recipe_memory_widget.tooltip.1": "§7按住Shift并点击以锁定或解锁该配方", + "gtceu.recipe_type.show_recipes": "查看配方", + "gtceu.rei.group.potion_fluids": "药水流体", + "gtceu.research_station": "研究站", + "gtceu.rock_breaker": "碎岩机", + "gtceu.scanner": "扫描仪", + "gtceu.scanner.copy_stick_empty": "§o空闪存", + "gtceu.scanner.copy_stick_from": "§o要复制的闪存", + "gtceu.scanner.copy_stick_to": "§o闪存(已复制)", + "gtceu.sifter": "筛选机", + "gtceu.steam_boiler": "蒸汽锅炉", + "gtceu.steam_turbine": "蒸汽涡轮", + "gtceu.subtitle.arc": "电弧炉:嗡——", + "gtceu.subtitle.assembler": "组装机:运行中", + "gtceu.subtitle.bath": "化学浸洗机:嘶嘶", + "gtceu.subtitle.boiler": "锅炉:液体沸腾", + "gtceu.subtitle.centrifuge": "离心机:旋转", + "gtceu.subtitle.chainsaw": "链锯:拉动油门", + "gtceu.subtitle.chemical": "化学反应釜:运行中", + "gtceu.subtitle.combustion": "内燃发电机:燃料燃烧", + "gtceu.subtitle.compressor": "压缩机:挤压", + "gtceu.subtitle.computation": "计算机:哔哔", + "gtceu.subtitle.cooling": "真空冷冻机:嗡——", + "gtceu.subtitle.cut": "切割机:嘶嘶叫", + "gtceu.subtitle.drill": "电钻:嗡嗡", + "gtceu.subtitle.electrolyzer": "电解机:爆出火花", + "gtceu.subtitle.file": "锉:磨削", + "gtceu.subtitle.fire": "火:爆裂", + "gtceu.subtitle.forge_hammer": "锻造锤:DUANG", + "gtceu.subtitle.furnace": "电炉:冶炼", + "gtceu.subtitle.jet_engine": "喷气背包:轰轰", + "gtceu.subtitle.macerator": "研磨机:破碎", + "gtceu.subtitle.metal_pipe": "流体管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", + "gtceu.subtitle.miner": "采矿机:开采", + "gtceu.subtitle.mixer": "搅拌机:搅动", + "gtceu.subtitle.mortar": "研钵:研磨", + "gtceu.subtitle.motor": "马达:转啊转", + "gtceu.subtitle.plunger": "搋子:清理流体", + "gtceu.subtitle.portable_scanner": "便携式扫描仪:扫描", + "gtceu.subtitle.portal_closing": "传送门:关闭", + "gtceu.subtitle.portal_opening": "传送门:开启", + "gtceu.subtitle.replicator": "复制机:运行", + "gtceu.subtitle.saw": "锯:切割", + "gtceu.subtitle.science": "化学反应釜:科!学!", + "gtceu.subtitle.screwdriver": "螺丝刀:拧螺丝", + "gtceu.subtitle.soft_hammer": "软锤:轻敲", + "gtceu.subtitle.spray_can": "喷漆罐:喷涂", + "gtceu.subtitle.sus": "唱片:你有嫌疑", + "gtceu.subtitle.turbine": "涡轮:呼啸", + "gtceu.subtitle.wirecutter": "剪线钳:剪断", + "gtceu.subtitle.wrench": "扳手:嘎啦", + "gtceu.thermal_centrifuge": "热力离心机", + "gtceu.tool.class.axe": "斧", + "gtceu.tool.class.butchery_knife": "屠刀", + "gtceu.tool.class.crowbar": "撬棍", + "gtceu.tool.class.drill": "电钻", + "gtceu.tool.class.file": "锉", + "gtceu.tool.class.hammer": "锤", + "gtceu.tool.class.hoe": "锄", + "gtceu.tool.class.knife": "刀", + "gtceu.tool.class.mallet": "软锤", + "gtceu.tool.class.mining_hammer": "采矿锤", + "gtceu.tool.class.mortar": "研钵", + "gtceu.tool.class.pickaxe": "镐", + "gtceu.tool.class.plunger": "搋子", + "gtceu.tool.class.rolling_pin": "擀面杖", + "gtceu.tool.class.saw": "锯", + "gtceu.tool.class.screwdriver": "螺丝刀", + "gtceu.tool.class.scythe": "镰刀", + "gtceu.tool.class.shears": "剪刀", + "gtceu.tool.class.shovel": "锹", + "gtceu.tool.class.spade": "铲", + "gtceu.tool.class.sword": "剑", + "gtceu.tool.class.wire_cutter": "剪线钳", + "gtceu.tool.class.wrench": "扳手", + "gtceu.tool_action.crowbar": "§8使用撬棍卸下覆盖板", + "gtceu.tool_action.hammer": "§8使用锻造锤消除声响", + "gtceu.tool_action.screwdriver.access_covers": "§8使用螺丝刀访问覆盖板", + "gtceu.tool_action.screwdriver.auto_collapse": "§8使用螺丝刀开关物品堆叠自动合并", + "gtceu.tool_action.screwdriver.auto_output": "§8使用螺丝刀切换自动输出", + "gtceu.tool_action.screwdriver.auto_output_covers": "§8使用螺丝刀设置允许从输出端输入或访问覆盖板", + "gtceu.tool_action.screwdriver.toggle_mode": "§8使用螺丝刀切换模式", + "gtceu.tool_action.screwdriver.toggle_mode_covers": "§8使用螺丝刀切换模式或访问覆盖板", + "gtceu.tool_action.show_tooltips": "§7按住§6SHIFT§7显示工具信息", + "gtceu.tool_action.soft_mallet.reset": "§8使用软锤开关机器", + "gtceu.tool_action.soft_mallet.toggle_mode": "§8使用软锤切换模式", + "gtceu.tool_action.tape": "§8使用胶带维护机器", + "gtceu.tool_action.wire_cutter.connect": "§8使用剪线钳连接/断开电线", + "gtceu.tool_action.wrench.connect": "§8使用扳手连接/断开管道,潜行可以阻止输入", + "gtceu.tool_action.wrench.set_facing": "§8使用扳手设置朝向", + "gtceu.tooltip.fluid_pipe_hold_shift": "§7按住§6SHIFT§7以查看流体容器详情", + "gtceu.tooltip.hold_ctrl": "§7按住CTRL获得更多信息", + "gtceu.tooltip.hold_shift": "§7按住§6SHIFT§7获得更多信息", + "gtceu.tooltip.potion.each": "§r%4$s%%§7概率获得§r%1$s %2$s§7(§r%3$s§7tick)", + "gtceu.tooltip.potion.header": "§6包含效果:", + "gtceu.tooltip.proxy_bind": "§f绑定到%s %s %s处的样板总成", + "gtceu.tooltip.status.trinary.false": "假", + "gtceu.tooltip.status.trinary.true": "真", + "gtceu.tooltip.status.trinary.unknown": "未知", + "gtceu.tooltip.tool_fluid_hold_shift": "§7按住§6SHIFT§7以查看流体容器及工具详情", + "gtceu.top.allow_output_input": "允许输入", + "gtceu.top.auto_output": "自动输出", + "gtceu.top.buffer_bound_pos": "已绑定至 - X:%s;Y:%s;Z:%s", + "gtceu.top.buffer_not_bound": "尚未绑定总成", + "gtceu.top.cable_amperage": "电流:", + "gtceu.top.cable_voltage": "电压:", + "gtceu.top.convert_eu": "转换模式:§eEU§r ->§cFE§r", + "gtceu.top.convert_fe": "转换模式:§cFE§r ->§eEU§r", + "gtceu.top.energy_consumption": "耗能", + "gtceu.top.energy_production": "产能", + "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "受阻", + "gtceu.top.exhaust_vent_direction": "排气口:%s", + "gtceu.top.filter.label": "过滤:", + "gtceu.top.fluid_auto_output": "流体输出:%s", + "gtceu.top.fuel_min_consume": "需要", + "gtceu.top.fuel_none": "无燃料", + "gtceu.top.invalid_structure": "结构不完整", + "gtceu.top.item_auto_output": "物品输出:%s", + "gtceu.top.link_cover.color": "颜色:", + "gtceu.top.machine_mode": "机器模式:", + "gtceu.top.maintenance.crowbar": "这东西不属于这儿", + "gtceu.top.maintenance.hard_hammer": "外壳有些凹痕", + "gtceu.top.maintenance.screwdriver": "螺丝没拧紧", + "gtceu.top.maintenance.soft_mallet": "有什么东西卡住了", + "gtceu.top.maintenance.wire_cutter": "有几根线烧焦了", + "gtceu.top.maintenance.wrench": "管道松动了", + "gtceu.top.maintenance_broken": "需要维护", + "gtceu.top.maintenance_fixed": "无需维护", + "gtceu.top.mode.export": "输出", + "gtceu.top.mode.import": "输入", + "gtceu.top.obstructed_structure": "结构受阻", + "gtceu.top.primitive_pump_production": "产出:%s mB/s", + "gtceu.top.progress_computation": " / %s CWU", + "gtceu.top.progress_sec": " / %s s", + "gtceu.top.progress_tick": " / %s t", + "gtceu.top.proxies_bound": "样板总成镜像绑定数量:%s", + "gtceu.top.recipe_output": "配方输出:", + "gtceu.top.stained": "颜色:%s", + "gtceu.top.transform_down": "§a降压§r %s", + "gtceu.top.transform_input": "§6输入:§r%s", + "gtceu.top.transform_output": "§9输出:§r%s", + "gtceu.top.transform_up": "§c升压§r %s", + "gtceu.top.unit.fluid_buckets": "kL", + "gtceu.top.unit.fluid_milibuckets": "L", + "gtceu.top.unit.items": "物品", + "gtceu.top.valid_structure": "结构已成型", + "gtceu.top.working_disabled": "已暂停工作", + "gtceu.universal.clear_nbt_recipe.tooltip": "§c这将清除所有内容物!", + "gtceu.universal.disabled": "多方块结构共享:§4禁止", + "gtceu.universal.enabled": "多方块结构共享:§a允许", + "gtceu.universal.kiloliters": "%s B", + "gtceu.universal.liters": "%s mB", + "gtceu.universal.tooltip.amperage_in": "§e输入电流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out": "§e输入/输出电流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out_till": "§e输入/输出电流上限:§f%dA", + "gtceu.universal.tooltip.amperage_in_till": "§e输入电流上限:§f%dA", + "gtceu.universal.tooltip.amperage_out": "§e输出电流:§f%dA", + "gtceu.universal.tooltip.amperage_out_till": "§e输出电流上限:§f%dA", + "gtceu.universal.tooltip.base_production_eut": "§e基础产能功率:§f%d EU/t", + "gtceu.universal.tooltip.base_production_fluid": "§e基础产出速率:§f%d mB/t", + "gtceu.universal.tooltip.chunk_mode": "区块模式:", + "gtceu.universal.tooltip.deprecated": "§4§l警告:§r§4已弃用。将在未来版本中移除。§r", + "gtceu.universal.tooltip.energy_storage_capacity": "§c能量缓存:§r%d EU", + "gtceu.universal.tooltip.energy_tier_range": "§a适配电压等级:§f%s§f-%s", + "gtceu.universal.tooltip.fluid_storage_capacity": "§9流体容量:§f%d mB", + "gtceu.universal.tooltip.fluid_storage_capacity_mult": "§9流体容量:§r共§f%d§7个流体槽,每个§f%d mB§7", + "gtceu.universal.tooltip.fluid_stored": "§2内部流体:%2$d mB§f%1$s", + "gtceu.universal.tooltip.fluid_transfer_rate": "§b传输速率:§f%d mB/t", + "gtceu.universal.tooltip.item_storage_capacity": "§6物品槽位数量:§f%d", + "gtceu.universal.tooltip.item_storage_total": "§6物品容量:§f%d物品", + "gtceu.universal.tooltip.item_stored": "§d内部物品:§f%2$d个%1$s", + "gtceu.universal.tooltip.item_transfer_rate": "§b传输速率:§f%d物品/s", + "gtceu.universal.tooltip.item_transfer_rate_stacks": "§b传输速率:§f%d组/s", + "gtceu.universal.tooltip.max_voltage_in": "§a最大输入电压:§f%d(%s§f)", + "gtceu.universal.tooltip.max_voltage_in_out": "§a最大输入/输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.max_voltage_out": "§a最大输出电压:§f%d(%s§f)", + "gtceu.universal.tooltip.parallel": "§d最大并行:§f%d", + "gtceu.universal.tooltip.produces_fluid": "§e产出速率:§f%d mB/t", + "gtceu.universal.tooltip.requires_redstone": "§4需要红石信号", + "gtceu.universal.tooltip.silk_touch": "精准采集:", + "gtceu.universal.tooltip.terrain_resist": "该机器不会在暴露于恶劣天气时爆炸", + "gtceu.universal.tooltip.uses_per_hour_lubricant": "工作时消耗§f%d mB/hr§7§6润滑油§7", + "gtceu.universal.tooltip.uses_per_op": "每次工作时消耗§f%d EU§7", + "gtceu.universal.tooltip.uses_per_second": "工作时消耗§f%d EU/s§7", + "gtceu.universal.tooltip.uses_per_tick": "工作时消耗§f%d EU/t§7", + "gtceu.universal.tooltip.uses_per_tick_steam": "工作时消耗§f%d mB/t§7§f蒸汽§7", + "gtceu.universal.tooltip.voltage_in": "§a输入电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_in_out": "§a输入/输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_out": "§a输出电压:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.working_area": "§b工作范围:§f%dx%d", + "gtceu.universal.tooltip.working_area_chunks": "§b工作范围:§f%dx%d 区块", + "gtceu.universal.tooltip.working_area_chunks_max": "§b最大工作范围:§f%dx%d 区块", + "gtceu.universal.tooltip.working_area_max": "§b最大工作范围:§f%dx%d", + "gtceu.vacuum_freezer": "真空冷冻机", + "gtceu.wiremill": "线材轧机", + "gui.gtceu.refund_all.desc": "将共享库存返还到AE2", + "gui.gtceu.rename.desc": "重命名样板总成", + "gui.gtceu.share_inventory.desc.0": "与总成内的所有样板共享物品!", + "gui.gtceu.share_inventory.desc.1": "保存不消耗的催化剂,实现更高效的自动化", + "gui.gtceu.share_inventory.title": "共享物品库存", + "gui.gtceu.share_tank.desc.0": "与总成内的所有样板共享流体!", + "gui.gtceu.share_tank.title": "共享流体库存", + "gui.widget.incrementButton.default_tooltip": "按住Shift,Ctrl键或同时按住这两个键来改变数量", + "gui.widget.recipeProgressWidget.default_tooltip": "查看配方", + "item.glass_lens": "玻璃透镜(白色)", + "item.gtceu.activity_detector_cover": "活跃探测覆盖板", + "item.gtceu.activity_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f机器活跃状态§7发出红石信号。", + "item.gtceu.advanced_activity_detector_cover": "进阶活跃状态探测器", + "item.gtceu.advanced_activity_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f机器处理进度§7发出红石信号。", + "item.gtceu.advanced_electric_jetpack": "进阶电力喷气背包", + "item.gtceu.advanced_energy_detector_cover": "进阶能量探测覆盖板", + "item.gtceu.advanced_energy_detector_cover.tooltip": "§7作§f覆盖板§7时依照由§fRS锁存器§7控制的§f能量状态§7发出红石信号。", + "item.gtceu.advanced_fluid_detector_cover": "进阶流体探测器", + "item.gtceu.advanced_fluid_detector_cover.tooltip": "作§f覆盖板§7时依照由§fRS锁存器§7控制的§f流体存储状态§7发出红石信号。", + "item.gtceu.advanced_fluid_voiding_cover": "进阶流体销毁覆盖板", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.0": "§7作§f覆盖板§7时允许按数量销毁§f流体§7。", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.1": "加装后使用§f软锤§7激活", + "item.gtceu.advanced_integrated_circuit": "进阶集成电路", + "item.gtceu.advanced_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.advanced_integrated_circuit.tooltip.1": "§6HV级电路", + "item.gtceu.advanced_item_detector_cover": "进阶物品探测器", + "item.gtceu.advanced_item_detector_cover.tooltip": "作§f覆盖板§7时依照由§fRS锁存器§7控制的§f物品存储状态§7发出红石信号。", + "item.gtceu.advanced_item_voiding_cover": "进阶物品销毁覆盖板", + "item.gtceu.advanced_item_voiding_cover.tooltip.0": "§7作§f覆盖板§7时销毁物品。", + "item.gtceu.advanced_item_voiding_cover.tooltip.1": "加装后使用§f软锤§7激活", + "item.gtceu.advanced_nanomuscle_chestplate": "纳米肌体™进阶套装胸甲", + "item.gtceu.advanced_power_thruster": "进阶电力推进器", + "item.gtceu.advanced_quarktech_chestplate": "夸克高科™进阶套装胸甲", + "item.gtceu.advanced_smd_capacitor": "高级贴片电容", + "item.gtceu.advanced_smd_capacitor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_diode": "高级贴片二极管", + "item.gtceu.advanced_smd_diode.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_inductor": "高级贴片电感", + "item.gtceu.advanced_smd_inductor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_resistor": "高级贴片电阻", + "item.gtceu.advanced_smd_resistor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_smd_transistor": "高级贴片晶体管", + "item.gtceu.advanced_smd_transistor.tooltip": "§7高级电子元件", + "item.gtceu.advanced_soc": "ASoC", + "item.gtceu.advanced_soc.tooltip": "§7先进系统级芯片", + "item.gtceu.advanced_soc_wafer": "ASoC晶圆", + "item.gtceu.advanced_soc_wafer.tooltip": "§7先进电路原料", + "item.gtceu.aluminium_fluid_cell": "%s铝单元", + "item.gtceu.anvil_casting_mold": "模具(砧)", + "item.gtceu.anvil_casting_mold.tooltip": "§7用来制作砧的模具", + "item.gtceu.ash_dust": "灰烬", + "item.gtceu.axe_extruder_mold.tooltip": "§7用来制作斧的模头", + "item.gtceu.ball_casting_mold": "模具(球)", + "item.gtceu.ball_casting_mold.tooltip": "§7用来制作球的模具", + "item.gtceu.basaltic_mineral_sand_dust": "玄武岩矿砂", + "item.gtceu.basic_electronic_circuit": "基础电子电路", + "item.gtceu.basic_electronic_circuit.tooltip.0": "§7你的第一块电路", + "item.gtceu.basic_electronic_circuit.tooltip.1": "§cLV级电路", + "item.gtceu.basic_integrated_circuit": "基础集成电路", + "item.gtceu.basic_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV级电路", + "item.gtceu.basic_tape": "胶带", + "item.gtceu.basic_tape.tooltip": "§7强度不足,无法解决机械故障\n可以带走板条箱,且不丢失物品", + "item.gtceu.battery.charge_detailed": "%s/%sEU-%s级§7(剩余供能时长:%s/%s%s§7)", + "item.gtceu.battery.charge_time": "§a最大供能时长:%s%s(%s)", + "item.gtceu.battery.charge_unit.hour": "时", + "item.gtceu.battery.charge_unit.minute": "分", + "item.gtceu.battery.charge_unit.second": "秒", + "item.gtceu.bentonite_dust": "膨润土", + "item.gtceu.bio_chaff": "生物糠", + "item.gtceu.black_dye_spray_can": "喷漆罐(黑色)", + "item.gtceu.black_glass_lens": "玻璃透镜(黑色)", + "item.gtceu.blacklight": "黑光灯", + "item.gtceu.blacklight.tooltip": "§7长波§d紫外线§7光源", + "item.gtceu.block_casting_mold": "模具(块)", + "item.gtceu.block_casting_mold.tooltip": "§7用来制作块的模具", + "item.gtceu.block_extruder_mold": "模头(块)", + "item.gtceu.block_extruder_mold.tooltip": "§7用来制作块的模头", + "item.gtceu.blue_dye_spray_can": "喷漆罐(蓝色)", + "item.gtceu.blue_glass_lens": "玻璃透镜(蓝色)", + "item.gtceu.bolt_extruder_mold": "模头(螺栓)", + "item.gtceu.bolt_extruder_mold.tooltip": "§7用来制作螺栓的模头", + "item.gtceu.bone_dust": "骨粉", + "item.gtceu.borosilicate_glass_ingot": "硼硅玻璃条", + "item.gtceu.bottle.purple.drink.tooltip": "§7来点柠檬汽水,还是冰红茶?我手里这瓶可是紫色饮料!", + "item.gtceu.bottle_casting_mold": "模具(瓶子)", + "item.gtceu.bottle_casting_mold.tooltip": "§7用来制作瓶的模具", + "item.gtceu.bottle_extruder_mold": "模头(瓶子)", + "item.gtceu.bottle_extruder_mold.tooltip": "§7用来制作瓶子的模头", + "item.gtceu.brick_wooden_form": "木制砖模具", + "item.gtceu.brown_dye_spray_can": "喷漆罐(棕色)", + "item.gtceu.brown_glass_lens": "玻璃透镜(棕色)", + "item.gtceu.bucket": "%s桶", + "item.gtceu.capacitor": "电容", + "item.gtceu.capacitor.tooltip": "§7基础电子元件", + "item.gtceu.carbon_fiber_mesh": "碳纤维网", + "item.gtceu.carbon_fiber_plate": "碳板", + "item.gtceu.carbon_fibers": "生碳纤维", + "item.gtceu.casing_casting_mold.tooltip": "§7用来制作外壳的模具", + "item.gtceu.casing_extruder_mold.tooltip": "§7用来制作外壳的模头", + "item.gtceu.cassiterite_sand_dust": "锡石矿砂", + "item.gtceu.cell_extruder_mold": "模头(单元)", + "item.gtceu.cell_extruder_mold.tooltip": "§7用来制作单元的模头", + "item.gtceu.chemical_black_dye": "黑色化学染料", + "item.gtceu.chemical_blue_dye": "蓝色化学染料", + "item.gtceu.chemical_brown_dye": "棕色化学染料", + "item.gtceu.chemical_cyan_dye": "青色化学染料", + "item.gtceu.chemical_gray_dye": "灰色化学染料", + "item.gtceu.chemical_green_dye": "绿色化学染料", + "item.gtceu.chemical_light_blue_dye": "淡蓝色化学染料", + "item.gtceu.chemical_light_gray_dye": "淡灰色化学染料", + "item.gtceu.chemical_lime_dye": "黄绿色化学染料", + "item.gtceu.chemical_magenta_dye": "品红色化学染料", + "item.gtceu.chemical_orange_dye": "橙色化学染料", + "item.gtceu.chemical_pink_dye": "粉红色化学染料", + "item.gtceu.chemical_purple_dye": "紫色化学染料", + "item.gtceu.chemical_red_dye": "红色化学染料", + "item.gtceu.chemical_white_dye": "白色化学染料", + "item.gtceu.chemical_yellow_dye": "黄色化学染料", + "item.gtceu.chipped_glass_gem": "破碎的玻璃晶体", + "item.gtceu.chipped_sugar_gem": "小块方糖", + "item.gtceu.circuit.integrated.gui": "§7编程电路配置", + "item.gtceu.coke_oven_brick": "焦炉砖", + "item.gtceu.compressed_clay": "压缩黏土", + "item.gtceu.compressed_coke_clay": "压缩焦黏土", + "item.gtceu.compressed_fireclay": "压缩耐火黏土", + "item.gtceu.computer_monitor_cover": "电脑屏幕覆盖板", + "item.gtceu.computer_monitor_cover.tooltip": "§7作§f覆盖板§7时显示§f数据§7。", + "item.gtceu.conveyor.module.tooltip": "§7作§f覆盖板§7时以特定速率传输§f物品§7。", + "item.gtceu.cpu_chip": "CPU芯片", + "item.gtceu.cpu_chip.tooltip": "§7中央处理器", + "item.gtceu.cpu_wafer": "CPU晶圆", + "item.gtceu.cpu_wafer.tooltip": "§7中央处理器原料", + "item.gtceu.crushed_bentonite_ore": "精研膨润土", + "item.gtceu.crushed_cassiterite_sand_ore": "粉碎锡石矿砂", + "item.gtceu.crushed_pitchblende_ore": "精研沥青铀矿", + "item.gtceu.crushed_talc_ore_ore": "精研滑石", + "item.gtceu.crystal_cpu": "晶体CPU", + "item.gtceu.crystal_cpu.tooltip": "§7晶体处理器", + "item.gtceu.crystal_processor": "晶体处理器", + "item.gtceu.crystal_processor.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor.tooltip.1": "§9IV级电路", + "item.gtceu.crystal_processor_assembly": "晶体处理器集群", + "item.gtceu.crystal_processor_assembly.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_assembly.tooltip.1": "§9LuV级电路", + "item.gtceu.crystal_processor_computer": "晶体处理器超级计算机", + "item.gtceu.crystal_processor_computer.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_computer.tooltip.1": "§9ZPM级电路", + "item.gtceu.crystal_processor_mainframe": "晶体处理器主机", + "item.gtceu.crystal_processor_mainframe.tooltip.0": "§7得益于晶体蚀刻技术", + "item.gtceu.crystal_processor_mainframe.tooltip.1": "§9UV级电路", + "item.gtceu.crystal_soc": "晶体SoC", + "item.gtceu.crystal_soc.tooltip": "§7晶体系统级芯片", + "item.gtceu.cyan_dye_spray_can": "喷漆罐(青色)", + "item.gtceu.cyan_glass_lens": "玻璃透镜(青色)", + "item.gtceu.cylinder_casting_mold": "模具(圆柱)", + "item.gtceu.cylinder_casting_mold.tooltip": "§7用来制作圆柱的模具", + "item.gtceu.dark_ash_dust": "黑色灰烬", + "item.gtceu.data_module": "数据模块", + "item.gtceu.data_orb": "数据球", + "item.gtceu.data_orb.tooltip": " §7大容量的数据存储器", + "item.gtceu.data_stick": "闪存", + "item.gtceu.data_stick.tooltip": "§7小容量的数据存储器", + "item.gtceu.diamond_grinding_head": "钻石研磨头", + "item.gtceu.diode": "二极管", + "item.gtceu.diode.tooltip": "§7基础电子元件", + "item.gtceu.dough": "面团", + "item.gtceu.duct_tape": "布莱恩科技航空专用强化胶带FAL-84型", + "item.gtceu.duct_tape.tooltip": "§7如果一卷修不好,那就再来一卷!", + "item.gtceu.dynamite": "炸药", + "item.gtceu.electric.pump.tooltip": "§7作§f覆盖板§7时以特定速率传输§f流体§7。", + "item.gtceu.electric_jetpack": "电力喷气背包", + "item.gtceu.empty_mold": "空模板", + "item.gtceu.empty_mold.tooltip": "§7用以制作模具与压模器的模头", + "item.gtceu.empty_spray_can": "空喷漆罐", + "item.gtceu.empty_spray_can.tooltip": "§7可充入各种颜色的喷剂", + "item.gtceu.empty_wooden_form": "空木制模具", + "item.gtceu.ender_fluid_link_cover": "末影流体连接", + "item.gtceu.ender_fluid_link_cover.tooltip": "§7作§f覆盖板§7时利用§f无线§7§d末影§f连接§7传输§f流体§7。", + "item.gtceu.energium_dust": "能量粉", + "item.gtceu.energy_cluster": "能量簇", + "item.gtceu.energy_cluster.tooltip": "§7可充电电池", + "item.gtceu.energy_crystal": "能量水晶", + "item.gtceu.energy_crystal.tooltip": "§7可充电电池", + "item.gtceu.energy_detector_cover": "能量探测覆盖板", + "item.gtceu.energy_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f能量储量§7发出红石信号。", + "item.gtceu.energy_module": "能量模块", + "item.gtceu.energy_module.tooltip": "§7可充电电池", + "item.gtceu.engraved_crystal_chip": "刻蚀水晶芯片", + "item.gtceu.engraved_crystal_chip.tooltip": "§7晶体电路所需", + "item.gtceu.engraved_lapotron_crystal_chip": "刻蚀兰波顿芯片", + "item.gtceu.epoxy_circuit_board": "环氧树脂基板", + "item.gtceu.epoxy_circuit_board.tooltip": "§7进阶电路基板", + "item.gtceu.epoxy_printed_circuit_board": "环氧树脂印刷电路基板", + "item.gtceu.epoxy_printed_circuit_board.tooltip": "§7更高级的电路基板", + "item.gtceu.ev_battery_hull": "小型钒电池外壳", + "item.gtceu.ev_battery_hull.tooltip": "§7一个空的§5EV§7电池外壳", + "item.gtceu.ev_conveyor_module": "§5EV§r传送带", + "item.gtceu.ev_electric_motor": "§5EV§r电动马达", + "item.gtceu.ev_electric_piston": "§5EV§r电力活塞", + "item.gtceu.ev_electric_pump": "§5EV§r电动泵", + "item.gtceu.ev_emitter": "§5EV§r发射器", + "item.gtceu.ev_field_generator": "§5EV§r力场发生器", + "item.gtceu.ev_fluid_regulator": "§5EV§r流体校准器", + "item.gtceu.ev_power_unit": "§5EV§r能量单元", + "item.gtceu.ev_robot_arm": "§5EV§r机械臂", + "item.gtceu.ev_sensor": "§5EV§r传感器", + "item.gtceu.ev_solar_panel": "超高压太阳能板(§5EV§r)", + "item.gtceu.ev_vanadium_battery": "小型钒电池", + "item.gtceu.ev_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.ev_voltage_coil": "超高压线圈", + "item.gtceu.ev_voltage_coil.tooltip": "极限线圈", + "item.gtceu.exquisite_glass_gem": "精致的玻璃晶体", + "item.gtceu.facade_cover": "%s覆盖伪装板", + "item.gtceu.facade_cover.tooltip.0": "§7可作为§f覆盖板§7加装的装饰性外壳。", + "item.gtceu.facade_cover.tooltip.1": "§7使用三个铁板与任意方块合成", + "item.gtceu.face_mask": "面罩", + "item.gtceu.fertilizer": "肥料", + "item.gtceu.fiber_reinforced_circuit_board": "纤维强化电路基板", + "item.gtceu.fiber_reinforced_circuit_board.tooltip": "§7超级电路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board": "纤维强化印刷电路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip": "§7更高级的电路基板", + "item.gtceu.file_extruder_mold.tooltip": "§7用来制作锉的模头", + "item.gtceu.fine_borosilicate_glass_wire": "硼硅玻璃纤维", + "item.gtceu.firebrick": "耐火砖", + "item.gtceu.firebrick.tooltip": "§7耐热", + "item.gtceu.flawed_glass_gem": "有瑕的玻璃晶体", + "item.gtceu.flawed_sugar_gem": "小颗方糖", + "item.gtceu.flawless_glass_gem": "无瑕的玻璃晶体", + "item.gtceu.fluid.regulator.tooltip": "§7作§f覆盖板§7时§7限制§f§f流体§7的流量。", + "item.gtceu.fluid_cell": "%s单元", + "item.gtceu.fluid_detector_cover": "流体探测覆盖板", + "item.gtceu.fluid_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f流体储量§7发出红石信号。", + "item.gtceu.fluid_filter": "流体过滤卡", + "item.gtceu.fluid_filter.tooltip.0": "§7作§f覆盖板§7时过滤§流体§7的输入/输出。", + "item.gtceu.fluid_filter.tooltip.1": "亦可为§f电动泵§7和§f流体校准器§7提供此功能。", + "item.gtceu.fluid_tag_filter": "流体标签过滤卡", + "item.gtceu.fluid_tag_filter.tooltip.0": "§7作§f覆盖板§7时以§f流体标签§7过滤§f流体§7的输入/输出。", + "item.gtceu.fluid_tag_filter.tooltip.1": "§7可用于升级§f电动泵§7与§f流体校准器§7。", + "item.gtceu.fluid_voiding_cover": "流体销毁覆盖板", + "item.gtceu.fluid_voiding_cover.tooltip.0": "§7作§f覆盖板§7时允许销毁§f流体§7。", + "item.gtceu.fluid_voiding_cover.tooltip.1": "§7加装后使用§f软锤§7激活", + "item.gtceu.foam_sprayer.tooltip.0": "§7喷射建筑泡沫", + "item.gtceu.foam_sprayer.tooltip.1": "右击框架来给框架喷涂泡沫", + "item.gtceu.foam_sprayer.tooltip.2": "泡沫可以染色", + "item.gtceu.foil_extruder_mold": "模头(箔)", + "item.gtceu.foil_extruder_mold.tooltip": "§7用来制作箔的模头", + "item.gtceu.fullers_earth_dust": "漂白土", + "item.gtceu.garnet_sand_dust": "石榴石砂", + "item.gtceu.gear_casting_mold": "模具(齿轮)", + "item.gtceu.gear_casting_mold.small.tooltip": "§7用来制作小型齿轮的模具", + "item.gtceu.gear_casting_mold.tooltip": "§7用来制作齿轮的模具", + "item.gtceu.gear_extruder_mold": "模头(齿轮)", + "item.gtceu.gear_extruder_mold.tooltip": "§7用来制作齿轮的模头", + "item.gtceu.gear_small_extruder_mold.tooltip": "§7用来制作小型齿轮的模头", + "item.gtceu.gelled_toluene": "胶凝甲苯", + "item.gtceu.gelled_toluene.tooltip": "§7炸药原料", + "item.gtceu.glass_gem": "玻璃晶体", + "item.gtceu.glass_plate": "玻璃板", + "item.gtceu.glass_tube": "玻璃管", + "item.gtceu.glass_vial": "%s玻璃试管", + "item.gtceu.glauconite_sand_dust": "海绿石砂", + "item.gtceu.good_electronic_circuit": "优质电子电路", + "item.gtceu.good_electronic_circuit.tooltip.0": "§7你的第二块电路", + "item.gtceu.good_electronic_circuit.tooltip.1": "§cMV级电路", + "item.gtceu.good_integrated_circuit": "优质集成电路", + "item.gtceu.good_integrated_circuit.tooltip.0": "§7更小也更强", + "item.gtceu.good_integrated_circuit.tooltip.1": "§6MV级电路", + "item.gtceu.granitic_mineral_sand_dust": "花岗岩矿砂", + "item.gtceu.gravi_star": "重力之星", + "item.gtceu.gravi_star.tooltip": "§7终极下界之星", + "item.gtceu.gravitation_engine_unit": "重力引擎单元", + "item.gtceu.gray_dye_spray_can": "喷漆罐(灰色)", + "item.gtceu.gray_glass_lens": "玻璃透镜(灰色)", + "item.gtceu.green_dye_spray_can": "喷漆罐(绿色)", + "item.gtceu.green_glass_lens": "玻璃透镜(绿色)", + "item.gtceu.hammer_extruder_mold.tooltip": "§7用来制作锤的模头", + "item.gtceu.hazmat_boots": "防化靴子", + "item.gtceu.hazmat_chestpiece": "防化胸甲", + "item.gtceu.hazmat_headpiece": "防化头盔", + "item.gtceu.hazmat_leggings": "防化护腿", + "item.gtceu.highly_advanced_soc": "HASoC", + "item.gtceu.highly_advanced_soc.tooltip": "§7高度先进的系统级芯片", + "item.gtceu.highly_advanced_soc_wafer": "HASoC晶圆", + "item.gtceu.highly_advanced_soc_wafer.tooltip": "§7高度先进的电路原料", + "item.gtceu.hoe_extruder_mold.tooltip": "§7用来制作锄的模头", + "item.gtceu.hpic_chip": "HPIC芯片", + "item.gtceu.hpic_chip.tooltip": "§7高功率集成电路", + "item.gtceu.hpic_wafer": "HPIC晶圆", + "item.gtceu.hpic_wafer.tooltip": "§7高功率集成电路原料", + "item.gtceu.huge_pipe_extruder_mold": "模头(巨型管道)", + "item.gtceu.hv_battery_hull": "大型电池外壳", + "item.gtceu.hv_battery_hull.tooltip": "§7一个空的§6HV§7电池外壳", + "item.gtceu.hv_cadmium_battery": "大型镉电池", + "item.gtceu.hv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_conveyor_module": "§6HV§r传送带", + "item.gtceu.hv_electric_motor": "§6HV§r电动马达", + "item.gtceu.hv_electric_piston": "§6HV§r电力活塞", + "item.gtceu.hv_electric_pump": "§6HV§r电动泵", + "item.gtceu.hv_emitter": "§6HV§r发射器", + "item.gtceu.hv_field_generator": "§6HV§r力场发生器", + "item.gtceu.hv_fluid_regulator": "§6HV§r流体校准器", + "item.gtceu.hv_item_magnet": "§6HV§r物品磁铁", + "item.gtceu.hv_lithium_battery": "大型锂电池", + "item.gtceu.hv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_power_unit": "§6HV§r能量单元", + "item.gtceu.hv_robot_arm": "§6HV§r机械臂", + "item.gtceu.hv_sensor": "§6HV§r传感器", + "item.gtceu.hv_sodium_battery": "大型钠电池", + "item.gtceu.hv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.hv_solar_panel": "高压太阳能板(§6HV§r)", + "item.gtceu.hv_voltage_coil": "高压线圈", + "item.gtceu.hv_voltage_coil.tooltip": "高级线圈", + "item.gtceu.ice_dust": "碎冰", + "item.gtceu.ilc_chip": "IC芯片", + "item.gtceu.ilc_chip.tooltip": "§7集成逻辑电路", + "item.gtceu.ilc_wafer": "ILC晶圆", + "item.gtceu.ilc_wafer.tooltip": "§7集成电路原料", + "item.gtceu.impure_bentonite_dust": "含杂膨润土", + "item.gtceu.impure_cassiterite_sand_dust": "含杂锡石矿砂", + "item.gtceu.impure_pitchblende_dust": "含杂沥青铀矿", + "item.gtceu.impure_rock_salt_dust": "含杂岩盐", + "item.gtceu.impure_salt_dust": "含杂盐", + "item.gtceu.impure_talc_dust": "含杂滑石", + "item.gtceu.inductor": "电感", + "item.gtceu.inductor.tooltip": "§7一个小线圈", + "item.gtceu.inert_metal_mixture_dust": "惰性金属混合物", + "item.gtceu.infinite_water_cover": "无限水覆盖板", + "item.gtceu.infinite_water_cover.tooltip": "§7作§f覆盖板§7时为所附着的容器供§9水§7。", + "item.gtceu.ingot_casting_mold": "模具(锭)", + "item.gtceu.ingot_casting_mold.tooltip": "§7用来制作锭的模具", + "item.gtceu.ingot_extruder_mold": "模头(锭)", + "item.gtceu.ingot_extruder_mold.tooltip": "§7用来……等会,用熔炉不好吗?", + "item.gtceu.invar_lighter": "殷钢打火机", + "item.gtceu.iridium_metal_residue_dust": "铱金属渣", + "item.gtceu.iron_minecart_wheels": "铁矿车车轮", + "item.gtceu.item_detector_cover": "物品探测覆盖板", + "item.gtceu.item_detector_cover.tooltip": "§7作§f覆盖板§7时依照§f物品储量§7发出红石信号。", + "item.gtceu.item_filter": "物品过滤卡", + "item.gtceu.item_filter.tooltip.0": "§7作§f覆盖板§7时过滤§f物品§7的输入/输出。", + "item.gtceu.item_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_smart_filter": "智能物品过滤卡", + "item.gtceu.item_smart_filter.tooltip.0": "作§f覆盖板§7时以§f机器的配方§7过滤§f物品§7的输入/输出。", + "item.gtceu.item_smart_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_tag_filter": "物品标签过滤卡", + "item.gtceu.item_tag_filter.tooltip.0": "§7作§f覆盖板§7时以§f物品标签§7过滤§f物品§7的输入/输出。", + "item.gtceu.item_tag_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.item_voiding_cover": "物品销毁覆盖板", + "item.gtceu.item_voiding_cover.tooltip.0": "§7作§f覆盖板§7时销毁物品。", + "item.gtceu.item_voiding_cover.tooltip.1": "§7加装后使用§f软锤§7激活", + "item.gtceu.iv_battery_hull": "中型钒电池外壳", + "item.gtceu.iv_battery_hull.tooltip": "§7一个空的§1IV§7电池外壳", + "item.gtceu.iv_conveyor_module": "§9IV§r传送带", + "item.gtceu.iv_electric_motor": "§9IV§r电动马达", + "item.gtceu.iv_electric_piston": "§9IV§r电力活塞", + "item.gtceu.iv_electric_pump": "§9IV§r电动泵", + "item.gtceu.iv_emitter": "§9IV§r发射器", + "item.gtceu.iv_field_generator": "§9IV§r力场发生器", + "item.gtceu.iv_fluid_regulator": "§9IV§r流体校准器", + "item.gtceu.iv_power_unit": "§9IV§r能量单元", + "item.gtceu.iv_robot_arm": "§9IV§r机械臂", + "item.gtceu.iv_sensor": "§9IV§r传感器", + "item.gtceu.iv_solar_panel": "强导压太阳能板(§9IV§r)", + "item.gtceu.iv_vanadium_battery": "中型钒电池", + "item.gtceu.iv_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.iv_voltage_coil": "强导压线圈", + "item.gtceu.iv_voltage_coil.tooltip": "精英线圈", + "item.gtceu.lapotron_crystal": "兰波顿水晶", + "item.gtceu.lapotron_crystal.tooltip": "§7可充电电池", + "item.gtceu.lapotronic_energy_orb": "兰波顿能量球", + "item.gtceu.lapotronic_energy_orb.tooltip": "§7可充电电池", + "item.gtceu.lapotronic_energy_orb_cluster": "兰波顿能量球簇", + "item.gtceu.lapotronic_energy_orb_cluster.tooltip": "§7可充电电池", + "item.gtceu.large_pipe_extruder_mold": "模头(大型管道)", + "item.gtceu.light_blue_dye_spray_can": "喷漆罐(淡蓝色)", + "item.gtceu.light_blue_glass_lens": "玻璃透镜(淡蓝色)", + "item.gtceu.light_gray_dye_spray_can": "喷漆罐(淡灰色)", + "item.gtceu.light_gray_glass_lens": "玻璃透镜(淡灰色)", + "item.gtceu.lime_dye_spray_can": "喷漆罐(黄绿色)", + "item.gtceu.lime_glass_lens": "玻璃透镜(黄绿色)", + "item.gtceu.liquid_fuel_jetpack": "液体燃料喷气背包", + "item.gtceu.long_rod_extruder_mold": "模头(长杆)", + "item.gtceu.long_treated_wood_rod": "长防腐木棍", + "item.gtceu.long_wood_rod": "长木棍", + "item.gtceu.lpic_chip": "LPIC芯片", + "item.gtceu.lpic_chip.tooltip": "§7低功率集成电路", + "item.gtceu.lpic_wafer": "LPIC晶圆", + "item.gtceu.lpic_wafer.tooltip": "§7低功率集成电路原料", + "item.gtceu.luv_battery_hull": "大型钒电池外壳", + "item.gtceu.luv_battery_hull.tooltip": "§7一个空的§dLuV§r电池外壳", + "item.gtceu.luv_conveyor_module": "§dLuV§r传送带", + "item.gtceu.luv_electric_motor": "§dLuV§r电动马达", + "item.gtceu.luv_electric_piston": "§dLuV§r电力活塞", + "item.gtceu.luv_electric_pump": "§dLuV§r电动泵", + "item.gtceu.luv_emitter": "§dLuV§r发射器", + "item.gtceu.luv_field_generator": "§dLuV§r力场发生器", + "item.gtceu.luv_fluid_regulator": "§dLuV§r流体校准器", + "item.gtceu.luv_robot_arm": "§dLuV§r机械臂", + "item.gtceu.luv_sensor": "§dLuV§r传感器", + "item.gtceu.luv_solar_panel": "剧差压太阳能板(§dLuV§r)", + "item.gtceu.luv_vanadium_battery": "大型钒电池", + "item.gtceu.luv_vanadium_battery.tooltip": "§7可充电电池", + "item.gtceu.luv_voltage_coil": "剧差压线圈", + "item.gtceu.luv_voltage_coil.tooltip": "大师线圈", + "item.gtceu.lv_battery_hull": "小型电池外壳", + "item.gtceu.lv_battery_hull.tooltip": "§7一个空的§7LV§7电池外壳", + "item.gtceu.lv_cadmium_battery": "小型镉电池", + "item.gtceu.lv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_conveyor_module": "§7LV§r传送带", + "item.gtceu.lv_electric_motor": "§7LV§r电动马达", + "item.gtceu.lv_electric_piston": "§7LV§r电力活塞", + "item.gtceu.lv_electric_pump": "§7LV§r电动泵", + "item.gtceu.lv_emitter": "§7LV§r发射器", + "item.gtceu.lv_field_generator": "§7LV§r力场发生器", + "item.gtceu.lv_fluid_regulator": "§7LV§r流体校准器", + "item.gtceu.lv_item_magnet": "§7LV§r物品磁铁", + "item.gtceu.lv_lithium_battery": "小型锂电池", + "item.gtceu.lv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_power_unit": "§7LV§r能量单元", + "item.gtceu.lv_robot_arm": "§7LV§r机械臂", + "item.gtceu.lv_sensor": "§7LV§r传感器", + "item.gtceu.lv_sodium_battery": "小型钠电池", + "item.gtceu.lv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.lv_solar_panel": "低压太阳能板(§7LV§r)", + "item.gtceu.lv_voltage_coil": "低压线圈", + "item.gtceu.lv_voltage_coil.tooltip": "基础线圈", + "item.gtceu.machine_controller.tooltip": "§7作§f覆盖板§7时可以§f开/关§7机器。", + "item.gtceu.machine_controller_cover": "机器控制覆盖板", + "item.gtceu.machine_memory_card": "机器内存卡", + "item.gtceu.magenta_dye_spray_can": "喷漆罐(品红色)", + "item.gtceu.magenta_glass_lens": "玻璃透镜(品红色)", + "item.gtceu.maintenance_detector_cover": "维护探测覆盖板", + "item.gtceu.mask_filter": "防毒面具过滤罐", + "item.gtceu.matchbox": "火柴盒", + "item.gtceu.matches": "火柴", + "item.gtceu.max_battery": "终极电池", + "item.gtceu.max_battery.tooltip": "§7填满就能通关Minecraft", + "item.gtceu.max_voltage_coil.tooltip": "至高线圈", + "item.gtceu.meat_dust": "肉末", + "item.gtceu.micro_processor": "微型处理器", + "item.gtceu.micro_processor.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor.tooltip.1": "§eMV级电路", + "item.gtceu.micro_processor_assembly": "微型处理器集群", + "item.gtceu.micro_processor_assembly.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_assembly.tooltip.1": "§eHV级电路", + "item.gtceu.micro_processor_computer": "微型处理器超级计算机", + "item.gtceu.micro_processor_computer.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_computer.tooltip.1": "§eEV级电路", + "item.gtceu.micro_processor_mainframe": "微型处理器主机", + "item.gtceu.micro_processor_mainframe.tooltip.0": "§7运算速度惊人!", + "item.gtceu.micro_processor_mainframe.tooltip.1": "§eIV级电路", + "item.gtceu.microchip_processor": "微芯片处理器", + "item.gtceu.microchip_processor.tooltip.0": "§7卓越的基础电路", + "item.gtceu.microchip_processor.tooltip.1": "§eLV级电路", + "item.gtceu.mpic_chip": "MPIC芯片", + "item.gtceu.mpic_chip.tooltip": "§7功率集成电路", + "item.gtceu.mpic_wafer": "MPIC晶圆", + "item.gtceu.mpic_wafer.tooltip": "§7功率集成电路原料", + "item.gtceu.multilayer_fiber_reinforced_circuit_board": "多层纤维强化电路基板", + "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip": "§7精英电路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board": "多层纤维强化印刷电路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip": "§7精英级电路基板", + "item.gtceu.mv_battery_hull": "中型电池外壳", + "item.gtceu.mv_battery_hull.tooltip": "§7一个空的§bMV§7电池外壳", + "item.gtceu.mv_cadmium_battery": "中型镉电池", + "item.gtceu.mv_cadmium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_conveyor_module": "§bMV§r传送带", + "item.gtceu.mv_electric_motor": "§bMV§r电动马达", + "item.gtceu.mv_electric_piston": "§bMV§r电力活塞", + "item.gtceu.mv_electric_pump": "§bMV§r电动泵", + "item.gtceu.mv_emitter": "§bMV§r发射器", + "item.gtceu.mv_field_generator": "§bMV§r力场发生器", + "item.gtceu.mv_fluid_regulator": "§bMV§r流体校准器", + "item.gtceu.mv_lithium_battery": "中型锂电池", + "item.gtceu.mv_lithium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_power_unit": "§bMV§r能量单元", + "item.gtceu.mv_robot_arm": "§bMV§r机械臂", + "item.gtceu.mv_sensor": "§bMV§r传感器", + "item.gtceu.mv_sodium_battery": "中型钠电池", + "item.gtceu.mv_sodium_battery.tooltip": "§7可充电电池", + "item.gtceu.mv_solar_panel": "中压太阳能板(§bMV§r)", + "item.gtceu.mv_voltage_coil": "中压线圈", + "item.gtceu.mv_voltage_coil.tooltip": "优质线圈", + "item.gtceu.name_casting_mold": "模具(命名)", + "item.gtceu.name_casting_mold.tooltip": "§7用来在冲压机床中为物品命名的模具(用铁砧重命名模具)", + "item.gtceu.nan_certificate": "不再是菜鸟的证明", + "item.gtceu.nan_certificate.tooltip": "已接受挑战!", + "item.gtceu.nand_chip": "NAND芯片", + "item.gtceu.nand_chip.tooltip.0": "§7卓越的简单电路", + "item.gtceu.nand_chip.tooltip.1": "§6ULV级电路", + "item.gtceu.nand_memory_chip": "NAND存储器芯片", + "item.gtceu.nand_memory_chip.tooltip": "§7与非逻辑门", + "item.gtceu.nand_memory_wafer": "NAND存储器晶圆", + "item.gtceu.nand_memory_wafer.tooltip": "§7逻辑门原料", + "item.gtceu.nano_cpu_chip": "纳米CPU芯片", + "item.gtceu.nano_cpu_chip.tooltip": "§7纳米中央处理器", + "item.gtceu.nano_cpu_wafer": "纳米CPU晶圆", + "item.gtceu.nano_cpu_wafer.tooltip": "§7纳米电路原料", + "item.gtceu.nano_processor": "纳米处理器", + "item.gtceu.nano_processor.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor.tooltip.1": "§bHV级电路", + "item.gtceu.nano_processor_assembly": "纳米处理器集群", + "item.gtceu.nano_processor_assembly.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_assembly.tooltip.1": "§bEV级电路", + "item.gtceu.nano_processor_computer": "纳米处理器超级计算机", + "item.gtceu.nano_processor_computer.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_computer.tooltip.1": "§bIV级电路", + "item.gtceu.nano_processor_mainframe": "纳米处理器主机", + "item.gtceu.nano_processor_mainframe.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_mainframe.tooltip.1": "§bLuV级电路", + "item.gtceu.nano_saber": "纳米剑", + "item.gtceu.nano_saber.tooltip": "§7尝尝龙神之剑!", + "item.gtceu.nanomuscle_boots": "纳米肌体™套装靴子", + "item.gtceu.nanomuscle_chestplate": "纳米肌体™套装胸甲", + "item.gtceu.nanomuscle_helmet": "纳米肌体™套装头盔", + "item.gtceu.nanomuscle_leggings": "纳米肌体™套装护腿", + "item.gtceu.naquadah_boule": "硅岩掺杂的单晶硅", + "item.gtceu.naquadah_boule.tooltip": "§7电路原料", + "item.gtceu.naquadah_wafer": "硅岩掺杂的晶圆", + "item.gtceu.naquadah_wafer.tooltip": "§7电路原料", + "item.gtceu.neuro_processing_unit": "神经处理单元", + "item.gtceu.neuro_processing_unit.tooltip": "§7神经CPU", + "item.gtceu.neutron_reflector": "铱中子反射板", + "item.gtceu.neutron_reflector.tooltip": "§7坚不可摧", + "item.gtceu.neutronium_boule": "中子素掺杂的单晶硅", + "item.gtceu.neutronium_boule.tooltip": "§7电路原料", + "item.gtceu.neutronium_wafer": "中子素掺杂的晶圆", + "item.gtceu.neutronium_wafer.tooltip": "§7电路原料", + "item.gtceu.nightvision_goggles": "夜视护目镜", + "item.gtceu.nor_memory_chip": "NOR存储器芯片", + "item.gtceu.nor_memory_chip.tooltip": "§7或非逻辑门", + "item.gtceu.nor_memory_wafer": "NOR存储器晶圆", + "item.gtceu.nor_memory_wafer.tooltip": "§7逻辑门原料", + "item.gtceu.normal_pipe_extruder_mold": "模头(普通管道)", + "item.gtceu.nugget_casting_mold": "模具(粒)", + "item.gtceu.nugget_casting_mold.tooltip": "§7用来制作粒的模具", + "item.gtceu.opv_conveyor_module": "§9§lOpV§r传送带", + "item.gtceu.opv_electric_motor": "§9§lOpV§r电动马达", + "item.gtceu.opv_electric_piston": "§9§lOpV§r电力活塞", + "item.gtceu.opv_electric_pump": "§9§lOpV§r电动泵", + "item.gtceu.opv_emitter": "§9OpV§r发射器", + "item.gtceu.opv_field_generator": "§9§lOpV§r力场发生器", + "item.gtceu.opv_fluid_regulator": "§9§lOpV§r流体校准器", + "item.gtceu.opv_robot_arm": "§9§lOpV§r机械臂", + "item.gtceu.opv_sensor": "§9§lOpV§r传感器", + "item.gtceu.opv_voltage_coil.tooltip": "传奇线圈", + "item.gtceu.orange_dye_spray_can": "喷漆罐(橙色)", + "item.gtceu.orange_glass_lens": "玻璃透镜(橙色)", + "item.gtceu.palladium_raw_dust": "粗钯粉", + "item.gtceu.paper_dust": "纸屑", + "item.gtceu.paracetamol_pill": "对乙酰氨基酚药片", + "item.gtceu.petri_dish": "培养皿", + "item.gtceu.petri_dish.tooltip": "§7用来培育细胞", + "item.gtceu.phenolic_circuit_board": "酚醛树脂电路基板", + "item.gtceu.phenolic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.phenolic_printed_circuit_board": "酚醛树脂印刷电路基板", + "item.gtceu.phenolic_printed_circuit_board.tooltip": "§7优质电路基板", + "item.gtceu.phosphorus_boule": "磷掺杂的单晶硅", + "item.gtceu.phosphorus_boule.tooltip": "§7电路原料", + "item.gtceu.phosphorus_wafer": "磷掺杂的晶圆", + "item.gtceu.phosphorus_wafer.tooltip": "§7电路原料", + "item.gtceu.pickaxe_extruder_mold.tooltip": "§7用来制作镐的模头", + "item.gtceu.pill_casting_mold": "模具(药片)", + "item.gtceu.pink_dye_spray_can": "喷漆罐(粉红色)", + "item.gtceu.pink_glass_lens": "玻璃透镜(粉红色)", + "item.gtceu.pipe.huge_extruder_mold.tooltip": "§7用来制作占据整个方块的管道的模头", + "item.gtceu.pipe.large_extruder_mold.tooltip": "§7用来制作大型管道的模头", + "item.gtceu.pipe.normal_extruder_mold.tooltip": "§7用来制作管道的模头", + "item.gtceu.pipe.small_extruder_mold.tooltip": "§7用来制作小型管道的模头", + "item.gtceu.pipe.tiny_extruder_mold.tooltip": "§7用来制作微型管道的模头", + "item.gtceu.pitchblende_dust": "沥青铀矿", + "item.gtceu.plant_ball": "植物球", + "item.gtceu.plastic_circuit_board": "塑料电路基板", + "item.gtceu.plastic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.plastic_printed_circuit_board": "塑料印刷电路基板", + "item.gtceu.plastic_printed_circuit_board.tooltip": "§7优质电路基板", + "item.gtceu.plate_casting_mold": "模具(板)", + "item.gtceu.plate_casting_mold.tooltip": "§7用来制作板的模具", + "item.gtceu.plate_extruder_mold": "模头(板)", + "item.gtceu.plate_extruder_mold.tooltip": "§7用来制作板的模头", + "item.gtceu.platinum_group_sludge_dust": "铂系矿泥", + "item.gtceu.platinum_lighter": "铂打火机", + "item.gtceu.platinum_raw_dust": "粗铂粉", + "item.gtceu.platinum_sludge_residue_dust": "铂泥渣", + "item.gtceu.portable_debug_scanner": "便携式调试扫描仪", + "item.gtceu.portable_scanner": "便携式扫描仪", + "item.gtceu.power_thruster": "电力推进器", + "item.gtceu.programmed_circuit": "编程电路", + "item.gtceu.programmed_circuit.tooltip.0": "右击打开配置页面", + "item.gtceu.programmed_circuit.tooltip.1": "潜行右击有虚拟电路槽的", + "item.gtceu.programmed_circuit.tooltip.2": "机器,将其设置为本电路", + "item.gtceu.programmed_circuit.tooltip.3": "的值。", + "item.gtceu.prospector.hv": "进阶探矿仪(§6HV§r)", + "item.gtceu.prospector.luv": "超级探矿仪(§dLuV§r)", + "item.gtceu.prospector.lv": "探矿仪(§7LV§r)", + "item.gtceu.pure_bentonite_dust": "纯净膨润土", + "item.gtceu.pure_cassiterite_sand_dust": "纯净锡石矿砂", + "item.gtceu.pure_pitchblende_dust": "纯净沥青铀矿", + "item.gtceu.pure_rock_salt_dust": "纯净岩盐", + "item.gtceu.pure_salt_dust": "纯净盐", + "item.gtceu.pure_talc_dust": "纯净滑石", + "item.gtceu.purified_bentonite_ore": "纯净膨润土", + "item.gtceu.purified_cassiterite_sand_ore": "纯净锡石矿砂", + "item.gtceu.purified_pitchblende_ore": "纯净沥青铀矿", + "item.gtceu.purified_talc_ore": "纯净滑石", + "item.gtceu.purple_drink": "紫色饮料", + "item.gtceu.purple_dye_spray_can": "喷漆罐(紫色)", + "item.gtceu.purple_glass_lens": "玻璃透镜(紫色)", + "item.gtceu.qbit_cpu_chip": "量子位CPU芯片", + "item.gtceu.qbit_cpu_chip.tooltip": "§7量子位中央处理器", + "item.gtceu.qbit_cpu_wafer": "量子位CPU晶圆", + "item.gtceu.qbit_cpu_wafer.tooltip": "§7量子位电路原料", + "item.gtceu.quantum_eye": "量子之眼", + "item.gtceu.quantum_eye.tooltip": "§7改良的末影之眼", + "item.gtceu.quantum_processor": "量子处理器", + "item.gtceu.quantum_processor.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor.tooltip.1": "§aEV级电路", + "item.gtceu.quantum_processor_assembly": "量子处理器集群", + "item.gtceu.quantum_processor_assembly.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_assembly.tooltip.1": "§aIV级电路", + "item.gtceu.quantum_processor_computer": "量子处理器超级计算机", + "item.gtceu.quantum_processor_computer.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_computer.tooltip.1": "§aLuV级电路", + "item.gtceu.quantum_processor_mainframe": "量子处理器主机", + "item.gtceu.quantum_processor_mainframe.tooltip.0": "§7量子计算终成现实!", + "item.gtceu.quantum_processor_mainframe.tooltip.1": "§aZPM级电路", + "item.gtceu.quantum_star": "量子之星", + "item.gtceu.quantum_star.tooltip": "§7改良的下界之星", + "item.gtceu.quarktech_boots": "夸克高科™套装靴子", + "item.gtceu.quarktech_chestplate": "夸克高科™套装胸甲", + "item.gtceu.quarktech_helmet": "夸克高科™套装头盔", + "item.gtceu.quarktech_leggings": "夸克高科™套装护腿", + "item.gtceu.quartz_sand_dust": "石英砂", + "item.gtceu.rad_away_pill": "消辐宁™药片", + "item.gtceu.ram_chip": "RAM芯片", + "item.gtceu.ram_chip.tooltip": "§7随机存取存储器", + "item.gtceu.ram_wafer": "RAM晶圆", + "item.gtceu.ram_wafer.tooltip": "§7内存原料", + "item.gtceu.rare_earth_dust": "稀土", + "item.gtceu.rarest_metal_mixture_dust": "稀有金属混合物", + "item.gtceu.raw_crystal_chip": "晶体芯片原料", + "item.gtceu.raw_crystal_chip.tooltip": "§7晶体处理器原料", + "item.gtceu.raw_crystal_chip_parts": "晶体芯片部件原料", + "item.gtceu.raw_crystal_chip_parts.tooltip": "§7晶体处理器部件原料", + "item.gtceu.red_dye_spray_can": "喷漆罐(红色)", + "item.gtceu.red_glass_lens": "玻璃透镜(红色)", + "item.gtceu.refined_bentonite_ore": "精炼膨润土", + "item.gtceu.refined_cassiterite_sand_ore": "精炼锡石矿砂", + "item.gtceu.refined_pitchblende_ore": "精炼沥青铀矿", + "item.gtceu.refined_talc_ore": "精炼滑石", + "item.gtceu.resin_circuit_board": "覆膜电路基板", + "item.gtceu.resin_circuit_board.tooltip": "§7电路的基底", + "item.gtceu.resin_printed_circuit_board": "覆膜印刷电路基板", + "item.gtceu.resin_printed_circuit_board.tooltip": "§7基础电路基板", + "item.gtceu.resistor": "电阻", + "item.gtceu.resistor.tooltip": "§7基础电子元件", + "item.gtceu.ring_extruder_mold": "模头(环)", + "item.gtceu.ring_extruder_mold.tooltip": "§7用来制作环的模头", + "item.gtceu.robot.arm.tooltip": "作§f覆盖板§7时限制§f物品§7到特定数量。", + "item.gtceu.rock_salt_dust": "岩盐", + "item.gtceu.rod_extruder_mold": "模头(杆)", + "item.gtceu.rod_extruder_mold.tooltip": "§7用来制作杆的模头", + "item.gtceu.rod_long_extruder_mold.tooltip": "§7用来制作长杆的模头", + "item.gtceu.rotor_casting_mold": "模具(转子)", + "item.gtceu.rotor_casting_mold.tooltip": "§7用来制作转子的模具", + "item.gtceu.rotor_extruder_mold": "模头(转子)", + "item.gtceu.rotor_extruder_mold.tooltip": "§7用来制作转子的模头", + "item.gtceu.rubber_boat": "橡胶木船", + "item.gtceu.rubber_chest_boat": "橡胶木运输船", + "item.gtceu.rubber_gloves": "橡胶手套", + "item.gtceu.salt_dust": "盐", + "item.gtceu.saw_extruder_mold.tooltip": "§7用来制作锯的模头", + "item.gtceu.shovel_extruder_mold.tooltip": "§7用来制作锹的模头", + "item.gtceu.shutter_module_cover": "扇板", + "item.gtceu.shutter_module_cover.tooltip": "§7作§f覆盖板§7时§f阻止§7机器侧面的任何§f传输§7行为。", + "item.gtceu.silicon_boule": "单晶硅", + "item.gtceu.silicon_boule.tooltip": "§7电路原料", + "item.gtceu.silicon_wafer": "硅晶圆", + "item.gtceu.silicon_wafer.tooltip": "§7电路原料", + "item.gtceu.simple_soc": "简易SoC", + "item.gtceu.simple_soc.tooltip": "§7简易系统级芯片", + "item.gtceu.simple_soc_wafer": "简易SoC晶圆", + "item.gtceu.simple_soc_wafer.tooltip": "§7简易电路原料", + "item.gtceu.small_ash_dust": "小堆灰烬", + "item.gtceu.small_basaltic_mineral_sand_dust": "小堆玄武岩矿砂", + "item.gtceu.small_bentonite_dust": "小堆膨润土", + "item.gtceu.small_blaze_dust": "小堆烈焰粉", + "item.gtceu.small_bone_dust": "小堆骨粉", + "item.gtceu.small_cassiterite_sand_dust": "小堆锡石矿砂", + "item.gtceu.small_dark_ash_dust": "小堆黑色灰烬", + "item.gtceu.small_fullers_earth_dust": "小堆漂白土", + "item.gtceu.small_garnet_sand_dust": "小堆石榴石砂", + "item.gtceu.small_gear_casting_mold": "模具(小型齿轮)", + "item.gtceu.small_gear_extruder_mold": "模头(小型齿轮)", + "item.gtceu.small_glauconite_sand_dust": "小堆海绿石砂", + "item.gtceu.small_granitic_mineral_sand_dust": "小堆花岗岩矿砂", + "item.gtceu.small_gunpowder_dust": "小堆火药", + "item.gtceu.small_ice_dust": "小堆碎冰", + "item.gtceu.small_inert_metal_mixture_dust": "小堆惰性金属混合物", + "item.gtceu.small_iridium_metal_residue_dust": "小堆铱金属渣", + "item.gtceu.small_meat_dust": "小堆肉末", + "item.gtceu.small_palladium_raw_dust": "小堆粗钯粉", + "item.gtceu.small_paper_dust": "小堆纸屑", + "item.gtceu.small_pipe_extruder_mold": "模头(小型管道)", + "item.gtceu.small_pitchblende_dust": "小堆沥青铀矿", + "item.gtceu.small_platinum_group_sludge_dust": "小堆铂系矿泥", + "item.gtceu.small_platinum_raw_dust": "小堆粗铂粉", + "item.gtceu.small_platinum_sludge_residue_dust": "小堆铂泥渣", + "item.gtceu.small_quartz_sand_dust": "小堆石英砂", + "item.gtceu.small_rare_earth_dust": "小堆稀土", + "item.gtceu.small_rarest_metal_mixture_dust": "小堆稀有金属混合物", + "item.gtceu.small_rock_salt_dust": "小堆岩盐", + "item.gtceu.small_salt_dust": "小堆盐", + "item.gtceu.small_sugar_dust": "小堆糖", + "item.gtceu.small_talc_dust": "小堆滑石", + "item.gtceu.small_treated_wood_dust": "小堆防腐木浆", + "item.gtceu.small_wheat_dust": "小堆面粉", + "item.gtceu.small_wood_dust": "小堆木浆", + "item.gtceu.smd_capacitor": "贴片电容", + "item.gtceu.smd_capacitor.tooltip": "§7电子元件", + "item.gtceu.smd_diode": "贴片二极管", + "item.gtceu.smd_diode.tooltip": "§7电子元件", + "item.gtceu.smd_inductor": "贴片电感", + "item.gtceu.smd_inductor.tooltip": "§7电子元件", + "item.gtceu.smd_resistor": "贴片电阻", + "item.gtceu.smd_resistor.tooltip": "§7电子元件", + "item.gtceu.smd_transistor": "贴片晶体管", + "item.gtceu.smd_transistor.tooltip": "§7电子元件", + "item.gtceu.soc": "SoC", + "item.gtceu.soc.tooltip": "§7系统级芯片", + "item.gtceu.soc_wafer": "SoC晶圆", + "item.gtceu.soc_wafer.tooltip": "§7基础电路原料", + "item.gtceu.solar_panel": "太阳能板", + "item.gtceu.solar_panel.tooltip.0": "§7愿太阳与你同在。", + "item.gtceu.solar_panel.tooltip.1": "§7作§f覆盖板§7时利用§e太阳§7生产§f能量§7。", + "item.gtceu.solvent_spray_can": "喷漆罐(溶剂)", + "item.gtceu.stainless_steel_fluid_cell": "%s不锈钢单元", + "item.gtceu.steel_fluid_cell": "%s钢单元", + "item.gtceu.steel_minecart_wheels": "钢矿车车轮", + "item.gtceu.stem_cells": "干细胞", + "item.gtceu.stem_cells.tooltip": "§7智慧原料", + "item.gtceu.sticky_resin": "黏性树脂", + "item.gtceu.storage_cover": "存储覆盖板", + "item.gtceu.sugar_gem": "方糖", + "item.gtceu.sus_record": "音乐唱片", + "item.gtceu.sus_record.desc": "§7可疑!", + "item.gtceu.sword_extruder_mold.tooltip": "§7用来制作剑刃的模头", + "item.gtceu.tag_filter.tooltip.0": "作§f覆盖板§7时以§f标签§7过滤§f物品§7的输入/输出。", + "item.gtceu.tag_filter.tooltip.1": "亦可为§f传送带§7和§f机械臂§7提供此功能。", + "item.gtceu.talc_dust": "滑石", + "item.gtceu.tantalum_capacitor": "钽电容", + "item.gtceu.terminal": "终端", + "item.gtceu.terminal.tooltip": "潜行右击多方块控制器以自动搭建此多方块结构", + "item.gtceu.tiny_ash_dust": "小撮灰烬", + "item.gtceu.tiny_basaltic_mineral_sand_dust": "小撮玄武岩矿砂", + "item.gtceu.tiny_bentonite_dust": "小撮膨润土", + "item.gtceu.tiny_blaze_dust": "小撮烈焰粉", + "item.gtceu.tiny_bone_dust": "小撮骨粉", + "item.gtceu.tiny_cassiterite_sand_dust": "小撮锡石矿砂", + "item.gtceu.tiny_dark_ash_dust": "小撮黑色灰烬", + "item.gtceu.tiny_fullers_earth_dust": "小撮漂白土", + "item.gtceu.tiny_garnet_sand_dust": "小撮石榴石砂", + "item.gtceu.tiny_glauconite_sand_dust": "小撮海绿石砂", + "item.gtceu.tiny_granitic_mineral_sand_dust": "小撮花岗岩矿砂", + "item.gtceu.tiny_gunpowder_dust": "小撮火药", + "item.gtceu.tiny_ice_dust": "小撮碎冰", + "item.gtceu.tiny_inert_metal_mixture_dust": "小撮惰性金属混合物", + "item.gtceu.tiny_iridium_metal_residue_dust": "小撮铱金属渣", + "item.gtceu.tiny_meat_dust": "小撮肉末", + "item.gtceu.tiny_palladium_raw_dust": "小撮粗钯粉", + "item.gtceu.tiny_paper_dust": "小撮纸屑", + "item.gtceu.tiny_pipe_extruder_mold": "模头(微型管道)", + "item.gtceu.tiny_pitchblende_dust": "小撮沥青铀矿", + "item.gtceu.tiny_platinum_group_sludge_dust": "小撮铂系矿泥", + "item.gtceu.tiny_platinum_raw_dust": "小撮粗铂粉", + "item.gtceu.tiny_platinum_sludge_residue_dust": "小撮铂泥渣", + "item.gtceu.tiny_quartz_sand_dust": "小撮石英砂", + "item.gtceu.tiny_rare_earth_dust": "小撮稀土", + "item.gtceu.tiny_rarest_metal_mixture_dust": "小撮稀有金属混合物", + "item.gtceu.tiny_rock_salt_dust": "小撮岩盐", + "item.gtceu.tiny_salt_dust": "小撮盐", + "item.gtceu.tiny_sugar_dust": "小撮糖", + "item.gtceu.tiny_talc_dust": "小撮滑石", + "item.gtceu.tiny_treated_wood_dust": "小撮防腐木浆", + "item.gtceu.tiny_wheat_dust": "小撮面粉", + "item.gtceu.tiny_wood_dust": "小撮木浆", + "item.gtceu.titanium_fluid_cell": "%s钛单元", + "item.gtceu.tool.aoe.columns": "列", + "item.gtceu.tool.aoe.layers": "层", + "item.gtceu.tool.aoe.rows": "行", + "item.gtceu.tool.axe": "%s斧", + "item.gtceu.tool.behavior.aoe_mining": "§5作用范围:§f%sx%sx%s", + "item.gtceu.tool.behavior.block_rotation": "§2精械师傅:§f旋转方块", + "item.gtceu.tool.behavior.crop_harvesting": "§a庄稼收割:§f收获成熟的作物", + "item.gtceu.tool.behavior.damage_boost": "§4伤害增益:§f对%s造成额外伤害", + "item.gtceu.tool.behavior.grass_path": "§e园林策划:§f制造草径", + "item.gtceu.tool.behavior.ground_tilling": "§e耕地农夫:§f耕耘土地", + "item.gtceu.tool.behavior.plunger": "§9水管工人:§f清除流体", + "item.gtceu.tool.behavior.rail_rotation": "§e铁路技工:§f旋转轨道", + "item.gtceu.tool.behavior.relocate_mining": "§2磁力吸引:§f吸入采掘的方块与生物掉落物", + "item.gtceu.tool.behavior.remove_wax": "§6清洁试剂:§f脱蜡", + "item.gtceu.tool.behavior.scrape": "§b抛光工艺:§f除锈", + "item.gtceu.tool.behavior.shield_disable": "§c野兽蛮攻:§f无视盾牌", + "item.gtceu.tool.behavior.silk_ice": "§b切冰利刃:§f精准采集冰块", + "item.gtceu.tool.behavior.strip_log": "§5林业工匠:§f剥去原木的表皮", + "item.gtceu.tool.behavior.torch_place": "§e洞窟探客:§f右击放置火把", + "item.gtceu.tool.behavior.tree_felling": "§4伐木好手:§f连锁砍树", + "item.gtceu.tool.butchery_knife": "%s屠刀", + "item.gtceu.tool.butchery_knife.tooltip": "§8攻击速度较慢", + "item.gtceu.tool.buzzsaw": "%s圆锯(§7LV§r)", + "item.gtceu.tool.buzzsaw.tooltip": "§8并不适合用来采掘方块", + "item.gtceu.tool.crowbar": "%s撬棍", + "item.gtceu.tool.crowbar.tooltip": "§8卸下覆盖板", + "item.gtceu.tool.ev_drill": "%s电钻(§5EV§r)", + "item.gtceu.tool.file": "%s锉", + "item.gtceu.tool.hammer": "%s锻造锤", + "item.gtceu.tool.hammer.tooltip": "§8锤碎而非采掘方块", + "item.gtceu.tool.harvest_level.0": "§8木", + "item.gtceu.tool.harvest_level.1": "§7石头", + "item.gtceu.tool.harvest_level.2": "§a铁", + "item.gtceu.tool.harvest_level.3": "§b钻石", + "item.gtceu.tool.harvest_level.4": "§d下界合金", + "item.gtceu.tool.harvest_level.5": "§9铿铀", + "item.gtceu.tool.harvest_level.6": "§c中子素", + "item.gtceu.tool.hoe": "%s锄", + "item.gtceu.tool.hv_chainsaw": "%s链锯(§6HV§r)", + "item.gtceu.tool.hv_drill": "%s电钻(§6HV§r)", + "item.gtceu.tool.hv_wirecutter": "%s剪线钳(HV)", + "item.gtceu.tool.hv_wrench": "%s扳手(§6HV§r)", + "item.gtceu.tool.hv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.iv_drill": "%s电钻(§9IV§r)", + "item.gtceu.tool.iv_wirecutter": "%s剪线钳(IV)", + "item.gtceu.tool.iv_wrench": "%s扳手(§9IV§r)", + "item.gtceu.tool.iv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.knife": "%s刀", + "item.gtceu.tool.lighter.platinum.tooltip": "§7上面刻着一位知名的恶作剧大师", + "item.gtceu.tool.lv_chainsaw": "%s链锯(§7LV§r)", + "item.gtceu.tool.lv_drill": "%s电钻(§7LV§r)", + "item.gtceu.tool.lv_screwdriver": "%s螺丝刀(§7LV§r)", + "item.gtceu.tool.lv_screwdriver.tooltip": "§8调整覆盖板和机器", + "item.gtceu.tool.lv_wirecutter": "%s剪线钳(LV)", + "item.gtceu.tool.lv_wrench": "%s扳手(§7LV§r)", + "item.gtceu.tool.lv_wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.tool.mallet": "%s软锤", + "item.gtceu.tool.mallet.tooltip.0": "§8潜行以在当前配方完成后暂停机器。", + "item.gtceu.tool.mallet.tooltip.1": "§8关/开机", + "item.gtceu.tool.matchbox.tooltip": "§7别把它当成玩具车了", + "item.gtceu.tool.mining_hammer": "%s采矿锤", + "item.gtceu.tool.mining_hammer.tooltip": "§8一次性开采大片区域(除非你蹲下)", + "item.gtceu.tool.mortar": "%s研钵", + "item.gtceu.tool.mv_chainsaw": "%s链锯(§bMV§r)", + "item.gtceu.tool.mv_drill": "%s电钻(§bMV§r)", + "item.gtceu.tool.pickaxe": "%s镐", + "item.gtceu.tool.plunger": "%s搋子", + "item.gtceu.tool.plunger.tooltip": "§8从机器中抽除流体", + "item.gtceu.tool.replace_tool_head": "在合成栏用新的工具头替换", + "item.gtceu.tool.rolling_pin": "%s擀面杖", + "item.gtceu.tool.saw": "%s锯", + "item.gtceu.tool.screwdriver": "%s螺丝刀", + "item.gtceu.tool.screwdriver.tooltip": "§8调整覆盖板和机器", + "item.gtceu.tool.scythe": "%s镰刀", + "item.gtceu.tool.scythe.tooltip": "§8因为镰刀(scythe)没有意义(sense)", + "item.gtceu.tool.shears": "%s剪刀", + "item.gtceu.tool.shovel": "%s锹", + "item.gtceu.tool.spade": "%s铲", + "item.gtceu.tool.spade.tooltip": "§8一次性开采大片区域(除非你蹲下)", + "item.gtceu.tool.sword": "%s剑", + "item.gtceu.tool.tooltip.attack_damage": "§c攻击伤害§r:%s", + "item.gtceu.tool.tooltip.attack_speed": "§9攻击速度§r:%s", + "item.gtceu.tool.tooltip.crafting_uses": "§a合成耐久度§r:%s", + "item.gtceu.tool.tooltip.general_uses": "§b耐久度§r:%s", + "item.gtceu.tool.tooltip.harvest_level": "§e采掘等级:%s", + "item.gtceu.tool.tooltip.harvest_level_extra": "§e采掘等级:%s§f(%s§f)", + "item.gtceu.tool.tooltip.max_uses": "§e最大耐久度§r:%s", + "item.gtceu.tool.tooltip.mining_speed": "§d采掘速度§r:%s", + "item.gtceu.tool.tooltip.repair_info": "§8按住SHIFT显示修复详情", + "item.gtceu.tool.tooltip.repair_material": "§8修复材料§r:§f§a%s", + "item.gtceu.tool.usable_as": "§8可用作§r:§f%s", + "item.gtceu.tool.wire_cutter": "%s剪线钳", + "item.gtceu.tool.wrench": "%s扳手", + "item.gtceu.tool.wrench.tooltip": "§8按住左键以拆卸机器", + "item.gtceu.transistor": "晶体管", + "item.gtceu.transistor.tooltip": "§7基础电子元件", + "item.gtceu.treated_wood_boat": "防腐木船", + "item.gtceu.treated_wood_bolt": "短防腐木棍", + "item.gtceu.treated_wood_chest_boat": "防腐木运输船", + "item.gtceu.treated_wood_dust": "防腐木浆", + "item.gtceu.treated_wood_plate": "防腐木板", + "item.gtceu.treated_wood_rod": "防腐木棍", + "item.gtceu.tungsten_grinding_head": "钨研磨头", + "item.gtceu.tungsten_steel_fluid_cell": "%s钨钢单元", + "item.gtceu.turbine_rotor": "%s涡轮转子", + "item.gtceu.turbine_rotor.tooltip": "供涡轮机使用的涡轮转子", + "item.gtceu.uev_conveyor_module": "§aUEV§r传送带", + "item.gtceu.uev_electric_motor": "§aUEV§r电动马达", + "item.gtceu.uev_electric_piston": "§aUEV§r电力活塞", + "item.gtceu.uev_electric_pump": "§aUEV§r电动泵", + "item.gtceu.uev_emitter": "§aUEV§r发射器", + "item.gtceu.uev_field_generator": "§aUEV§r力场发生器", + "item.gtceu.uev_fluid_regulator": "§aUEV§r流体校准器", + "item.gtceu.uev_robot_arm": "§aUEV§r机械臂", + "item.gtceu.uev_sensor": "§aUEV§r传感器", + "item.gtceu.uev_voltage_coil.tooltip": "超凡线圈", + "item.gtceu.uhpic_chip": "UHPIC芯片", + "item.gtceu.uhpic_chip.tooltip": "§7超高功率集成电路", + "item.gtceu.uhpic_wafer": "UHPIC晶圆", + "item.gtceu.uhpic_wafer.tooltip": "§7超高功率集成电路原料", + "item.gtceu.uhv_conveyor_module": "§4UHV§r传送带", + "item.gtceu.uhv_electric_motor": "§4UHV§r电动马达", + "item.gtceu.uhv_electric_piston": "§4UHV§r电力活塞", + "item.gtceu.uhv_electric_pump": "§4UHV§r电动泵", + "item.gtceu.uhv_emitter": "§4UHV§r发射器", + "item.gtceu.uhv_field_generator": "§4UHV§r力场发生器", + "item.gtceu.uhv_fluid_regulator": "§4UHV§r流体校准器", + "item.gtceu.uhv_robot_arm": "§4UHV§r机械臂", + "item.gtceu.uhv_sensor": "§4UHV§r传感器", + "item.gtceu.uhv_voltage_coil.tooltip": "极致线圈", + "item.gtceu.uiv_conveyor_module": "§2UIV§r传送带", + "item.gtceu.uiv_electric_motor": "§2UIV§r电动马达", + "item.gtceu.uiv_electric_piston": "§2UIV§r电力活塞", + "item.gtceu.uiv_electric_pump": "§2UIV§r电动泵", + "item.gtceu.uiv_emitter": "§2UIV§r发射器", + "item.gtceu.uiv_field_generator": "§2UIV§r力场发生器", + "item.gtceu.uiv_fluid_regulator": "§2UIV§r流体校准器", + "item.gtceu.uiv_robot_arm": "§2UIV§r机械臂", + "item.gtceu.uiv_sensor": "§2UIV§r传感器", + "item.gtceu.uiv_voltage_coil.tooltip": "疯狂线圈", + "item.gtceu.ulpic_chip": "ULPIC芯片", + "item.gtceu.ulpic_chip.tooltip": "§7超低功率集成电路", + "item.gtceu.ulpic_wafer": "ULPIC晶圆", + "item.gtceu.ulpic_wafer.tooltip": "§7超低功率集成电路原料", + "item.gtceu.ulv_solar_panel": "超低压太阳能板(§8ULV§r)", + "item.gtceu.ulv_tantalum_battery.tooltip": "§7可充电电池", + "item.gtceu.ulv_voltage_coil": "超低压线圈", + "item.gtceu.ulv_voltage_coil.tooltip": "初级线圈", + "item.gtceu.universal_fluid_cell": "%s通用单元", + "item.gtceu.uv_battery_hull": "大型超能硅岩电池外壳", + "item.gtceu.uv_battery_hull.tooltip": "§7一个空的§3UV§7电池外壳", + "item.gtceu.uv_conveyor_module": "§3UV§r传送带", + "item.gtceu.uv_electric_motor": "§3UV§r电动马达", + "item.gtceu.uv_electric_piston": "§3UV§r电力活塞", + "item.gtceu.uv_electric_pump": "§3UV§r电动泵", + "item.gtceu.uv_emitter": "§3UV§r发射器", + "item.gtceu.uv_field_generator": "§3UV§r力场发生器", + "item.gtceu.uv_fluid_regulator": "§3UV§r流体校准器", + "item.gtceu.uv_naquadria_battery": "大型超能硅岩电池", + "item.gtceu.uv_naquadria_battery.tooltip": "§7可充电电池", + "item.gtceu.uv_robot_arm": "§3UV§r机械臂", + "item.gtceu.uv_sensor": "§3UV§r传感器", + "item.gtceu.uv_solar_panel": "极限压太阳能板(§3UV§r)", + "item.gtceu.uv_voltage_coil": "极限压线圈", + "item.gtceu.uv_voltage_coil.tooltip": "终极线圈", + "item.gtceu.uxv_conveyor_module": "§eUXV§r传送带", + "item.gtceu.uxv_electric_motor": "§eUXV§r电动马达", + "item.gtceu.uxv_electric_piston": "§eUXV§r电力活塞", + "item.gtceu.uxv_electric_pump": "§eUXV§r§r电动泵", + "item.gtceu.uxv_emitter": "§eUXV§r发射器", + "item.gtceu.uxv_field_generator": "§eUXV§r力场发生器", + "item.gtceu.uxv_fluid_regulator": "§eUXV§r流体校准器", + "item.gtceu.uxv_robot_arm": "§eUXV§r机械臂", + "item.gtceu.uxv_sensor": "§eUXV§r传感器", + "item.gtceu.uxv_voltage_coil.tooltip": "史诗线圈", + "item.gtceu.vacuum_tube": "真空管", + "item.gtceu.vacuum_tube.tooltip.0": "§7技术上是二极管", + "item.gtceu.vacuum_tube.tooltip.1": "§cULV等级", + "item.gtceu.wetware_circuit_board": "湿件电路基板", + "item.gtceu.wetware_circuit_board.tooltip": "§7维生之板", + "item.gtceu.wetware_printed_circuit_board": "湿件印刷电路基板", + "item.gtceu.wetware_printed_circuit_board.tooltip": "§7维生之板", + "item.gtceu.wetware_processor": "湿件处理器", + "item.gtceu.wetware_processor.tooltip.0": "§7祂在看我吗?", + "item.gtceu.wetware_processor.tooltip.1": "§4LuV级电路", + "item.gtceu.wetware_processor_assembly": "湿件处理器集群", + "item.gtceu.wetware_processor_assembly.tooltip.0": "§7可以玩Minecraft", + "item.gtceu.wetware_processor_assembly.tooltip.1": "§4ZPM级电路", + "item.gtceu.wetware_processor_computer": "湿件处理器超级计算机", + "item.gtceu.wetware_processor_computer.tooltip.0": "§7肉体与机器的终极结合", + "item.gtceu.wetware_processor_computer.tooltip.1": "§4UV级电路", + "item.gtceu.wetware_processor_mainframe": "湿件处理器主机", + "item.gtceu.wetware_processor_mainframe.tooltip.0": "§7千载独步,惟公一人", + "item.gtceu.wetware_processor_mainframe.tooltip.1": "§4UHV级电路", + "item.gtceu.wheat_dust": "面粉", + "item.gtceu.white_dye_spray_can": "喷漆罐(白色)", + "item.gtceu.wire_extruder_mold": "模头(导线)", + "item.gtceu.wire_extruder_mold.tooltip": "§7用来制作导线的模头", + "item.gtceu.wood_bolt": "短木棍", + "item.gtceu.wood_dust": "木浆", + "item.gtceu.wood_plate": "木板", + "item.gtceu.yellow_dye_spray_can": "喷漆罐(黄色)", + "item.gtceu.yellow_glass_lens": "玻璃透镜(黄色)", + "item.gtceu.zero_point_module": "零点模块", + "item.gtceu.zpm_battery_hull": "中型超能硅岩电池外壳", + "item.gtceu.zpm_battery_hull.tooltip": "§7一个空的§fZPM§7电池外壳", + "item.gtceu.zpm_conveyor_module": "§cZPM§r传送带", + "item.gtceu.zpm_electric_motor": "§cZPM§r电动马达", + "item.gtceu.zpm_electric_piston": "§cZPM§r电力活塞", + "item.gtceu.zpm_electric_pump": "§cZPM§r电动泵", + "item.gtceu.zpm_emitter": "§cZPM§r发射器", + "item.gtceu.zpm_field_generator": "§cZPM§r力场发生器", + "item.gtceu.zpm_fluid_regulator": "§cZPM§r流体校准器", + "item.gtceu.zpm_naquadria_battery": "中型超能硅岩电池", + "item.gtceu.zpm_naquadria_battery.tooltip": "§7可充电电池", + "item.gtceu.zpm_robot_arm": "§cZPM§r机械臂", + "item.gtceu.zpm_sensor": "§cZPM§r传感器", + "item.gtceu.zpm_solar_panel": "零点压太阳能板(§cZPM§r)", + "item.gtceu.zpm_voltage_coil": "零点压线圈", + "item.gtceu.zpm_voltage_coil.tooltip": "超级线圈", + "item.invalid.name": "无效物品", + "item.netherrack_nether_quartz": "下界石英矿石", + "item.toggle.advanced.info.tooltip": "§8<按住Shift查阅已存储配置信息>", + "itemGroup.gtceu.decoration": "格雷科技 | 装饰方块", + "itemGroup.gtceu.item": "格雷科技 | 物品", + "itemGroup.gtceu.machine": "格雷科技 | 机器", + "itemGroup.gtceu.material_block": "格雷科技 | 材料-方块", + "itemGroup.gtceu.material_fluid": "格雷科技 | 材料-流体容器", + "itemGroup.gtceu.material_item": "格雷科技 | 材料-物品", + "itemGroup.gtceu.material_pipe": "格雷科技 | 材料-管道", + "itemGroup.gtceu.tool": "格雷科技 | 工具", + "ldlib.gui.editor.group.widget.gtm_container": "GTM容器小部件", + "ldlib.gui.editor.register.editor.gtceu.mui": "机器UI项目", + "ldlib.gui.editor.register.editor.gtceu.rtui": "配方类型UI项目", + "ldlib.gui.editor.register.editor.gtceu.template_tab": "模板", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM流体槽位", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM物品槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM幻影流体槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM幻影物品槽位", + "mataarmor.hud.supply_mode": "供能模式:%s", + "material.gtceu.acetic_acid": "乙酸", + "material.gtceu.acetic_anhydride": "乙酸酐", + "material.gtceu.acetone": "丙酮", + "material.gtceu.acidic_enriched_naquadah_solution": "酸性富集硅岩溶液", + "material.gtceu.acidic_naquadria_solution": "酸性超能硅岩溶液", + "material.gtceu.acidic_osmium_solution": "酸性锇溶液", + "material.gtceu.actinium": "锕", + "material.gtceu.activated_carbon": "活性炭", + "material.gtceu.agar": "琼脂", + "material.gtceu.air": "空气", + "material.gtceu.allyl_chloride": "烯丙基氯", + "material.gtceu.almandine": "铁铝榴石", + "material.gtceu.aluminium": "铝", + "material.gtceu.aluminium_sulfite": "亚硫酸铝", + "material.gtceu.alunite": "明矾石", + "material.gtceu.americium": "镅", + "material.gtceu.amethyst": "紫水晶", + "material.gtceu.aminophenol": "氨基苯酚", + "material.gtceu.ammonia": "氨", + "material.gtceu.ammonium_chloride": "氯化铵", + "material.gtceu.ammonium_formate": "甲酸铵", + "material.gtceu.andesite": "安山岩", + "material.gtceu.andradite": "钙铁榴石", + "material.gtceu.annealed_copper": "退火铜", + "material.gtceu.antimony": "锑", + "material.gtceu.antimony_trifluoride": "三氟化锑", + "material.gtceu.antimony_trioxide": "三氧化二锑", + "material.gtceu.apatite": "磷灰石", + "material.gtceu.aqua_regia": "王水", + "material.gtceu.argon": "氩", + "material.gtceu.arsenic": "砷", + "material.gtceu.arsenic_trioxide": "三氧化二砷", + "material.gtceu.asbestos": "石棉", + "material.gtceu.ash": "灰烬", + "material.gtceu.astatine": "砹", + "material.gtceu.bacteria": "细菌", + "material.gtceu.bacterial_sludge": "细菌浆液", + "material.gtceu.barite": "重晶石", + "material.gtceu.barium": "钡", + "material.gtceu.barium_sulfide": "硫化钡", + "material.gtceu.basalt": "玄武岩", + "material.gtceu.basaltic_mineral_sand": "玄武岩矿砂", + "material.gtceu.bastnasite": "氟碳镧铈矿", + "material.gtceu.battery_alloy": "电池合金", + "material.gtceu.bauxite": "铝土矿", + "material.gtceu.bentonite": "膨润土", + "material.gtceu.benzene": "苯", + "material.gtceu.berkelium": "锫", + "material.gtceu.beryllium": "铍", + "material.gtceu.bio_diesel": "生物柴油", + "material.gtceu.biomass": "生物质", + "material.gtceu.biotite": "黑云母", + "material.gtceu.biphenyl": "联苯", + "material.gtceu.bismuth": "铋", + "material.gtceu.bismuth_bronze": "铋青铜", + "material.gtceu.bisphenol_a": "双酚A", + "material.gtceu.black_bronze": "黑青铜", + "material.gtceu.black_dye": "黑色染料", + "material.gtceu.black_steel": "黑钢", + "material.gtceu.blackstone": "黑石", + "material.gtceu.blaze": "烈焰", + "material.gtceu.blue_alloy": "蓝色合金", + "material.gtceu.blue_dye": "蓝色染料", + "material.gtceu.blue_steel": "蓝钢", + "material.gtceu.blue_topaz": "蓝黄玉", + "material.gtceu.bohrium": "钅波", + "material.gtceu.bone": "骨头", + "material.gtceu.borax": "硼砂", + "material.gtceu.bornite": "斑铜矿", + "material.gtceu.boron": "硼", + "material.gtceu.borosilicate_glass": "硼硅玻璃", + "material.gtceu.brass": "黄铜", + "material.gtceu.brick": "砖", + "material.gtceu.bromine": "溴", + "material.gtceu.bronze": "青铜", + "material.gtceu.brown_dye": "棕色染料", + "material.gtceu.butadiene": "丁二烯", + "material.gtceu.butane": "丁烷", + "material.gtceu.butene": "丁烯", + "material.gtceu.butyraldehyde": "丁醛", + "material.gtceu.cadmium": "镉", + "material.gtceu.caesium": "铯", + "material.gtceu.calcite": "方解石", + "material.gtceu.calcium": "钙", + "material.gtceu.calcium_carbonate": "碳酸钙", + "material.gtceu.calcium_chloride": "氯化钙", + "material.gtceu.calcium_ferrocyanide": "亚铁氰化钙", + "material.gtceu.calcium_hydroxide": "氢氧化钙", + "material.gtceu.calcium_phosphide": "磷化钙", + "material.gtceu.californium": "锎", + "material.gtceu.caprolactam": "己内酰胺", + "material.gtceu.carbon": "碳", + "material.gtceu.carbon_dioxide": "二氧化碳", + "material.gtceu.carbon_monoxide": "一氧化碳", + "material.gtceu.cassiterite": "锡石", + "material.gtceu.cassiterite_sand": "锡石矿砂", + "material.gtceu.cerium": "铈", + "material.gtceu.certus_quartz": "赛特斯石英", + "material.gtceu.cetane_boosted_diesel": "高十六烷值柴油", + "material.gtceu.chalcocite": "辉铜矿", + "material.gtceu.chalcopyrite": "黄铜矿", + "material.gtceu.charcoal": "木炭", + "material.gtceu.charcoal_byproducts": "木炭副产物", + "material.gtceu.chlorine": "氯", + "material.gtceu.chlorobenzene": "氯苯", + "material.gtceu.chloroform": "氯仿", + "material.gtceu.chloromethane": "氯甲烷", + "material.gtceu.chromite": "铬铁矿", + "material.gtceu.chromium": "铬", + "material.gtceu.chromium_trioxide": "三氧化铬", + "material.gtceu.cinnabar": "朱砂", + "material.gtceu.clay": "黏土", + "material.gtceu.coal": "煤炭", + "material.gtceu.coal_gas": "煤气", + "material.gtceu.coal_tar": "煤焦油", + "material.gtceu.cobalt": "钴", + "material.gtceu.cobalt_brass": "钴黄铜", + "material.gtceu.cobalt_oxide": "氧化钴", + "material.gtceu.cobaltite": "辉钴矿", + "material.gtceu.cocoa": "可可", + "material.gtceu.coke": "焦煤", + "material.gtceu.collagen": "胶原", + "material.gtceu.concrete": "混凝土", + "material.gtceu.construction_foam": "建筑泡沫", + "material.gtceu.cooperite": "谢尔顿矿", + "material.gtceu.copernicium": "钅哥", + "material.gtceu.copper": "铜", + "material.gtceu.creosote": "杂酚油", + "material.gtceu.cumene": "异丙苯", + "material.gtceu.cupric_oxide": "氧化铜", + "material.gtceu.cupronickel": "白铜", + "material.gtceu.curium": "锔", + "material.gtceu.cyan_dye": "青色染料", + "material.gtceu.cyclohexane": "环己烷", + "material.gtceu.cyclohexanone_oxime": "环己酮肟", + "material.gtceu.damascus_steel": "大马士革钢", + "material.gtceu.dark_ash": "黑色灰烬", + "material.gtceu.darmstadtium": "钅达", + "material.gtceu.deepslate": "深板岩", + "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化铀", + "material.gtceu.deuterium": "氘", + "material.gtceu.diaminobenzidine": "二氨基联苯胺", + "material.gtceu.diamond": "钻石", + "material.gtceu.diatomite": "硅藻土", + "material.gtceu.dichlorobenzene": "二氯苯", + "material.gtceu.dichlorobenzidine": "二氯联苯胺", + "material.gtceu.dichloroethane": "二氯乙烷", + "material.gtceu.diesel": "柴油", + "material.gtceu.diethylenetriamine": "二乙烯三胺", + "material.gtceu.diethylenetriamine_pentaacetonitrile": "二乙烯三胺五乙腈", + "material.gtceu.diethylenetriaminepentaacetic_acid": "二乙烯三胺五乙酸", + "material.gtceu.diluted_hydrochloric_acid": "稀盐酸", + "material.gtceu.diluted_sulfuric_acid": "稀硫酸", + "material.gtceu.dimethylamine": "二甲胺", + "material.gtceu.dimethylbenzene": "二甲苯", + "material.gtceu.dimethyldichlorosilane": "二甲基二氯硅烷", + "material.gtceu.dimethylhydrazine": "二甲基肼", + "material.gtceu.dinitrogen_tetroxide": "四氧化二氮", + "material.gtceu.diorite": "闪长岩", + "material.gtceu.diphenyl_isophthalate": "间苯二甲酸二苯酯", + "material.gtceu.dissolved_calcium_acetate": "乙酸钙溶液", + "material.gtceu.distilled_water": "蒸馏水", + "material.gtceu.drilling_fluid": "钻井液", + "material.gtceu.dubnium": "钅杜", + "material.gtceu.duranium": "铿铀", + "material.gtceu.dysprosium": "镝", + "material.gtceu.echo_shard": "回响碎片", + "material.gtceu.einsteinium": "锿", + "material.gtceu.electrotine": "蓝石", + "material.gtceu.electrum": "琥珀金", + "material.gtceu.emerald": "绿宝石", + "material.gtceu.ender_air": "末地空气", + "material.gtceu.ender_eye": "末影之眼", + "material.gtceu.ender_pearl": "末影珍珠", + "material.gtceu.endstone": "末地石", + "material.gtceu.enriched_bacterial_sludge": "富集细菌浆液", + "material.gtceu.enriched_naquadah": "富集硅岩", + "material.gtceu.enriched_naquadah_solution": "富集硅岩溶液", + "material.gtceu.enriched_naquadah_sulfate": "硫酸富集硅岩", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "富集硅岩凯金铕铿铀合金", + "material.gtceu.enriched_naquadah_waste": "富集硅岩废液", + "material.gtceu.enriched_uranium_hexafluoride": "富集六氟化铀", + "material.gtceu.epichlorohydrin": "环氧氯丙烷", + "material.gtceu.epoxy": "环氧树脂", + "material.gtceu.erbium": "铒", + "material.gtceu.ethane": "乙烷", + "material.gtceu.ethanol": "乙醇", + "material.gtceu.ethenone": "乙烯酮", + "material.gtceu.ethyl_tertbutyl_ether": "乙基叔丁基醚", + "material.gtceu.ethylbenzene": "乙苯", + "material.gtceu.ethylene": "乙烯", + "material.gtceu.europium": "铕", + "material.gtceu.fermented_biomass": "发酵生物质", + "material.gtceu.fermium": "镄", + "material.gtceu.ferrite_mixture": "铁氧体混合物", + "material.gtceu.ferrosilite": "铁辉石", + "material.gtceu.fireclay": "耐火黏土", + "material.gtceu.fish_oil": "鱼油", + "material.gtceu.flerovium": "钅夫", + "material.gtceu.flint": "燧石", + "material.gtceu.fluorine": "氟", + "material.gtceu.fluoroantimonic_acid": "氟锑酸", + "material.gtceu.formaldehyde": "甲醛", + "material.gtceu.formamide": "甲酰胺", + "material.gtceu.formic_acid": "甲酸", + "material.gtceu.francium": "钫", + "material.gtceu.fullers_earth": "漂白土", + "material.gtceu.gadolinium": "钆", + "material.gtceu.galena": "方铅矿", + "material.gtceu.gallium": "镓", + "material.gtceu.gallium_arsenide": "砷化镓", + "material.gtceu.gallium_sulfide": "硫化镓", + "material.gtceu.garnet_sand": "石榴石砂", + "material.gtceu.garnierite": "硅镁镍矿", + "material.gtceu.gasoline": "汽油", + "material.gtceu.gelatin": "明胶", + "material.gtceu.gelatin_mixture": "明胶混合物", + "material.gtceu.germanium": "锗", + "material.gtceu.glass": "玻璃", + "material.gtceu.glauconite_sand": "海绿石砂", + "material.gtceu.glowstone": "荧石", + "material.gtceu.glue": "胶水", + "material.gtceu.glycerol": "甘油", + "material.gtceu.glyceryl_trinitrate": "硝酸甘油", + "material.gtceu.glycolonitrile": "乙腈", + "material.gtceu.goethite": "针铁矿", + "material.gtceu.gold": "金", + "material.gtceu.granite": "花岗岩", + "material.gtceu.granite_red": "红花岗岩", + "material.gtceu.granitic_mineral_sand": "花岗岩矿砂", + "material.gtceu.graphene": "石墨烯", + "material.gtceu.graphite": "石墨", + "material.gtceu.gray_dye": "灰色染料", + "material.gtceu.green_dye": "绿色染料", + "material.gtceu.green_sapphire": "绿色蓝宝石", + "material.gtceu.green_sapphire_slurry": "绿色蓝宝石浆液", + "material.gtceu.grossular": "钙铝榴石", + "material.gtceu.gunpowder": "火药", + "material.gtceu.gypsum": "石膏", + "material.gtceu.hafnium": "铪", + "material.gtceu.hassium": "钅黑", + "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", + "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", + "material.gtceu.heavy_fuel": "重燃油", + "material.gtceu.helium": "氦", + "material.gtceu.helium_3": "氦-3", + "material.gtceu.hematite": "赤铁矿", + "material.gtceu.high_octane_gasoline": "高辛烷值汽油", + "material.gtceu.holmium": "钬", + "material.gtceu.hsla_steel": "HSLA钢", + "material.gtceu.hsse": "高速钢-E", + "material.gtceu.hssg": "高速钢-G", + "material.gtceu.hsss": "高速钢-S", + "material.gtceu.hydro_cracked_butadiene": "加氢裂化丁二烯", + "material.gtceu.hydro_cracked_butane": "加氢裂化丁烷", + "material.gtceu.hydro_cracked_butene": "加氢裂化丁烯", + "material.gtceu.hydro_cracked_ethane": "加氢裂化乙烷", + "material.gtceu.hydro_cracked_ethylene": "加氢裂化乙烯", + "material.gtceu.hydro_cracked_propane": "加氢裂化丙烷", + "material.gtceu.hydro_cracked_propene": "加氢裂化丙烯", + "material.gtceu.hydrochloric_acid": "盐酸", + "material.gtceu.hydrofluoric_acid": "氢氟酸", + "material.gtceu.hydrogen": "氢", + "material.gtceu.hydrogen_cyanide": "氰化氢", + "material.gtceu.hydrogen_peroxide": "过氧化氢", + "material.gtceu.hydrogen_sulfide": "硫化氢", + "material.gtceu.hypochlorous_acid": "次氯酸", + "material.gtceu.ice": "冰", + "material.gtceu.ilmenite": "钛铁矿", + "material.gtceu.impure_enriched_naquadah_solution": "含杂富集硅岩溶液", + "material.gtceu.impure_naquadria_solution": "含杂超能硅岩溶液", + "material.gtceu.incoloy_ma_956": "耐热铬铁合金 MA-956", + "material.gtceu.indium": "铟", + "material.gtceu.indium_concentrate": "铟富集溶液", + "material.gtceu.indium_gallium_phosphide": "磷化铟镓", + "material.gtceu.indium_phosphide": "磷化铟", + "material.gtceu.indium_tin_barium_titanium_cuprate": "铟锡钡钛铜氧化物", + "material.gtceu.inert_metal_mixture": "惰性金属混合物", + "material.gtceu.invar": "殷钢", + "material.gtceu.iodine": "碘", + "material.gtceu.iridium": "铱", + "material.gtceu.iridium_chloride": "氯化铱", + "material.gtceu.iridium_metal_residue": "铱金属渣", + "material.gtceu.iron": "铁", + "material.gtceu.iron_ii_chloride": "氯化亚铁", + "material.gtceu.iron_iii_chloride": "氯化铁", + "material.gtceu.isoprene": "异戊二烯", + "material.gtceu.kanthal": "坎塔尔合金", + "material.gtceu.krypton": "氪", + "material.gtceu.kyanite": "蓝晶石", + "material.gtceu.lanthanum": "镧", + "material.gtceu.lapis": "青金石", + "material.gtceu.lapotron": "兰波顿", + "material.gtceu.lava": "熔岩", + "material.gtceu.lawrencium": "铹", + "material.gtceu.lazurite": "蓝金石", + "material.gtceu.lead": "铅", + "material.gtceu.lead_zinc_solution": "铅锌溶液", + "material.gtceu.lepidolite": "锂云母", + "material.gtceu.light_blue_dye": "淡蓝色染料", + "material.gtceu.light_fuel": "轻燃油", + "material.gtceu.light_gray_dye": "淡灰色染料", + "material.gtceu.lightly_hydro_cracked_gas": "轻度加氢裂化炼油气", + "material.gtceu.lightly_hydro_cracked_heavy_fuel": "轻度加氢裂化重燃油", + "material.gtceu.lightly_hydro_cracked_light_fuel": "轻度加氢裂化轻燃油", + "material.gtceu.lightly_hydro_cracked_naphtha": "轻度加氢裂化石脑油", + "material.gtceu.lightly_steam_cracked_gas": "轻度蒸汽裂化炼油气", + "material.gtceu.lightly_steam_cracked_heavy_fuel": "轻度蒸汽裂化重燃油", + "material.gtceu.lightly_steam_cracked_light_fuel": "轻度蒸汽裂化轻燃油", + "material.gtceu.lightly_steam_cracked_naphtha": "轻度蒸汽裂化石脑油", + "material.gtceu.lime_dye": "黄绿色染料", + "material.gtceu.liquid_air": "液态空气", + "material.gtceu.liquid_ender_air": "液态末地空气", + "material.gtceu.liquid_nether_air": "液态下界空气", + "material.gtceu.lithium": "锂", + "material.gtceu.lithium_chloride": "氯化锂", + "material.gtceu.livermorium": "钅立", + "material.gtceu.lpg": "液化石油气", + "material.gtceu.lubricant": "润滑油", + "material.gtceu.lutetium": "镥", + "material.gtceu.magenta_dye": "品红色染料", + "material.gtceu.magnalium": "镁铝合金", + "material.gtceu.magnesia": "氧化镁", + "material.gtceu.magnesite": "菱镁矿", + "material.gtceu.magnesium": "镁", + "material.gtceu.magnesium_chloride": "氯化镁", + "material.gtceu.magnesium_diboride": "二硼化镁", + "material.gtceu.magnetic_iron": "磁化铁", + "material.gtceu.magnetic_neodymium": "磁化钕", + "material.gtceu.magnetic_samarium": "磁化钐", + "material.gtceu.magnetic_steel": "磁化钢", + "material.gtceu.magnetite": "磁铁矿", + "material.gtceu.malachite": "孔雀石", + "material.gtceu.manganese": "锰", + "material.gtceu.manganese_phosphide": "磷化锰", + "material.gtceu.maraging_steel_300": "马氏体时效钢-300", + "material.gtceu.marble": "大理石", + "material.gtceu.massicot": "铅黄", + "material.gtceu.mc_guffium_239": "麦高芬-239", + "material.gtceu.meat": "肉", + "material.gtceu.meitnerium": "钅麦", + "material.gtceu.mendelevium": "钔", + "material.gtceu.mercury": "汞", + "material.gtceu.mercury_barium_calcium_cuprate": "汞钡钙铜氧化物", + "material.gtceu.metal_mixture": "金属混合物", + "material.gtceu.methane": "甲烷", + "material.gtceu.methanol": "甲醇", + "material.gtceu.methyl_acetate": "乙酸甲酯", + "material.gtceu.mica": "云母", + "material.gtceu.milk": "牛奶", + "material.gtceu.mirabilite": "芒硝", + "material.gtceu.molybdenite": "辉钼矿", + "material.gtceu.molybdenum": "钼", + "material.gtceu.molybdenum_disilicide": "二硅化钼", + "material.gtceu.monazite": "独居石", + "material.gtceu.monochloramine": "氯胺", + "material.gtceu.moscovium": "镆", + "material.gtceu.mutagen": "诱变剂", + "material.gtceu.naphtha": "石脑油", + "material.gtceu.naphthalene": "萘", + "material.gtceu.naquadah": "硅岩", + "material.gtceu.naquadah_alloy": "硅岩合金", + "material.gtceu.naquadria": "超能硅岩", + "material.gtceu.naquadria_solution": "超能硅岩溶液", + "material.gtceu.naquadria_sulfate": "硫酸超能硅岩", + "material.gtceu.naquadria_waste": "超能硅岩废液", + "material.gtceu.natural_gas": "天然气", + "material.gtceu.neodymium": "钕", + "material.gtceu.neon": "氖", + "material.gtceu.neptunium": "镎", + "material.gtceu.nether_air": "下界空气", + "material.gtceu.nether_quartz": "下界石英", + "material.gtceu.nether_star": "下界之星", + "material.gtceu.netherite": "下界合金", + "material.gtceu.netherrack": "地狱岩", + "material.gtceu.neutronium": "中子素", + "material.gtceu.nichrome": "镍铬合金", + "material.gtceu.nickel": "镍", + "material.gtceu.nickel_zinc_ferrite": "镍锌铁氧体", + "material.gtceu.nihonium": "钅尔", + "material.gtceu.niobium": "铌", + "material.gtceu.niobium_nitride": "氮化铌", + "material.gtceu.niobium_titanium": "铌钛合金", + "material.gtceu.nitration_mixture": "硝酸混酸", + "material.gtceu.nitric_acid": "硝酸", + "material.gtceu.nitric_oxide": "一氧化氮", + "material.gtceu.nitrobenzene": "硝基苯", + "material.gtceu.nitrochlorobenzene": "硝基氯苯", + "material.gtceu.nitrogen": "氮", + "material.gtceu.nitrogen_dioxide": "二氧化氮", + "material.gtceu.nitrosyl_chloride": "亚硝酰氯", + "material.gtceu.nitrous_oxide": "一氧化二氮", + "material.gtceu.nobelium": "锘", + "material.gtceu.obsidian": "黑曜石", + "material.gtceu.octane": "辛烷", + "material.gtceu.oganesson": "气奥", + "material.gtceu.oil": "石油", + "material.gtceu.oil_heavy": "重油", + "material.gtceu.oil_light": "轻油", + "material.gtceu.oil_medium": "原油", + "material.gtceu.oilsands": "油砂", + "material.gtceu.olivine": "橄榄石", + "material.gtceu.opal": "猫眼石", + "material.gtceu.orange_dye": "橙色染料", + "material.gtceu.osmiridium": "铱锇合金", + "material.gtceu.osmium": "锇", + "material.gtceu.osmium_tetroxide": "四氧化锇", + "material.gtceu.oxygen": "氧", + "material.gtceu.palladium": "钯", + "material.gtceu.palladium_raw": "粗钯", + "material.gtceu.paper": "纸", + "material.gtceu.paracetamol": "对乙酰氨基酚", + "material.gtceu.pcb_coolant": "多氯联苯冷却液 ", + "material.gtceu.pentlandite": "镍黄铁矿", + "material.gtceu.perlite": "珍珠岩", + "material.gtceu.phenol": "苯酚", + "material.gtceu.phosphate": "磷酸盐", + "material.gtceu.phosphoric_acid": "磷酸", + "material.gtceu.phosphorus": "磷", + "material.gtceu.phosphorus_pentoxide": "五氧化二磷", + "material.gtceu.phthalic_acid": "邻苯二甲酸", + "material.gtceu.pink_dye": "粉红色染料", + "material.gtceu.pitchblende": "沥青铀矿", + "material.gtceu.platinum": "铂", + "material.gtceu.platinum_group_sludge": "铂系矿泥", + "material.gtceu.platinum_raw": "粗铂", + "material.gtceu.platinum_sludge_residue": "铂泥渣", + "material.gtceu.plutonium": "钚", + "material.gtceu.plutonium_241": "钚-241", + "material.gtceu.pollucite": "铯榴石", + "material.gtceu.polonium": "钋", + "material.gtceu.polybenzimidazole": "聚苯并咪唑", + "material.gtceu.polycaprolactam": "聚己内酰胺", + "material.gtceu.polychlorinated_biphenyl": "多氯联苯", + "material.gtceu.polydimethylsiloxane": "聚二甲基硅氧烷", + "material.gtceu.polyethylene": "聚乙烯", + "material.gtceu.polyphenylene_sulfide": "聚苯硫醚", + "material.gtceu.polytetrafluoroethylene": "聚四氟乙烯", + "material.gtceu.polyvinyl_acetate": "聚乙酸乙烯酯", + "material.gtceu.polyvinyl_butyral": "聚乙烯醇缩丁醛", + "material.gtceu.polyvinyl_chloride": "聚氯乙烯", + "material.gtceu.potash": "钾碱", + "material.gtceu.potassium": "钾", + "material.gtceu.potassium_carbonate": "碳酸钾", + "material.gtceu.potassium_cyanide": "氰化钾", + "material.gtceu.potassium_dichromate": "重铬酸钾", + "material.gtceu.potassium_feldspar": "钾长石", + "material.gtceu.potassium_ferrocyanide": "亚铁氰化钾", + "material.gtceu.potassium_hydroxide": "氢氧化钾", + "material.gtceu.potassium_iodide": "碘化钾", + "material.gtceu.potassium_sulfate": "硫酸钾", + "material.gtceu.potin": "粗青铜合金", + "material.gtceu.powellite": "钼钙矿", + "material.gtceu.praseodymium": "镨", + "material.gtceu.promethium": "钷", + "material.gtceu.propane": "丙烷", + "material.gtceu.propene": "丙烯", + "material.gtceu.protactinium": "镤", + "material.gtceu.prussian_blue": "普鲁士蓝", + "material.gtceu.purple_dye": "紫色染料", + "material.gtceu.pyrite": "黄铁矿", + "material.gtceu.pyrochlore": "烧绿石", + "material.gtceu.pyrolusite": "软锰矿", + "material.gtceu.pyrope": "镁铝榴石", + "material.gtceu.quartz_sand": "石英砂", + "material.gtceu.quartzite": "石英岩", + "material.gtceu.quicklime": "生石灰", + "material.gtceu.rad_away": "消辐宁", + "material.gtceu.radium": "镭", + "material.gtceu.radon": "氡", + "material.gtceu.rare_earth": "稀土", + "material.gtceu.rarest_metal_mixture": "稀有金属混合物", + "material.gtceu.raw_gasoline": "粗汽油", + "material.gtceu.raw_growth_medium": "培养基原液", + "material.gtceu.raw_rubber": "生橡胶", + "material.gtceu.raw_styrene_butadiene_rubber": "生丁苯橡胶", + "material.gtceu.realgar": "雄黄", + "material.gtceu.red_alloy": "红色合金", + "material.gtceu.red_dye": "红色染料", + "material.gtceu.red_garnet": "红石榴石", + "material.gtceu.red_steel": "红钢", + "material.gtceu.redrock": "红岩", + "material.gtceu.redstone": "红石", + "material.gtceu.refinery_gas": "炼油气", + "material.gtceu.reinforced_epoxy_resin": "强化环氧树脂", + "material.gtceu.rhenium": "铼", + "material.gtceu.rhodium": "铑", + "material.gtceu.rhodium_plated_palladium": "镀铑钯", + "material.gtceu.rhodium_sulfate": "硫酸铑", + "material.gtceu.rock_salt": "岩盐", + "material.gtceu.rocket_fuel": "火箭燃料", + "material.gtceu.roentgenium": "钅仑", + "material.gtceu.rose_gold": "玫瑰金", + "material.gtceu.rtm_alloy": "钌钨钼合金", + "material.gtceu.rubber": "橡胶", + "material.gtceu.rubidium": "铷", + "material.gtceu.ruby": "红宝石", + "material.gtceu.ruby_slurry": "红宝石浆液", + "material.gtceu.ruridit": "钌铱合金", + "material.gtceu.ruthenium": "钌", + "material.gtceu.ruthenium_tetroxide": "四氧化钌", + "material.gtceu.ruthenium_trinium_americium_neutronate": "钌凯金镅中子素氧化物", + "material.gtceu.rutherfordium": "钅卢", + "material.gtceu.rutile": "金红石", + "material.gtceu.salt": "盐", + "material.gtceu.salt_water": "盐水", + "material.gtceu.saltpeter": "硝石", + "material.gtceu.samarium": "钐", + "material.gtceu.samarium_iron_arsenic_oxide": "钐铁砷氧化物", + "material.gtceu.sapphire": "蓝宝石", + "material.gtceu.sapphire_slurry": "蓝宝石浆液", + "material.gtceu.scandium": "钪", + "material.gtceu.scheelite": "白钨矿", + "material.gtceu.sculk": "幽匿", + "material.gtceu.seaborgium": "钅喜", + "material.gtceu.seed_oil": "种子油", + "material.gtceu.selenium": "硒", + "material.gtceu.severely_hydro_cracked_gas": "重度加氢裂化炼油气", + "material.gtceu.severely_hydro_cracked_heavy_fuel": "重度加氢裂化重燃油", + "material.gtceu.severely_hydro_cracked_light_fuel": "重度加氢裂化轻燃油", + "material.gtceu.severely_hydro_cracked_naphtha": "重度加氢裂化石脑油", + "material.gtceu.severely_steam_cracked_gas": "重度蒸汽裂化炼油气", + "material.gtceu.severely_steam_cracked_heavy_fuel": "重度蒸汽裂化重燃油", + "material.gtceu.severely_steam_cracked_light_fuel": "重度蒸汽裂化轻燃油", + "material.gtceu.severely_steam_cracked_naphtha": "重度蒸汽裂化石脑油", + "material.gtceu.silicon": "硅", + "material.gtceu.silicon_dioxide": "二氧化硅", + "material.gtceu.silicone_rubber": "硅橡胶", + "material.gtceu.silver": "银", + "material.gtceu.soapstone": "皂石", + "material.gtceu.soda_ash": "纯碱", + "material.gtceu.sodalite": "方钠石", + "material.gtceu.sodium": "钠", + "material.gtceu.sodium_bicarbonate": "碳酸氢钠", + "material.gtceu.sodium_bisulfate": "硫酸氢钠", + "material.gtceu.sodium_hydroxide": "氢氧化钠", + "material.gtceu.sodium_nitrite": "亚硝酸钠", + "material.gtceu.sodium_persulfate": "过硫酸钠", + "material.gtceu.sodium_potassium": "钠钾合金", + "material.gtceu.sodium_sulfide": "硫化钠", + "material.gtceu.soldering_alloy": "焊锡", + "material.gtceu.spessartine": "锰铝榴石", + "material.gtceu.sphalerite": "闪锌矿", + "material.gtceu.spodumene": "锂辉石", + "material.gtceu.stainless_steel": "不锈钢", + "material.gtceu.steam": "蒸汽", + "material.gtceu.steam_cracked_butadiene": "蒸汽裂化丁二烯", + "material.gtceu.steam_cracked_butane": "蒸汽裂化丁烷", + "material.gtceu.steam_cracked_butene": "蒸汽裂化丁烯", + "material.gtceu.steam_cracked_ethane": "蒸汽裂化乙烷", + "material.gtceu.steam_cracked_ethylene": "蒸汽裂化乙烯", + "material.gtceu.steam_cracked_propane": "蒸汽裂化丙烷", + "material.gtceu.steam_cracked_propene": "蒸汽裂化丙烯", + "material.gtceu.steel": "钢", + "material.gtceu.stellite_100": "司太立-100", + "material.gtceu.sterilized_growth_medium": "无菌培养基", + "material.gtceu.sterling_silver": "标准纯银", + "material.gtceu.stibnite": "辉锑矿", + "material.gtceu.stone": "石头", + "material.gtceu.strontium": "锶", + "material.gtceu.styrene": "苯乙烯", + "material.gtceu.styrene_butadiene_rubber": "丁苯橡胶", + "material.gtceu.sugar": "糖", + "material.gtceu.sulfur": "硫", + "material.gtceu.sulfur_dioxide": "二氧化硫", + "material.gtceu.sulfur_trioxide": "三氧化硫", + "material.gtceu.sulfuric_acid": "硫酸", + "material.gtceu.sulfuric_copper_solution": "硫酸铜溶液", + "material.gtceu.sulfuric_gas": "含硫炼油气", + "material.gtceu.sulfuric_heavy_fuel": "含硫重燃油", + "material.gtceu.sulfuric_light_fuel": "含硫轻燃油", + "material.gtceu.sulfuric_naphtha": "含硫石脑油", + "material.gtceu.sulfuric_nickel_solution": "硫酸镍溶液", + "material.gtceu.talc": "滑石", + "material.gtceu.tantalite": "钽铁矿", + "material.gtceu.tantalum": "钽", + "material.gtceu.tantalum_carbide": "碳化钽", + "material.gtceu.technetium": "锝", + "material.gtceu.tellurium": "碲", + "material.gtceu.tennessine": "石田", + "material.gtceu.terbium": "铽", + "material.gtceu.tetrafluoroethylene": "四氟乙烯", + "material.gtceu.tetrahedrite": "黝铜矿", + "material.gtceu.tetranitromethane": "四硝基甲烷", + "material.gtceu.thallium": "铊", + "material.gtceu.thorium": "钍", + "material.gtceu.thulium": "铥", + "material.gtceu.tin": "锡", + "material.gtceu.tin_alloy": "锡铁合金", + "material.gtceu.titanium": "钛", + "material.gtceu.titanium_carbide": "碳化钛", + "material.gtceu.titanium_tetrachloride": "四氯化钛", + "material.gtceu.titanium_trifluoride": "三氟化钛", + "material.gtceu.titanium_tungsten_carbide": "碳化钛钨", + "material.gtceu.toluene": "甲苯", + "material.gtceu.topaz": "黄玉", + "material.gtceu.treated_wood": "防腐木", + "material.gtceu.tricalcium_phosphate": "磷酸三钙", + "material.gtceu.trinium": "凯金", + "material.gtceu.trinium_sulfide": "硫化凯金", + "material.gtceu.tritanium": "三钛", + "material.gtceu.tritium": "氚", + "material.gtceu.trona": "天然碱", + "material.gtceu.tungstate": "钨酸锂", + "material.gtceu.tungsten": "钨", + "material.gtceu.tungsten_carbide": "碳化钨", + "material.gtceu.tungsten_steel": "钨钢", + "material.gtceu.tungstic_acid": "钨酸", + "material.gtceu.ultimet": "哈氏合金", + "material.gtceu.uraninite": "晶质铀矿", + "material.gtceu.uranium": "铀", + "material.gtceu.uranium_235": "铀-235", + "material.gtceu.uranium_hexafluoride": "六氟化铀", + "material.gtceu.uranium_rhodium_dinaquadide": "铀铑硅岩合金", + "material.gtceu.uranium_triplatinum": "三铂化铀", + "material.gtceu.uu_matter": "UU物质", + "material.gtceu.uvarovite": "钙铬榴石", + "material.gtceu.vanadium": "钒", + "material.gtceu.vanadium_gallium": "钒镓合金", + "material.gtceu.vanadium_magnetite": "钒磁铁矿", + "material.gtceu.vanadium_steel": "钒钢", + "material.gtceu.vinyl_acetate": "乙酸乙烯酯", + "material.gtceu.vinyl_chloride": "氯乙烯", + "material.gtceu.water": "水", + "material.gtceu.watertight_steel": "防水钢", + "material.gtceu.wax": "蜡", + "material.gtceu.wheat": "小麦", + "material.gtceu.white_dye": "白色染料", + "material.gtceu.wood": "木", + "material.gtceu.wood_gas": "木煤气", + "material.gtceu.wood_tar": "木焦油", + "material.gtceu.wood_vinegar": "木醋酸", + "material.gtceu.wrought_iron": "锻铁", + "material.gtceu.wulfenite": "钼铅矿", + "material.gtceu.xenon": "氙", + "material.gtceu.yellow_dye": "黄色染料", + "material.gtceu.yellow_garnet": "黄石榴石", + "material.gtceu.yellow_limonite": "黄褐铁矿", + "material.gtceu.ytterbium": "镱", + "material.gtceu.yttrium": "钇", + "material.gtceu.yttrium_barium_cuprate": "钇钡铜氧化物", + "material.gtceu.zeolite": "沸石", + "material.gtceu.zeron_100": "赛龙-100", + "material.gtceu.zinc": "锌", + "material.gtceu.zinc_sulfide": "硫化锌", + "material.gtceu.zincite": "红锌矿", + "material.gtceu.zirconium": "锆", + "message.gtceu.new_veins.amount": "勘探到%d条新矿脉!", + "message.gtceu.new_veins.name": "勘探到%s!", + "metaarmor.energy_share.disable": "能量供给:工具充能已禁用", + "metaarmor.energy_share.enable": "能量供给:工具充能已启用", + "metaarmor.energy_share.error": "能量供给:§c能量不足,无法为工具充能!", + "metaarmor.energy_share.tooltip": "供能模式:%s", + "metaarmor.energy_share.tooltip.guide": "手持物品并潜行右击以更换模式", + "metaarmor.hud.energy_lvl": "能量存储:%s", + "metaarmor.hud.engine_enabled": "引擎已启用:%s", + "metaarmor.hud.fuel_lvl": "燃料存储:%s", + "metaarmor.hud.gravi_engine": "重力引擎:%s", + "metaarmor.hud.hover_mode": "悬浮模式:%s", + "metaarmor.hud.status.disabled": "§c关", + "metaarmor.hud.status.enabled": "§a开", + "metaarmor.jetpack.emergency_hover_mode": "紧急悬停模式已启用!", + "metaarmor.jetpack.flight.disable": "喷气背包:飞行已禁用", + "metaarmor.jetpack.flight.enable": "喷气背包:飞行已启用", + "metaarmor.jetpack.hover.disable": "喷气背包:悬停模式已禁用", + "metaarmor.jetpack.hover.enable": "喷气背包:悬停模式已启用", + "metaarmor.message.nightvision.disabled": "§b夜视:§c关闭", + "metaarmor.message.nightvision.enabled": "§b夜视:§a开启", + "metaarmor.message.nightvision.error": "§c能量不足!", + "metaarmor.nms.boosted_jump.disabled": "纳米肌体™套装:跳跃提升已禁用", + "metaarmor.nms.boosted_jump.enabled": "纳米肌体™套装:跳跃提升已启用", + "metaarmor.nms.nightvision.disabled": "纳米肌体™套装:夜视已禁用", + "metaarmor.nms.nightvision.enabled": "纳米肌体™套装:夜视已启用", + "metaarmor.nms.nightvision.error": "纳米肌体™套装:§c能量不足!", + "metaarmor.nms.share.disable": "纳米肌体™套装:供能模式已禁用", + "metaarmor.nms.share.enable": "纳米肌体™套装:供能模式已启用", + "metaarmor.nms.share.error": "纳米肌体™套装:§c能量不足,无法供能!", + "metaarmor.qts.nightvision.disabled": "夸克高科™套装:夜视已禁用", + "metaarmor.qts.nightvision.enabled": "夸克高科™套装:夜视已启用", + "metaarmor.qts.nightvision.error": "夸克高科™套装:§c能量不足!", + "metaarmor.qts.share.disable": "夸克高科™套装:供能模式已禁用", + "metaarmor.qts.share.enable": "夸克高科™套装:供能模式已启用", + "metaarmor.qts.share.error": "夸克高科™套装:§c能量不足,无法供能!", + "metaarmor.tooltip.autoeat": "使用物品栏中的食物补充饱食度", + "metaarmor.tooltip.breath": "补充氧气条", + "metaarmor.tooltip.burning": "扑灭身上的火焰", + "metaarmor.tooltip.falldamage": "消除摔落伤害", + "metaarmor.tooltip.freezing": "防止寒冷侵袭", + "metaarmor.tooltip.jump": "提升跳跃高度与距离", + "metaarmor.tooltip.potions": "消除负面效果", + "metaarmor.tooltip.speed": "提升奔跑速度", + "metaarmor.tooltip.stepassist": "提供步行辅助", + "metaitem.behavior.mode_switch.current_mode": "模式:%s", + "metaitem.behavior.mode_switch.mode_switched": "§e模式设置为:%s", + "metaitem.behavior.mode_switch.tooltip": "潜行右击以切换模式", + "metaitem.clipboard.tooltip": "可以在上面书写(无需任何书写工具)。手持右键在墙面上放置,潜行右击取下。", + "metaitem.cover.digital.mode.energy.disabled": "点击以启用能量模式", + "metaitem.cover.digital.mode.energy.enabled": "已启用能量模式", + "metaitem.cover.digital.mode.fluid.disabled": "点击以启用流体模式", + "metaitem.cover.digital.mode.fluid.enabled": "已启用流体模式", + "metaitem.cover.digital.mode.item.disabled": "点击以启用物品模式", + "metaitem.cover.digital.mode.item.enabled": "已启用物品模式", + "metaitem.cover.digital.mode.machine.disabled": "点击以启用机器模式", + "metaitem.cover.digital.mode.machine.enabled": "已启用机器模式", + "metaitem.cover.digital.mode.proxy.disabled": "点击以启用代理模式", + "metaitem.cover.digital.mode.proxy.enabled": "已启用代理模式", + "metaitem.cover.digital.tooltip": "§7作§f覆盖板§7时通过§f能量线缆f7将机器连接到§f中央监视器§7。", + "metaitem.cover.digital.wireless.tooltip.0": "§7作§f覆盖板§7时§f将机器§f无线§7接入§f中央监控器§7。", + "metaitem.cover.digital.wireless.tooltip.1": "§f手持右击中央监控器§7来进行远程绑定。", + "metaitem.cover.digital.wireless.tooltip.2": "§f手持并潜行右击§7则可移除现有绑定。", + "metaitem.cover.digital.wireless.tooltip.3": "§a绑定至:§f%s", + "metaitem.crushed.tooltip.purify": "右击盛有水的炼药锅以清洗", + "metaitem.debug_scanner.tooltip": "三录仪", + "metaitem.dust.tooltip.purify": "右击盛有水的炼药锅以清洗", + "metaitem.electric.discharge_mode.disabled": "§e释能模式已禁用", + "metaitem.electric.discharge_mode.enabled": "§e释能模式已启用", + "metaitem.electric.discharge_mode.tooltip": "潜行右击以开关释能模式", + "metaitem.generic.electric_item.stored": "%d/%d EU(%s)", + "metaitem.generic.electric_item.tooltip": "%d/%d EU - %s电压", + "metaitem.generic.fluid_container.tooltip": "%d/%dL %s", + "metaitem.int_circuit.configuration": "配置:%d", + "metaitem.liquid_fuel_jetpack.tooltip": "利用内燃发电机的燃料来提供推进动力", + "metaitem.machine_configuration.mode": "§a配置模式:§r%s", + "metaitem.plugin.proxy.tooltips.1": "(请将屏幕调整为代理模式)", + "metaitem.plugin.tooltips.1": "可为屏幕安装插件以实现更多功能。", + "metaitem.prospector.mode.bedrock_ore": "§b基岩矿石勘探模式§r", + "metaitem.prospector.mode.fluid": "§b流体勘探模式§r", + "metaitem.prospector.mode.ores": "§a矿石探勘模式§r", + "metaitem.prospector.tooltip.modes": "可用模式:", + "metaitem.prospector.tooltip.radius": "扫描半径:%s", + "metaitem.record.sus.tooltip": "§7Leonz - Among Us Drip", + "metaitem.terminal.tooltip": "工欲善其事,必先利其器。", + "metaitem.terminal.tooltip.creative": "§b创造模式", + "metaitem.terminal.tooltip.hardware": "§a硬件:%d", + "metaitem.tool.tooltip.durability": "§f耐久度:§a%d / %d", + "metaitem.tool.tooltip.primary_material": "§f材料:§e%s", + "metaitem.tool.tooltip.rotor.efficiency": "涡轮效率:§9%d%%", + "metaitem.tool.tooltip.rotor.power": "涡轮产能:§9%d%%", + "metaitem.tricorder_scanner.tooltip": "三录仪", + "monitor.gui.title.argb": "ARGB:", + "monitor.gui.title.back": "返回", + "monitor.gui.title.config": "配置", + "monitor.gui.title.plugin": "插件:", + "monitor.gui.title.scale": "尺寸:", + "monitor.gui.title.slot": "槽位:", + "ore.spawnlocation.name": "矿物生成信息", + "recipe.capability.eu.name": "GTCEu能量", + "recipe.capability.fluid.name": "流体", + "recipe.capability.item.name": "物品", + "recipe.condition.adjacent_block.tooltip": "水平相邻方块应为", + "recipe.condition.biome.tooltip": "生物群系:%s", + "recipe.condition.daytime.day.tooltip": "需要白天才能工作", + "recipe.condition.daytime.night.tooltip": "需要夜晚才能工作", + "recipe.condition.dimension.tooltip": "维度:%s", + "recipe.condition.dimension_marker.tooltip": "维度:", + "recipe.condition.eu_to_start.tooltip": "启动耗能:%d%s", + "recipe.condition.gamestage.locked_stage": "锁定阶段:%s", + "recipe.condition.gamestage.unlocked_stage": "解锁阶段:%s", + "recipe.condition.pos_y.tooltip": "Y轴高度:%d <= Y <= %d", + "recipe.condition.quest.completed.tooltip": "完成任务:%s", + "recipe.condition.quest.not_completed.tooltip": "未完成任务:%s", + "recipe.condition.rain.tooltip": "雨量:%d", + "recipe.condition.rock_breaker.tooltip": "水平相邻方块需要为流体源", + "recipe.condition.steam_vent.tooltip": "清洁蒸汽排气口", + "recipe.condition.thunder.tooltip": "雷级:%d", + "tagprefix.andesite": "安山岩%s矿石", + "tagprefix.basalt": "玄武岩%s矿石", + "tagprefix.blackstone": "黑石%s矿石", + "tagprefix.block": "%s块", + "tagprefix.bolt": "%s螺栓", + "tagprefix.buzz_saw_blade": "%s圆锯锯片", + "tagprefix.cable_gt_double": "2x%s线缆", + "tagprefix.cable_gt_hex": "16x%s线缆", + "tagprefix.cable_gt_octal": "8x%s线缆", + "tagprefix.cable_gt_quadruple": "4x%s线缆", + "tagprefix.cable_gt_single": "1x%s线缆", + "tagprefix.chainsaw_head": "%s链锯头", + "tagprefix.chipped_gem": "破碎的%s", + "tagprefix.crushed_ore": "粉碎%s矿石", + "tagprefix.deepslate": "深板岩%s矿石", + "tagprefix.dense_plate": "致密%s板", + "tagprefix.diorite": "闪长岩%s矿石", + "tagprefix.door": "%s门", + "tagprefix.double_plate": "双层%s板", + "tagprefix.drill_head": "%s钻头", + "tagprefix.dust": "%s粉", + "tagprefix.dye": "%s染料", + "tagprefix.endstone": "末地石%s矿石", + "tagprefix.exquisite_gem": "精致的%s", + "tagprefix.fence": "%s栅栏", + "tagprefix.fence_gate": "%s栅栏门", + "tagprefix.fine_wire": "细%s导线", + "tagprefix.flawed_gem": "有瑕的%s", + "tagprefix.flawless_gem": "无瑕的%s", + "tagprefix.foil": "%s箔", + "tagprefix.frame": "%s框架", + "tagprefix.gear": "%s齿轮", + "tagprefix.gem": "%s", + "tagprefix.granite": "花岗岩%s矿石", + "tagprefix.gravel": "沙砾%s矿石", + "tagprefix.hot_ingot": "热%s锭", + "tagprefix.impure_dust": "含杂%s粉", + "tagprefix.ingot": "%s锭", + "tagprefix.lens": "%s透镜", + "tagprefix.log": "%s原木", + "tagprefix.long_rod": "长%s杆", + "tagprefix.marble": "大理岩%s矿石", + "tagprefix.netherrack": "下界岩%s矿石", + "tagprefix.nugget": "%s粒", + "tagprefix.null": "%s Null", + "tagprefix.pipe_huge_fluid": "巨型%s流体管道", + "tagprefix.pipe_huge_item": "巨型%s物品管道", + "tagprefix.pipe_huge_restrictive": "巨型加固%s物品管道", + "tagprefix.pipe_large_fluid": "大型%s流体管道", + "tagprefix.pipe_large_item": "大型%s物品管道", + "tagprefix.pipe_large_restrictive": "大型加固%s物品管道", + "tagprefix.pipe_nonuple_fluid": "九重%s流体管道", + "tagprefix.pipe_normal_fluid": "普通%s流体管道", + "tagprefix.pipe_normal_item": "普通%s物品管道", + "tagprefix.pipe_normal_restrictive": "普通加固%s物品管道", + "tagprefix.pipe_quadruple_fluid": "四重%s流体管道", + "tagprefix.pipe_small_fluid": "小型%s流体管道", + "tagprefix.pipe_small_item": "小型%s物品管道", + "tagprefix.pipe_small_restrictive": "小型加固%s物品管道", + "tagprefix.pipe_tiny_fluid": "微型%s流体管道", + "tagprefix.planks": "%s木板", + "tagprefix.plate": "%s板", + "tagprefix.polymer.dense_plate": "致密%s片", + "tagprefix.polymer.double_plate": "双层%s片", + "tagprefix.polymer.dust": "%s末", + "tagprefix.polymer.foil": "薄%s片", + "tagprefix.polymer.ingot": "%s条", + "tagprefix.polymer.nugget": "%s颗粒", + "tagprefix.polymer.plate": "%s片", + "tagprefix.polymer.small_dust": "小堆%s末", + "tagprefix.polymer.tiny_dust": "小撮%s末", + "tagprefix.pure_dust": "洁净%s粉", + "tagprefix.purified_ore": "纯净%s矿石", + "tagprefix.raw": "粗%s", + "tagprefix.raw_ore_block": "粗%s块", + "tagprefix.red_granite": "红花岗岩%s矿石", + "tagprefix.red_sand": "红沙%s矿石", + "tagprefix.refined_ore": "精炼%s矿石", + "tagprefix.ring": "%s环", + "tagprefix.rock": "%s", + "tagprefix.rod": "%s杆", + "tagprefix.rotor": "%s转子", + "tagprefix.round": "%s滚珠", + "tagprefix.sand": "沙子%s矿石", + "tagprefix.screw": "%s螺丝", + "tagprefix.screwdriver_tip": "%s螺丝刀刀头", + "tagprefix.slab": "%s台阶", + "tagprefix.small_dust": "小堆%s粉", + "tagprefix.small_gear": "小型%s齿轮", + "tagprefix.small_spring": "小型%s弹簧", + "tagprefix.spring": "%s弹簧", + "tagprefix.stairs": "%s楼梯", + "tagprefix.stone": "%s矿石", + "tagprefix.tiny_dust": "小撮%s粉", + "tagprefix.tuff": "凝灰岩%s矿石", + "tagprefix.turbine_blade": "%s涡轮扇叶", + "tagprefix.wire_cutter_head": "%s剪线钳钳头", + "tagprefix.wire_gt_double": "2x%s导线", + "tagprefix.wire_gt_hex": "16x%s导线", + "tagprefix.wire_gt_octal": "8x%s导线", + "tagprefix.wire_gt_quadruple": "4x%s导线", + "tagprefix.wire_gt_single": "1x%s导线", + "tagprefix.wrench_tip": "%s扳手顶", + "tile.gtceu.brittle_charcoal.name": "脆木炭块", + "tile.gtceu.brittle_charcoal.tooltip.0": "产自木炭堆点火器。", + "tile.gtceu.brittle_charcoal.tooltip.1": "挖掘可掉落木炭。", + "tile.gtceu.foam.name": "建筑泡沫", + "tile.gtceu.petrified_foam.name": "石化建筑泡沫", + "tile.gtceu.reinforced_foam.name": "强化建筑泡沫", + "tile.gtceu.reinforced_stone.name": "防爆石", + "tile.gtceu.seal.name": "密封方块" } From 3ae948673cc34d293da20c3d3f53b3df2f898847 Mon Sep 17 00:00:00 2001 From: IamNotBrianZ <74340257+IamNotBrianZ@users.noreply.github.com> Date: Mon, 19 May 2025 02:59:55 +0800 Subject: [PATCH 020/270] Update zh_tw.json (1.20.1) (#3166) --- .../resources/assets/gtceu/lang/zh_tw.json | 11052 ++++++++-------- 1 file changed, 5530 insertions(+), 5522 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index 8a455a3756c..ec533b3e77c 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -1,5524 +1,5532 @@ { - "behavior.data_item.assemblyline.data":"- §a%s", - "behavior.data_item.assemblyline.title":"§n裝配線結構資料:", - "behavior.item_magnet.disabled":"§c磁場已禁用", - "behavior.item_magnet.enabled":"§a磁場已啟用", - "behavior.portable_scanner.amp_per_sec":"最後一秒 %s A", - "behavior.portable_scanner.bedrock_fluid.amount":"流體儲量:%s %s - %s%%", - "behavior.portable_scanner.bedrock_fluid.amount_unknown":"流體儲量:%s%%", - "behavior.portable_scanner.bedrock_fluid.nothing":"流體儲量:§6無§r", - "behavior.portable_scanner.block_hardness":"硬度:%s;爆炸抗性:%s", - "behavior.portable_scanner.block_name":"名稱:%s;後設資料:%s", - "behavior.portable_scanner.debug_cpu_load":"%2$s刻內平均CPU負載約%1$sns,最差情況為%sns。", - "behavior.portable_scanner.debug_cpu_load_seconds":"負載秒數為%s秒。", - "behavior.portable_scanner.debug_lag_count":"已在伺服器中造成%s次延遲尖峰警告(任何大於%sms的情況)。", - "behavior.portable_scanner.debug_machine":"元ID:%s", - "behavior.portable_scanner.debug_machine_invalid":" 無效!", - "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =":" null!", - "behavior.portable_scanner.debug_machine_valid":"無效!", - "behavior.portable_scanner.divider":"=========================", - "behavior.portable_scanner.energy_container_in":"輸入上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_out":"輸出上限:%s(%s)EU,%s A", - "behavior.portable_scanner.energy_container_storage":"電量:%s EU / %s EU", - "behavior.portable_scanner.environmental_hazard":"區域內的環境污染:%s§r - %s ppm", - "behavior.portable_scanner.environmental_hazard.nothing":"區域內的環境污染:§6無§r", - "behavior.portable_scanner.eu_per_sec":"最後一秒 %s EU/t", - "behavior.portable_scanner.guild_name":"§2公會名稱:%s§r", - "behavior.portable_scanner.local_hazard":"區域內的其他污染:%s§r - %s ppm", - "behavior.portable_scanner.local_hazard.nothing":"區域內的其他污染:§6無§r", - "behavior.portable_scanner.machine_disabled":"已停止。", - "behavior.portable_scanner.machine_front_facing":"控制器面向:%s", - "behavior.portable_scanner.machine_ownership":"§2機器所有者型別:%s§r", - "behavior.portable_scanner.machine_power_loss":"因斷電而停止工作。", - "behavior.portable_scanner.machine_progress":"處理進度/總計:%s / %s", - "behavior.portable_scanner.machine_upwards_facing":"控制器正面朝向:%s", - "behavior.portable_scanner.mode.caption":"顯示模式:%s", - "behavior.portable_scanner.mode.show_all_info":"顯示所有資訊", - "behavior.portable_scanner.mode.show_block_info":"顯示方塊資訊", - "behavior.portable_scanner.mode.show_electrical_info":"顯示電器資訊", - "behavior.portable_scanner.mode.show_environmental_info":"顯示環境資訊", - "behavior.portable_scanner.mode.show_machine_info":"顯示機器資訊", - "behavior.portable_scanner.mode.show_recipe_info":"顯示配方資訊", - "behavior.portable_scanner.muffled":"已靜音。", - "behavior.portable_scanner.multiblock_energy_input":"最大輸入:%s EU/t,電壓等級 %s", - "behavior.portable_scanner.multiblock_energy_output":"最大輸出:%s EU/t,電壓等級 %s", - "behavior.portable_scanner.multiblock_maintenance":"故障:%s", - "behavior.portable_scanner.multiblock_parallel":"平行處理:%s", - "behavior.portable_scanner.player_name":"§2玩家姓名:%s§r,§7玩家線上:%s§r", - "behavior.portable_scanner.position":"----- X:%s;Y:%s;Z:%s;D:%s -----", - "behavior.portable_scanner.state":"%s:%s", - "behavior.portable_scanner.tank":"流體儲量(槽位%s):%s mB / %s mB %s", - "behavior.portable_scanner.tanks_empty":"未儲存流體", - "behavior.portable_scanner.team_name":"§2團隊名稱:%s§r", - "behavior.portable_scanner.workable_consumption":"預計耗能:%s EU/t,%s A", - "behavior.portable_scanner.workable_production":"預計產能:%s EU/t,%s A", - "behavior.portable_scanner.workable_progress":"處理進度:%s s / %s s", - "behavior.portable_scanner.workable_stored_energy":"能量暫存:%s EU / %s EU", - "behavior.prospector.added_waypoint":"已建立路徑點:%s!", - "behavior.prospector.not_enough_energy":"能量不足!", - "behavior.toggle_energy_consumer.tooltip":"右擊切換模式", - "behaviour.boor.by":"透過%s", - "behaviour.hammer":"右擊機器以開啟或關閉消音功能", - "behaviour.hoe":"可以翻耕泥土", - "behaviour.lighter.fluid.tooltip":"可使用丙烷或丁烷來生火", - "behaviour.lighter.tooltip.description":"可以點火", - "behaviour.lighter.tooltip.usage":"潛行右擊以開/關", - "behaviour.lighter.uses":"剩餘次數:%d", - "behaviour.meta.machine.config.copy.tooltip":"§7潛行右擊以複製機器設定", - "behaviour.meta.machine.config.paste.tooltip":"§7右擊以貼上機器設定", - "behaviour.paintspray.black.tooltip":"可以將物品染成黑色", - "behaviour.paintspray.blue.tooltip":"可以將物品染成藍色", - "behaviour.paintspray.brown.tooltip":"可以將物品染成棕色", - "behaviour.paintspray.cyan.tooltip":"可以將物品染成青色", - "behaviour.paintspray.gray.tooltip":"可以將物品染成灰色", - "behaviour.paintspray.green.tooltip":"可以將物品染成綠色", - "behaviour.paintspray.light_blue.tooltip":"可以將物品染成淺藍色", - "behaviour.paintspray.light_gray.tooltip":"可以將物品染成淺灰色", - "behaviour.paintspray.lime.tooltip":"可以將物品染成淺綠色", - "behaviour.paintspray.magenta.tooltip":"可以將物品染成洋紅色", - "behaviour.paintspray.orange.tooltip":"可以將物品染成橙色", - "behaviour.paintspray.pink.tooltip":"可以將物品染成粉紅色", - "behaviour.paintspray.purple.tooltip":"可以將物品染成紫色", - "behaviour.paintspray.red.tooltip":"可以將物品染成紅色", - "behaviour.paintspray.solvent.tooltip":"可以移除已染色物品的顏色", - "behaviour.paintspray.uses":"剩餘次數:%d", - "behaviour.paintspray.white.tooltip":"可以將物品染成白色", - "behaviour.paintspray.yellow.tooltip":"可以將物品染成黃色", - "behaviour.prospecting":"適用於探礦", - "behaviour.setting.allow.input.from.output.tooltip":"%s-允許從輸出面輸入:%s", - "behaviour.setting.item_auto_output.tooltip":"%s-自動輸出:%s", - "behaviour.setting.muffled.tooltip":"靜音:%s", - "behaviour.setting.output.direction.tooltip":"%s-輸出面方向:%s", - "behaviour.soft_hammer":"用來開啟與關閉機器", - "behaviour.soft_hammer.disabled":"已暫停工作", - "behaviour.soft_hammer.enabled":"已恢復工作", - "behaviour.soft_hammer.idle_after_cycle":"當前週期結束後暫停機器", - "behaviour.wrench":"右擊以旋轉方塊", - "block.filter_casing.tooltip":"建立一個§a無塵§r環境", - "block.gtceu.acid_hazard_sign_block":"強酸危害警示方塊", - "block.gtceu.active_transformer":"有源變壓器", - "block.gtceu.advanced_computer_casing":"高階電腦外殼", - "block.gtceu.advanced_data_access_hatch":"高階資料訪問倉", - "block.gtceu.alloy_blast_smelter":"合金冶煉爐", - "block.gtceu.aluminium_crate":"鋁板條箱", - "block.gtceu.aluminium_drum":"鋁桶", - "block.gtceu.antimatter_hazard_sign_block":"反物質危害警示方塊", - "block.gtceu.assembly_line":"裝配線", - "block.gtceu.assembly_line_casing":"裝配線外殼", - "block.gtceu.assembly_line_grating":"裝配線格柵", - "block.gtceu.assembly_line_unit":"裝配線控制外殼", - "block.gtceu.atomic_casing":"原子機械方塊", - "block.gtceu.auto_maintenance_hatch":"自動維護倉", - "block.gtceu.bio_hazard_sign_block":"生化危害警示方塊", - "block.gtceu.black_borderless_lamp":"黑色無框燈", - "block.gtceu.black_lamp":"黑色燈", - "block.gtceu.black_large_metal_sheet":"黑色粗紋金屬板方塊", - "block.gtceu.black_metal_sheet":"黑色金屬板方塊", - "block.gtceu.black_studs":"黑色橡膠混凝土", - "block.gtceu.blue_borderless_lamp":"藍色無框燈", - "block.gtceu.blue_lamp":"藍色燈", - "block.gtceu.blue_large_metal_sheet":"藍色粗紋金屬板方塊", - "block.gtceu.blue_metal_sheet":"藍色金屬板方塊", - "block.gtceu.blue_studs":"藍色橡膠混凝土", - "block.gtceu.boss_hazard_sign_block":"Boss危害警示方塊", - "block.gtceu.brittle_charcoal":"脆木炭塊", - "block.gtceu.bronze_brick_casing":"磚砌青銅外殼", - "block.gtceu.bronze_crate":"青銅板條箱", - "block.gtceu.bronze_drum":"青銅桶", - "block.gtceu.bronze_firebox_casing":"青銅燃燒室", - "block.gtceu.bronze_gearbox":"青銅齒輪箱機械方塊", - "block.gtceu.bronze_large_boiler":"大型青銅鍋爐", - "block.gtceu.bronze_machine_casing":"青銅機器外殼", - "block.gtceu.bronze_pipe_casing":"青銅管道方塊", - "block.gtceu.brown_borderless_lamp":"棕色無框燈", - "block.gtceu.brown_lamp":"棕色燈", - "block.gtceu.brown_large_metal_sheet":"棕色粗紋金屬板方塊", - "block.gtceu.brown_metal_sheet":"棕色金屬板方塊", - "block.gtceu.brown_studs":"棕色橡膠混凝土", - "block.gtceu.casing_coke_bricks":"焦爐磚塊", - "block.gtceu.casing_grate":"柵格機械方塊", - "block.gtceu.causality_hazard_sign_block":"因果律危害警示方塊", - "block.gtceu.charcoal_pile_igniter":"木炭堆點火器", - "block.gtceu.chiseled_dark_concrete":"浮雕深色混凝土", - "block.gtceu.chiseled_light_concrete":"浮雕淺色混凝土", - "block.gtceu.chiseled_marble":"浮雕大理岩", - "block.gtceu.chiseled_red_granite":"浮雕紅花崗岩", - "block.gtceu.clean_machine_casing":"潔淨不鏽鋼機械方塊", - "block.gtceu.cleaning_maintenance_hatch":"無塵維護倉", - "block.gtceu.cleanroom":"無塵室", - "block.gtceu.cleanroom_glass":"無塵室玻璃", - "block.gtceu.coke_oven":"焦爐", - "block.gtceu.coke_oven_bricks":"焦爐磚塊", - "block.gtceu.coke_oven_hatch":"焦爐倉", - "block.gtceu.computation_receiver_hatch":"算力資料靶倉", - "block.gtceu.computation_transmitter_hatch":"算力資料來源倉", - "block.gtceu.computer_casing":"電腦外殼", - "block.gtceu.computer_heat_vent":"電腦散熱口", - "block.gtceu.configurable_maintenance_hatch":"可配置維護倉", - "block.gtceu.corrosion_proof_casing":"耐腐蝕機械方塊", - "block.gtceu.cracked_dark_concrete_bricks":"裂紋深色混凝土磚", - "block.gtceu.cracked_light_concrete_bricks":"裂紋淺色混凝土磚", - "block.gtceu.cracked_marble_bricks":"裂紋大理岩磚", - "block.gtceu.cracked_red_granite_bricks":"裂紋紅花崗岩磚", - "block.gtceu.cracker":"裂解機", - "block.gtceu.creative_chest":"創造模式箱子", - "block.gtceu.creative_computation_provider":"創造模式算力提供器", - "block.gtceu.creative_data_access_hatch":"創造模式資料訪問倉", - "block.gtceu.creative_energy":"創造模式能量單元", - "block.gtceu.creative_tank":"創造模式儲罐", - "block.gtceu.crushing_wheels":"粉碎輪", - "block.gtceu.cupronickel_coil_block":"白銅線圈方塊", - "block.gtceu.cyan_borderless_lamp":"青色無框燈", - "block.gtceu.cyan_lamp":"青色燈", - "block.gtceu.cyan_large_metal_sheet":"青色粗紋金屬板方塊", - "block.gtceu.cyan_metal_sheet":"青色金屬板方塊", - "block.gtceu.cyan_studs":"青色橡膠混凝土", - "block.gtceu.dark_concrete":"深色混凝土", - "block.gtceu.dark_concrete_bricks":"深色混凝土磚", - "block.gtceu.dark_concrete_cobblestone":"深色混凝土鵝卵石", - "block.gtceu.dark_concrete_small_tile":"深色混凝土小片磚瓦", - "block.gtceu.dark_concrete_tile":"深色混凝土磚瓦", - "block.gtceu.dark_concrete_windmill_a":"深色混凝土風車形磚瓦 A", - "block.gtceu.dark_concrete_windmill_b":"深色混凝土風車形磚瓦 B", - "block.gtceu.data_access_hatch":"資料訪問倉", - "block.gtceu.data_bank":"資料庫", - "block.gtceu.data_receiver_hatch":"光學資料靶倉", - "block.gtceu.data_transmitter_hatch":"光學資料來源倉", - "block.gtceu.distillation_tower":"蒸餾塔", - "block.gtceu.electric_blast_furnace":"電力高爐", - "block.gtceu.electrolytic_cell":"電解器", - "block.gtceu.empty_tier_i_battery":"空電容(Tier I)", - "block.gtceu.empty_tier_ii_battery":"空電容(Tier II)", - "block.gtceu.empty_tier_iii_battery":"空電容(Tier III)", - "block.gtceu.engine_intake_casing":"引擎進氣機械方塊", - "block.gtceu.ev_16a_energy_converter":"16§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_1a_energy_converter":"1§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_4a_energy_converter":"4§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_8a_energy_converter":"8§e安§r§5EV§r能量轉換器", - "block.gtceu.ev_air_scrubber":"§5進階空氣淨化器 III§r", - "block.gtceu.ev_alloy_smelter":"§5進階合金爐 III§r", - "block.gtceu.ev_arc_furnace":"§5進階電弧爐 III§r", - "block.gtceu.ev_assembler":"§5進階組裝機 III§r", - "block.gtceu.ev_autoclave":"§5進階高壓釜 III§r", - "block.gtceu.ev_battery_buffer_16x":"16x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_4x":"4x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_battery_buffer_8x":"8x§5超高壓§r電池箱(§5EV§r)", - "block.gtceu.ev_bedrock_ore_miner":"§5進階基岩採礦機 III§r", - "block.gtceu.ev_bender":"§5進階卷板機 III§r", - "block.gtceu.ev_block_breaker":"§5進階方塊破壞器 III§r", - "block.gtceu.ev_brewery":"§5進階釀造室 III§r", - "block.gtceu.ev_canner":"§5進階裝罐機 III§r", - "block.gtceu.ev_centrifuge":"§5進階離心機 III§r", - "block.gtceu.ev_charger_4x":"4x§5超高壓§r充電機(§5EV§r)", - "block.gtceu.ev_chemical_bath":"§5進階化學水浴機 III§r", - "block.gtceu.ev_chemical_reactor":"§5進階化學反應器 III§r", - "block.gtceu.ev_circuit_assembler":"§5進階電路組裝機 III§r", - "block.gtceu.ev_compressor":"§5進階壓縮機 III§r", - "block.gtceu.ev_cutter":"§5進階切割機 III§r", - "block.gtceu.ev_diode":"§5EV§r二極體", - "block.gtceu.ev_distillery":"§5進階蒸餾室 III§r", - "block.gtceu.ev_electric_furnace":"§5進階電爐 III§r", - "block.gtceu.ev_electrolyzer":"§5進階電解機 III§r", - "block.gtceu.ev_electromagnetic_separator":"§5進階電磁分離機 III§r", - "block.gtceu.ev_energy_input_hatch":"§5EV§r能量輸入倉", - "block.gtceu.ev_energy_input_hatch_16a":"16安§5EV§r能量輸入倉", - "block.gtceu.ev_energy_input_hatch_4a":"4安§5EV§r能量輸入倉 ", - "block.gtceu.ev_energy_output_hatch":"§5EV§r能量輸出倉", - "block.gtceu.ev_energy_output_hatch_16a":"16安§5EV§r能量輸出倉", - "block.gtceu.ev_energy_output_hatch_4a":"4安§5EV§r能量輸出倉", - "block.gtceu.ev_extractor":"§5進階提取機 III§r", - "block.gtceu.ev_extruder":"§5進階壓模器 III§r", - "block.gtceu.ev_fermenter":"§5進階發酵槽 III§r", - "block.gtceu.ev_fisher":"§5進階捕魚機 III§r", - "block.gtceu.ev_fluid_drilling_rig":"§5進階流體鑽機 III§r", - "block.gtceu.ev_fluid_heater":"§5進階流體加熱器 III§r", - "block.gtceu.ev_fluid_passthrough_hatch":"§5EV§r流體通行倉", - "block.gtceu.ev_fluid_solidifier":"§5進階流體固化器 III§r", - "block.gtceu.ev_forge_hammer":"§5進階鍛造錘 III§r", - "block.gtceu.ev_forming_press":"§5進階衝壓機床 III§r", - "block.gtceu.ev_gas_collector":"§5進階集氣室 III§r", - "block.gtceu.ev_hermetic_casing":"密封機械方塊 IV", - "block.gtceu.ev_input_bus":"§5EV§r輸入匯流排", - "block.gtceu.ev_input_hatch":"§5EV§r輸入倉", - "block.gtceu.ev_input_hatch_4x":"§5EV§r四重輸入倉", - "block.gtceu.ev_input_hatch_9x":"§5EV§r九重輸入倉", - "block.gtceu.ev_item_collector":"§5進階物品收集器 III§r", - "block.gtceu.ev_item_passthrough_hatch":"§5EV§r物品通行倉", - "block.gtceu.ev_lapotronic_battery":"§5EV§r蘭波頓電池", - "block.gtceu.ev_large_miner":"§5進階大型採礦機 III§r", - "block.gtceu.ev_laser_engraver":"§5進階雷射蝕刻機 III§r", - "block.gtceu.ev_lathe":"§5進階車床 III§r", - "block.gtceu.ev_macerator":"§5進階研磨機 III§r", - "block.gtceu.ev_machine_casing":"§5EV§r機械方塊", - "block.gtceu.ev_machine_hull":"§5EV§r機器外殼", - "block.gtceu.ev_mixer":"§5進階攪拌機 III§r", - "block.gtceu.ev_muffler_hatch":"§5EV§r消音倉", - "block.gtceu.ev_ore_washer":"§5進階洗礦廠 III§r", - "block.gtceu.ev_output_bus":"§5EV§r輸出匯流排", - "block.gtceu.ev_output_hatch":"§5EV§r輸出倉", - "block.gtceu.ev_output_hatch_4x":"§5EV§r四重輸出倉", - "block.gtceu.ev_output_hatch_9x":"§5EV§r九重輸出倉", - "block.gtceu.ev_packer":"§5進階打包機 III§r", - "block.gtceu.ev_polarizer":"§5進階兩極磁化機 III§r", - "block.gtceu.ev_pump":"§5進階泵 III§r", - "block.gtceu.ev_rock_crusher":"§5進階碎岩機 III§r", - "block.gtceu.ev_rotor_holder":"§5EV§r轉子支架", - "block.gtceu.ev_scanner":"§5進階掃描器 III§r", - "block.gtceu.ev_sifter":"§5進階篩選機 III§r", - "block.gtceu.ev_substation_input_hatch_64a":"64安§5EV§r變電能量輸入倉", - "block.gtceu.ev_substation_output_hatch_64a":"64安§5EV§r變電能量輸出倉", - "block.gtceu.ev_super_chest":"超級箱 IV", - "block.gtceu.ev_super_tank":"超級缸 IV", - "block.gtceu.ev_thermal_centrifuge":"§5進階熱力離心機 III§r", - "block.gtceu.ev_transformer_16a":"§5超高壓§r高能變壓器(§5EV§r)", - "block.gtceu.ev_transformer_1a":"§5超高壓§r變壓器(§5EV§r)", - "block.gtceu.ev_transformer_2a":"§5超高壓§r進階變壓器(§5EV§r)", - "block.gtceu.ev_transformer_4a":"§5超高壓§r高流變壓器(§5EV§r)", - "block.gtceu.ev_wiremill":"§5進階線材軋機 III§r", - "block.gtceu.ev_world_accelerator":"§5進階世界加速器 III§r", - "block.gtceu.evaporation_plant":"蒸發塔", - "block.gtceu.explosion_hazard_sign_block":"爆炸危害警示方塊", - "block.gtceu.explosive.breaking_tooltip":"破壞它會引爆火藥,潛行挖掘以重新拾取", - "block.gtceu.explosive.lighting_tooltip":"無法用紅石信號引爆", - "block.gtceu.extreme_combustion_engine":"極限內燃引擎", - "block.gtceu.extreme_engine_intake_casing":"極限引擎進氣機械方塊", - "block.gtceu.filter_casing":"過濾器機械方塊", - "block.gtceu.fire_hazard_sign_block":"易燃危害警示方塊", - "block.gtceu.firebricks":"耐火磚塊", - "block.gtceu.foam":"建築泡沫", - "block.gtceu.frost_hazard_sign_block":"低溫危害警示方塊", - "block.gtceu.frostproof_machine_casing":"鋁製防凍機械方塊", - "block.gtceu.fusion_casing":"核融合機械方塊", - "block.gtceu.fusion_casing_mk2":"核融合機械方塊 MK-II", - "block.gtceu.fusion_casing_mk3":"核融合機械方塊 MK-III", - "block.gtceu.fusion_coil":"核融合線圈方塊", - "block.gtceu.fusion_glass":"核融合玻璃", - "block.gtceu.gas_large_turbine":"大型燃氣渦輪", - "block.gtceu.generic_hazard_sign_block":"泛用危害警示方塊", - "block.gtceu.gold_drum":"金桶", - "block.gtceu.gray_borderless_lamp":"灰色無框燈", - "block.gtceu.gray_lamp":"灰色燈", - "block.gtceu.gray_large_metal_sheet":"灰色粗紋金屬板方塊", - "block.gtceu.gray_metal_sheet":"灰色金屬板方塊", - "block.gtceu.gray_studs":"灰色橡膠混凝土", - "block.gtceu.green_borderless_lamp":"綠色無框燈", - "block.gtceu.green_lamp":"綠色燈", - "block.gtceu.green_large_metal_sheet":"綠色粗紋金屬板方塊", - "block.gtceu.green_metal_sheet":"綠色金屬板方塊", - "block.gtceu.green_studs":"綠色橡膠混凝土", - "block.gtceu.gregification_hazard_sign_block":"格雷化危害警示方塊", - "block.gtceu.heat_vent":"散熱片", - "block.gtceu.heatproof_machine_casing":"殷鋼隔熱機械方塊", - "block.gtceu.high_performance_computation_array":"高效能運算陣列(HPCA)", - "block.gtceu.high_power_casing":"高能機械方塊", - "block.gtceu.high_pressure_hazard_sign_block":"高壓力危害警示方塊", - "block.gtceu.high_temperature_hazard_sign_block":"高溫危害警示方塊", - "block.gtceu.high_temperature_smelting_casing":"高溫冶煉機械方塊", - "block.gtceu.high_voltage_hazard_sign_block":"高壓電危害警示方塊", - "block.gtceu.hp_steam_alloy_smelter":"高壓蒸汽合金爐", - "block.gtceu.hp_steam_compressor":"高壓蒸汽壓縮機", - "block.gtceu.hp_steam_extractor":"高壓蒸汽提取機", - "block.gtceu.hp_steam_forge_hammer":"高壓蒸汽鍛造錘", - "block.gtceu.hp_steam_furnace":"高壓蒸汽熔爐", - "block.gtceu.hp_steam_liquid_boiler":"高壓蒸汽液體燃料鍋爐", - "block.gtceu.hp_steam_macerator":"高壓蒸汽研磨機", - "block.gtceu.hp_steam_miner":"高壓蒸汽採礦機", - "block.gtceu.hp_steam_rock_crusher":"高壓蒸汽碎岩機", - "block.gtceu.hp_steam_solar_boiler":"高壓蒸汽太陽能鍋爐", - "block.gtceu.hp_steam_solid_boiler":"高壓蒸汽固體燃料鍋爐", - "block.gtceu.hpca_active_cooler_component":"HPCA主動冷卻元件", - "block.gtceu.hpca_advanced_computation_component":"HPCA高階計算元件", - "block.gtceu.hpca_bridge_component":"HPCA橋接元件", - "block.gtceu.hpca_computation_component":"HPCA計算元件", - "block.gtceu.hpca_empty_component":"空HPCA元件", - "block.gtceu.hpca_heat_sink_component":"HPCA散熱元件", - "block.gtceu.hssg_coil_block":"高速鋼-G線圈方塊", - "block.gtceu.huge_duct_pipe":"巨型風管", - "block.gtceu.hv_16a_energy_converter":"16§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_1a_energy_converter":"1§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_4a_energy_converter":"4§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_8a_energy_converter":"8§e安§r§6HV§r能量轉換器", - "block.gtceu.hv_air_scrubber":"§6進階空氣淨化器 II§r", - "block.gtceu.hv_alloy_smelter":"§6進階合金爐 II§r", - "block.gtceu.hv_arc_furnace":"§6進階電弧爐 II§r", - "block.gtceu.hv_assembler":"§6進階組裝機 II§r", - "block.gtceu.hv_autoclave":"§6進階高壓釜 II§r", - "block.gtceu.hv_battery_buffer_16x":"16x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_4x":"4x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_battery_buffer_8x":"8x§6高壓§r電池箱(§6HV§r)", - "block.gtceu.hv_bedrock_ore_miner":"§6進階基岩採礦機 II§r", - "block.gtceu.hv_bender":"§6進階卷板機 II§r", - "block.gtceu.hv_block_breaker":"§6進階方塊破壞機 II§r", - "block.gtceu.hv_brewery":"§6進階釀造室 II§r", - "block.gtceu.hv_buffer":"§6進階緩衝器 II§r", - "block.gtceu.hv_canner":"§6進階裝罐機 II§r", - "block.gtceu.hv_centrifuge":"§6進階離心機 II§r", - "block.gtceu.hv_charger_4x":"4x§6高壓§r充電機(§6HV§r)", - "block.gtceu.hv_chemical_bath":"§6進階化學水浴機 II§r", - "block.gtceu.hv_chemical_reactor":"§6進階化學反應器 II§r", - "block.gtceu.hv_circuit_assembler":"§6進階電路組裝機 II§r", - "block.gtceu.hv_combustion":"§6進階內燃發電機 II§r", - "block.gtceu.hv_compressor":"§6進階壓縮機 II§r", - "block.gtceu.hv_cutter":"§6進階切割機 II§r", - "block.gtceu.hv_diode":"§6HV§r二極體", - "block.gtceu.hv_distillery":"§6進階蒸餾室 II§r", - "block.gtceu.hv_electric_furnace":"§6進階電爐 II§r", - "block.gtceu.hv_electrolyzer":"§6進階電解機 II§r", - "block.gtceu.hv_electromagnetic_separator":"§6進階電磁分離機 II§r", - "block.gtceu.hv_energy_input_hatch":"§6HV§r能量輸入倉", - "block.gtceu.hv_energy_output_hatch":"§6HV§r能量輸出倉", - "block.gtceu.hv_extractor":"§6進階提取機 II§r", - "block.gtceu.hv_extruder":"§6進階壓模器 II§r", - "block.gtceu.hv_fermenter":"§6進階發酵槽 II§r", - "block.gtceu.hv_fisher":"§6進階捕魚機 II§r", - "block.gtceu.hv_fluid_drilling_rig":"§6進階流體鑽機 II§r", - "block.gtceu.hv_fluid_heater":"§6進階流體加熱器 II§r", - "block.gtceu.hv_fluid_passthrough_hatch":"§6HV§r流體通行倉", - "block.gtceu.hv_fluid_solidifier":"§6進階流體固化器 II§r", - "block.gtceu.hv_forge_hammer":"§6進階鍛造錘 II§r", - "block.gtceu.hv_forming_press":"§6進階衝壓機床 II§r", - "block.gtceu.hv_gas_collector":"§6進階集氣室 II§r", - "block.gtceu.hv_gas_turbine":"§6進階燃氣輪機 II§r", - "block.gtceu.hv_hermetic_casing":"密封機械方塊 III", - "block.gtceu.hv_input_bus":"§6HV§r輸入匯流排", - "block.gtceu.hv_input_hatch":"§6HV§r輸入倉", - "block.gtceu.hv_item_collector":"§6進階物品收集器 II§r", - "block.gtceu.hv_item_passthrough_hatch":"§6HV§r物品通行倉", - "block.gtceu.hv_laser_engraver":"§6進階雷射蝕刻機 II§r", - "block.gtceu.hv_lathe":"§6進階車床 II§r", - "block.gtceu.hv_macerator":"§6進階研磨機 II§r", - "block.gtceu.hv_machine_casing":"§6HV§r機械方塊", - "block.gtceu.hv_machine_hull":"§6HV§r機器外殼", - "block.gtceu.hv_miner":"§6進階採礦機 II§r", - "block.gtceu.hv_mixer":"§6進階攪拌機 II§r", - "block.gtceu.hv_muffler_hatch":"§6HV§r消音倉", - "block.gtceu.hv_ore_washer":"§6進階洗礦廠 II§r", - "block.gtceu.hv_output_bus":"§6HV§r輸出匯流排", - "block.gtceu.hv_output_hatch":"§6HV§r輸出倉", - "block.gtceu.hv_packer":"§6進階打包機 II§r", - "block.gtceu.hv_polarizer":"§6進階兩極磁化機 II§r", - "block.gtceu.hv_pump":"§6進階泵 II§r", - "block.gtceu.hv_rock_crusher":"§6進階碎岩機 II§r", - "block.gtceu.hv_rotor_holder":"§6HV§r轉子支架", - "block.gtceu.hv_scanner":"§6進階掃描器 II§r", - "block.gtceu.hv_sifter":"§6進階篩選機 II§r", - "block.gtceu.hv_steam_turbine":"§6進階蒸汽輪機 II§r", - "block.gtceu.hv_super_chest":"超級箱 III", - "block.gtceu.hv_super_tank":"超級缸 III", - "block.gtceu.hv_thermal_centrifuge":"§6進階熱力離心機 II§r", - "block.gtceu.hv_transformer_16a":"§6高壓§r高能變壓器(§6HV§r)", - "block.gtceu.hv_transformer_1a":"§6高壓§r變壓器(§6HV§r)", - "block.gtceu.hv_transformer_2a":"§6高壓§r進階變壓器(§6HV§r)", - "block.gtceu.hv_transformer_4a":"§6高壓§r高流變壓器(§6HV§r)", - "block.gtceu.hv_wiremill":"§6進階線材軋機 II§r", - "block.gtceu.hv_world_accelerator":"§6進階世界加速器 II§r", - "block.gtceu.implosion_compressor":"聚爆壓縮機", - "block.gtceu.industrial_steam_casing":"工業蒸汽機械方塊", - "block.gtceu.industrial_tnt":"工業TNT", - "block.gtceu.inert_machine_casing":"聚四氟乙烯化學惰性機械方塊", - "block.gtceu.itnt.drops_tooltip":"爆炸範圍比TNT大得多,所有被摧毀的方塊都會掉落", - "block.gtceu.iv_1024a_laser_source_hatch":"1024§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_1024a_laser_target_hatch":"1024§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_16a_energy_converter":"16§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_1a_energy_converter":"1§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_256a_laser_source_hatch":"256§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_256a_laser_target_hatch":"256§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_4096a_laser_source_hatch":"4096§e安§r§9IV§r雷射源倉", - "block.gtceu.iv_4096a_laser_target_hatch":"4096§e安§r§9IV§r雷射靶倉", - "block.gtceu.iv_4a_energy_converter":"4§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_8a_energy_converter":"8§e安§r§9IV§r能量轉換器", - "block.gtceu.iv_alloy_smelter":"§9精英合金爐§r", - "block.gtceu.iv_arc_furnace":"§9精英電弧爐§r", - "block.gtceu.iv_assembler":"§9精英組裝機§r", - "block.gtceu.iv_autoclave":"§9精英高壓釜§r", - "block.gtceu.iv_battery_buffer_16x":"16x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_4x":"4x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_battery_buffer_8x":"8x§9強導壓§r電池箱(§9IV§r)", - "block.gtceu.iv_bender":"§9精英卷板機§r", - "block.gtceu.iv_brewery":"§9精英釀造室§r", - "block.gtceu.iv_canner":"§9精英裝罐機§r", - "block.gtceu.iv_centrifuge":"§9精英離心機§r", - "block.gtceu.iv_charger_4x":"4x§9強導壓§r充電機(§9IV§r)", - "block.gtceu.iv_chemical_bath":"§9精英化學水浴機§r", - "block.gtceu.iv_chemical_reactor":"§9精英化學反應器§r", - "block.gtceu.iv_circuit_assembler":"§9精英電路組裝機§r", - "block.gtceu.iv_compressor":"§9精英壓縮機§r", - "block.gtceu.iv_cutter":"§9精英切割機§r", - "block.gtceu.iv_diode":"§9IV§r二極體", - "block.gtceu.iv_distillery":"§9精英蒸餾室§r", - "block.gtceu.iv_electric_furnace":"§9精英電爐§r", - "block.gtceu.iv_electrolyzer":"§9精英電解機§r", - "block.gtceu.iv_electromagnetic_separator":"§9精英電磁分離機§r", - "block.gtceu.iv_energy_input_hatch":"§9IV§r能量輸入倉", - "block.gtceu.iv_energy_input_hatch_16a":"16安§9IV§r能量輸入倉", - "block.gtceu.iv_energy_input_hatch_4a":"4安§9IV§r能量輸入倉", - "block.gtceu.iv_energy_output_hatch":"§9IV§r能量輸出倉", - "block.gtceu.iv_energy_output_hatch_16a":"16安§9IV§r能量輸出倉", - "block.gtceu.iv_energy_output_hatch_4a":"4安§9IV§r能量輸出倉", - "block.gtceu.iv_extractor":"§9精英提取機§r", - "block.gtceu.iv_extruder":"§9精英壓模器§r", - "block.gtceu.iv_fermenter":"§9精英發酵槽§r", - "block.gtceu.iv_fisher":"§9精英捕魚機§r", - "block.gtceu.iv_fluid_heater":"§9精英流體加熱器§r", - "block.gtceu.iv_fluid_passthrough_hatch":"§9IV§r流體通行倉", - "block.gtceu.iv_fluid_solidifier":"§9精英流體固化器§r", - "block.gtceu.iv_forge_hammer":"§9精英鍛造錘§r", - "block.gtceu.iv_forming_press":"§9精英衝壓機床§r", - "block.gtceu.iv_gas_collector":"§9精英集氣室§r", - "block.gtceu.iv_hermetic_casing":"密封機械方塊 V", - "block.gtceu.iv_input_bus":"§9IV§r輸入匯流排", - "block.gtceu.iv_input_hatch":"§9IV§r輸入倉", - "block.gtceu.iv_input_hatch_4x":"§9IV§r四重輸入倉", - "block.gtceu.iv_input_hatch_9x":"§9IV§r九重輸入倉", - "block.gtceu.iv_item_passthrough_hatch":"§9IV§r物品通行倉", - "block.gtceu.iv_lapotronic_battery":"§9IV§r蘭波頓電池", - "block.gtceu.iv_large_miner":"§9精英大型採礦機§r", - "block.gtceu.iv_laser_engraver":"§9精英雷射蝕刻機§r", - "block.gtceu.iv_lathe":"§9精英車床§r", - "block.gtceu.iv_macerator":"§9精英研磨機§r", - "block.gtceu.iv_machine_casing":"§9IV§r機械方塊", - "block.gtceu.iv_machine_hull":"§9IV§r機器外殼", - "block.gtceu.iv_mixer":"§9精英攪拌機§r", - "block.gtceu.iv_muffler_hatch":"§9IV§r消音倉", - "block.gtceu.iv_ore_washer":"§9精英洗礦廠§r", - "block.gtceu.iv_output_bus":"§9IV§r輸出匯流排", - "block.gtceu.iv_output_hatch":"§9IV§r輸出倉", - "block.gtceu.iv_output_hatch_4x":"§9IV§r四重輸出倉", - "block.gtceu.iv_output_hatch_9x":"§9IV§r九重輸出倉", - "block.gtceu.iv_packer":"§9精英打包機§r", - "block.gtceu.iv_parallel_hatch":"§9IV§r平行控制倉", - "block.gtceu.iv_polarizer":"§9精英兩極磁化機§r", - "block.gtceu.iv_quantum_chest":"量子箱 V", - "block.gtceu.iv_quantum_tank":"量子缸 V", - "block.gtceu.iv_rock_crusher":"§9精英碎岩機§r", - "block.gtceu.iv_rotor_holder":"§9IV§r轉子支架", - "block.gtceu.iv_scanner":"§9精英掃描器§r", - "block.gtceu.iv_sifter":"§9精英篩選機§r", - "block.gtceu.iv_substation_input_hatch_64a":"64安§9IV§r變電能量輸入倉", - "block.gtceu.iv_substation_output_hatch_64a":"64安§9IV§r變電能量輸出倉", - "block.gtceu.iv_thermal_centrifuge":"§9精英熱力離心機§r", - "block.gtceu.iv_transformer_16a":"§9強導壓§r高能變壓器(§9IV§r)", - "block.gtceu.iv_transformer_1a":"§9強導壓§r變壓器(§9IV§r)", - "block.gtceu.iv_transformer_2a":"§9強導壓§r進階變壓器(§9IV§r)", - "block.gtceu.iv_transformer_4a":"§9強導壓§r高流變壓器(§9IV§r)", - "block.gtceu.iv_wiremill":"§9精英線材軋機§r", - "block.gtceu.iv_world_accelerator":"§9精英世界加速器§r", - "block.gtceu.kanthal_coil_block":"坎塔爾合金線圈方塊", - "block.gtceu.laminated_glass":"夾層玻璃", - "block.gtceu.lamp.tooltip.inverted":"反相", - "block.gtceu.lamp.tooltip.no_bloom":"無泛光", - "block.gtceu.lamp.tooltip.no_light":"無光照", - "block.gtceu.large_arc_smelter":"大型電弧爐", - "block.gtceu.large_assembler":"大型組裝廠", - "block.gtceu.large_autoclave":"大型高壓結晶室", - "block.gtceu.large_brewer":"大型釀造廠", - "block.gtceu.large_centrifuge":"大型離心機組", - "block.gtceu.large_chemical_bath":"大型化學水浴機", - "block.gtceu.large_chemical_reactor":"大型化學反應器", - "block.gtceu.large_circuit_assembler":"大型電路組裝設施", - "block.gtceu.large_combustion_engine":"大型內燃引擎", - "block.gtceu.large_cutter":"大型切割機", - "block.gtceu.large_distillery":"大型分餾蒸餾廠", - "block.gtceu.large_duct_pipe":"大型風管", - "block.gtceu.large_electrolyzer":"大型電解槽", - "block.gtceu.large_electromagnet":"大型電磁工廠", - "block.gtceu.large_engraving_laser":"大型雷射蝕刻機", - "block.gtceu.large_extractor":"大型提取機", - "block.gtceu.large_extruder":"大型壓模機", - "block.gtceu.large_maceration_tower":"大型研磨塔", - "block.gtceu.large_material_press":"大型擠壓機", - "block.gtceu.large_mixer":"大型攪拌罐", - "block.gtceu.large_packer":"大型打包機", - "block.gtceu.large_scale_assembler_casing":"大型組裝機機械方塊", - "block.gtceu.large_sifting_funnel":"大型篩選漏斗", - "block.gtceu.large_solidifier":"大型固化陣列", - "block.gtceu.large_wiremill":"大型線材工廠", - "block.gtceu.laser_hazard_sign_block":"雷射危害警示方塊", - "block.gtceu.laser_safe_engraving_casing":"雷射安全機械方塊", - "block.gtceu.light_blue_borderless_lamp":"淺藍色無框燈", - "block.gtceu.light_blue_lamp":"淺藍色燈", - "block.gtceu.light_blue_large_metal_sheet":"淺藍色粗紋金屬板方塊", - "block.gtceu.light_blue_metal_sheet":"淺藍色金屬板方塊", - "block.gtceu.light_blue_studs":"淺藍色橡膠混凝土", - "block.gtceu.light_concrete":"淺色混凝土", - "block.gtceu.light_concrete_bricks":"淺色混凝土磚", - "block.gtceu.light_concrete_cobblestone":"淺色混凝土鵝卵石", - "block.gtceu.light_concrete_small_tile":"淺色混凝土小片磚瓦", - "block.gtceu.light_concrete_tile":"淺色混凝土磚瓦", - "block.gtceu.light_concrete_windmill_a":"淺色混凝土風車形磚瓦 A", - "block.gtceu.light_concrete_windmill_b":"淺色混凝土風車形磚瓦 B", - "block.gtceu.light_gray_borderless_lamp":"淺灰色無框燈", - "block.gtceu.light_gray_lamp":"淺灰色燈", - "block.gtceu.light_gray_large_metal_sheet":"淺灰色粗紋金屬板方塊", - "block.gtceu.light_gray_metal_sheet":"淺灰色金屬板方塊", - "block.gtceu.light_gray_studs":"淺灰色橡膠混凝土", - "block.gtceu.lime_borderless_lamp":"淺綠色無框燈", - "block.gtceu.lime_lamp":"淺綠色燈", - "block.gtceu.lime_large_metal_sheet":"淺綠色粗紋金屬板方塊", - "block.gtceu.lime_metal_sheet":"淺綠色金屬板方塊", - "block.gtceu.lime_studs":"淺綠色橡膠混凝土", - "block.gtceu.long_distance_fluid_pipeline":"長距離流體管道", - "block.gtceu.long_distance_fluid_pipeline_endpoint":"長距離流體管道介面", - "block.gtceu.long_distance_item_pipeline":"長距離物品管道", - "block.gtceu.long_distance_item_pipeline_endpoint":"長距離物品管道介面", - "block.gtceu.long_distance_item_pipeline_input_endpoint":"輸入介面", - "block.gtceu.long_distance_item_pipeline_input_pos":" - 輸入:%s", - "block.gtceu.long_distance_item_pipeline_network_header":"網路:", - "block.gtceu.long_distance_item_pipeline_no_network":"找不到網路", - "block.gtceu.long_distance_item_pipeline_output_endpoint":"輸出介面", - "block.gtceu.long_distance_item_pipeline_output_pos":" - 輸出:%s", - "block.gtceu.long_distance_item_pipeline_pipe_count":" - 管道:%s", - "block.gtceu.lp_steam_alloy_smelter":"低壓蒸汽合金爐", - "block.gtceu.lp_steam_compressor":"低壓蒸汽壓縮機", - "block.gtceu.lp_steam_extractor":"低壓蒸汽提取機", - "block.gtceu.lp_steam_forge_hammer":"低壓蒸汽鍛造錘", - "block.gtceu.lp_steam_furnace":"低壓蒸汽熔爐", - "block.gtceu.lp_steam_liquid_boiler":"低壓蒸汽液體燃料鍋爐", - "block.gtceu.lp_steam_macerator":"低壓蒸汽研磨機", - "block.gtceu.lp_steam_miner":"低壓蒸汽採礦機", - "block.gtceu.lp_steam_rock_crusher":"低壓蒸汽碎岩機", - "block.gtceu.lp_steam_solar_boiler":"低壓蒸汽太陽能鍋爐", - "block.gtceu.lp_steam_solid_boiler":"低壓蒸汽固體燃料鍋爐", - "block.gtceu.luv_1024a_laser_source_hatch":"1024§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_1024a_laser_target_hatch":"1024§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_16a_energy_converter":"16§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_1a_energy_converter":"1§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_256a_laser_source_hatch":"256§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_256a_laser_target_hatch":"256§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_4096a_laser_source_hatch":"4096§e安§r§dLuV§r雷射源倉", - "block.gtceu.luv_4096a_laser_target_hatch":"4096§e安§r§dLuV§r雷射靶倉", - "block.gtceu.luv_4a_energy_converter":"4§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_8a_energy_converter":"8§e安§r§dLuV§r能量轉換器", - "block.gtceu.luv_alloy_smelter":"§d精英合金爐 II§r", - "block.gtceu.luv_arc_furnace":"§d精英電弧爐 II§r", - "block.gtceu.luv_assembler":"§d精英組裝機 II§r", - "block.gtceu.luv_autoclave":"§d精英高壓釜 II§r", - "block.gtceu.luv_battery_buffer_16x":"16x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_4x":"4x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_battery_buffer_8x":"8x§d劇差壓§r電池箱(§dLuV§r)", - "block.gtceu.luv_bender":"§d精英卷板機 II§r", - "block.gtceu.luv_brewery":"§d精英釀造室 II§r", - "block.gtceu.luv_canner":"§d精英裝罐機 II§r", - "block.gtceu.luv_centrifuge":"§d精英離心機 II§r", - "block.gtceu.luv_charger_4x":"4x§d劇差壓§r充電機(§dLuV§r)", - "block.gtceu.luv_chemical_bath":"§d精英化學水浴機 II§r", - "block.gtceu.luv_chemical_reactor":"§d精英化學反應器 II§r", - "block.gtceu.luv_circuit_assembler":"§d精英電路組裝機 II§r", - "block.gtceu.luv_compressor":"§d精英壓縮機 II§r", - "block.gtceu.luv_cutter":"§d精英切割機 II§r", - "block.gtceu.luv_diode":"§dLuV§r二極體", - "block.gtceu.luv_distillery":"§d精英蒸餾室 II§r", - "block.gtceu.luv_dual_input_hatch":"§dLuV§r兩用輸入倉", - "block.gtceu.luv_dual_output_hatch":"§dLuV§r兩用輸出倉", - "block.gtceu.luv_electric_furnace":"§d精英電爐 II§r", - "block.gtceu.luv_electrolyzer":"§d精英電解機 II§r", - "block.gtceu.luv_electromagnetic_separator":"§d精英電磁分離機 II§r", - "block.gtceu.luv_energy_input_hatch":"§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_input_hatch_16a":"16安§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_input_hatch_4a":"4安§dLuV§r能量輸入倉", - "block.gtceu.luv_energy_output_hatch":"§dLuV§r能量輸出倉", - "block.gtceu.luv_energy_output_hatch_16a":"16安§dLuV§r能量輸出倉", - "block.gtceu.luv_energy_output_hatch_4a":"4安§dLuV§r能量輸出倉", - "block.gtceu.luv_extractor":"§d精英提取機 II§r", - "block.gtceu.luv_extruder":"§d精英壓模器 II§r", - "block.gtceu.luv_fermenter":"§d精英發酵槽 II§r", - "block.gtceu.luv_fisher":"§d精英捕魚機 II§r", - "block.gtceu.luv_fluid_heater":"§d精英流體加熱器 II§r", - "block.gtceu.luv_fluid_passthrough_hatch":"§dLuV§r流體通行倉", - "block.gtceu.luv_fluid_solidifier":"§d精英流體固化器 II§r", - "block.gtceu.luv_forge_hammer":"§d精英鍛造錘 II§r", - "block.gtceu.luv_forming_press":"§d精英衝壓機床 II§r", - "block.gtceu.luv_fusion_reactor":"核融合反應爐控制電腦 MK I", - "block.gtceu.luv_gas_collector":"§d精英集氣室 II§r", - "block.gtceu.luv_hermetic_casing":"密封機械方塊 VI", - "block.gtceu.luv_input_bus":"§dLuV§r輸入匯流排", - "block.gtceu.luv_input_hatch":"§dLuV§r輸入倉", - "block.gtceu.luv_input_hatch_4x":"§dLuV§r四重輸入倉", - "block.gtceu.luv_input_hatch_9x":"§dLuV§r九重輸入倉", - "block.gtceu.luv_item_passthrough_hatch":"§dLuV§r物品通行倉", - "block.gtceu.luv_lapotronic_battery":"§dLuV§r蘭波頓電池", - "block.gtceu.luv_large_miner":"§d精英大型採礦機 II§r", - "block.gtceu.luv_laser_engraver":"§d精英雷射蝕刻機 II§r", - "block.gtceu.luv_lathe":"§d精英車床 II§r", - "block.gtceu.luv_macerator":"§d精英研磨機 II§r", - "block.gtceu.luv_machine_casing":"§dLuV§r機械方塊", - "block.gtceu.luv_machine_hull":"§dLuV§r機器外殼", - "block.gtceu.luv_mixer":"§d精英攪拌機 II§r", - "block.gtceu.luv_muffler_hatch":"§dLuV§r消音倉", - "block.gtceu.luv_ore_washer":"§d精英洗礦廠 II§r", - "block.gtceu.luv_output_bus":"§dLuV§r輸出匯流排", - "block.gtceu.luv_output_hatch":"§dLuV§r輸出倉", - "block.gtceu.luv_output_hatch_4x":"§dLuV§r四重輸出倉", - "block.gtceu.luv_output_hatch_9x":"§dLuV§r九重輸出倉", - "block.gtceu.luv_packer":"§d精英打包機 II§r", - "block.gtceu.luv_parallel_hatch":"§dLuV§r平行控制倉", - "block.gtceu.luv_polarizer":"§d精英兩極磁化機 II§r", - "block.gtceu.luv_quantum_chest":"量子箱 VI", - "block.gtceu.luv_quantum_tank":"量子缸 VI", - "block.gtceu.luv_rock_crusher":"§d精英碎岩機 II§r", - "block.gtceu.luv_rotor_holder":"§dLuV§r轉子支架", - "block.gtceu.luv_scanner":"§d精英掃描器 II§r", - "block.gtceu.luv_sifter":"§d精英篩選機 II§r", - "block.gtceu.luv_substation_input_hatch_64a":"64安§dLuV§r變電能量輸入倉", - "block.gtceu.luv_substation_output_hatch_64a":"64安§dLuV§r變電能量輸出倉", - "block.gtceu.luv_thermal_centrifuge":"§d精英熱力離心機 II§r", - "block.gtceu.luv_transformer_16a":"§d劇差壓§r高能變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_1a":"§d劇差壓§r變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_2a":"§d劇差壓§r進階變壓器(§dLuV§r)", - "block.gtceu.luv_transformer_4a":"§d劇差壓§r高流變壓器(§dLuV§r)", - "block.gtceu.luv_wiremill":"§d精英線材軋機 II§r", - "block.gtceu.luv_world_accelerator":"§d精英世界加速器 II§r", - "block.gtceu.lv_16a_energy_converter":"16§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_1a_energy_converter":"1§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_4a_energy_converter":"4§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_8a_energy_converter":"8§e安§r§7LV§r能量轉換器", - "block.gtceu.lv_air_scrubber":"基礎空氣淨化器§r", - "block.gtceu.lv_alloy_smelter":"基礎合金爐§r", - "block.gtceu.lv_arc_furnace":"基礎電弧爐§r", - "block.gtceu.lv_assembler":"基礎組裝機§r", - "block.gtceu.lv_autoclave":"基礎高壓釜§r", - "block.gtceu.lv_battery_buffer_16x":"16x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_4x":"4x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_battery_buffer_8x":"8x§7低壓§r電池箱(§7LV§r)", - "block.gtceu.lv_bender":"基礎卷板機§r", - "block.gtceu.lv_block_breaker":"基礎方塊破壞器§r", - "block.gtceu.lv_brewery":"基礎釀造室§r", - "block.gtceu.lv_buffer":"基礎緩衝器§r", - "block.gtceu.lv_canner":"基礎裝罐機§r", - "block.gtceu.lv_centrifuge":"基礎離心機§r", - "block.gtceu.lv_charger_4x":"4x§7低壓§r充電機(§7LV§r)", - "block.gtceu.lv_chemical_bath":"基礎化學水浴機§r", - "block.gtceu.lv_chemical_reactor":"基礎化學反應器§r", - "block.gtceu.lv_circuit_assembler":"基礎電路組裝機§r", - "block.gtceu.lv_combustion":"基礎內燃發電機§r", - "block.gtceu.lv_compressor":"基礎壓縮機§r", - "block.gtceu.lv_cutter":"基礎切割機§r", - "block.gtceu.lv_diode":"§7LV§r二極體", - "block.gtceu.lv_distillery":"基礎蒸餾室§r", - "block.gtceu.lv_electric_furnace":"基礎電爐§r", - "block.gtceu.lv_electrolyzer":"基礎電解機§r", - "block.gtceu.lv_electromagnetic_separator":"基礎電磁分離機§r", - "block.gtceu.lv_energy_input_hatch":"§7LV§r能量輸入倉", - "block.gtceu.lv_energy_output_hatch":"§7LV§r能量輸出倉", - "block.gtceu.lv_extractor":"基礎提取機§r", - "block.gtceu.lv_extruder":"基礎壓模器§r", - "block.gtceu.lv_fermenter":"基礎發酵槽§r", - "block.gtceu.lv_fisher":"基礎捕魚機§r", - "block.gtceu.lv_fluid_heater":"基礎流體加熱器§r", - "block.gtceu.lv_fluid_passthrough_hatch":"§7LV§r流體通行倉", - "block.gtceu.lv_fluid_solidifier":"基礎流體固化器§r", - "block.gtceu.lv_forge_hammer":"基礎鍛造錘§r", - "block.gtceu.lv_forming_press":"基礎衝壓機床§r", - "block.gtceu.lv_gas_collector":"基礎集氣室§r", - "block.gtceu.lv_gas_turbine":"基礎燃氣輪機§r", - "block.gtceu.lv_hermetic_casing":"密封機械方塊 I", - "block.gtceu.lv_input_bus":"§7LV§r輸入匯流排", - "block.gtceu.lv_input_hatch":"§7LV§r輸入倉", - "block.gtceu.lv_item_collector":"基礎物品收集器§r", - "block.gtceu.lv_item_passthrough_hatch":"§7LV§r物品通行倉", - "block.gtceu.lv_laser_engraver":"基礎雷射蝕刻機§r", - "block.gtceu.lv_lathe":"基礎車床§r", - "block.gtceu.lv_macerator":"基礎研磨機§r", - "block.gtceu.lv_machine_casing":"§7LV§r機械方塊", - "block.gtceu.lv_machine_hull":"§7LV§r機器外殼", - "block.gtceu.lv_miner":"基礎採礦機§r", - "block.gtceu.lv_mixer":"基礎攪拌機§r", - "block.gtceu.lv_muffler_hatch":"§7LV§r消音倉", - "block.gtceu.lv_ore_washer":"基礎洗礦廠§r", - "block.gtceu.lv_output_bus":"§7LV§r輸出匯流排", - "block.gtceu.lv_output_hatch":"§7LV§r輸出倉", - "block.gtceu.lv_packer":"基礎打包機§r", - "block.gtceu.lv_polarizer":"基礎兩極磁化機§r", - "block.gtceu.lv_pump":"基礎泵§r", - "block.gtceu.lv_rock_crusher":"基礎碎岩機§r", - "block.gtceu.lv_scanner":"基礎掃描器§r", - "block.gtceu.lv_sifter":"基礎篩選機§r", - "block.gtceu.lv_steam_turbine":"基礎蒸汽輪機§r", - "block.gtceu.lv_super_chest":"超級箱 I", - "block.gtceu.lv_super_tank":"超級缸 I", - "block.gtceu.lv_thermal_centrifuge":"基礎熱力離心機§r", - "block.gtceu.lv_transformer_16a":"§7低壓§r高能變壓器(§7LV§r)", - "block.gtceu.lv_transformer_1a":"§7低壓§r變壓器(§7LV§r)", - "block.gtceu.lv_transformer_2a":"§7低壓§r進階變壓器(§7LV§r)", - "block.gtceu.lv_transformer_4a":"§7低壓§r高流變壓器(§7LV§r)", - "block.gtceu.lv_wiremill":"基礎線材軋機§r", - "block.gtceu.lv_world_accelerator":"基礎世界加速器§r", - "block.gtceu.magenta_borderless_lamp":"洋紅色無框燈", - "block.gtceu.magenta_lamp":"洋紅色燈", - "block.gtceu.magenta_large_metal_sheet":"洋紅色粗紋金屬板方塊", - "block.gtceu.magenta_metal_sheet":"洋紅色金屬板方塊", - "block.gtceu.magenta_studs":"洋紅色橡膠混凝土", - "block.gtceu.magic_hazard_sign_block":"魔力危害警示方塊", - "block.gtceu.magnetic_hazard_sign_block":"強磁危害警示方塊", - "block.gtceu.maintenance_hatch":"維護倉", - "block.gtceu.marble":"大理岩", - "block.gtceu.marble_bricks":"大理岩磚", - "block.gtceu.marble_cobblestone":"大理岩鵝卵石", - "block.gtceu.marble_small_tile":"大理岩小片磚瓦", - "block.gtceu.marble_tile":"大理岩磚瓦", - "block.gtceu.marble_windmill_a":"大理岩風車形磚瓦 A", - "block.gtceu.marble_windmill_b":"大理岩風車形磚瓦 B", - "block.gtceu.max_16a_energy_converter":"16§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_1a_energy_converter":"1§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_4a_energy_converter":"4§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_8a_energy_converter":"8§e安§r§c§lMAX§r能量轉換器", - "block.gtceu.max_battery_buffer_16x":"16x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_4x":"4x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_battery_buffer_8x":"8x上限壓電池箱(§c§lMAX§r)", - "block.gtceu.max_charger_4x":"4x上限壓充電機(§c§lMAX§r)", - "block.gtceu.max_dual_input_hatch":"§c§lMAX§r兩用輸入倉", - "block.gtceu.max_dual_output_hatch":"§c§lMAX§r兩用輸出倉", - "block.gtceu.max_energy_input_hatch":"§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_input_hatch_16a":"16安§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_input_hatch_4a":"4安§c§lMAX§r能量輸入倉", - "block.gtceu.max_energy_output_hatch":"§c§lMAX§r能量輸出倉", - "block.gtceu.max_energy_output_hatch_16a":"16安§c§lMAX§r能量輸出倉", - "block.gtceu.max_energy_output_hatch_4a":"4安§c§lMAX§r能量輸出倉", - "block.gtceu.max_input_bus":"§c§lMAX§r輸入匯流排", - "block.gtceu.max_input_hatch":"§c§lMAX§r輸入倉", - "block.gtceu.max_input_hatch_4x":"§c§lMAX§r四重輸入倉", - "block.gtceu.max_input_hatch_9x":"§c§lMAX§r九重輸入倉", - "block.gtceu.max_machine_casing":"§c§lMAX§r機械方塊", - "block.gtceu.max_machine_hull":"§c§lMAX§r機器外殼", - "block.gtceu.max_output_bus":"§c§lMAX§r輸出匯流排", - "block.gtceu.max_output_hatch":"§c§lMAX§r輸出倉", - "block.gtceu.max_output_hatch_4x":"§c§lMAX§r四重輸出倉", - "block.gtceu.max_output_hatch_9x":"§c§lMAX§r九重輸出倉", - "block.gtceu.max_substation_input_hatch_64a":"64安§c§lMAX§r變電能量輸入倉", - "block.gtceu.max_substation_output_hatch_64a":"64安§c§lMAX§r變電能量輸出倉", - "block.gtceu.me_input_bus":"ME輸入匯流排", - "block.gtceu.me_input_hatch":"ME輸入倉", - "block.gtceu.me_output_bus":"ME輸出匯流排", - "block.gtceu.me_output_hatch":"ME輸出倉", - "block.gtceu.me_pattern_buffer":"ME樣板供應倉", - "block.gtceu.me_pattern_buffer_proxy":"ME遠端樣板供應倉", - "block.gtceu.me_stocking_input_bus":"ME庫存輸入匯流排", - "block.gtceu.me_stocking_input_hatch":"ME庫存輸入倉", - "block.gtceu.mega_blast_furnace":"轉底爐", - "block.gtceu.mega_vacuum_freezer":"巨型真空冷凍機", - "block.gtceu.miner_pipe":"採礦管道", - "block.gtceu.mob_infestation_hazard_sign_block":"怪物侵襲危害警示方塊", - "block.gtceu.mob_spawner_hazard_sign_block":"生怪磚危害警示方塊", - "block.gtceu.molybdenum_disilicide_coil_block":"二矽化鉬線圈方塊", - "block.gtceu.mossy_dark_concrete_bricks":"青苔深色混凝土磚", - "block.gtceu.mossy_dark_concrete_cobblestone":"青苔深色混凝土鵝卵石", - "block.gtceu.mossy_light_concrete_bricks":"青苔淺色混凝土磚", - "block.gtceu.mossy_light_concrete_cobblestone":"青苔淺色混凝土鵝卵石", - "block.gtceu.mossy_marble_bricks":"青苔大理岩磚", - "block.gtceu.mossy_marble_cobblestone":"青苔大理岩鵝卵石", - "block.gtceu.mossy_red_granite_bricks":"青苔紅花崗岩磚", - "block.gtceu.mossy_red_granite_cobblestone":"青苔紅花崗岩鵝卵石", - "block.gtceu.multi_smelter":"工業熔爐", - "block.gtceu.mv_16a_energy_converter":"16§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_1a_energy_converter":"1§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_4a_energy_converter":"4§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_8a_energy_converter":"8§e安§r§bMV§r能量轉換器", - "block.gtceu.mv_air_scrubber":"§b進階空氣淨化器§r", - "block.gtceu.mv_alloy_smelter":"§b進階合金爐§r", - "block.gtceu.mv_arc_furnace":"§b進階電弧爐§r", - "block.gtceu.mv_assembler":"§b進階組裝機§r", - "block.gtceu.mv_autoclave":"§b進階高壓釜§r", - "block.gtceu.mv_battery_buffer_16x":"16x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_4x":"4x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_battery_buffer_8x":"8x§b中壓§r電池箱(§bMV§r)", - "block.gtceu.mv_bedrock_ore_miner":"§b進階基岩採礦機§r", - "block.gtceu.mv_bender":"§b進階卷板機§r", - "block.gtceu.mv_block_breaker":"§b進階方塊破壞器§r", - "block.gtceu.mv_brewery":"§b進階釀造室§r", - "block.gtceu.mv_buffer":"§b進階緩衝器§r", - "block.gtceu.mv_canner":"§b進階裝罐機§r", - "block.gtceu.mv_centrifuge":"§b進階離心機§r", - "block.gtceu.mv_charger_4x":"4x§b中壓§r充電機(§bMV§r)", - "block.gtceu.mv_chemical_bath":"§b進階化學水浴機§r", - "block.gtceu.mv_chemical_reactor":"§b進階化學反應器§r", - "block.gtceu.mv_circuit_assembler":"§b進階電路組裝機§r", - "block.gtceu.mv_combustion":"§b進階內燃發電機§r", - "block.gtceu.mv_compressor":"§b進階壓縮機§r", - "block.gtceu.mv_cutter":"§b進階切割機§r", - "block.gtceu.mv_diode":"§bMV§r二極體", - "block.gtceu.mv_distillery":"§b進階蒸餾室§r", - "block.gtceu.mv_electric_furnace":"§b進階電爐§r", - "block.gtceu.mv_electrolyzer":"§b進階電解機§r", - "block.gtceu.mv_electromagnetic_separator":"§b進階電磁分離機§r", - "block.gtceu.mv_energy_input_hatch":"§bMV§r能量輸入倉", - "block.gtceu.mv_energy_output_hatch":"§bMV§r能量輸出倉", - "block.gtceu.mv_extractor":"§b進階提取機§r", - "block.gtceu.mv_extruder":"§b進階壓模器§r", - "block.gtceu.mv_fermenter":"§b進階發酵槽§r", - "block.gtceu.mv_fisher":"§b進階捕魚機§r", - "block.gtceu.mv_fluid_drilling_rig":"§b進階流體鑽機 §r", - "block.gtceu.mv_fluid_heater":"§b進階流體加熱器§r", - "block.gtceu.mv_fluid_passthrough_hatch":"§bMV§r流體通行倉", - "block.gtceu.mv_fluid_solidifier":"§b進階流體固化器§r", - "block.gtceu.mv_forge_hammer":"§b進階鍛造錘§r", - "block.gtceu.mv_forming_press":"§b進階衝壓機床§r", - "block.gtceu.mv_gas_collector":"§b進階集氣室§r", - "block.gtceu.mv_gas_turbine":"§b進階燃氣輪機§r", - "block.gtceu.mv_hermetic_casing":"密封機械方塊 II", - "block.gtceu.mv_input_bus":"§bMV§r輸入匯流排", - "block.gtceu.mv_input_hatch":"§bMV§r輸入倉", - "block.gtceu.mv_item_collector":"§b進階物品收集器§r", - "block.gtceu.mv_item_passthrough_hatch":"§bMV§r物品通行倉", - "block.gtceu.mv_laser_engraver":"§b進階雷射蝕刻機§r", - "block.gtceu.mv_lathe":"§b進階車床§r", - "block.gtceu.mv_macerator":"§b進階研磨機§r", - "block.gtceu.mv_machine_casing":"§bMV§r機械方塊", - "block.gtceu.mv_machine_hull":"§bMV§r機器外殼", - "block.gtceu.mv_miner":"§b進階採礦機§r", - "block.gtceu.mv_mixer":"§b進階攪拌機§r", - "block.gtceu.mv_muffler_hatch":"§bMV§r消音倉", - "block.gtceu.mv_ore_washer":"§b進階洗礦廠§r", - "block.gtceu.mv_output_bus":"§bMV§r輸出匯流排", - "block.gtceu.mv_output_hatch":"§bMV§r輸出倉", - "block.gtceu.mv_packer":"§b進階打包機§r", - "block.gtceu.mv_polarizer":"§b進階兩極磁化機§r", - "block.gtceu.mv_pump":"§b進階泵§r", - "block.gtceu.mv_rock_crusher":"§b進階碎岩機§r", - "block.gtceu.mv_scanner":"§b進階掃描器§r", - "block.gtceu.mv_sifter":"§b進階篩選機§r", - "block.gtceu.mv_steam_turbine":"§b進階蒸汽輪機§r", - "block.gtceu.mv_super_chest":"超級箱 II", - "block.gtceu.mv_super_tank":"超級缸 II", - "block.gtceu.mv_thermal_centrifuge":"§b進階熱力離心機§r", - "block.gtceu.mv_transformer_16a":"§b中壓§r高能變壓器(§bMV§r)", - "block.gtceu.mv_transformer_1a":"§b中壓§r變壓器(§bMV§r)", - "block.gtceu.mv_transformer_2a":"§b中壓§r進階變壓器(§bMV§r)", - "block.gtceu.mv_transformer_4a":"§b中壓§r高流變壓器(§bMV§r)", - "block.gtceu.mv_wiremill":"§b進階線材軋機§r", - "block.gtceu.mv_world_accelerator":"§b進階世界加速器§r", - "block.gtceu.naquadah_coil_block":"矽岩線圈方塊", - "block.gtceu.network_switch":"網路交換機", - "block.gtceu.nichrome_coil_block":"鎳鉻合金線圈方塊", - "block.gtceu.noise_hazard_sign_block":"噪音危害警示方塊", - "block.gtceu.nonconducting_casing":"絕緣機械方塊", - "block.gtceu.normal_duct_pipe":"普通風管", - "block.gtceu.normal_laser_pipe":"普通雷射管道", - "block.gtceu.normal_laser_pipe.tooltip":"§f無損§7傳遞能量,僅限直線擺放", - "block.gtceu.normal_optical_pipe":"光纜", - "block.gtceu.normal_optical_pipe.tooltip":"§7傳遞§f算力§7或§f研究資料§7", - "block.gtceu.object_holder":"物品支架", - "block.gtceu.oil_heavy":"重油", - "block.gtceu.oil_light":"輕油", - "block.gtceu.oil_medium":"原油", - "block.gtceu.opv_1024a_laser_source_hatch":"1024§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_1024a_laser_target_hatch":"1024§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_16a_energy_converter":"16§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_1a_energy_converter":"1§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_256a_laser_source_hatch":"256§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_256a_laser_target_hatch":"256§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_4096a_laser_source_hatch":"4096§e安§r§9§lOpV§r雷射源倉", - "block.gtceu.opv_4096a_laser_target_hatch":"4096§e安§r§9§lOpV§r雷射靶倉", - "block.gtceu.opv_4a_energy_converter":"4§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_8a_energy_converter":"8§e安§r§9§lOpV§r能量轉換器", - "block.gtceu.opv_alloy_smelter":"§9§l傳奇合金爐§r", - "block.gtceu.opv_arc_furnace":"§9§l傳奇電弧爐§r", - "block.gtceu.opv_assembler":"§9§l傳奇組裝機§r", - "block.gtceu.opv_autoclave":"§9§l傳奇高壓釜§r", - "block.gtceu.opv_battery_buffer_16x":"16x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_4x":"4x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_battery_buffer_8x":"8x§9過載壓§r電池箱(§9§lOpV§r)", - "block.gtceu.opv_bender":"§9§l傳奇卷板機§r", - "block.gtceu.opv_brewery":"§9§l傳奇釀造室§r", - "block.gtceu.opv_canner":"§9§l傳奇裝罐機§r", - "block.gtceu.opv_centrifuge":"§9§l傳奇離心機§r", - "block.gtceu.opv_charger_4x":"4x§9過載壓§r充電機(§9§lOpV§r)", - "block.gtceu.opv_chemical_bath":"§9§l傳奇化學水浴機§r", - "block.gtceu.opv_chemical_reactor":"§9§l傳奇化學反應器§r", - "block.gtceu.opv_circuit_assembler":"§9§l傳奇電路組裝機§r", - "block.gtceu.opv_compressor":"§9§l傳奇壓縮機§r", - "block.gtceu.opv_cutter":"§9§l傳奇切割機§r", - "block.gtceu.opv_diode":"§9§lOpV§r二極體", - "block.gtceu.opv_distillery":"§9§l傳奇蒸餾室§r", - "block.gtceu.opv_dual_input_hatch":"§9§lOpV§r兩用輸入倉", - "block.gtceu.opv_dual_output_hatch":"§9§lOpV§r兩用輸出倉", - "block.gtceu.opv_electric_furnace":"§9§l傳奇電爐§r", - "block.gtceu.opv_electrolyzer":"§9§l傳奇電解機§r", - "block.gtceu.opv_electromagnetic_separator":"§9§l傳奇電磁分離機§r", - "block.gtceu.opv_energy_input_hatch":"§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_input_hatch_16a":"16安§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_input_hatch_4a":"4安§9§lOpV§r能量輸入倉", - "block.gtceu.opv_energy_output_hatch":"§9§lOpV§r能量輸出倉", - "block.gtceu.opv_energy_output_hatch_16a":"16安§9§lOpV§r能量輸出倉", - "block.gtceu.opv_energy_output_hatch_4a":"4安§9§lOpV§r能量輸出倉", - "block.gtceu.opv_extractor":"§9§l傳奇提取機§r", - "block.gtceu.opv_extruder":"§9§l傳奇壓模器§r", - "block.gtceu.opv_fermenter":"§9§l傳奇發酵槽§r", - "block.gtceu.opv_fluid_heater":"§9§l傳奇流體加熱器§r", - "block.gtceu.opv_fluid_passthrough_hatch":"§9§lOpV§r流體通行倉", - "block.gtceu.opv_fluid_solidifier":"§9§l傳奇流體固化器§r", - "block.gtceu.opv_forge_hammer":"§9§l傳奇鍛造錘§r", - "block.gtceu.opv_forming_press":"§9§l傳奇衝壓機床§r", - "block.gtceu.opv_gas_collector":"§9§l傳奇集氣室§r", - "block.gtceu.opv_input_bus":"§9§lOpV§r輸入匯流排", - "block.gtceu.opv_input_hatch":"§9§lOpV§r輸入倉", - "block.gtceu.opv_input_hatch_4x":"§9§lOpV§r四重輸入倉", - "block.gtceu.opv_input_hatch_9x":"§9§lOpV§r九重輸入倉", - "block.gtceu.opv_item_passthrough_hatch":"§9§lOpV§r物品通行倉", - "block.gtceu.opv_laser_engraver":"§9§l傳奇雷射蝕刻機§r", - "block.gtceu.opv_lathe":"§9§l傳奇車床§r", - "block.gtceu.opv_macerator":"§9§l傳奇研磨機§r", - "block.gtceu.opv_machine_casing":"§9§lOpV§r機械方塊", - "block.gtceu.opv_machine_hull":"§9§lOpV§r機器外殼", - "block.gtceu.opv_mixer":"§9§l傳奇攪拌機§r", - "block.gtceu.opv_muffler_hatch":"§9§lOpV§r消音倉", - "block.gtceu.opv_ore_washer":"§9§l傳奇洗礦廠§r", - "block.gtceu.opv_output_bus":"§9§lOpV§r輸出匯流排", - "block.gtceu.opv_output_hatch":"§9§lOpV§r輸出倉", - "block.gtceu.opv_output_hatch_4x":"§9§lOpV§r四重輸出倉", - "block.gtceu.opv_output_hatch_9x":"§9§lOpV§r九重輸出倉", - "block.gtceu.opv_packer":"§9§l傳奇打包機§r", - "block.gtceu.opv_polarizer":"§9§l傳奇兩極磁化機§r", - "block.gtceu.opv_quantum_chest":"量子箱 XIII", - "block.gtceu.opv_quantum_tank":"量子缸 XIII", - "block.gtceu.opv_rock_crusher":"§9§l傳奇碎岩機§r", - "block.gtceu.opv_rotor_holder":"§9§lOpV§r轉子支架", - "block.gtceu.opv_scanner":"§9§l傳奇掃描器§r", - "block.gtceu.opv_sifter":"§9§l傳奇篩選機§r", - "block.gtceu.opv_substation_input_hatch_64a":"64安§9§lOpV§r變電能量輸入倉", - "block.gtceu.opv_substation_output_hatch_64a":"64安§9§lOpV§r變電能量輸出倉", - "block.gtceu.opv_thermal_centrifuge":"§9§l傳奇熱力離心機§r", - "block.gtceu.opv_transformer_16a":"§9過載壓§r高能變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_1a":"§9過載壓§r變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_2a":"§9過載壓§r進階變壓器(§9OpV§r)", - "block.gtceu.opv_transformer_4a":"§9過載壓§r高流變壓器(§9OpV§r)", - "block.gtceu.opv_wiremill":"§9§l傳奇線材軋機§r", - "block.gtceu.orange_borderless_lamp":"橙色無框燈", - "block.gtceu.orange_lamp":"橙色燈", - "block.gtceu.orange_large_metal_sheet":"橙色粗紋金屬板方塊", - "block.gtceu.orange_metal_sheet":"橙色金屬板方塊", - "block.gtceu.orange_studs":"橙色橡膠混凝土", - "block.gtceu.overworld_marker":"主世界", - "block.gtceu.palladium_substation":"鍍鈀變電站", - "block.gtceu.pattern_buffer.desc.0":"§f多方塊結構的整合式§6AE2樣板供應器§f。", - "block.gtceu.pattern_buffer.desc.1":"§fAE2樣板可以利用§6共享庫存§f中的一切。", - "block.gtceu.pattern_buffer.desc.2":"§f使用§b快閃記憶體§f綁定§6ME遠端樣板供應倉§f,以使機器相互連線!", - "block.gtceu.pattern_buffer_proxy.desc.0":"§f可以將單單一個§6ME樣板供應倉§f連線到眾多機器。", - "block.gtceu.pattern_buffer_proxy.desc.1":"§f所有綁定的遠端樣板供應倉將共享§6原樣板供應倉§f中的樣板。", - "block.gtceu.pattern_buffer_proxy.desc.2":"§f讓工廠蓬勃發展!", - "block.gtceu.petrified_foam":"石化建築泡沫", - "block.gtceu.pink_borderless_lamp":"粉紅色無框燈", - "block.gtceu.pink_lamp":"粉紅色燈", - "block.gtceu.pink_large_metal_sheet":"粉紅色粗紋金屬板方塊", - "block.gtceu.pink_metal_sheet":"粉紅色金屬板方塊", - "block.gtceu.pink_studs":"粉紅色橡膠混凝土", - "block.gtceu.plascrete":"塑膠混凝土", - "block.gtceu.plasma_large_turbine":"大型電漿渦輪", - "block.gtceu.polished_dark_concrete":"拋光深色混凝土", - "block.gtceu.polished_light_concrete":"拋光淺色混凝土", - "block.gtceu.polished_marble":"拋光大理岩", - "block.gtceu.polished_red_granite":"拋光紅花崗岩", - "block.gtceu.powderbarrel":"火藥桶", - "block.gtceu.powderbarrel.drops_tooltip":"爆炸範圍略大於TNT,所有被摧毀的方塊都會掉落", - "block.gtceu.power_substation":"蓄能變電站", - "block.gtceu.primitive_blast_furnace":"土高爐", - "block.gtceu.primitive_pump":"原始水泵", - "block.gtceu.ptfe_pipe_casing":"聚四氟乙烯管道方塊", - "block.gtceu.pump_deck":"水泵蓋板", - "block.gtceu.pump_hatch":"水泵倉", - "block.gtceu.purple_borderless_lamp":"紫色無框燈", - "block.gtceu.purple_lamp":"紫色燈", - "block.gtceu.purple_large_metal_sheet":"紫色粗紋金屬板方塊", - "block.gtceu.purple_metal_sheet":"紫色金屬板方塊", - "block.gtceu.purple_studs":"紫色橡膠混凝土", - "block.gtceu.pyrolyse_oven":"熱解爐", - "block.gtceu.radioactive_hazard_sign_block":"輻射危害警示方塊", - "block.gtceu.reaction_safe_mixing_casing":"惰性攪拌機械方塊", - "block.gtceu.red_borderless_lamp":"紅色無框燈", - "block.gtceu.red_granite":"紅花崗岩", - "block.gtceu.red_granite_bricks":"紅花崗岩磚", - "block.gtceu.red_granite_cobblestone":"紅花崗岩鵝卵石", - "block.gtceu.red_granite_small_tile":"紅花崗岩小片磚瓦", - "block.gtceu.red_granite_tile":"紅花崗岩磚磚瓦", - "block.gtceu.red_granite_windmill_a":"紅花崗岩風車形磚磚瓦 A", - "block.gtceu.red_granite_windmill_b":"紅花崗岩風車形磚磚瓦 B", - "block.gtceu.red_lamp":"紅色燈", - "block.gtceu.red_large_metal_sheet":"紅色粗紋金屬板方塊", - "block.gtceu.red_metal_sheet":"紅色金屬板方塊", - "block.gtceu.red_studs":"紅色橡膠混凝土", - "block.gtceu.reinforced_foam":"強化建築泡沫", - "block.gtceu.reinforced_stone":"防爆石", - "block.gtceu.research_station":"研究站", - "block.gtceu.reservoir_hatch":"蓄水倉", - "block.gtceu.robust_machine_casing":"強化鎢鋼機械方塊", - "block.gtceu.rtm_alloy_coil_block":"釕鎢鉬合金線圈方塊", - "block.gtceu.rubber_button":"橡膠木按鈕", - "block.gtceu.rubber_door":"橡膠木門", - "block.gtceu.rubber_fence":"橡膠木柵欄", - "block.gtceu.rubber_fence_gate":"橡膠木柵欄門", - "block.gtceu.rubber_hanging_sign":"懸掛式橡膠木告示牌", - "block.gtceu.rubber_leaves":"橡膠木樹葉", - "block.gtceu.rubber_log":"橡膠木原木", - "block.gtceu.rubber_planks":"橡膠木材", - "block.gtceu.rubber_pressure_plate":"橡膠木壓力板", - "block.gtceu.rubber_sapling":"橡膠木樹苗", - "block.gtceu.rubber_sign":"橡膠木告示牌", - "block.gtceu.rubber_slab":"橡膠木半磚", - "block.gtceu.rubber_stairs":"橡膠木階梯", - "block.gtceu.rubber_trapdoor":"橡膠木地板門", - "block.gtceu.rubber_wood":"橡膠木", - "block.gtceu.secure_maceration_casing":"安全研磨機械方塊", - "block.gtceu.shock_proof_cutting_casing":"防震切割機械方塊", - "block.gtceu.slicing_blades":"切片刀", - "block.gtceu.small_dark_concrete_bricks":"深色混凝土小塊磚", - "block.gtceu.small_duct_pipe":"小型風管", - "block.gtceu.small_light_concrete_bricks":"淺色混凝土小塊磚", - "block.gtceu.small_marble_bricks":"大理岩小塊磚", - "block.gtceu.small_red_granite_bricks":"紅花崗岩小塊磚", - "block.gtceu.solid_machine_casing":"脫氧機械方塊", - "block.gtceu.spatial_storage_hazard_sign_block":"空間儲存危害警示方塊", - "block.gtceu.square_dark_concrete_bricks":"深色混凝土方形磚", - "block.gtceu.square_light_concrete_bricks":"淺色混凝土方形磚", - "block.gtceu.square_marble_bricks":"大理岩方形磚", - "block.gtceu.square_red_granite_bricks":"紅花崗岩方形磚", - "block.gtceu.stable_machine_casing":"加強鈦機械方塊", - "block.gtceu.stainless_evaporation_casing":"不鏽鋼蒸發機械方塊", - "block.gtceu.stainless_steel_crate":"不鏽鋼板條箱", - "block.gtceu.stainless_steel_drum":"不鏽鋼桶", - "block.gtceu.stainless_steel_gearbox":"不鏽鋼齒輪箱機械方塊", - "block.gtceu.stainless_steel_turbine_casing":"不鏽鋼渦輪機械方塊", - "block.gtceu.steam_casing_bricked_bronze":"磚砌青銅外殼", - "block.gtceu.steam_casing_bricked_bronze.tooltip":"§7用來製作你的第一批蒸汽機器", - "block.gtceu.steam_casing_bricked_steel":"磚砌鍛鐵外殼", - "block.gtceu.steam_casing_bricked_steel.tooltip":"§7用來製作更高等級的蒸汽機器", - "block.gtceu.steam_casing_bronze":"青銅外殼", - "block.gtceu.steam_casing_bronze.tooltip":"§7用來製作你的第一批蒸汽機器", - "block.gtceu.steam_casing_steel":"鋼製外殼", - "block.gtceu.steam_casing_steel.tooltip":"§7用來製作更高等級的蒸汽機器", - "block.gtceu.steam_grinder":"蒸汽碾磨機", - "block.gtceu.steam_input_bus":"輸入匯流排(蒸汽)", - "block.gtceu.steam_input_hatch":"蒸汽輸入倉", - "block.gtceu.steam_large_turbine":"大型蒸汽渦輪", - "block.gtceu.steam_liquid_boiler.bronze":"小型蒸汽液體燃料鍋爐", - "block.gtceu.steam_machine_casing":"蒸汽機械方塊", - "block.gtceu.steam_output_bus":"輸出匯流排(蒸汽)", - "block.gtceu.steam_oven":"蒸汽熔煉爐", - "block.gtceu.steam_solid_boiler.bronze":"小型蒸汽固體燃料鍋爐", - "block.gtceu.steel_brick_casing":"磚砌鍛鐵外殼", - "block.gtceu.steel_crate":"鋼板條箱", - "block.gtceu.steel_drum":"鋼桶", - "block.gtceu.steel_firebox_casing":"鋼製燃燒室", - "block.gtceu.steel_gearbox":"鋼齒輪箱機械方塊", - "block.gtceu.steel_large_boiler":"大型鋼鍋爐", - "block.gtceu.steel_machine_casing":"脫氧鋼機械方塊", - "block.gtceu.steel_multiblock_tank":"鋼製多方塊儲罐", - "block.gtceu.steel_pipe_casing":"鋼管道方塊", - "block.gtceu.steel_tank_valve":"鋼製儲罐閥門", - "block.gtceu.steel_turbine_casing":"鋼渦輪機械方塊", - "block.gtceu.sterilizing_filter_casing":"除菌過濾器機械方塊", - "block.gtceu.stress_proof_casing":"耐壓機械方塊", - "block.gtceu.stripped_rubber_log":"剝皮橡膠木原木", - "block.gtceu.stripped_rubber_wood":"剝皮橡膠木塊", - "block.gtceu.sturdy_machine_casing":"堅固高速鋼-E機械方塊", - "block.gtceu.substation_capacitor.tooltip_empty":"§7用於填補蓄能變電站的結構空隙", - "block.gtceu.substation_capacitor.tooltip_filled":"§c電池容量:§f%d EU", - "block.gtceu.superconducting_coil":"超導線圈方塊", - "block.gtceu.tempered_glass":"鋼化玻璃", - "block.gtceu.the_end_marker":"終界", - "block.gtceu.the_nether_marker":"地獄", - "block.gtceu.titanium_crate":"鈦板條箱", - "block.gtceu.titanium_drum":"鈦桶", - "block.gtceu.titanium_firebox_casing":"鈦燃燒室", - "block.gtceu.titanium_gearbox":"鈦齒輪箱機械方塊", - "block.gtceu.titanium_large_boiler":"大型鈦鍋爐", - "block.gtceu.titanium_pipe_casing":"鈦管道方塊", - "block.gtceu.titanium_turbine_casing":"鈦渦輪機械方塊", - "block.gtceu.treated_wood_button":"防腐木按鈕", - "block.gtceu.treated_wood_door":"防腐木門", - "block.gtceu.treated_wood_fence":"防腐木柵欄", - "block.gtceu.treated_wood_fence_gate":"防腐木柵欄門", - "block.gtceu.treated_wood_hanging_sign":"懸掛式防腐木告示牌", - "block.gtceu.treated_wood_planks":"防腐木材", - "block.gtceu.treated_wood_pressure_plate":"防腐木壓力板", - "block.gtceu.treated_wood_sign":"防腐木告示牌", - "block.gtceu.treated_wood_slab":"防腐木半磚", - "block.gtceu.treated_wood_stairs":"防腐木階梯", - "block.gtceu.treated_wood_trapdoor":"防腐木地板門", - "block.gtceu.trinium_coil_block":"凱金線圈方塊", - "block.gtceu.tritanium_coil_block":"三鈦線圈方塊", - "block.gtceu.tungsten_steel_crate":"鎢鋼板條箱", - "block.gtceu.tungsten_steel_drum":"鎢鋼桶", - "block.gtceu.tungstensteel_firebox_casing":"鎢鋼燃燒室", - "block.gtceu.tungstensteel_gearbox":"鎢鋼齒輪箱機械方塊", - "block.gtceu.tungstensteel_large_boiler":"大型鎢鋼鍋爐", - "block.gtceu.tungstensteel_pipe_casing":"鎢鋼管道方塊", - "block.gtceu.tungstensteel_turbine_casing":"鎢鋼渦輪機械方塊", - "block.gtceu.turret_hazard_sign_block":"炮塔危害警示方塊", - "block.gtceu.uev_1024a_laser_source_hatch":"1024§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_1024a_laser_target_hatch":"1024§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_16a_energy_converter":"16§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_1a_energy_converter":"1§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_256a_laser_source_hatch":"256§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_256a_laser_target_hatch":"256§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_4096a_laser_source_hatch":"4096§e安§r§aUEV§r雷射源倉", - "block.gtceu.uev_4096a_laser_target_hatch":"4096§e安§r§aUEV§r雷射靶倉", - "block.gtceu.uev_4a_energy_converter":"4§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_8a_energy_converter":"8§e安§r§aUEV§r能量轉換器", - "block.gtceu.uev_alloy_smelter":"§a史詩合金爐 II§r", - "block.gtceu.uev_arc_furnace":"§a史詩電弧爐 II§r", - "block.gtceu.uev_assembler":"§a史詩組裝機 II§r", - "block.gtceu.uev_autoclave":"§a史詩高壓釜 II§r", - "block.gtceu.uev_battery_buffer_16x":"16x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_4x":"4x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_battery_buffer_8x":"8x§a極超壓§r電池箱(§aUEV§r)", - "block.gtceu.uev_bender":"§a史詩卷板機 II§r", - "block.gtceu.uev_brewery":"§a史詩釀造室 II§r", - "block.gtceu.uev_canner":"§a史詩裝罐機 II§r", - "block.gtceu.uev_centrifuge":"§a史詩離心機 II§r", - "block.gtceu.uev_charger_4x":"4x§a極超壓§r充電機(§aUEV§r)", - "block.gtceu.uev_chemical_bath":"§a史詩化學水浴機 II§r", - "block.gtceu.uev_chemical_reactor":"§a史詩化學反應器 II§r", - "block.gtceu.uev_circuit_assembler":"§a史詩電路組裝機 II§r", - "block.gtceu.uev_compressor":"§a史詩壓縮機 II§r", - "block.gtceu.uev_cutter":"§a史詩切割機 II§r", - "block.gtceu.uev_diode":"§aUEV§r二極體", - "block.gtceu.uev_distillery":"§a史詩蒸餾室 II§r", - "block.gtceu.uev_dual_input_hatch":"§aUEV§r兩用輸入倉", - "block.gtceu.uev_dual_output_hatch":"§aUEV§r兩用輸出倉", - "block.gtceu.uev_electric_furnace":"§a史詩電爐 II§r", - "block.gtceu.uev_electrolyzer":"§a史詩電解機 II§r", - "block.gtceu.uev_electromagnetic_separator":"§a史詩電磁分離機 II§r", - "block.gtceu.uev_energy_input_hatch":"§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_input_hatch_16a":"16安§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_input_hatch_4a":"4安§aUEV§r能量輸入倉", - "block.gtceu.uev_energy_output_hatch":"§aUEV§r能量輸出倉", - "block.gtceu.uev_energy_output_hatch_16a":"16安§aUEV§r能量輸出倉", - "block.gtceu.uev_energy_output_hatch_4a":"4安§aUEV§r能量輸出倉", - "block.gtceu.uev_extractor":"§a史詩提取機 II§r", - "block.gtceu.uev_extruder":"§a史詩壓模器 II§r", - "block.gtceu.uev_fermenter":"§a史詩發酵槽 II§r", - "block.gtceu.uev_fluid_heater":"§a史詩流體加熱器 II§r", - "block.gtceu.uev_fluid_passthrough_hatch":"§aUEV§r流體通行倉", - "block.gtceu.uev_fluid_solidifier":"§a史詩流體固化器 II§r", - "block.gtceu.uev_forge_hammer":"§a史詩鍛造錘 II§r", - "block.gtceu.uev_forming_press":"§a史詩衝壓機床 II§r", - "block.gtceu.uev_gas_collector":"§a史詩集氣室 II§r", - "block.gtceu.uev_input_bus":"§aUEV§r輸入匯流排", - "block.gtceu.uev_input_hatch":"§aUEV§r輸入倉", - "block.gtceu.uev_input_hatch_4x":"§aUEV§r四重輸入倉", - "block.gtceu.uev_input_hatch_9x":"§aUEV§r九重輸入倉", - "block.gtceu.uev_item_passthrough_hatch":"§aUEV§r物品通行倉", - "block.gtceu.uev_laser_engraver":"§a史詩雷射蝕刻機 II§r", - "block.gtceu.uev_lathe":"§a史詩車床 II§r", - "block.gtceu.uev_macerator":"§a史詩研磨機 II§r", - "block.gtceu.uev_machine_casing":"§aUEV§r機械方塊", - "block.gtceu.uev_machine_hull":"§aUEV§r機器外殼", - "block.gtceu.uev_mixer":"§a史詩攪拌機 II§r", - "block.gtceu.uev_muffler_hatch":"§aUEV§r消音倉", - "block.gtceu.uev_ore_washer":"§a史詩洗礦廠 II§r", - "block.gtceu.uev_output_bus":"§aUEV§r輸出匯流排", - "block.gtceu.uev_output_hatch":"§aUEV§r輸出倉", - "block.gtceu.uev_output_hatch_4x":"§aUEV§r四重輸出倉", - "block.gtceu.uev_output_hatch_9x":"§aUEV§r九重輸出倉", - "block.gtceu.uev_packer":"§a史詩打包機 II§r", - "block.gtceu.uev_polarizer":"§a史詩兩極磁化機 II§r", - "block.gtceu.uev_quantum_chest":"量子箱 X", - "block.gtceu.uev_quantum_tank":"量子缸 X", - "block.gtceu.uev_rock_crusher":"§a史詩碎岩機 II§r", - "block.gtceu.uev_rotor_holder":"§aUEV§r轉子支架", - "block.gtceu.uev_scanner":"§a史詩掃描器 II§r", - "block.gtceu.uev_sifter":"§a史詩篩選機 II§r", - "block.gtceu.uev_substation_input_hatch_64a":"64安§aUEV§r變電能量輸入倉", - "block.gtceu.uev_substation_output_hatch_64a":"64安§aUEV§r變電能量輸出倉", - "block.gtceu.uev_thermal_centrifuge":"§a史詩熱力離心機 II§r", - "block.gtceu.uev_transformer_16a":"§a極超壓§r高能變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_1a":"§a極超壓§r變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_2a":"§a極超壓§r進階變壓器(§aUEV§r)", - "block.gtceu.uev_transformer_4a":"§a極超壓§r高流變壓器(§aUEV§r)", - "block.gtceu.uev_wiremill":"§a史詩線材軋機 II§r", - "block.gtceu.uhv_1024a_laser_source_hatch":"1024§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_1024a_laser_target_hatch":"1024§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_16a_energy_converter":"16§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_1a_energy_converter":"1§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_256a_laser_source_hatch":"256§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_256a_laser_target_hatch":"256§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_4096a_laser_source_hatch":"4096§e安§r§4UHV§r雷射源倉", - "block.gtceu.uhv_4096a_laser_target_hatch":"4096§e安§r§4UHV§r雷射靶倉", - "block.gtceu.uhv_4a_energy_converter":"4§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_8a_energy_converter":"8§e安§r§4UHV§r能量轉換器", - "block.gtceu.uhv_alloy_smelter":"§4史詩合金爐§r", - "block.gtceu.uhv_arc_furnace":"§4史詩電弧爐§r", - "block.gtceu.uhv_assembler":"§4史詩組裝機§r", - "block.gtceu.uhv_autoclave":"§4史詩高壓釜§r", - "block.gtceu.uhv_battery_buffer_16x":"16x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_4x":"4x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_battery_buffer_8x":"8x§4極高壓§r電池箱(§4UHV§r)", - "block.gtceu.uhv_bender":"§4史詩卷板機§r", - "block.gtceu.uhv_brewery":"§4史詩釀造室§r", - "block.gtceu.uhv_canner":"§4史詩裝罐機§r", - "block.gtceu.uhv_centrifuge":"§4史詩離心機§r", - "block.gtceu.uhv_charger_4x":"4x§4極高壓§r充電機(§4UHV§r)", - "block.gtceu.uhv_chemical_bath":"§4史詩化學水浴機§r", - "block.gtceu.uhv_chemical_reactor":"§4史詩化學反應器§r", - "block.gtceu.uhv_circuit_assembler":"§4史詩電路組裝機§r", - "block.gtceu.uhv_compressor":"§4史詩壓縮機§r", - "block.gtceu.uhv_cutter":"§4史詩切割機§r", - "block.gtceu.uhv_diode":"§4UHV§r二極體", - "block.gtceu.uhv_distillery":"§4史詩蒸餾室§r", - "block.gtceu.uhv_dual_input_hatch":"§4UHV§r兩用輸入倉", - "block.gtceu.uhv_dual_output_hatch":"§4UHV§r兩用輸出倉", - "block.gtceu.uhv_electric_furnace":"§4史詩電爐§r", - "block.gtceu.uhv_electrolyzer":"§4史詩電解機§r", - "block.gtceu.uhv_electromagnetic_separator":"§4史詩電磁分離機§r", - "block.gtceu.uhv_energy_input_hatch":"§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_input_hatch_16a":"16安§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_input_hatch_4a":"4安§4UHV§r能量輸入倉", - "block.gtceu.uhv_energy_output_hatch":"§4UHV§r能量輸出倉", - "block.gtceu.uhv_energy_output_hatch_16a":"16安§4UHV§r能量輸出倉", - "block.gtceu.uhv_energy_output_hatch_4a":"4安§4UHV§r能量輸出倉", - "block.gtceu.uhv_extractor":"§4史詩提取機§r", - "block.gtceu.uhv_extruder":"§4史詩壓模器§r", - "block.gtceu.uhv_fermenter":"§4史詩發酵槽§r", - "block.gtceu.uhv_fluid_heater":"§4史詩流體加熱器§r", - "block.gtceu.uhv_fluid_passthrough_hatch":"§4UHV§r流體通行倉", - "block.gtceu.uhv_fluid_solidifier":"§4史詩流體固化器§r", - "block.gtceu.uhv_forge_hammer":"§4史詩鍛造錘§r", - "block.gtceu.uhv_forming_press":"§4史詩衝壓機床§r", - "block.gtceu.uhv_gas_collector":"§4史詩集氣室§r", - "block.gtceu.uhv_hermetic_casing":"密封機械方塊 IX", - "block.gtceu.uhv_input_bus":"§4UHV§r輸入匯流排", - "block.gtceu.uhv_input_hatch":"§4UHV§r輸入倉", - "block.gtceu.uhv_input_hatch_4x":"§4UHV§r四重輸入倉", - "block.gtceu.uhv_input_hatch_9x":"§4UHV§r九重輸入倉", - "block.gtceu.uhv_item_passthrough_hatch":"§4UHV§r物品通行倉", - "block.gtceu.uhv_laser_engraver":"§4史詩雷射蝕刻機§r", - "block.gtceu.uhv_lathe":"§4史詩車床§r", - "block.gtceu.uhv_macerator":"§4史詩研磨機§r", - "block.gtceu.uhv_machine_casing":"§4UHV§r機械方塊", - "block.gtceu.uhv_machine_hull":"§4UHV§r機器外殼", - "block.gtceu.uhv_mixer":"§4史詩攪拌機§r", - "block.gtceu.uhv_muffler_hatch":"§4UHV§r消音倉", - "block.gtceu.uhv_ore_washer":"§4史詩洗礦廠§r", - "block.gtceu.uhv_output_bus":"§4UHV§r輸出匯流排", - "block.gtceu.uhv_output_hatch":"§4UHV§r輸出倉", - "block.gtceu.uhv_output_hatch_4x":"§4UHV§r四重輸出倉", - "block.gtceu.uhv_output_hatch_9x":"§4UHV§r九重輸出倉", - "block.gtceu.uhv_packer":"§4史詩打包機§r", - "block.gtceu.uhv_polarizer":"§4史詩兩極磁化機§r", - "block.gtceu.uhv_quantum_chest":"量子箱 IX", - "block.gtceu.uhv_quantum_tank":"量子缸 IX", - "block.gtceu.uhv_rock_crusher":"§4史詩碎岩機§r", - "block.gtceu.uhv_rotor_holder":"§4UHV§r轉子支架", - "block.gtceu.uhv_scanner":"§4史詩掃描器 §r", - "block.gtceu.uhv_sifter":"§4史詩篩選機§r", - "block.gtceu.uhv_substation_input_hatch_64a":"64安§4UHV§r變電能量輸入倉", - "block.gtceu.uhv_substation_output_hatch_64a":"64安§4UHV§r變電能量輸出倉", - "block.gtceu.uhv_thermal_centrifuge":"§4史詩熱力離心機§r", - "block.gtceu.uhv_transformer_16a":"§4極高壓§r高能變壓器(§4UHV§r)", - "block.gtceu.uhv_transformer_1a":"§4極高壓§r變壓器(§4UHV§r)", - "block.gtceu.uhv_transformer_2a":"§4極高壓§r進階變壓器(§4UHV§r) ", - "block.gtceu.uhv_transformer_4a":"§4極高壓§r高流變壓器(§4UHV§r)", - "block.gtceu.uhv_ultimate_battery":"§4UHV§r終極電池", - "block.gtceu.uhv_wiremill":"§4史詩線材軋機§r", - "block.gtceu.uiv_1024a_laser_source_hatch":"1024§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_1024a_laser_target_hatch":"1024§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_16a_energy_converter":"16§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_1a_energy_converter":"1§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_256a_laser_source_hatch":"256§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_256a_laser_target_hatch":"256§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_4096a_laser_source_hatch":"4096§e安§r§2UIV§r雷射源倉", - "block.gtceu.uiv_4096a_laser_target_hatch":"4096§e安§r§2UIV§r雷射靶倉", - "block.gtceu.uiv_4a_energy_converter":"4§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_8a_energy_converter":"8§e安§r§2UIV§r能量轉換器", - "block.gtceu.uiv_alloy_smelter":"§2史詩合金爐 III§r", - "block.gtceu.uiv_arc_furnace":"§2史詩電弧爐 III§r", - "block.gtceu.uiv_assembler":"§2史詩組裝機 III§r", - "block.gtceu.uiv_autoclave":"§2史詩高壓釜 III§r", - "block.gtceu.uiv_battery_buffer_16x":"16x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_4x":"4x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_battery_buffer_8x":"8x§2極巨壓§r電池箱(§2UIV§r)", - "block.gtceu.uiv_bender":"§2史詩卷板機 III§r", - "block.gtceu.uiv_brewery":"§2史詩釀造室 III§r", - "block.gtceu.uiv_canner":"§2史詩裝罐機 III§r", - "block.gtceu.uiv_centrifuge":"§2史詩離心機 III§r", - "block.gtceu.uiv_charger_4x":"4x§2極巨壓§r充電機(§2UIV§r)", - "block.gtceu.uiv_chemical_bath":"§2史詩化學水浴機 III§r", - "block.gtceu.uiv_chemical_reactor":"§2史詩化學反應器 III§r", - "block.gtceu.uiv_circuit_assembler":"§2史詩電路組裝機 III§r", - "block.gtceu.uiv_compressor":"§2史詩壓縮機 III§r", - "block.gtceu.uiv_cutter":"§2史詩切割機 III§r", - "block.gtceu.uiv_diode":"§2UIV§r二極體", - "block.gtceu.uiv_distillery":"§2史詩蒸餾室 III§r", - "block.gtceu.uiv_dual_input_hatch":"§2UIV§r兩用輸入倉", - "block.gtceu.uiv_dual_output_hatch":"§2UIV§r兩用輸出倉", - "block.gtceu.uiv_electric_furnace":"§2史詩電爐 III§r", - "block.gtceu.uiv_electrolyzer":"§2史詩電解機 III§r", - "block.gtceu.uiv_electromagnetic_separator":"§2史詩電磁分離機 III§r", - "block.gtceu.uiv_energy_input_hatch":"§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_input_hatch_16a":"16安§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_input_hatch_4a":"4安§2UIV§r能量輸入倉", - "block.gtceu.uiv_energy_output_hatch":"§2UIV§r能量輸出倉", - "block.gtceu.uiv_energy_output_hatch_16a":"16安§2UIV§r能量輸出倉", - "block.gtceu.uiv_energy_output_hatch_4a":"4安§2UIV§r能量輸出倉", - "block.gtceu.uiv_extractor":"§2史詩提取機 III§r", - "block.gtceu.uiv_extruder":"§2史詩壓模器 III§r", - "block.gtceu.uiv_fermenter":"§2史詩發酵槽 III§r", - "block.gtceu.uiv_fluid_heater":"§2史詩流體加熱器 III§r", - "block.gtceu.uiv_fluid_passthrough_hatch":"§2UIV§r流體通行倉", - "block.gtceu.uiv_fluid_solidifier":"§2史詩流體固化器 III§r", - "block.gtceu.uiv_forge_hammer":"§2史詩鍛造錘 III§r", - "block.gtceu.uiv_forming_press":"§2史詩衝壓機床 III§r", - "block.gtceu.uiv_gas_collector":"§2史詩集氣室 III§r", - "block.gtceu.uiv_input_bus":"§2UIV§r輸入匯流排", - "block.gtceu.uiv_input_hatch":"§2UIV§r輸入倉", - "block.gtceu.uiv_input_hatch_4x":"§2UIV§r四重輸入倉", - "block.gtceu.uiv_input_hatch_9x":"§2UIV§r九重輸入倉", - "block.gtceu.uiv_item_passthrough_hatch":"§2UIV§r物品通行倉", - "block.gtceu.uiv_laser_engraver":"§2史詩雷射蝕刻機 III§r", - "block.gtceu.uiv_lathe":"§2史詩車床 III§r", - "block.gtceu.uiv_macerator":"§2史詩研磨機 III§r", - "block.gtceu.uiv_machine_casing":"§2UIV§r機械方塊", - "block.gtceu.uiv_machine_hull":"§2UIV§r機器外殼", - "block.gtceu.uiv_mixer":"§2史詩攪拌機 III§r", - "block.gtceu.uiv_muffler_hatch":"§2UIV§r消音倉", - "block.gtceu.uiv_ore_washer":"§2史詩洗礦廠 III§r", - "block.gtceu.uiv_output_bus":"§2UIV§r輸出匯流排", - "block.gtceu.uiv_output_hatch":"§2UIV§r輸出倉", - "block.gtceu.uiv_output_hatch_4x":"§2UIV§r四重輸出倉", - "block.gtceu.uiv_output_hatch_9x":"§2UIV§r九重輸出倉", - "block.gtceu.uiv_packer":"§2史詩打包機 III§r", - "block.gtceu.uiv_polarizer":"§2史詩兩極磁化機 III§r", - "block.gtceu.uiv_quantum_chest":"量子箱 XI", - "block.gtceu.uiv_quantum_tank":"量子缸 XI", - "block.gtceu.uiv_rock_crusher":"§2史詩碎岩機 III§r", - "block.gtceu.uiv_rotor_holder":"§2UIV§r轉子支架", - "block.gtceu.uiv_scanner":"§2史詩掃描器 III§r", - "block.gtceu.uiv_sifter":"§2史詩篩選機 III§r", - "block.gtceu.uiv_substation_input_hatch_64a":"64安§2UIV§r變電能量輸入倉", - "block.gtceu.uiv_substation_output_hatch_64a":"64安§2UIV§r變電能量輸出倉", - "block.gtceu.uiv_thermal_centrifuge":"§2史詩熱力離心機 III§r", - "block.gtceu.uiv_transformer_16a":"§2極巨壓§r高能變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_1a":"§2極巨壓§r變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_2a":"§2極巨壓§r進階變壓器(§2UIV§r)", - "block.gtceu.uiv_transformer_4a":"§2極巨壓§r高流變壓器(§2UIV§r)", - "block.gtceu.uiv_wiremill":"§2史詩線材軋機 III§r", - "block.gtceu.ulv_16a_energy_converter":"16§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_1a_energy_converter":"1§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_4a_energy_converter":"4§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_8a_energy_converter":"8§e安§r§8ULV§r能量轉換器", - "block.gtceu.ulv_battery_buffer_16x":"16x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_4x":"4x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_battery_buffer_8x":"8x§8超低壓§r電池箱(§8ULV§r)", - "block.gtceu.ulv_charger_4x":"4x§8超低壓§r充電機(§8ULV§r)", - "block.gtceu.ulv_energy_input_hatch":"§8ULV§r能量輸入倉", - "block.gtceu.ulv_energy_output_hatch":"§8ULV§r能量輸出倉", - "block.gtceu.ulv_input_bus":"§8ULV§r輸入匯流排", - "block.gtceu.ulv_input_hatch":"§8ULV§r輸入倉", - "block.gtceu.ulv_machine_casing":"§8ULV§r機械方塊", - "block.gtceu.ulv_machine_hull":"§8ULV§r機器外殼", - "block.gtceu.ulv_output_bus":"§8ULV§r輸出匯流排", - "block.gtceu.ulv_output_hatch":"§8ULV§r輸出倉", - "block.gtceu.ulv_transformer_16a":"§8超低壓§r高能變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_1a":"§8超低壓§r變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_2a":"§8超低壓§r進階變壓器(§8ULV§r)", - "block.gtceu.ulv_transformer_4a":"§8超低壓§r高流變壓器(§8ULV§r)", - "block.gtceu.uv_1024a_laser_source_hatch":"1024§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_1024a_laser_target_hatch":"1024§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_16a_energy_converter":"16§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_1a_energy_converter":"1§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_256a_laser_source_hatch":"256§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_256a_laser_target_hatch":"256§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_4096a_laser_source_hatch":"4096§e安§r§3UV§r雷射源倉", - "block.gtceu.uv_4096a_laser_target_hatch":"4096§e安§r§3UV§r雷射靶倉", - "block.gtceu.uv_4a_energy_converter":"4§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_8a_energy_converter":"8§e安§r§3UV§r能量轉換器", - "block.gtceu.uv_alloy_smelter":"§3終極合金爐§r", - "block.gtceu.uv_arc_furnace":"§3終極電弧爐§r", - "block.gtceu.uv_assembler":"§3終極組裝機§r", - "block.gtceu.uv_autoclave":"§3終極高壓釜§r", - "block.gtceu.uv_battery_buffer_16x":"16x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_4x":"4x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_battery_buffer_8x":"8x§3極限壓§r電池箱(§3UV§r)", - "block.gtceu.uv_bender":"§3終極卷板機§r", - "block.gtceu.uv_brewery":"§3終極釀造室§r", - "block.gtceu.uv_canner":"§3終極裝罐機§r", - "block.gtceu.uv_centrifuge":"§3終極離心機§r", - "block.gtceu.uv_charger_4x":"4x§3極限壓§r充電機(§3UV§r)", - "block.gtceu.uv_chemical_bath":"§3終極化學水浴機§r", - "block.gtceu.uv_chemical_reactor":"§3終極化學反應器§r", - "block.gtceu.uv_circuit_assembler":"§3終極電路組裝機§r", - "block.gtceu.uv_compressor":"§3終極壓縮機§r", - "block.gtceu.uv_cutter":"§3終極切割機§r", - "block.gtceu.uv_diode":"§3UV§r二極體", - "block.gtceu.uv_distillery":"§3終極蒸餾室§r", - "block.gtceu.uv_dual_input_hatch":"§3UV§r兩用輸入倉", - "block.gtceu.uv_dual_output_hatch":"§3UV§r兩用輸出倉", - "block.gtceu.uv_electric_furnace":"§3終極電爐§r", - "block.gtceu.uv_electrolyzer":"§3終極電解機§r", - "block.gtceu.uv_electromagnetic_separator":"§3終極電磁分離機§r", - "block.gtceu.uv_energy_input_hatch":"§3UV§r能量輸入倉", - "block.gtceu.uv_energy_input_hatch_16a":"16安§3UV§r能量輸入倉", - "block.gtceu.uv_energy_input_hatch_4a":"4安§3UV§r能量輸入倉", - "block.gtceu.uv_energy_output_hatch":"§3UV§r能量輸出倉", - "block.gtceu.uv_energy_output_hatch_16a":"16安§3UV§r能量輸出倉", - "block.gtceu.uv_energy_output_hatch_4a":"4安§3UV§r能量輸出倉", - "block.gtceu.uv_extractor":"§3終極提取機§r", - "block.gtceu.uv_extruder":"§3終極壓模器§r", - "block.gtceu.uv_fermenter":"§3終極發酵槽§r", - "block.gtceu.uv_fluid_heater":"§3終極流體加熱器§r", - "block.gtceu.uv_fluid_passthrough_hatch":"§3UV§r流體通行倉", - "block.gtceu.uv_fluid_solidifier":"§3終極流體固化器§r", - "block.gtceu.uv_forge_hammer":"§3終極鍛造錘§r", - "block.gtceu.uv_forming_press":"§3終極衝壓機床§r", - "block.gtceu.uv_fusion_reactor":"核融合反應爐控制電腦 MK-III", - "block.gtceu.uv_gas_collector":"§3終極集氣室§r", - "block.gtceu.uv_hermetic_casing":"密封機械方塊 VIII", - "block.gtceu.uv_input_bus":"§3UV§r輸入匯流排", - "block.gtceu.uv_input_hatch":"§3UV§r輸入倉", - "block.gtceu.uv_input_hatch_4x":"§3UV§r四重輸入倉", - "block.gtceu.uv_input_hatch_9x":"§3UV§r九重輸入倉", - "block.gtceu.uv_item_passthrough_hatch":"§3UV§r物品通行倉", - "block.gtceu.uv_lapotronic_battery":"§3UV§r蘭波頓電池", - "block.gtceu.uv_laser_engraver":"§3終極雷射蝕刻機§r", - "block.gtceu.uv_lathe":"§3終極車床§r", - "block.gtceu.uv_macerator":"§3終極研磨機§r", - "block.gtceu.uv_machine_casing":"§3UV§r機械方塊", - "block.gtceu.uv_machine_hull":"§3UV§r機器外殼", - "block.gtceu.uv_mixer":"§3終極攪拌機§r", - "block.gtceu.uv_muffler_hatch":"§3UV§r消音倉", - "block.gtceu.uv_ore_washer":"§3終極洗礦廠§r", - "block.gtceu.uv_output_bus":"§3UV§r輸出匯流排", - "block.gtceu.uv_output_hatch":"§3UV§r輸出倉", - "block.gtceu.uv_output_hatch_4x":"§3UV§r四重輸出倉", - "block.gtceu.uv_output_hatch_9x":"§3UV§r九重輸出倉", - "block.gtceu.uv_packer":"§3終極打包機§r", - "block.gtceu.uv_parallel_hatch":"§3UV§r平行控制倉", - "block.gtceu.uv_polarizer":"§3終極兩極磁化機§r", - "block.gtceu.uv_quantum_chest":"量子箱 VIII", - "block.gtceu.uv_quantum_tank":"量子缸 VIII", - "block.gtceu.uv_rock_crusher":"§3終極碎岩機§r", - "block.gtceu.uv_rotor_holder":"§3UV§r轉子支架", - "block.gtceu.uv_scanner":"§3終極掃描器§r", - "block.gtceu.uv_sifter":"§3終極篩選機§r", - "block.gtceu.uv_substation_input_hatch_64a":"64安§3UV§r變電能量輸入倉", - "block.gtceu.uv_substation_output_hatch_64a":"64安§3UV§r變電能量輸出倉", - "block.gtceu.uv_thermal_centrifuge":"§3終極熱力離心機§r", - "block.gtceu.uv_transformer_16a":"§3極限壓§r高能變壓器(§3UV§r)", - "block.gtceu.uv_transformer_1a":"§3極限壓§r變壓器(§3UV§r)", - "block.gtceu.uv_transformer_2a":"§3極限壓§r進階變壓器(§3UV§r)", - "block.gtceu.uv_transformer_4a":"§3極限壓§r高流變壓器(§3UV§r)", - "block.gtceu.uv_wiremill":"§3終極線材軋機§r", - "block.gtceu.uv_world_accelerator":"§3終極世界加速器§r", - "block.gtceu.uxv_1024a_laser_source_hatch":"1024§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_1024a_laser_target_hatch":"1024§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_16a_energy_converter":"16§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_1a_energy_converter":"1§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_256a_laser_source_hatch":"256§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_256a_laser_target_hatch":"256§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_4096a_laser_source_hatch":"4096§e安§r§eUXV§r雷射源倉", - "block.gtceu.uxv_4096a_laser_target_hatch":"4096§e安§r§eUXV§r雷射靶倉", - "block.gtceu.uxv_4a_energy_converter":"4§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_8a_energy_converter":"8§e安§r§eUXV§r能量轉換器", - "block.gtceu.uxv_alloy_smelter":"§e史詩合金爐 IV§r", - "block.gtceu.uxv_arc_furnace":"§e史詩電弧爐 IV§r", - "block.gtceu.uxv_assembler":"§e史詩組裝機 IV§r", - "block.gtceu.uxv_autoclave":"§e史詩高壓釜 IV§r", - "block.gtceu.uxv_battery_buffer_16x":"16x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_4x":"4x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_battery_buffer_8x":"8x§e極頂壓§r電池箱(§eUXV§r)", - "block.gtceu.uxv_bender":"§e史詩卷板機 IV§r", - "block.gtceu.uxv_brewery":"§e史詩釀造室 IV§r", - "block.gtceu.uxv_canner":"§e史詩裝罐機 IV§r", - "block.gtceu.uxv_centrifuge":"§e史詩離心機 IV§r", - "block.gtceu.uxv_charger_4x":"4x§e極頂壓§r充電機(§eUXV§r)", - "block.gtceu.uxv_chemical_bath":"§e史詩化學水浴機 IV§r", - "block.gtceu.uxv_chemical_reactor":"§e史詩化學反應器 IV§r", - "block.gtceu.uxv_circuit_assembler":"§e史詩電路組裝機 IV§r", - "block.gtceu.uxv_compressor":"§e史詩壓縮機 IV§r", - "block.gtceu.uxv_cutter":"§e史詩切割機 IV§r", - "block.gtceu.uxv_diode":"§eUXV§r二極體", - "block.gtceu.uxv_distillery":"§e史詩蒸餾室 IV§r", - "block.gtceu.uxv_dual_input_hatch":"§eUXV§r兩用輸入倉", - "block.gtceu.uxv_dual_output_hatch":"§eUXV§r兩用輸出倉", - "block.gtceu.uxv_electric_furnace":"§e史詩電爐 IV§r", - "block.gtceu.uxv_electrolyzer":"§e史詩電解機 IV§r", - "block.gtceu.uxv_electromagnetic_separator":"§e史詩電磁分離機 IV§r", - "block.gtceu.uxv_energy_input_hatch":"§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_input_hatch_16a":"16安§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_input_hatch_4a":"4安§eUXV§r能量輸入倉", - "block.gtceu.uxv_energy_output_hatch":"§eUXV§r能量輸出倉", - "block.gtceu.uxv_energy_output_hatch_16a":"16安§eUXV§r能量輸出倉", - "block.gtceu.uxv_energy_output_hatch_4a":"4安§eUXV§r能量輸出倉", - "block.gtceu.uxv_extractor":"§e史詩提取機 IV§r", - "block.gtceu.uxv_extruder":"§e史詩壓模器 IV§r", - "block.gtceu.uxv_fermenter":"§e史詩發酵槽 IV§r", - "block.gtceu.uxv_fluid_heater":"§e史詩流體加熱器 IV§r", - "block.gtceu.uxv_fluid_passthrough_hatch":"§eUXV§r流體通行倉", - "block.gtceu.uxv_fluid_solidifier":"§e史詩流體固化器 IV§r", - "block.gtceu.uxv_forge_hammer":"§e史詩鍛造錘 IV§r", - "block.gtceu.uxv_forming_press":"§e史詩衝壓機床 IV§r", - "block.gtceu.uxv_gas_collector":"§e史詩集氣室 IV§r", - "block.gtceu.uxv_input_bus":"§eUXV§r輸入匯流排", - "block.gtceu.uxv_input_hatch":"§eUXV§r輸入倉", - "block.gtceu.uxv_input_hatch_4x":"§eUXV§r四重輸入倉", - "block.gtceu.uxv_input_hatch_9x":"§eUXV§r九重輸入倉", - "block.gtceu.uxv_item_passthrough_hatch":"§eUXV§r物品通行倉", - "block.gtceu.uxv_laser_engraver":"§e史詩雷射蝕刻機 IV§r", - "block.gtceu.uxv_lathe":"§e史詩車床 IV§r", - "block.gtceu.uxv_macerator":"§e史詩研磨機 IV§r", - "block.gtceu.uxv_machine_casing":"§eUXV§r機械方塊", - "block.gtceu.uxv_machine_hull":"§eUXV§r機器外殼", - "block.gtceu.uxv_mixer":"§e史詩攪拌機 IV§r", - "block.gtceu.uxv_muffler_hatch":"§eUXV§r消音倉", - "block.gtceu.uxv_ore_washer":"§e史詩洗礦廠 IV§r", - "block.gtceu.uxv_output_bus":"§eUXV§r輸出匯流排", - "block.gtceu.uxv_output_hatch":"§eUXV§r輸出倉", - "block.gtceu.uxv_output_hatch_4x":"§eUXV§r四重輸出倉", - "block.gtceu.uxv_output_hatch_9x":"§eUXV§r九重輸出倉", - "block.gtceu.uxv_packer":"§e史詩打包機 IV§r", - "block.gtceu.uxv_polarizer":"§e史詩兩極磁化機 IV§r", - "block.gtceu.uxv_quantum_chest":"量子箱 XII", - "block.gtceu.uxv_quantum_tank":"量子缸 XII", - "block.gtceu.uxv_rock_crusher":"§e史詩碎岩機 IV§r", - "block.gtceu.uxv_rotor_holder":"§eUXV§r轉子支架", - "block.gtceu.uxv_scanner":"§e史詩掃描器 IV§r", - "block.gtceu.uxv_sifter":"§e史詩篩選機 IV§r", - "block.gtceu.uxv_substation_input_hatch_64a":"64安§eUXV§r變電能量輸入倉", - "block.gtceu.uxv_substation_output_hatch_64a":"64安§eUXV§r變電能量輸出倉", - "block.gtceu.uxv_thermal_centrifuge":"§e史詩熱力離心機 IV§r", - "block.gtceu.uxv_transformer_16a":"§e極頂壓§r高能變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_1a":"§e極頂壓§r變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_2a":"§e極頂壓§r進階變壓器(§eUXV§r)", - "block.gtceu.uxv_transformer_4a":"§e極頂壓§r高流變壓器(§eUXV§r)", - "block.gtceu.uxv_wiremill":"§e史詩線材軋機 IV§r", - "block.gtceu.vacuum_freezer":"真空冷凍機", - "block.gtceu.vibration_safe_casing":"防震機械方塊", - "block.gtceu.void_hazard_sign_block":"虛空危害警示方塊", - "block.gtceu.watertight_casing":"防水機械方塊", - "block.gtceu.white_borderless_lamp":"白色無框燈", - "block.gtceu.white_lamp":"白色燈", - "block.gtceu.white_large_metal_sheet":"白色粗紋金屬板方塊", - "block.gtceu.white_metal_sheet":"白色金屬板方塊", - "block.gtceu.white_studs":"白色橡膠混凝土", - "block.gtceu.wire_coil.tooltip_cracking":"§8裂解機:", - "block.gtceu.wire_coil.tooltip_energy_cracking":"§a耗能:§f%s%%", - "block.gtceu.wire_coil.tooltip_energy_smelter":"§a耗能:§8每配方§f%s EU/t", - "block.gtceu.wire_coil.tooltip_extended_info":"§7按住§6SHIFT§7獲得更多線圈資訊", - "block.gtceu.wire_coil.tooltip_heat":"§c基礎熱容:§f%d K", - "block.gtceu.wire_coil.tooltip_parallel_smelter":"§5最大平行:§f%s", - "block.gtceu.wire_coil.tooltip_pyro":"§8熱解爐:", - "block.gtceu.wire_coil.tooltip_smelter":"§8工業熔爐:", - "block.gtceu.wire_coil.tooltip_speed_pyro":"§b處理速度:§f%s%%", - "block.gtceu.wood_crate":"木板條箱", - "block.gtceu.wood_drum":"木桶", - "block.gtceu.wood_wall":"木牆", - "block.gtceu.wooden_multiblock_tank":"木製多方塊儲罐", - "block.gtceu.wooden_tank_valve":"木製儲罐閥門", - "block.gtceu.yellow_borderless_lamp":"黃色無框燈", - "block.gtceu.yellow_lamp":"黃色燈", - "block.gtceu.yellow_large_metal_sheet":"黃色粗紋金屬板方塊", - "block.gtceu.yellow_metal_sheet":"黃色金屬板方塊", - "block.gtceu.yellow_stripes_block.a":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.b":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.c":"黃色路障方塊", - "block.gtceu.yellow_stripes_block.d":"黃色路障方塊", - "block.gtceu.yellow_stripes_block_a":"黃色路障方塊A", - "block.gtceu.yellow_stripes_block_b":"黃色路障方塊B", - "block.gtceu.yellow_studs":"黃色橡膠混凝土", - "block.gtceu.zpm_1024a_laser_source_hatch":"1024§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_1024a_laser_target_hatch":"1024§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_16a_energy_converter":"16§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_1a_energy_converter":"1§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_256a_laser_source_hatch":"256§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_256a_laser_target_hatch":"256§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_4096a_laser_source_hatch":"4096§e安§r§cZPM§r雷射源倉", - "block.gtceu.zpm_4096a_laser_target_hatch":"4096§e安§r§cZPM§r雷射靶倉", - "block.gtceu.zpm_4a_energy_converter":"4§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_8a_energy_converter":"8§e安§r§cZPM§r能量轉換器", - "block.gtceu.zpm_alloy_smelter":"§c精英合金爐 III§r", - "block.gtceu.zpm_arc_furnace":"§c精英電弧爐 III§r", - "block.gtceu.zpm_assembler":"§c精英組裝機 III§r", - "block.gtceu.zpm_autoclave":"§c精英高壓釜 III§r", - "block.gtceu.zpm_battery_buffer_16x":"16x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_4x":"4x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_battery_buffer_8x":"8x§c零點壓§r電池箱(§cZPM§r)", - "block.gtceu.zpm_bender":"§c精英卷板機 III§r", - "block.gtceu.zpm_brewery":"§c精英釀造室 III§r", - "block.gtceu.zpm_canner":"§c精英裝罐機 III§r", - "block.gtceu.zpm_centrifuge":"§c精英離心機 III§r", - "block.gtceu.zpm_charger_4x":"4x§c零點壓§r充電機(§cZPM§r)", - "block.gtceu.zpm_chemical_bath":"§c精英化學水浴機 III§r", - "block.gtceu.zpm_chemical_reactor":"§c精英化學反應器 III§r", - "block.gtceu.zpm_circuit_assembler":"§c精英電路組裝機 III§r", - "block.gtceu.zpm_compressor":"§c精英壓縮機 III§r", - "block.gtceu.zpm_cutter":"§c精英切割機 III§r", - "block.gtceu.zpm_diode":"§cZPM§r二極體", - "block.gtceu.zpm_distillery":"§c精英蒸餾室 III§r", - "block.gtceu.zpm_dual_input_hatch":"§cZPM§r兩用輸入倉", - "block.gtceu.zpm_dual_output_hatch":"§cZPM§r兩用輸出倉", - "block.gtceu.zpm_electric_furnace":"§c精英電爐 III§r", - "block.gtceu.zpm_electrolyzer":"§c精英電解機 III§r", - "block.gtceu.zpm_electromagnetic_separator":"§c精英電磁分離機 III§r", - "block.gtceu.zpm_energy_input_hatch":"§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_input_hatch_16a":"16安§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_input_hatch_4a":"4安§cZPM§r能量輸入倉", - "block.gtceu.zpm_energy_output_hatch":"§cZPM§r能量輸出倉", - "block.gtceu.zpm_energy_output_hatch_16a":"16安§cZPM§r能量輸出倉", - "block.gtceu.zpm_energy_output_hatch_4a":"4安§cZPM§r能量輸出倉", - "block.gtceu.zpm_extractor":"§c精英提取機 III§r", - "block.gtceu.zpm_extruder":"§c精英壓模器 III§r", - "block.gtceu.zpm_fermenter":"§c精英發酵槽 III§r", - "block.gtceu.zpm_fluid_heater":"§c精英流體加熱器 III§r", - "block.gtceu.zpm_fluid_passthrough_hatch":"§cZPM§r流體通行倉", - "block.gtceu.zpm_fluid_solidifier":"§c精英流體固化器 III§r", - "block.gtceu.zpm_forge_hammer":"§c精英鍛造錘 III§r", - "block.gtceu.zpm_forming_press":"§c精英衝壓機床 III§r", - "block.gtceu.zpm_fusion_reactor":"核融合反應爐控制電腦 MK-II", - "block.gtceu.zpm_gas_collector":"§c精英集氣室 III§r", - "block.gtceu.zpm_hermetic_casing":"密封機械方塊 VII", - "block.gtceu.zpm_input_bus":"§cZPM§r輸入匯流排", - "block.gtceu.zpm_input_hatch":"§cZPM§r輸入倉", - "block.gtceu.zpm_input_hatch_4x":"§cZPM§r四重輸入倉", - "block.gtceu.zpm_input_hatch_9x":"§cZPM§r九重輸入倉", - "block.gtceu.zpm_item_passthrough_hatch":"§cZPM§r物品通行倉", - "block.gtceu.zpm_lapotronic_battery":"§cZPM§r蘭波頓電池", - "block.gtceu.zpm_laser_engraver":"§c精英雷射蝕刻機 III§r", - "block.gtceu.zpm_lathe":"§c精英車床 III§r", - "block.gtceu.zpm_macerator":"§c精英研磨機 III§r", - "block.gtceu.zpm_machine_casing":"§cZPM§r機械方塊", - "block.gtceu.zpm_machine_hull":"§cZPM§r機器外殼", - "block.gtceu.zpm_mixer":"§c精英攪拌機 III§r", - "block.gtceu.zpm_muffler_hatch":"§cZPM§r消音倉", - "block.gtceu.zpm_ore_washer":"§c精英洗礦廠 III§r", - "block.gtceu.zpm_output_bus":"§cZPM§r輸出匯流排", - "block.gtceu.zpm_output_hatch":"§cZPM§r輸出倉", - "block.gtceu.zpm_output_hatch_4x":"§cZPM§r四重輸出倉", - "block.gtceu.zpm_output_hatch_9x":"§cZPM§r九重輸出倉", - "block.gtceu.zpm_packer":"§c精英打包機 III§r", - "block.gtceu.zpm_parallel_hatch":"§cZPM§r平行控制倉", - "block.gtceu.zpm_polarizer":"§c精英兩極磁化機 III§r", - "block.gtceu.zpm_quantum_chest":"量子箱 VII", - "block.gtceu.zpm_quantum_tank":"量子缸 VII", - "block.gtceu.zpm_rock_crusher":"§c精英碎岩機 III§r", - "block.gtceu.zpm_rotor_holder":"§cZPM§r轉子支架", - "block.gtceu.zpm_scanner":"§c精英掃描器III§r", - "block.gtceu.zpm_sifter":"§c精英篩選機 III§r", - "block.gtceu.zpm_substation_input_hatch_64a":"64安§cZPM§r變電能量輸入倉", - "block.gtceu.zpm_substation_output_hatch_64a":"64安§cZPM§r變電能量輸出倉", - "block.gtceu.zpm_thermal_centrifuge":"§c精英熱力離心機 III§r", - "block.gtceu.zpm_transformer_16a":"§c零點壓§r高能變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_1a":"§c零點壓§r變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_2a":"§c零點壓§r進階變壓器(§cZPM§r)", - "block.gtceu.zpm_transformer_4a":"§c零點壓§r高流變壓器(§cZPM§r)", - "block.gtceu.zpm_wiremill":"§c精英線材軋機 III§r", - "block.gtceu.zpm_world_accelerator":"§c精英世界加速器 III§r", - "block.sterilizing_filter_casing.tooltip":"創造一個§a無菌§r環境", - "block.surface_rock":"地表岩石(%s)", - "button.gtceu.mark_as_depleted.name":"標記為枯竭", - "button.gtceu.toggle_waypoint.name":"切換路徑點", - "command.gtceu.dump_data.success":"已將登錄檔%2$s中的%1$s個資源轉儲到%3$s", - "command.gtceu.medical_condition.get":"玩家%s有以下疾病:", - "command.gtceu.medical_condition.get.element":"症狀【%s】§r:%s分%s秒", - "command.gtceu.medical_condition.get.element.permanent":"症狀【%s】§r:%s分%s秒(永久)", - "command.gtceu.medical_condition.get.empty":"玩家%s沒有疾病。", - "command.gtceu.place_vein.failure":"無法放置%s礦脈於%s", - "command.gtceu.place_vein.success":"成功放置%s礦脈於%s", - "command.gtceu.share_prospection_data.notification":"%s與你分享了礦脈資料!", - "config.gtceu.option.addLoot":"新增戰利品", - "config.gtceu.option.ae2":"ae2", - "config.gtceu.option.allUniqueStoneTypes":"所有獨特石頭型別", - "config.gtceu.option.animationTime":"動畫時間", - "config.gtceu.option.armorHud":"盔甲HUD", - "config.gtceu.option.bedrockOreDistance":"基岩礦距離", - "config.gtceu.option.bedrockOreDropTagPrefix":"基岩礦掉落Tag", - "config.gtceu.option.borderColor":"邊框顏色", - "config.gtceu.option.bronzeBoilerHeatSpeed":"青銅鍋爐-加熱速度", - "config.gtceu.option.bronzeBoilerMaxTemperature":"青銅鍋爐-最高溫度", - "config.gtceu.option.buttonAnchor":"按鈕位置", - "config.gtceu.option.casingsPerCraft":"每次合成機械方塊數量", - "config.gtceu.option.cleanMultiblocks":"多方塊結構是否潔淨", - "config.gtceu.option.client":"客戶端", - "config.gtceu.option.compat":"相容", - "config.gtceu.option.debug":"除錯", - "config.gtceu.option.debugWorldgen":"礦位置Debug模式", - "config.gtceu.option.defaultPaintingColor":"機器預設噴漆顏色", - "config.gtceu.option.defaultUIColor":"預設UI顏色", - "config.gtceu.option.dev":"開發", - "config.gtceu.option.direction":"方向", - "config.gtceu.option.disableManualCompression":"關閉手工壓縮", - "config.gtceu.option.doBedrockOres":"新增基岩礦", - "config.gtceu.option.doSuperflatOres":"超平坦世界生成礦", - "config.gtceu.option.doesExplosionDamagesTerrain":"機器爆炸是否破壞地形", - "config.gtceu.option.dumpAssets":"匯出資源", - "config.gtceu.option.dumpRecipes":"匯出配方", - "config.gtceu.option.enableCleanroom":"啟用無塵室", - "config.gtceu.option.enableFEConverters":"啟用FE轉換器", - "config.gtceu.option.enableMaintenance":"啟用維護倉", - "config.gtceu.option.enableResearch":"啟用研究", - "config.gtceu.option.enableTieredCasings":"啟用分級機械方塊", - "config.gtceu.option.enableWorldAccelerators":"啟用世界加速器", - "config.gtceu.option.enchantedTools":"附魔工具", - "config.gtceu.option.energy":"能量", - "config.gtceu.option.energyConsumption":"能耗", - "config.gtceu.option.energyUsageMultiplier":"能源消耗倍率", - "config.gtceu.option.environmentalHazardDecayRate":"環境污染衰減速率", - "config.gtceu.option.environmentalHazards":"環境污染", - "config.gtceu.option.euToFeRatio":"GTEU到FE的轉換比例", - "config.gtceu.option.feToEuRatio":"FE到GTEU的轉換比例", - "config.gtceu.option.flintAndSteelRequireSteel":"打火石配方是否需要鋼", - "config.gtceu.option.ftbChunksIntegration":"FTB區塊-整合", - "config.gtceu.option.gameplay":"遊戲玩法", - "config.gtceu.option.generateLowQualityGems":"生成劣質寶石", - "config.gtceu.option.ghostCircuit":"虛擬電路", - "config.gtceu.option.gt6StylePipesCables":"類GT6管道/線纜", - "config.gtceu.option.hardAdvancedIronRecipes":"更難的高階鐵製品配方", - "config.gtceu.option.hardDyeRecipes":"更難的染料配方", - "config.gtceu.option.hardGlassRecipes":"更難的玻璃配方", - "config.gtceu.option.hardIronRecipes":"更難的鐵製品配方", - "config.gtceu.option.hardMiscRecipes":"更難的雜項配方", - "config.gtceu.option.hardMultiRecipes":"更難的多方塊控制器配方", - "config.gtceu.option.hardRedstoneRecipes":"更難的紅石配方", - "config.gtceu.option.hardToolArmorRecipes":"更難的工具盔甲配方", - "config.gtceu.option.hardWoodRecipes":"更難的木頭配方", - "config.gtceu.option.harderBrickRecipes":"更難的磚塊配方", - "config.gtceu.option.harderCharcoalRecipe":"更難的木炭配方", - "config.gtceu.option.harderCircuitRecipes":"更難的電路板配方", - "config.gtceu.option.harderRods":"更難的桿配方", - "config.gtceu.option.harmlessActiveTransformers":"無害的有源變壓器", - "config.gtceu.option.hazardsEnabled":"啟用危險物質", - "config.gtceu.option.hideFacadesInRecipeViewer":"配方瀏覽器中隱藏偽裝板", - "config.gtceu.option.hideFilledCellsInRecipeViewer":"配方瀏覽器中隱藏裝滿的單元", - "config.gtceu.option.hideOreProcessingDiagrams":"隱藏礦物處理流程圖", - "config.gtceu.option.highTierContent":"極高電壓內容", - "config.gtceu.option.hpLiquidBoilerBaseOutput":"高壓液體鍋爐-基礎輸出", - "config.gtceu.option.hpSolarBoilerBaseOutput":"高壓太陽能鍋爐-基礎輸出", - "config.gtceu.option.hpSolidBoilerBaseOutput":"高壓固體鍋爐-基礎輸出", - "config.gtceu.option.hudLocation":"HUD位置", - "config.gtceu.option.hudOffsetX":"HUD偏移X", - "config.gtceu.option.hudOffsetY":"HUD偏移Y", - "config.gtceu.option.inWorldPreviewDuration":"世界中預覽時長", - "config.gtceu.option.increaseDungeonLoot":"更多的地牢戰利品", - "config.gtceu.option.infiniteBedrockOresFluids":"無限基岩礦流體", - "config.gtceu.option.journeyMapIntegration":"旅行地圖-整合", - "config.gtceu.option.largeBoilers":"大型鍋爐", - "config.gtceu.option.ldFluidPipeMinDistance":"長距流體管道最小距離", - "config.gtceu.option.ldItemPipeMinDistance":"長距物品管道最小距離", - "config.gtceu.option.liquidBoilerBaseOutput":"液體鍋爐-基礎輸出", - "config.gtceu.option.machineSounds":"機器音效", - "config.gtceu.option.machines":"機器", - "config.gtceu.option.machinesEmissiveTextures":"啟用機器泛光紋理", - "config.gtceu.option.meHatchEnergyUsage":"ME倉能耗", - "config.gtceu.option.minerSpeed":"採礦機速度", - "config.gtceu.option.minimap":"小地圖", - "config.gtceu.option.nanoSaber":"奈米劍", - "config.gtceu.option.nanoSaberBaseDamage":"奈米劍基礎傷害", - "config.gtceu.option.nanoSaberDamageBoost":"奈米劍傷害增幅", - "config.gtceu.option.nativeEUToFE":"線纜直接給FE機器供能", - "config.gtceu.option.nerfPaperCrafting":"削弱紙配方", - "config.gtceu.option.nerfWoodCrafting":"削弱木材木棒合成", - "config.gtceu.option.onlyOwnerBreak":"僅所有者可破壞", - "config.gtceu.option.onlyOwnerGUI":"僅所有者可開啟GUI", - "config.gtceu.option.orderedAssemblyLineFluids":"有序的裝配線-流體", - "config.gtceu.option.orderedAssemblyLineItems":"有序的裝配線-物品", - "config.gtceu.option.oreBlockProspectRange":"礦物探測半徑", - "config.gtceu.option.oreGenerationChunkCacheSize":"礦物生成區塊快取大小", - "config.gtceu.option.oreIconSize":"礦物圖示大小", - "config.gtceu.option.oreIndicatorChunkCacheSize":"礦脈指示物區塊快取大小", - "config.gtceu.option.oreIndicators":"礦脈指示物", - "config.gtceu.option.oreNamePrefix":"礦物名稱字首", - "config.gtceu.option.oreScaleStop":"最大圖示縮放比例", - "config.gtceu.option.oreVeinGridSize":"礦脈網格大小", - "config.gtceu.option.oreVeinRandomOffset":"礦脈隨機偏移", - "config.gtceu.option.oreVeins":"礦脈", - "config.gtceu.option.ownerOPBypass":"跳過所有權檢查的最低許可權等級", - "config.gtceu.option.prospectorEnergyUseMultiplier":"探礦儀能源消耗倍率", - "config.gtceu.option.recipeProgressLowEnergy":"跳電時,機器進度將", - "config.gtceu.option.recipes":"配方", - "config.gtceu.option.removeSmeltingForEBFMetals":"移除需要電力高爐冶煉的金屬的熔爐配方", - "config.gtceu.option.removeVanillaBlockRecipes":"移除原版方塊配方", - "config.gtceu.option.removeVanillaLargeOreVeins":"移除原版大型礦脈", - "config.gtceu.option.removeVanillaOreGen":"移除原版礦物", - "config.gtceu.option.removeVanillaTNTRecipe":"移除原版TNT配方", - "config.gtceu.option.renderFluids":"渲染流體", - "config.gtceu.option.renderer":"渲染器", - "config.gtceu.option.replaceMinedBlocksWith":"用...替換採礦機採過的方塊", - "config.gtceu.option.requireGTToolsForBlocks":"方塊需要格雷工具", - "config.gtceu.option.rngDamageElectricTools":"電動工具耐久度消耗機率", - "config.gtceu.option.rubberTreeSpawnChance":"橡膠樹生成權重", - "config.gtceu.option.sandOresFall":"沙子礦受重力嗎", - "config.gtceu.option.shouldWeatherOrTerrainExplosion":"機器是否因天氣或地形爆炸", - "config.gtceu.option.showDimensionTier":"顯示維度等級", - "config.gtceu.option.smallBoilers":"小型鍋爐", - "config.gtceu.option.solarBoilerBaseOutput":"太陽能鍋爐-基礎輸出", - "config.gtceu.option.solidBoilerBaseOutput":"固體鍋爐-基礎輸出", - "config.gtceu.option.sprayCanChainLength":"噴霧罐單次可噴塗長度", - "config.gtceu.option.steamMultiParallelAmount":"蒸汽多方塊機器平行數", - "config.gtceu.option.steamPerWater":"蒸汽-水轉化率", - "config.gtceu.option.steelBoilerHeatSpeed":"鋼鍋爐-加熱速度", - "config.gtceu.option.steelBoilerMaxTemperature":"鋼鍋爐-最高溫度", - "config.gtceu.option.steelSteamMultiblocks":"用鋼的蒸汽多方塊結構", - "config.gtceu.option.surfaceRockProspectRange":"地表岩石探測半徑", - "config.gtceu.option.titaniumBoilerHeatSpeed":"鈦鍋爐-加熱速度", - "config.gtceu.option.titaniumBoilerMaxTemperature":"鈦鍋爐-最高溫度", - "config.gtceu.option.toggle":"切換", - "config.gtceu.option.toolCraftingSounds":"使用工具合成時播放聲音", - "config.gtceu.option.toolUseSounds":"使用工具時播放聲音", - "config.gtceu.option.tools":"工具", - "config.gtceu.option.treeFellingDelay":"砍樹延遲", - "config.gtceu.option.tungstensteelBoilerHeatSpeed":"鎢鋼鍋爐-加熱速度", - "config.gtceu.option.tungstensteelBoilerMaxTemperature":"鎢鋼鍋爐-最高溫度", - "config.gtceu.option.universalHazards":"普遍化的危險物質", - "config.gtceu.option.updateIntervals":"更新間隔", - "config.gtceu.option.useVBO":"使用VBO", - "config.gtceu.option.voltageTierAdvImpeller":"進階噴射背包電壓等級", - "config.gtceu.option.voltageTierAdvNanoSuit":"進階奈米胸甲電壓等級", - "config.gtceu.option.voltageTierAdvQuarkTech":"進階夸克胸甲電壓等級", - "config.gtceu.option.voltageTierImpeller":"噴射背包電壓等級", - "config.gtceu.option.voltageTierNanoSuit":"奈米套裝電壓等級", - "config.gtceu.option.voltageTierNightVision":"夜視儀電壓等級", - "config.gtceu.option.voltageTierQuarkTech":"夸克套裝電壓等級", - "config.gtceu.option.worldAcceleratorBlacklist":"世界加速器黑名單", - "config.gtceu.option.worldgen":"世界生成", - "config.gtceu.option.xOffset":"x偏移", - "config.gtceu.option.xaerosMapIntegration":"Xaero地圖-整合", - "config.gtceu.option.yOffset":"y偏移", - "config.gtceu.option.zombieSpawnWithSabers":"帶奈米劍的殭屍生成", - "config.jade.plugin_gtceu.auto_output_info":"[GTCEu] 自動輸出資訊", - "config.jade.plugin_gtceu.cable_info":"[GTCEu] 線纜資訊", - "config.jade.plugin_gtceu.controllable_provider":"[GTCEu] 是否停工", - "config.jade.plugin_gtceu.electric_container_provider":"[GTCEu] 電力槽", - "config.jade.plugin_gtceu.exhaust_vent_info":"[GTCEu] 排氣口資訊", - "config.jade.plugin_gtceu.hazard_cleaner_provider":"[GTCEu] 污染清理", - "config.jade.plugin_gtceu.machine_mode":"[GTCEu] 機器模式", - "config.jade.plugin_gtceu.maintenance_info":"[GTCEu] 維護資訊", - "config.jade.plugin_gtceu.me_pattern_buffer":"[GTCEu] 樣板供應倉資訊", - "config.jade.plugin_gtceu.me_pattern_buffer_proxy":"[GTCEu] 遠端樣板供應倉資訊", - "config.jade.plugin_gtceu.multiblock_structure":"[GTCEu] 多方塊結構", - "config.jade.plugin_gtceu.parallel_info":"[GTCEu] 平行資訊", - "config.jade.plugin_gtceu.primitive_pump":"[GTCEu] 原始水泵資訊", - "config.jade.plugin_gtceu.recipe_logic_provider":"[GTCEu] 配方資訊", - "config.jade.plugin_gtceu.recipe_output_info":"[GTCEu] 配方輸出資訊", - "config.jade.plugin_gtceu.stained_color":"[GTCEu] 染色方塊資訊", - "config.jade.plugin_gtceu.steam_boiler_info":"[GTCEu] 蒸汽鍋爐資訊", - "config.jade.plugin_gtceu.transformer":"[GTCEu] 變壓器資訊", - "config.jade.plugin_gtceu.workable_provider":"[GTCEu] 工作資訊", - "cover.advanced_detector.latch.disabled.0":"行為:線性", - "cover.advanced_detector.latch.disabled.1":"", - "cover.advanced_detector.latch.disabled.2":"更改此覆蓋板的紅石行為。", - "cover.advanced_detector.latch.disabled.3":"§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", - "cover.advanced_detector.latch.disabled.4":"§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", - "cover.advanced_detector.latch.enabled.0":"行為:鎖存", - "cover.advanced_detector.latch.enabled.1":"", - "cover.advanced_detector.latch.enabled.2":"更改此覆蓋板的紅石行為。", - "cover.advanced_detector.latch.enabled.3":"§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", - "cover.advanced_detector.latch.enabled.4":"§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", - "cover.advanced_energy_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_energy_detector.invert.disabled.1":"", - "cover.advanced_energy_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_energy_detector.invert.disabled.3":"預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", - "cover.advanced_energy_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_energy_detector.invert.enabled.1":"", - "cover.advanced_energy_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_energy_detector.invert.enabled.3":"預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", - "cover.advanced_energy_detector.label":"進階能量探測覆蓋板", - "cover.advanced_energy_detector.max":"最大值", - "cover.advanced_energy_detector.min":"最小值", - "cover.advanced_energy_detector.use_percent.disabled.0":"模式:EU設定值", - "cover.advanced_energy_detector.use_percent.disabled.1":"", - "cover.advanced_energy_detector.use_percent.disabled.2":"使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", - "cover.advanced_energy_detector.use_percent.enabled.0":"模式: 百分比", - "cover.advanced_energy_detector.use_percent.enabled.1":"", - "cover.advanced_energy_detector.use_percent.enabled.2":"使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", - "cover.advanced_fluid_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_fluid_detector.invert.disabled.1":"", - "cover.advanced_fluid_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_fluid_detector.invert.disabled.3":"預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_fluid_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_fluid_detector.invert.enabled.1":"", - "cover.advanced_fluid_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_fluid_detector.invert.enabled.3":"預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_fluid_detector.label":"進階流體探測器", - "cover.advanced_fluid_detector.max":"最大流體量(mB)", - "cover.advanced_fluid_detector.min":"最小流體量(mB)", - "cover.advanced_item_detector.invert.disabled.0":"輸出:普通", - "cover.advanced_item_detector.invert.disabled.1":"", - "cover.advanced_item_detector.invert.disabled.2":"切換以反轉紅石邏輯", - "cover.advanced_item_detector.invert.disabled.3":"預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_item_detector.invert.enabled.0":"輸出:反轉", - "cover.advanced_item_detector.invert.enabled.1":"", - "cover.advanced_item_detector.invert.enabled.2":"切換以反轉紅石邏輯", - "cover.advanced_item_detector.invert.enabled.3":"預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", - "cover.advanced_item_detector.label":"進階物品探測器", - "cover.advanced_item_detector.max":"最大物品數量", - "cover.advanced_item_detector.min":"最小物品數量", - "cover.bucket.mode.bucket":"B", - "cover.bucket.mode.milli_bucket":"mB", - "cover.conveyor.blocks_input.disabled.0":"若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", - "cover.conveyor.blocks_input.disabled.1":"§c已禁用", - "cover.conveyor.blocks_input.enabled.0":"若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", - "cover.conveyor.blocks_input.enabled.1":"§a已啟用", - "cover.conveyor.distribution.insert_first.0":"分配模式:§b優先順序", - "cover.conveyor.distribution.insert_first.1":"§7將物品輸入至所搜尋到的優先順序最高的物品儲存空間", - "cover.conveyor.distribution.insert_first.2":"§7加固物品管道會降低管道路徑的優先順序。", - "cover.conveyor.distribution.round_robin_global.0":"分配模式:§b輪詢排程", - "cover.conveyor.distribution.round_robin_global.1":"§7將物品平分至相連的物品儲存空間。", - "cover.conveyor.distribution.round_robin_prio.0":"分配模式:§b輪詢排程(次序式)", - "cover.conveyor.distribution.round_robin_prio.1":"§7嘗試將物品平分至相連的物品儲存空間,並優先考慮優先順序更高的。", - "cover.conveyor.distribution.round_robin_prio.2":"§7加固物品管道會降低管道路徑的優先順序。", - "cover.conveyor.item_filter.title":"物品過濾", - "cover.conveyor.mode":"模式:%s", - "cover.conveyor.mode.export":"模式:輸出", - "cover.conveyor.mode.import":"模式:輸入", - "cover.conveyor.tag.title.0":"標籤名稱", - "cover.conveyor.tag.title.1":"(*可作萬用字元)", - "cover.conveyor.title":"傳送帶覆蓋板設定(%s)", - "cover.conveyor.transfer_rate":"§7物品/秒", - "cover.detector_base.message_inverted_state":"監控狀態: 反轉", - "cover.detector_base.message_normal_state":"監控狀態:普通", - "cover.ender_fluid_link.incomplete_hex.0":"輸入的顏色不正確!", - "cover.ender_fluid_link.incomplete_hex.1":"輸入正確的八位十六進位制顏色碼方可應用", - "cover.ender_fluid_link.incomplete_hex.2":"此時關閉介面將導致丟失編輯內容!", - "cover.ender_fluid_link.iomode.disabled":"已禁用I/O", - "cover.ender_fluid_link.iomode.enabled":"已啟用I/O", - "cover.ender_fluid_link.private.tooltip.disabled.0":"切換至私有儲罐模式", - "cover.ender_fluid_link.private.tooltip.disabled.1":"私有權歸最初加裝該覆蓋板的玩家所有", - "cover.ender_fluid_link.private.tooltip.enabled":"切換至公共儲罐模式", - "cover.ender_fluid_link.title":"終界流體連線", - "cover.filter.blacklist.disabled":"白名單", - "cover.filter.blacklist.enabled":"黑名單", - "cover.filter.mode.filter_both":"過濾兩者", - "cover.filter.mode.filter_extract":"過濾輸出", - "cover.filter.mode.filter_insert":"過濾輸入", - "cover.fluid.voiding.advanced.title":"高階流體銷毀設定", - "cover.fluid.voiding.title":"流體銷毀設定", - "cover.fluid_filter.config_amount.0":"向上或向下滾動滑鼠滾輪以增加或減少流體量。", - "cover.fluid_filter.config_amount.1":"Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", - "cover.fluid_filter.config_amount.2":"亦可透過右擊或左擊來增減流體量。", - "cover.fluid_filter.config_amount.3":"按住Shift時點選滑鼠則將使流體量翻倍或減半。", - "cover.fluid_filter.config_amount.4":"點選中鍵以清除", - "cover.fluid_filter.mode.filter_both":"過濾兩者", - "cover.fluid_filter.mode.filter_drain":"過濾輸出", - "cover.fluid_filter.mode.filter_fill":"過濾輸入", - "cover.fluid_filter.title":"流體過濾卡", - "cover.fluid_regulator.keep_exact":"保持供應:%s", - "cover.fluid_regulator.supply_exact":"精確供應:%s", - "cover.fluid_regulator.title":"流體調節器設定(%s)", - "cover.fluid_regulator.transfer_mode.description.0":"§e任意傳輸§r-在此模式下,覆蓋板將傳輸任何與過濾卡匹配的流體。", - "cover.fluid_regulator.transfer_mode.description.1":"§e精確供應-在此模式下,覆蓋板會將此按鈕下方視窗中指定的流體按指定量打包傳輸。若流體量小於指定量,流體不會被傳輸。", - "cover.fluid_regulator.transfer_mode.description.2":"§e保持供應-在此模式下,覆蓋板將在目標容器中保持指定數量的液體,低於保持量時傳輸相應量的流體。", - "cover.fluid_regulator.transfer_mode.description.3":"§7小提示:按住Shift/Crtl把增加或減少的數量乘以10/100。", - "cover.item.voiding.advanced.title":"高階物品銷毀設定", - "cover.item.voiding.title":"物品銷毀設定", - "cover.item_filter.ignore_damage.disabled":"匹配耐久度", - "cover.item_filter.ignore_damage.enabled":"無視耐久度", - "cover.item_filter.ignore_nbt.disabled":"匹配NBT", - "cover.item_filter.ignore_nbt.enabled":"忽略NBT", - "cover.item_filter.title":"物品過濾卡", - "cover.item_smart_filter.filtering_mode.centrifuge":"離心機", - "cover.item_smart_filter.filtering_mode.description.0":"為該智慧覆蓋板選擇目標機器。", - "cover.item_smart_filter.filtering_mode.description.1":"它能夠自動挑選符合機器配方的物品。", - "cover.item_smart_filter.filtering_mode.electrolyzer":"電解機", - "cover.item_smart_filter.filtering_mode.sifter":"篩選機", - "cover.item_smart_filter.title":"智慧物品過濾", - "cover.machine_controller.invert.disabled.0":"§e普通§r - 該模式下的覆蓋板需要比設定強度小的紅石訊號來觸發", - "cover.machine_controller.invert.enabled.0":"§e反相§r - 該模式下的覆蓋板需要比設定強度大的紅石訊號來觸發", - "cover.machine_controller.inverted":"反相", - "cover.machine_controller.mode.cover_down":"控制目標:覆蓋板(底面)", - "cover.machine_controller.mode.cover_east":"控制目標:覆蓋板(東面)", - "cover.machine_controller.mode.cover_north":"控制目標:覆蓋板(北面)", - "cover.machine_controller.mode.cover_south":"控制目標:覆蓋板(南面)", - "cover.machine_controller.mode.cover_up":"控制目標:覆蓋板(頂面)", - "cover.machine_controller.mode.cover_west":"控制目標:覆蓋板(西面)", - "cover.machine_controller.mode.machine":"控制目標:機器", - "cover.machine_controller.mode.null":"控制目標:無", - "cover.machine_controller.normal":"普通", - "cover.machine_controller.redstone":"最小紅石訊號強度:%,d", - "cover.machine_controller.title":"機器控制設定", - "cover.pump.fluid_filter.title":"流體過濾", - "cover.pump.mode.export":"模式:輸出", - "cover.pump.mode.import":"模式:輸入", - "cover.pump.title":"泵覆蓋板設定(%s)", - "cover.pump.transfer_rate":"%s", - "cover.robotic_arm.title":"機械臂設定(%s)", - "cover.robotic_arm.transfer_mode.description.0":"§e任意傳輸§r-在此模式下,覆蓋板將儘可能傳輸一切符合過濾設定的物品。", - "cover.robotic_arm.transfer_mode.description.1":"§e精確補給§r-在此模式下,覆蓋板每次都會輸入在物品過濾卡的過濾槽中指定(或者在標籤過濾卡的按鈕裡指定)數量的物品。若物品的數量小於指定數量,物品將不會被輸入。", - "cover.robotic_arm.transfer_mode.description.2":"§e保持補給§r-在此模式下,覆蓋板將保持目標容器中指定物品的數量,需要物品時則供應相應量的物品。", - "cover.robotic_arm.transfer_mode.description.3":"§7小提示:左/右擊過濾槽可以調整物品數量,同時按住Shift可以更快地調整。", - "cover.robotic_arm.transfer_mode.keep_exact":"保持補給", - "cover.robotic_arm.transfer_mode.transfer_any":"任意傳輸", - "cover.robotic_arm.transfer_mode.transfer_exact":"精確補給", - "cover.shutter.message.disabled":"扇板已開啟", - "cover.shutter.message.enabled":"扇板已關閉", - "cover.storage.title":"儲存覆蓋板", - "cover.tag_filter.info.0":"§b接受複雜表示式", - "cover.tag_filter.info.1":"& = 且(AND)", - "cover.tag_filter.info.10":"§b使用範例:§6*dusts/gold | (gtceu:circuits & !*lv)", - "cover.tag_filter.info.11":"這將匹配所有種類的金粉或LV以外的電路", - "cover.tag_filter.info.2":"丨= 或(OR)", - "cover.tag_filter.info.3":"^ = 異或(XOR)", - "cover.tag_filter.info.4":"! = 非(NOT)", - "cover.tag_filter.info.5":"( )表示優先順序", - "cover.tag_filter.info.6":"* 表示萬用字元", - "cover.tag_filter.info.7":"§b例:", - "cover.tag_filter.info.8":"§6dust*Gold | (plate* &! *Double*)", - "cover.tag_filter.info.9":"將匹配所有大小的金粉或所有非雙重板的板", - "cover.tag_filter.matches":"物品匹配", - "cover.tag_filter.matches_not":"物品不匹配", - "cover.tag_filter.test_slot.info":"放入一件物品以測試是否匹配過濾表示式", - "cover.tag_filter.title":"礦物詞典過濾卡", - "cover.universal.manual_import_export.mode.description.0":"§e禁用§r-僅依照覆蓋板與內部過濾卡的指定規則傳輸。", - "cover.universal.manual_import_export.mode.description.1":"§e過濾§r-外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", - "cover.universal.manual_import_export.mode.description.2":"§e無過濾§r-外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", - "cover.universal.manual_import_export.mode.disabled":"特殊I/O模式:§b禁用\\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", - "cover.universal.manual_import_export.mode.filtered":"特殊I/O模式:§b過濾\\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", - "cover.universal.manual_import_export.mode.unfiltered":"特殊I/O模式:§b無過濾\\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", - "cover.voiding.label.disabled":"禁用", - "cover.voiding.label.enabled":"啟用", - "cover.voiding.message.disabled":"已禁用銷毀覆蓋板", - "cover.voiding.message.enabled":"已啟用銷毀覆蓋板", - "cover.voiding.tooltip":"§c警告!§7“啟用”時所有流體和物品全部都會被銷毀。", - "cover.voiding.voiding_mode.description.0":"§e匹配銷毀§r:匹配過濾規則即銷毀。", - "cover.voiding.voiding_mode.description.1":"§e溢位銷毀§r:匹配過濾規則即銷毀超出設定數量的部分物品/流體。", - "cover.voiding.voiding_mode.void_any":"匹配銷毀", - "cover.voiding.voiding_mode.void_overflow":"溢位銷毀", - "curios.identifier.gtceu_magnet":"GTCEu磁鐵", - "death.attack.gtceu.axe":"%s被%s用斧子砍死了", - "death.attack.gtceu.butchery_knife":"%s死在了%s的屠刀之下", - "death.attack.gtceu.buzzsaw":"%2$手中圓鋸的嗞嗞聲成為了%1$s生命中最後聽到的聲音", - "death.attack.gtceu.chainsaw_lv":"%2$s的鏈鋸切碎了%1$s", - "death.attack.gtceu.chemical":"%s歷經了一場化學事故", - "death.attack.gtceu.crowbar":"%s被%s用撬棍撬走了半條命", - "death.attack.gtceu.drill_ev":"%2$s的超高壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_hv":"%2$s的高壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_iv":"%2$s的強導壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_lv":"%2$s的低壓電鑽洞穿了%1$s", - "death.attack.gtceu.drill_mv":"%2$s的中壓電鑽洞穿了%1$s", - "death.attack.gtceu.electric":"%s觸電身亡", - "death.attack.gtceu.explosion":"%s爆炸了", - "death.attack.gtceu.explosion.player":"拜%2$s所賜,%1$s爆炸了", - "death.attack.gtceu.file":"%s歷盡了%s的“銼”折", - "death.attack.gtceu.frost":"%s探索到了低溫的奧秘", - "death.attack.gtceu.hammer":"%s被%s錘死了", - "death.attack.gtceu.heat":"%s被活活煮熟了", - "death.attack.gtceu.heat.player":"%s被%s活活煮熟了", - "death.attack.gtceu.hoe":"%s被%s鋤死了", - "death.attack.gtceu.knife":"%2$s紳士地捅了%1$s幾刀", - "death.attack.gtceu.mallet":"%s被%s用錘頭活活敲死了", - "death.attack.gtceu.medical_condition/arsenicosis":"%s死於砷中毒", - "death.attack.gtceu.medical_condition/asbestosis":"%s得了間皮瘤", - "death.attack.gtceu.medical_condition/berylliosis":"%s貪婪地挖掘綠寶石,結果有點過火了", - "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning":"%s離開時爐子還開着", - "death.attack.gtceu.medical_condition/carcinogen":"%s身患白血病", - "death.attack.gtceu.medical_condition/chemical_burns":"%s歷經了一場化學事故", - "death.attack.gtceu.medical_condition/irritant":"%s身上長了§n§l極其嚴重§r的皮疹", - "death.attack.gtceu.medical_condition/methanol_poisoning":"%s在禁酒令下嘗試飲用私釀烈酒", - "death.attack.gtceu.medical_condition/nausea":"%s死於噁心", - "death.attack.gtceu.medical_condition/none":"%s死於...什麼都沒有?", - "death.attack.gtceu.medical_condition/poison":"%s忘了毒物的確有毒", - "death.attack.gtceu.medical_condition/silicosis":"%s不是死於肺結核,而是矽肺病", - "death.attack.gtceu.medical_condition/weak_poison":"%s吞下了鉛(或水銀!)", - "death.attack.gtceu.mining_hammer":"%s被%s當成礦砸死了", - "death.attack.gtceu.mortar":"%s被%s用研缽磨成了粉", - "death.attack.gtceu.pickaxe":"%s被%s用鎬子鑿死了", - "death.attack.gtceu.radiation":"%s放射出了喜悅的光芒", - "death.attack.gtceu.screwdriver":"%s被%s用螺絲起子鑽死了", - "death.attack.gtceu.screwdriver_lv":"%s的螺絲被%s扭掉了", - "death.attack.gtceu.scythe":"%s一鐮刀下去,%s的靈魂灰飛煙滅", - "death.attack.gtceu.shovel":"%s被%s用鍬掏死了", - "death.attack.gtceu.spade":"%s被%s用鏟子挖死了", - "death.attack.gtceu.turbine":"%s一頭扎進了渦輪裡", - "death.attack.gtceu.wire_cutter":"%s用剪線鉗剪斷了%s的血管", - "death.attack.gtceu.wrench":"%s被%s用扳手夯死了!", - "death.attack.gtceu.wrench_hv":"%s的血管被%s狠狠擰鬆了", - "death.attack.gtceu.wrench_iv":"%2$s一扳手下去,扳倒了%1$s的美好人生", - "death.attack.gtceu.wrench_lv":"%s的血管被%s狠狠擰鬆了", - "effect.gtceu.weak_poison":"輕度中毒", - "enchantment.damage.disjunction":"終界離析", - "enchantment.disjunction":"終界離析", - "enchantment.gtceu.disjunction.description":"對終界生物施加虛弱和緩慢效果。", - "enchantment.gtceu.hard_hammer.description":"像格雷科技的錘一樣粉碎所採掘的方塊。", - "enchantment.hard_hammer":"錘碎", - "entity.gtceu.boat":"船", - "entity.gtceu.chest_boat":"儲物箱船", - "entity.gtceu.dynamite":"炸藥", - "entity.gtceu.industrial_tnt":"工業TNT", - "entity.gtceu.powderbarrel":"火藥桶", - "fluid.empty":"空", - "fluid.gtceu.potion":"藥水", - "fluid.spawnlocation.name":"流體礦脈資訊", - "fluid.tile.lava":"熔岩", - "fluid.tile.water":"水", - "fluid_cell.empty":"空", - "gtceu.air_scrubber":"空氣淨化器", - "gtceu.alloy_blast_smelter":"合金冶煉爐", - "gtceu.alloy_smelter":"合金冶煉", - "gtceu.arc_furnace":"電弧爐", - "gtceu.assembler":"組裝機", - "gtceu.assembly_line":"裝配線", - "gtceu.auto_decomp.rotor":"渦輪轉子", - "gtceu.auto_decomp.tool":"非電動工具", - "gtceu.autoclave":"高壓釜", - "gtceu.battery_buffer.average_input":"平均輸入:%s EU/t", - "gtceu.battery_buffer.average_output":"平均輸出:%s EU/t", - "gtceu.bender":"卷板機", - "gtceu.brewery":"釀造室", - "gtceu.bus.collapse.error":"匯流排位於已成型的多方塊結構後方可進行該操作", - "gtceu.bus.collapse_false":"已禁用物品堆疊自動合併", - "gtceu.bus.collapse_true":"已啟用物品堆疊自動合併", - "gtceu.button.bedrock_fluids":"顯示基岩流體礦脈", - "gtceu.button.hide_depleted":"隱藏枯竭的礦脈", - "gtceu.button.ore_veins":"顯示GT礦脈", - "gtceu.button.show_depleted":"顯示枯竭的礦脈", - "gtceu.cable.amperage":"§e最大電流:§r§e%d", - "gtceu.cable.loss_per_block":"§c線損/公尺/安:§r§c%d§7 伏", - "gtceu.cable.superconductor":"%s§d超導體", - "gtceu.cable.voltage":"§a最大電壓:§r§a%d§a(%s§a)", - "gtceu.canner":"裝罐機", - "gtceu.centrifuge":"離心機", - "gtceu.chance_logic.and":"AND", - "gtceu.chance_logic.none":"NONE", - "gtceu.chance_logic.or":"OR", - "gtceu.chance_logic.xor":"XOR", - "gtceu.chat.cape":"§5恭喜你:你剛剛解鎖了一件新披風!檢視終端應用程式“披風選擇器”來使用它。§r", - "gtceu.chemical_bath":"化學水浴機", - "gtceu.chemical_reactor":"化學反應器", - "gtceu.circuit_assembler":"電路組裝機", - "gtceu.coke_oven":"焦爐", - "gtceu.combustion_generator":"內燃發電機", - "gtceu.command.copy.click_to_copy":"點選複製", - "gtceu.command.copy.copied_and_click":"已複製到剪貼簿,點選再次複製", - "gtceu.command.copy.copied_end":"]到剪貼簿", - "gtceu.command.copy.copied_start":"已複製[", - "gtceu.command.hand.electric":"電量資訊:%d / %d EU - 等級:%d; 是否為電池:%s", - "gtceu.command.hand.fluid":"流體資訊:%d / %d mB;是否可輸入:%s; 是否可輸出:%s", - "gtceu.command.hand.fluid2":"流體 ID:", - "gtceu.command.hand.groovy":"考慮使用§6/gs hand", - "gtceu.command.hand.item_id":"物品:%s(後設資料:%d)", - "gtceu.command.hand.material":"材料 ID:", - "gtceu.command.hand.meta_item":"元物品 ID:", - "gtceu.command.hand.no_item":"在執行此命令之前,您的主手或副手必須拿著物品。", - "gtceu.command.hand.not_a_player":"這個命令只有玩家可以使用。", - "gtceu.command.hand.ore_prefix":"礦物字首:", - "gtceu.command.hand.tag_entries":"§3標籤條目:", - "gtceu.command.hand.tool_stats":"工具狀態類:%s", - "gtceu.command.hand.usage":"用法:/gtceu hand", - "gtceu.command.recipecheck.begin":"開始配方衝突檢查...", - "gtceu.command.recipecheck.end":"配方衝突檢查詢到%d可能存在的衝突,檢視伺服器日誌以瞭解更多資訊", - "gtceu.command.recipecheck.end_no_conflicts":"未發現配方衝突!", - "gtceu.command.recipecheck.usage":"用法:/gtceu recipecheck", - "gtceu.command.usage":"用法:/gtceu ", - "gtceu.command.worldgen.reload.failed":"Worldgen重新載入失敗。檢查控制台是否有錯誤。", - "gtceu.command.worldgen.reload.success":"Worldgen已成功從設定重新載入。", - "gtceu.command.worldgen.reload.usage":"用法:/gtceu worldgen reload", - "gtceu.command.worldgen.usage":"用法:/gtceu worldgen ", - "gtceu.compressor":"壓縮機", - "gtceu.cover.activity_detector.message_activity_inverted":"正在以反相模式監控活動狀態", - "gtceu.cover.activity_detector.message_activity_normal":"正在以普通模式監控活動狀態", - "gtceu.cover.activity_detector_advanced.message_activity_inverted":"正在以反相模式監控處理狀態", - "gtceu.cover.activity_detector_advanced.message_activity_normal":"正在以普通模式監控處理狀態", - "gtceu.cover.energy_detector.message_electricity_storage_inverted":"正在以反相模式監控電力儲存", - "gtceu.cover.energy_detector.message_electricity_storage_normal":"正在以普通模式監控電力儲存", - "gtceu.cover.fluid_detector.message_fluid_storage_inverted":"正在以反相模式監控流體儲存", - "gtceu.cover.fluid_detector.message_fluid_storage_normal":"正在以普通模式監控流體儲存", - "gtceu.cover.item_detector.message_item_storage_inverted":"正在以反相模式監控物品儲存", - "gtceu.cover.item_detector.message_item_storage_normal":"正在以普通模式監控物品儲存", - "gtceu.cracker":"裂解機", - "gtceu.creative.activity.off":"未啟用", - "gtceu.creative.activity.on":"已啟用", - "gtceu.creative.chest.ipc":"每次輸出流體量", - "gtceu.creative.chest.item":"物品", - "gtceu.creative.chest.tpc":"每次輸出間隔Tick", - "gtceu.creative.computation.average":"平均CWU/t需求", - "gtceu.creative.energy.amperage":"電流", - "gtceu.creative.energy.sink":"歸零", - "gtceu.creative.energy.source":"最大值", - "gtceu.creative.energy.voltage":"電壓", - "gtceu.creative.tank.fluid":"流體", - "gtceu.creative.tank.mbpc":"每次輸出流體量", - "gtceu.creative.tank.tpc":"每次輸出間隔Tick", - "gtceu.creative_tooltip.1":"§7你需要", - "gtceu.creative_tooltip.2":"§b創造模式", - "gtceu.creative_tooltip.3":"§7來使用它", - "gtceu.cutter":"切割機", - "gtceu.debug.f3_h.enabled":"格雷科技修改了除錯資訊!對於開發人員:在GregTech設定檔案中啟用misc:debug以檢視更多資訊", - "gtceu.direction.tooltip.back":"背面", - "gtceu.direction.tooltip.down":"底面", - "gtceu.direction.tooltip.front":"正面", - "gtceu.direction.tooltip.left":"左面", - "gtceu.direction.tooltip.right":"右面", - "gtceu.direction.tooltip.up":"頂面", - "gtceu.distillation_tower":"蒸餾塔", - "gtceu.distillery":"蒸餾室", - "gtceu.duct_pipe.transfer_rate":"§b空氣傳輸速率:%s", - "gtceu.dummy":"假人", - "gtceu.electric_blast_furnace":"電力高爐", - "gtceu.electric_furnace":"電爐", - "gtceu.electrolyzer":"電解機", - "gtceu.electromagnetic_separator":"電磁分離機", - "gtceu.evaporation":"蒸發", - "gtceu.extractor":"提取機", - "gtceu.extruder":"壓模器", - "gtceu.fermenter":"發酵槽", - "gtceu.fluid.amount":"§9總量:%d/%d mB", - "gtceu.fluid.click_combined":"§7手持流體容器點選流體槽以§c倒出§7或§b填入§7流體(Shift+點擊以用整組容器倒出流體或用整組容器中的流體填入)", - "gtceu.fluid.click_to_empty":"§7手持流體容器點選流體槽以§c倒出§7流體(Shift+點擊以用整組容器倒出流體)", - "gtceu.fluid.click_to_fill":"§7手持流體容器點選流體槽以§b填入§7流體(Shift+點擊以用整組容器中的流體填入)", - "gtceu.fluid.empty":"空", - "gtceu.fluid.gas_generic":"氣態%s", - "gtceu.fluid.gas_vapor":"%s蒸氣", - "gtceu.fluid.generic":"%s", - "gtceu.fluid.liquid_generic":"液態%s", - "gtceu.fluid.molten":"熔融%s", - "gtceu.fluid.plasma":"%s電漿", - "gtceu.fluid.state_gas":"§a狀態:氣態", - "gtceu.fluid.state_liquid":"§a狀態:液態", - "gtceu.fluid.state_plasma":"§a狀態:電漿態", - "gtceu.fluid.temperature":"§c溫度:%d K", - "gtceu.fluid.temperature.cryogenic":"§b低溫流體!輕拿輕放!", - "gtceu.fluid.type_acid.tooltip":"§6酸性流體!輕拿輕放!", - "gtceu.fluid_heater":"流體加熱器", - "gtceu.fluid_pipe.acid_proof":"§6可傳輸酸性物質", - "gtceu.fluid_pipe.capacity":"§9容積:§f%d mB", - "gtceu.fluid_pipe.channels":"§e平行管道:§f%d", - "gtceu.fluid_pipe.cryo_proof":"§6可傳輸低溫物質", - "gtceu.fluid_pipe.gas_proof":"§6可以傳輸氣體", - "gtceu.fluid_pipe.max_temperature":"§c溫度上限:§f%d K", - "gtceu.fluid_pipe.not_gas_proof":"§4氣體可能洩漏!", - "gtceu.fluid_pipe.plasma_proof":"§6可傳輸所有電漿", - "gtceu.fluid_solidifier":"流體固化器", - "gtceu.forge_hammer":"鍛造錘", - "gtceu.forming_press":"衝壓機床", - "gtceu.forming_press.naming.named":"§o已命名物品", - "gtceu.forming_press.naming.press":"§o名稱模板", - "gtceu.forming_press.naming.to_name":"§o待命名物品", - "gtceu.fusion_reactor":"核融合反應爐", - "gtceu.gas_collector":"集氣室", - "gtceu.gas_turbine":"燃氣輪機", - "gtceu.gui.auto_output.name":"自動", - "gtceu.gui.charger_slot.tooltip.0":"§f充電槽§r", - "gtceu.gui.charger_slot.tooltip.1":"§7從%s電池中取電§7", - "gtceu.gui.charger_slot.tooltip.2":"§7也可為%s工具或電池充電", - "gtceu.gui.chunkmode.disabled.0":"區塊模式§c禁用§r:點擊啟用。", - "gtceu.gui.chunkmode.disabled.1":"§7切換需要機器待機。", - "gtceu.gui.chunkmode.enabled.0":"區塊模式§a啟用§r:點擊禁用。", - "gtceu.gui.chunkmode.enabled.1":"§7切換需要機器待機。", - "gtceu.gui.circuit.title":"電路設定", - "gtceu.gui.config_slot":"§f設定槽位§r", - "gtceu.gui.config_slot.auto_pull_managed":"§4停用:§7由ME自動拉取管理", - "gtceu.gui.config_slot.remove":"§7右擊§4清除§7設定槽位。§r", - "gtceu.gui.config_slot.scroll":"§7使用滾輪§a切換§7設定數。§r", - "gtceu.gui.config_slot.set":"§7點選§b設定/選擇§7設定槽位。§r", - "gtceu.gui.config_slot.set_only":"§7點選§b設定§7設定槽位。§r", - "gtceu.gui.configurator_slot.tooltip.0":"§f設定器槽§r", - "gtceu.gui.configurator_slot.tooltip.1":"§7在此插槽放置一個§6程式設計電路§7以", - "gtceu.gui.configurator_slot.tooltip.2":"§7更改其設定值。", - "gtceu.gui.configurator_slot.tooltip.3":"§7按住§6Shift§7時點選按鈕,一次加減§6§75個編號", - "gtceu.gui.configurator_slot.tooltip.4":"§a此插槽中的程式設計電路也視為一個配方輸入。§r", - "gtceu.gui.content.chance_base":"產出機率:%s%%", - "gtceu.gui.content.chance_base_logic":"產出機率:%s%% (%s)", - "gtceu.gui.content.chance_boosted":"當前等級機率:%s%%", - "gtceu.gui.content.chance_boosted_logic":"當前等級機率:%s%%(%s)", - "gtceu.gui.content.chance_nc":"§c不會被消耗§r", - "gtceu.gui.content.chance_nc_short":"§c不消耗§r", - "gtceu.gui.content.chance_tier_boost_minus":"電壓加成:-%s%%/每級", - "gtceu.gui.content.chance_tier_boost_plus":"電壓加成:+%s%%/每級", - "gtceu.gui.content.count_range":"%s-%sx", - "gtceu.gui.content.per_tick":"§a每刻(tick)消耗/產生§r", - "gtceu.gui.content.tips.per_second_short":"§a/秒§r", - "gtceu.gui.content.tips.per_tick_short":"§a/刻(tick)§r", - "gtceu.gui.content.units.per_second":"/s", - "gtceu.gui.content.units.per_tick":"/t", - "gtceu.gui.cover_setting.title":"覆蓋板設定", - "gtceu.gui.editor.group.recipe_type":"封頂", - "gtceu.gui.editor.tips.citation":"引用次數", - "gtceu.gui.fisher_mode.tooltip.0":"捕捉垃圾物品", - "gtceu.gui.fisher_mode.tooltip.1":"關閉時,每次執行消耗兩根線。", - "gtceu.gui.fluid_amount":"流體總量:", - "gtceu.gui.fluid_auto_input.tooltip.disabled":"流體自動輸入已禁用", - "gtceu.gui.fluid_auto_input.tooltip.enabled":"流體自動輸入已啟用", - "gtceu.gui.fluid_auto_output.allow_input.disabled":"禁止從輸出面輸入流體", - "gtceu.gui.fluid_auto_output.allow_input.enabled":"允許從輸出面輸入流體", - "gtceu.gui.fluid_auto_output.tooltip.disabled":"流體自動輸出已禁用", - "gtceu.gui.fluid_auto_output.tooltip.enabled":"流體自動輸出已啟用", - "gtceu.gui.fluid_lock.tooltip.disabled":"流體鎖定已禁用", - "gtceu.gui.fluid_lock.tooltip.enabled":"流體鎖定已啟用", - "gtceu.gui.fluid_voiding_partial.tooltip.disabled":"過量流體銷毀已禁用", - "gtceu.gui.fluid_voiding_partial.tooltip.enabled":"過量流體銷毀已啟用", - "gtceu.gui.fuel_amount":"燃料總量:", - "gtceu.gui.item_auto_input.tooltip.disabled":"物品自動輸入已禁用", - "gtceu.gui.item_auto_input.tooltip.enabled":"物品自動輸入已啟用", - "gtceu.gui.item_auto_output.allow_input.disabled":"禁止從輸出面輸入物品", - "gtceu.gui.item_auto_output.allow_input.enabled":"允許從輸出面輸入物品", - "gtceu.gui.item_auto_output.tooltip.disabled":"物品自動輸出已禁用", - "gtceu.gui.item_auto_output.tooltip.enabled":"物品自動輸出已啟用", - "gtceu.gui.item_lock.tooltip.disabled":"物品鎖定已禁用", - "gtceu.gui.item_lock.tooltip.enabled":"物品鎖定已啟用", - "gtceu.gui.item_voiding_partial.tooltip.disabled":"物品過量銷毀已禁用", - "gtceu.gui.item_voiding_partial.tooltip.enabled":"物品過量銷毀已開啟", - "gtceu.gui.machinemode":"當前機器模式:%s", - "gtceu.gui.machinemode.title":"當前機器模式", - "gtceu.gui.me_bus.auto_pull_button":"點擊以切換ME自動拉取模式", - "gtceu.gui.me_network.offline":"網路狀態:§4離線§r", - "gtceu.gui.me_network.online":"網路狀態:§2線上§r", - "gtceu.gui.multiblock_fluid_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_fluid_voiding.1":"§7銷毀§9流體", - "gtceu.gui.multiblock_item_fluid_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_item_fluid_voiding.1":"§7銷毀§6物品§7和§9流體", - "gtceu.gui.multiblock_item_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_item_voiding.1":"§7銷毀§6物品", - "gtceu.gui.multiblock_no_voiding.0":"銷毀模式", - "gtceu.gui.multiblock_no_voiding.1":"§7不進行銷毀", - "gtceu.gui.output_setting.title":"輸出設定", - "gtceu.gui.output_setting.tooltips.0":"左擊以自動輸出物品", - "gtceu.gui.output_setting.tooltips.1":"右擊以自動輸出流體", - "gtceu.gui.overclock.description.0":"超頻按鈕", - "gtceu.gui.overclock.description.1":"§7配方可以超頻到設定的電壓等級", - "gtceu.gui.overclock.disabled.0":"超頻已禁用", - "gtceu.gui.overclock.disabled.1":"點擊啟用", - "gtceu.gui.overclock.enabled.0":"超頻已啟用", - "gtceu.gui.overclock.enabled.1":"點擊禁用", - "gtceu.gui.overclock.off":"X", - "gtceu.gui.overclock.range":"可用電壓級 [%s,%s]", - "gtceu.gui.overclock.title":"超頻電壓級", - "gtceu.gui.silktouch.disabled.0":"絲綢之觸已禁用:點擊啟用。", - "gtceu.gui.silktouch.disabled.1":"§7切換需要機器待機。", - "gtceu.gui.silktouch.enabled.0":"絲綢之觸已啟用:點擊禁用。", - "gtceu.gui.silktouch.enabled.1":"§7切換需要機器待機。", - "gtceu.gui.sort":"分類", - "gtceu.gui.title_bar.back":"返回", - "gtceu.gui.title_bar.page_switcher":"頁面", - "gtceu.gui.toggle_view.disabled":"切換檢視(流體)", - "gtceu.gui.toggle_view.enabled":"切換檢視(物品)", - "gtceu.gui.waiting_list":"傳送佇列:", - "gtceu.hazard_trigger.any":"任何方式", - "gtceu.hazard_trigger.description":"肇因:", - "gtceu.hazard_trigger.inhalation":"吸入", - "gtceu.hazard_trigger.none":"無", - "gtceu.hazard_trigger.protection.description":"免受:", - "gtceu.hazard_trigger.skin_contact":"皮膚接觸", - "gtceu.implosion_compressor":"聚爆壓縮機", - "gtceu.io.both":"同時", - "gtceu.io.export":"輸出", - "gtceu.io.import":"輸入", - "gtceu.io.none":"無", - "gtceu.item_filter.empty_item":"空(無物品)", - "gtceu.item_filter.footer":"§e手持物品右鍵取代設定", - "gtceu.item_list.item_stored":"§7儲量:%d", - "gtceu.item_pipe.priority":"§9優先順序:§f%d", - "gtceu.jade.cleaned_this_second":"污染清理速率:%s/s", - "gtceu.jade.energy_stored":"%d / %d EU", - "gtceu.jade.progress_computation":"計算進度:%s / %s", - "gtceu.jade.progress_sec":"%s / %s s", - "gtceu.jade.progress_tick":"%s / %s t", - "gtceu.jei.bedrock_fluid.heavy_oil_deposit":"重油礦藏", - "gtceu.jei.bedrock_fluid.lava_deposit":"熔岩礦藏", - "gtceu.jei.bedrock_fluid.light_oil_deposit":"輕油礦藏", - "gtceu.jei.bedrock_fluid.natural_gas_deposit":"天然氣礦藏", - "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit":"地獄天然氣礦藏", - "gtceu.jei.bedrock_fluid.oil_deposit":"石油礦藏", - "gtceu.jei.bedrock_fluid.raw_oil_deposit":"原油礦藏", - "gtceu.jei.bedrock_fluid.salt_water_deposit":"鹽水礦藏", - "gtceu.jei.bedrock_fluid_diagram":"基岩流體生成資訊", - "gtceu.jei.bedrock_ore_diagram":"基岩礦脈生成資訊", - "gtceu.jei.fluid.dep_amount_hover":"消耗後消耗的量", - "gtceu.jei.fluid.dep_chance_hover":"開採流體礦脈時消耗的機率", - "gtceu.jei.fluid.dep_yield_hover":"流體礦脈耗盡後能開採的最大流體量", - "gtceu.jei.fluid.depleted_rate":"耗盡後產量:%d", - "gtceu.jei.fluid.depletion_amount":"消耗量:%d", - "gtceu.jei.fluid.depletion_chance":"消耗機率:%d%%", - "gtceu.jei.fluid.dimension":"維度:", - "gtceu.jei.fluid.max_hover":"流體礦脈所能具有的的最大產量", - "gtceu.jei.fluid.max_yield":"最大產量:%d", - "gtceu.jei.fluid.min_hover":"流體礦脈所能具有的的最小產量", - "gtceu.jei.fluid.min_yield":"最小產量:%d", - "gtceu.jei.fluid.vein_weight":"礦脈權重:%d", - "gtceu.jei.fluid.weight_hover":"流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生態域中特殊的生成權重", - "gtceu.jei.materials.average_mass":"平均質量:%d", - "gtceu.jei.materials.average_neutrons":"平均中子數:%d", - "gtceu.jei.materials.average_protons":"平均質子數:%d", - "gtceu.jei.multiblock_info":"多方塊結構資訊", - "gtceu.jei.ore.between.0":"中層礦", - "gtceu.jei.ore.between.1":"和其他礦一起生成在礦脈的中間%d層", - "gtceu.jei.ore.biome_weighting":"§d%s的生成權重:§3%d", - "gtceu.jei.ore.biome_weighting_no_spawn":"§d%s的生成權重:§c無法生成", - "gtceu.jei.ore.biome_weighting_title":"§d特定生態域中的例外權重:", - "gtceu.jei.ore.ore_weight":"礦脈內生成權重:%d%%", - "gtceu.jei.ore.primary.0":"頂層礦", - "gtceu.jei.ore.primary.1":"在礦脈的頂部%d層生成", - "gtceu.jei.ore.secondary.0":"底層礦", - "gtceu.jei.ore.secondary.1":"在礦脈的底部%d層生成", - "gtceu.jei.ore.sporadic.0":"散佈礦", - "gtceu.jei.ore.sporadic.1":"生成在礦脈的任何地方", - "gtceu.jei.ore.surface_rock.0":"這種地表岩石標誌著礦脈的生成位置。", - "gtceu.jei.ore.surface_rock.1":"挖掘掉落3小撮粉,受幸運加成", - "gtceu.jei.ore_processing_diagram":"礦物處理流程圖", - "gtceu.jei.ore_vein.apatite_vein":"磷灰石礦脈", - "gtceu.jei.ore_vein.banded_iron_vein":"帶狀鐵礦脈", - "gtceu.jei.ore_vein.bauxite_vein_end":"終界鋁土礦脈", - "gtceu.jei.ore_vein.beryllium_vein":"鈹礦脈", - "gtceu.jei.ore_vein.cassiterite_vein":"錫石礦脈", - "gtceu.jei.ore_vein.certus_quartz":"賽特斯石英", - "gtceu.jei.ore_vein.coal_vein":"煤炭礦脈", - "gtceu.jei.ore_vein.copper_tin_vein":"銅錫礦脈", - "gtceu.jei.ore_vein.copper_vein":"銅礦脈", - "gtceu.jei.ore_vein.diamond_vein":"鑽石礦脈", - "gtceu.jei.ore_vein.galena_vein":"方鉛礦脈", - "gtceu.jei.ore_vein.garnet_tin_vein":"錫石榴石礦脈", - "gtceu.jei.ore_vein.garnet_vein":"石榴石礦脈", - "gtceu.jei.ore_vein.iron_vein":"鐵礦脈", - "gtceu.jei.ore_vein.lapis_vein":"青金石礦脈", - "gtceu.jei.ore_vein.lubricant_vein":"皂滑礦脈", - "gtceu.jei.ore_vein.magnetite_vein_end":"終界磁鐵礦脈", - "gtceu.jei.ore_vein.magnetite_vein_ow":"主世界磁鐵礦脈", - "gtceu.jei.ore_vein.manganese_vein":"錳礦脈", - "gtceu.jei.ore_vein.manganese_vein_ow":"主世界錳礦脈", - "gtceu.jei.ore_vein.mica_vein":"雲母礦脈", - "gtceu.jei.ore_vein.mineral_sand_vein":"礦砂礦脈", - "gtceu.jei.ore_vein.molybdenum_vein":"鉬礦脈", - "gtceu.jei.ore_vein.monazite_vein":"獨居石礦脈", - "gtceu.jei.ore_vein.naquadah_vein":"矽岩礦脈", - "gtceu.jei.ore_vein.nether_quartz_vein":"地獄石英礦脈", - "gtceu.jei.ore_vein.nickel_vein":"鎳礦脈", - "gtceu.jei.ore_vein.oilsands_vein":"油砂礦脈", - "gtceu.jei.ore_vein.olivine_vein":"橄欖石礦脈", - "gtceu.jei.ore_vein.pitchblende_vein_end":"終界瀝青鈾礦脈", - "gtceu.jei.ore_vein.redstone_vein":"紅石礦脈", - "gtceu.jei.ore_vein.redstone_vein_ow":"主世界紅石礦脈", - "gtceu.jei.ore_vein.saltpeter_vein":"硝石礦脈", - "gtceu.jei.ore_vein.salts_vein":"鹽礦脈", - "gtceu.jei.ore_vein.sapphire_vein":"藍寶石礦脈", - "gtceu.jei.ore_vein.scheelite_vein":"白鎢礦脈", - "gtceu.jei.ore_vein.sheldonite_vein":"謝爾頓礦脈", - "gtceu.jei.ore_vein.sulfur_vein":"硫礦脈", - "gtceu.jei.ore_vein.tetrahedrite_vein":"黝銅礦脈", - "gtceu.jei.ore_vein.topaz_vein":"黃玉礦脈", - "gtceu.jei.ore_vein_diagram":"礦脈生成資訊", - "gtceu.jei.ore_vein_diagram.chance":"§e機率:%s§r", - "gtceu.jei.ore_vein_diagram.dimensions":"維度:", - "gtceu.jei.ore_vein_diagram.spawn_range":"生成範圍:", - "gtceu.jei.ore_vein_diagram.weight":"權重:%s", - "gtceu.jei.programmed_circuit":"程式設計電路頁", - "gtceu.journeymap.options.layers":"勘探層", - "gtceu.journeymap.options.layers.bedrock_fluids":"顯示基岩流體礦脈", - "gtceu.journeymap.options.layers.hide_depleted":"隱藏枯竭的礦脈", - "gtceu.journeymap.options.layers.ore_veins":"顯示礦脈", - "gtceu.key.armor_charging":"啟用/禁用盔甲向物品欄充能", - "gtceu.key.armor_hover":"切換盔甲懸浮模式", - "gtceu.key.armor_mode_switch":"切換盔甲模式", - "gtceu.key.enable_boots":"啟用跳躍提升", - "gtceu.key.enable_jetpack":"啟用噴射背包", - "gtceu.key.tool_aoe_change":"切換工具範圍模式", - "gtceu.large_boiler":"大型鍋爐", - "gtceu.large_chemical_reactor":"大型化學反應器", - "gtceu.laser_engraver":"雷射蝕刻機", - "gtceu.lathe":"車床", - "gtceu.macerator":"研磨機", - "gtceu.machine.active_transformer.tooltip.0":"變形金剛:偽裝的雷射", - "gtceu.machine.active_transformer.tooltip.1":"可以將任意數量的能量§f輸入§7整合為任意數量的能量§f輸出§7。", - "gtceu.machine.active_transformer.tooltip.2":"當你使用§d雷射§7進行能量傳輸時,擁有驚人的傳輸距離。", - "gtceu.machine.active_transformer.tooltip.3":"Lasers§7.", - "gtceu.machine.advanced_processing_array.tooltip":"這個世界需要更多平行", - "gtceu.machine.assembly_line.tooltip":"真不是什麼多方塊組裝機!", - "gtceu.machine.available_recipe_map_1.tooltip":"可用配方型別:%s", - "gtceu.machine.available_recipe_map_2.tooltip":"可用配方型別:%s,%s", - "gtceu.machine.available_recipe_map_3.tooltip":"可用配方型別:%s,%s,%s", - "gtceu.machine.available_recipe_map_4.tooltip":"可用配方型別:%s,%s,%s,%s", - "gtceu.machine.basic.input_from_output_side.allow":"允許從輸出面輸入:", - "gtceu.machine.basic.input_from_output_side.disallow":"禁止從輸出面輸入:", - "gtceu.machine.bedrock_ore_miner.depletion":"§b損耗率:§f%s%%", - "gtceu.machine.bedrock_ore_miner.description":"§7從基岩之下的礦脈鑽掘礦", - "gtceu.machine.bedrock_ore_miner.production":"§e產量倍率:§f%dx,超頻後%fx", - "gtceu.machine.block_breaker.speed_bonus":"§e速度獎勵:§f%d%%", - "gtceu.machine.block_breaker.tooltip":"§7採掘正面的方塊並收集掉落物", - "gtceu.machine.boiler.info.cooling.down":"§9冷卻中§r%s", - "gtceu.machine.boiler.info.heating.up":"§c加熱中§r%s", - "gtceu.machine.boiler.info.producing.steam":" §a(沸騰)", - "gtceu.machine.buffer.tooltip":"用於儲存物品和流體的小小緩衝器", - "gtceu.machine.canner.jei_description":"填入或倒空流體容器,例如桶和流體單元", - "gtceu.machine.central_monitor.tooltip":"但它能執行《毀滅戰士》嗎?", - "gtceu.machine.charcoal_pile.tooltip":"不烤麵包烤燃料的地下麵包房", - "gtceu.machine.charcoal_pile.tooltip.0":"§c點火後§7將原木燒製成§a木炭§7。", - "gtceu.machine.charcoal_pile.tooltip.1":"使用可點火的物品右擊即可啟動。", - "gtceu.machine.charcoal_pile.tooltip.2":"熱解發生在下方至多§b9x4x9§7的空間內。", - "gtceu.machine.charcoal_pile.tooltip.3":"原木不可暴露在§e空氣§7中!", - "gtceu.machine.cleanroom.tooltip":"將那些討厭的灰塵拒之門外", - "gtceu.machine.cleanroom.tooltip.0":"將機器放在內部執行無塵室配方。", - "gtceu.machine.cleanroom.tooltip.1":"清理汙染時耗能為§f30EU/t§7,潔淨狀態耗能為§f4EU/t§7。", - "gtceu.machine.cleanroom.tooltip.2":"超頻增加每個週期的清潔度。", - "gtceu.machine.cleanroom.tooltip.3":"§b大小:§f5x5x5到15x15x15", - "gtceu.machine.cleanroom.tooltip.4":"天花板需要§f過濾器機械方塊§7,不包含天花板的邊緣。", - "gtceu.machine.cleanroom.tooltip.5":"接受最多§f四扇門§7!門處於開啟狀態時不會影響潔淨度。", - "gtceu.machine.cleanroom.tooltip.6":"發電機、消音倉、採礦機和原始機器對於無塵室來說太髒了!", - "gtceu.machine.cleanroom.tooltip.7":"透過牆壁上的§f機器外殼§7或§f二極體§7向內部輸入能量。", - "gtceu.machine.cleanroom.tooltip.ae2.channels":"透過牆壁上的§f機器外殼§7傳送最多§f8個AE2頻道§7。", - "gtceu.machine.cleanroom.tooltip.ae2.no_channels":"透過牆壁上的§f機器外殼§7連通§aAE2網路§7。", - "gtceu.machine.cleanroom.tooltip.hold_ctrl":"按住CTRL以顯示完整的結構資訊", - "gtceu.machine.coke_oven.tooltip":"為鍊鋼和發電提供更優質的燃料", - "gtceu.machine.coke_oven_hatch.tooltip":"§7允許焦爐的自動化輸入輸出", - "gtceu.machine.combustion_generator.tooltip":"§7需要液體燃料", - "gtceu.machine.computation_receiver_hatch.tooltip":"為多方塊結構輸入算力資料", - "gtceu.machine.computation_transmitter_hatch.tooltip":"從多方塊結構輸出算力資料", - "gtceu.machine.cracker.tooltip":"有它,石油才有用", - "gtceu.machine.cracker.tooltip.1":"使用§6白銅§7後的每個線圈等級可以減少§f10%%§7的能源消耗。", - "gtceu.machine.data_access_hatch.tooltip.0":"令多方塊結構得以訪問資料", - "gtceu.machine.data_access_hatch.tooltip.1":"新增了§a%s§7個資料容器(快閃記憶體等)插槽", - "gtceu.machine.data_bank.tooltip.0":"你的個人網路儲存器", - "gtceu.machine.data_bank.tooltip.1":"大容量資料儲存,使用光纜傳輸。", - "gtceu.machine.data_bank.tooltip.2":"資料庫間可以相互連線。", - "gtceu.machine.data_bank.tooltip.3":"每個資料/光學倉耗能為§f%s EU/t§7。", - "gtceu.machine.data_bank.tooltip.4":"每個已連線的資料/光學倉耗能為§f%s EU/t§7。", - "gtceu.machine.data_receiver_hatch.tooltip":"為多方塊結構輸入研究資料", - "gtceu.machine.data_transmitter_hatch.tooltip":"從多方塊結構輸出研究資料", - "gtceu.machine.diode.message":"最大電流:%s", - "gtceu.machine.diode.tooltip_general":"將只允許能量向一個方向流動,並限制電流。", - "gtceu.machine.diode.tooltip_starts_at":"預設允許§f1A§r電流通行,使用軟錘切換。", - "gtceu.machine.diode.tooltip_tool_usage":"用軟錘右擊以改變電流。", - "gtceu.machine.distillation_tower.tooltip":"流體精煉廠", - "gtceu.machine.drum.disable_output":"不排出液體", - "gtceu.machine.drum.enable_output":"將液體排到底面相鄰的容器中", - "gtceu.machine.dual_hatch.export.tooltip":"為多方塊結構輸出物品和流體", - "gtceu.machine.dual_hatch.import.tooltip":"為多方塊結構輸入物品和流體", - "gtceu.machine.electric_blast_furnace.tooltip":"電力高爐有了,那電力煙燻爐呢?", - "gtceu.machine.electric_blast_furnace.tooltip.0":"每超過配方溫度§f900K§7,耗能均將乘以§f95%%§7(不計超頻)。", - "gtceu.machine.electric_blast_furnace.tooltip.1":"每超過配方溫度§f1800K§7,將一次超頻的效率變為§f100%%§7(無損超頻)。", - "gtceu.machine.electric_blast_furnace.tooltip.2":"超過§fMV§7後的每一級電壓,都會將溫度提高§f100K§7。", - "gtceu.machine.endpoint.tooltip.0":"使用§f長距離管道§7方塊連線管道介面以建立管路。", - "gtceu.machine.endpoint.tooltip.1":"管路必須有且僅有一個§f1輸入§7介面和一個§f1輸出§7介面。", - "gtceu.machine.endpoint.tooltip.2":"只有管道介面需要被§f區塊載入§7。", - "gtceu.machine.endpoint.tooltip.min_length":"§b最低介面間距:§f%d格方塊", - "gtceu.machine.energy_converter.description":"在EU和FE之間轉換能量形式。", - "gtceu.machine.energy_converter.message_conversion_eu":"EU轉為FE,,輸入:%dA %d EU,輸出:%d FE", - "gtceu.machine.energy_converter.message_conversion_native":"FE轉為EU,輸入:%dFE,輸出:%dA %d EU", - "gtceu.machine.energy_converter.tooltip_conversion_eu":"§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE", - "gtceu.machine.energy_converter.tooltip_conversion_native":"§cFE轉換:§f%d FE -> %dA %d EU (%s§f)", - "gtceu.machine.energy_converter.tooltip_tool_usage":"預設§f轉換為FE§r,使用軟錘切換。", - "gtceu.machine.energy_hatch.input.tooltip":"為多方塊結構輸入能量", - "gtceu.machine.energy_hatch.input_hi_amp.tooltip":"為多方塊結構輸入更多電流", - "gtceu.machine.energy_hatch.output.tooltip":"為多方塊結構輸出能量", - "gtceu.machine.energy_hatch.output_hi_amp.tooltip":"為多方塊結構輸出更多電流", - "gtceu.machine.ev_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.ev_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.ev_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.ev_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.ev_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.ev_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.ev_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.ev_centrifuge.tooltip":"§7分子分離機", - "gtceu.machine.ev_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.ev_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.ev_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.ev_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.ev_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.ev_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.ev_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.ev_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.ev_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.ev_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.ev_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.ev_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.ev_fluid_drilling_rig.tooltip":"甚至可以抽空整個油田", - "gtceu.machine.ev_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.ev_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.ev_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.ev_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.ev_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.ev_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.ev_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.ev_macerator.tooltip":"§7粉碎礦並獲得副產物", - "gtceu.machine.ev_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.ev_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.ev_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.ev_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.ev_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.ev_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.ev_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.ev_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.ev_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.ev_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.ev_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.extreme_combustion_engine.tooltip":"極限化學能釋放者", - "gtceu.machine.fisher.requirement":"需要以機器正下方為中心的%dx%d正方形水源。", - "gtceu.machine.fisher.speed":"每%d刻抓到一些東西", - "gtceu.machine.fisher.tooltip":"每次消耗一根線捕魚", - "gtceu.machine.fluid_drilling_rig.depletion":"§b損耗率:§f%s%%", - "gtceu.machine.fluid_drilling_rig.description":"§7從基岩下的礦脈中鑽取流體。", - "gtceu.machine.fluid_drilling_rig.production":"§e產量倍率:§f%dx,超頻後%fx", - "gtceu.machine.fluid_hatch.export.tooltip":"為多方塊結構輸出流體", - "gtceu.machine.fluid_hatch.import.tooltip":"為多方塊結構輸入流體", - "gtceu.machine.fluid_tank.fluid":"含有%smB%s", - "gtceu.machine.fluid_tank.max_multiblock":"多方塊結構最大尺寸:%dx%dx%d", - "gtceu.machine.fusion_reactor.capacity":"§7儲能上限:§e%sM EU", - "gtceu.machine.fusion_reactor.luv.tooltip":"我發動魔法卡,融合!", - "gtceu.machine.fusion_reactor.overclocking":"超頻時消耗兩倍能量,工作時間減半", - "gtceu.machine.fusion_reactor.uv.tooltip":"化 作 白 矮 星 砸 向 你", - "gtceu.machine.fusion_reactor.zpm.tooltip":"一 輪 紅 日 落 大 地", - "gtceu.machine.gas_turbine.tooltip":"§7需要氣體燃料", - "gtceu.machine.high_performance_computation_array.tooltip.0":"只是普通的超級電腦", - "gtceu.machine.high_performance_computation_array.tooltip.1":"用於生產§f算力§7(同時會產生熱量)。", - "gtceu.machine.high_performance_computation_array.tooltip.2":"需要HPCA元件來生產§fCWU/t§7(計算工作單元)。", - "gtceu.machine.hp_steam_alloy_smelter.tooltip":"§7融合冶煉爐", - "gtceu.machine.hp_steam_compressor.tooltip":"§7壓縮物品", - "gtceu.machine.hp_steam_extractor.tooltip":"§7提取你的第一塊橡膠", - "gtceu.machine.hp_steam_forge_hammer.tooltip":"§7鍛造錘", - "gtceu.machine.hp_steam_furnace.tooltip":"§7利用蒸汽冶煉物品", - "gtceu.machine.hp_steam_liquid_boiler.tooltip":"§7比小型液體燃料鍋爐更快", - "gtceu.machine.hp_steam_macerator.tooltip":"§7粉碎你的礦", - "gtceu.machine.hp_steam_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.hp_steam_solar_boiler.tooltip":"§7來自太陽的蒸汽能源", - "gtceu.machine.hp_steam_solid_boiler.tooltip":"§7比小型固體燃料鍋爐更快", - "gtceu.machine.hpca.active_cooler_component.tooltip":"不再免費,但效果更好", - "gtceu.machine.hpca.advanced_computation_component.damaged.name":"損壞的HPCA高階計算元件", - "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip":"只花了一隻胳膊和一條腿", - "gtceu.machine.hpca.advanced_computation_component.tooltip":"計算大聯盟", - "gtceu.machine.hpca.bridge_component.tooltip":"這就是高效能運算陣列中“陣列”一詞的來源", - "gtceu.machine.hpca.component_general.max_eut":"§6最大能量:§f%d EU/t", - "gtceu.machine.hpca.component_general.upkeep_eut":"§e維持耗能:§f%d EU/t", - "gtceu.machine.hpca.component_type.bridge":"允許§fHPCA§7與§f網路交換機§7連線", - "gtceu.machine.hpca.component_type.computation_cooling":"§c最多需要:§f%d 冷卻", - "gtceu.machine.hpca.component_type.computation_cwut":"§9算力:§f%d CWU/t", - "gtceu.machine.hpca.component_type.cooler_active":"§b冷卻型別:§f主動", - "gtceu.machine.hpca.component_type.cooler_active_coolant":"§c最多需要:§f%d mB/t %s", - "gtceu.machine.hpca.component_type.cooler_cooling":"§a提供:§f%d 冷卻", - "gtceu.machine.hpca.component_type.cooler_passive":"§b冷卻型別:§f被動", - "gtceu.machine.hpca.component_type.damaged":"HPCA過熱可能會損壞!", - "gtceu.machine.hpca.computation_component.damaged.name":"損壞的HPCA計算元件", - "gtceu.machine.hpca.computation_component.damaged.tooltip":"免費的可回收材料", - "gtceu.machine.hpca.computation_component.tooltip":"寶寶的第一次計算", - "gtceu.machine.hpca.empty_component.tooltip":"只是為了填充空間", - "gtceu.machine.hpca.heat_sink_component.tooltip":"免費冷卻!有免費的嗎?", - "gtceu.machine.hull.tooltip":"§7你需要§5絕§d對§4天§c馬§e行§a空§b的§3想§9象§1能§5力§7來使用它", - "gtceu.machine.hv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.hv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.hv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.hv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.hv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.hv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.hv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.hv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.hv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.hv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.hv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.hv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.hv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.hv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.hv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.hv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.hv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.hv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.hv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.hv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.hv_fluid_drilling_rig.tooltip":"並不能用來液壓破碎", - "gtceu.machine.hv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.hv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.hv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.hv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.hv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.hv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.hv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.hv_macerator.tooltip":"§7粉碎礦並獲得副產物", - "gtceu.machine.hv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.hv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.hv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.hv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.hv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.hv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.hv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.hv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.hv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.hv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.hv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.implosion_compressor.tooltip":"唯一一臺你想要爆一爆的機器", - "gtceu.machine.item_bus.export.tooltip":"為多方塊結構輸出物品", - "gtceu.machine.item_bus.import.tooltip":"為多方塊結構輸入物品", - "gtceu.machine.item_collector.gui.collect_range":"作用區域:%sx%s格", - "gtceu.machine.item_collector.tooltip":"吸取它周圍的掉落物", - "gtceu.machine.iv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.iv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.iv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.iv_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.iv_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.iv_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.iv_canner.tooltip":"§7罐作機", - "gtceu.machine.iv_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.iv_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.iv_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.iv_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.iv_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.iv_cutter.tooltip":"§7物質切削器", - "gtceu.machine.iv_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.iv_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.iv_electrolyzer.tooltip":"§7分子崩解機 E-4906", - "gtceu.machine.iv_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.iv_extractor.tooltip":"§7真空提取機", - "gtceu.machine.iv_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.iv_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.iv_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.iv_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.iv_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.iv_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.iv_gas_collector.tooltip":"§7依照維度從大氣層中收集種類各異的氣體", - "gtceu.machine.iv_laser_engraver.tooltip":"§7功率高達兩百零四萬瓦", - "gtceu.machine.iv_lathe.tooltip":"§7全自動旋轉車削機 L-5906", - "gtceu.machine.iv_macerator.tooltip":"§7全自動破壁機 9001", - "gtceu.machine.iv_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.iv_mixer.tooltip":"§7物質組織器", - "gtceu.machine.iv_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-360", - "gtceu.machine.iv_packer.tooltip":"§7裝箱者", - "gtceu.machine.iv_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.iv_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.iv_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-8200", - "gtceu.machine.iv_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.iv_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.iv_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6350", - "gtceu.machine.iv_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.machine.large_boiler.bronze.tooltip":"再多來點蒸汽!", - "gtceu.machine.large_boiler.steel.tooltip":"木炭吞噬者", - "gtceu.machine.large_boiler.titanium.tooltip":"我超級魔法燃料呢?", - "gtceu.machine.large_boiler.tungstensteel.tooltip":"你手上有幾座煤礦也不夠它吃的吧?", - "gtceu.machine.large_chemical_reactor.tooltip":"黑盒反應器", - "gtceu.machine.large_combustion_engine.tooltip":"燃料點火室", - "gtceu.machine.large_combustion_engine.tooltip.boost_extreme":"提供§f80 mB/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", - "gtceu.machine.large_combustion_engine.tooltip.boost_regular":"提供§f20 mB/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", - "gtceu.machine.large_miner.ev.tooltip":"替你挖礦", - "gtceu.machine.large_miner.iv.tooltip":"挖掉整個生態域", - "gtceu.machine.large_miner.luv.tooltip":"掀翻整片大陸", - "gtceu.machine.large_turbine.gas.tooltip":"並不是噴射發動機", - "gtceu.machine.large_turbine.plasma.tooltip":"電漿能量虹吸器", - "gtceu.machine.large_turbine.steam.tooltip":"別把頭伸進去", - "gtceu.machine.laser_hatch.both.tooltip":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.laser_hatch.source.tooltip":"§7遠距離發射能量", - "gtceu.machine.laser_hatch.target.tooltip":"§7遠距離接收能量", - "gtceu.machine.laser_source_hatch.tooltip.0":"遠距離發射能量", - "gtceu.machine.laser_source_hatch.tooltip.1":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.laser_target_hatch.tooltip.0":"遠距離接收能量", - "gtceu.machine.laser_target_hatch.tooltip.1":"§c雷射傳導線纜必須直線擺放!§7", - "gtceu.machine.locked_safe.malfunctioning":"§c故障中!", - "gtceu.machine.locked_safe.requirements":"§7需要更換以下部件:", - "gtceu.machine.lp_steam_alloy_smelter.tooltip":"§7融合冶煉爐", - "gtceu.machine.lp_steam_compressor.tooltip":"§7壓縮物品", - "gtceu.machine.lp_steam_extractor.tooltip":"§7提取你的第一塊橡膠", - "gtceu.machine.lp_steam_forge_hammer.tooltip":"§7鍛造錘", - "gtceu.machine.lp_steam_furnace.tooltip":"§7利用蒸汽冶煉物品", - "gtceu.machine.lp_steam_liquid_boiler.tooltip":"§7消耗液體的鍋爐", - "gtceu.machine.lp_steam_macerator.tooltip":"§7粉碎你的礦", - "gtceu.machine.lp_steam_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.lp_steam_solar_boiler.tooltip":"§7來自太陽的蒸汽能源", - "gtceu.machine.lp_steam_solid_boiler.tooltip":"§7獲取蒸汽能源的早期手段", - "gtceu.machine.luv_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.luv_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.luv_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.luv_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.luv_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.luv_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.luv_canner.tooltip":"§7罐作機", - "gtceu.machine.luv_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.luv_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.luv_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.luv_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.luv_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.luv_cutter.tooltip":"§7物質切削器", - "gtceu.machine.luv_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.luv_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.luv_electrolyzer.tooltip":"§7分子崩解機 E-4907", - "gtceu.machine.luv_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.luv_extractor.tooltip":"§7真空提取機", - "gtceu.machine.luv_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.luv_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.luv_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.luv_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.luv_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.luv_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.luv_gas_collector.tooltip":"§7依照維度從大氣層中收集種類各異的氣體", - "gtceu.machine.luv_laser_engraver.tooltip":"§7功率高達八百一十六萬瓦", - "gtceu.machine.luv_lathe.tooltip":"§7全自動旋轉車削機 L-5907", - "gtceu.machine.luv_macerator.tooltip":"§7全自動破壁機 9002", - "gtceu.machine.luv_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.luv_mixer.tooltip":"§7物質組織器", - "gtceu.machine.luv_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-361", - "gtceu.machine.luv_packer.tooltip":"§7裝箱者", - "gtceu.machine.luv_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.luv_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.luv_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-9200", - "gtceu.machine.luv_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.luv_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.luv_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6351", - "gtceu.machine.luv_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.machine.lv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.lv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.lv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.lv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.lv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.lv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.lv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.lv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.lv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.lv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.lv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.lv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.lv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.lv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.lv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.lv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.lv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.lv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.lv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.lv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.lv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.lv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.lv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.lv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.lv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.lv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.lv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.lv_macerator.tooltip":"§7粉碎礦", - "gtceu.machine.lv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.lv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.lv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.lv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.lv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.lv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.lv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.lv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.lv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.lv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.lv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.machine_hatch.locked":"機器介面已鎖定", - "gtceu.machine.machine_hatch.processing_array":"當在§e處理陣列§7中時,僅可搭載適用於§e處理陣列§7的機器", - "gtceu.machine.machine_hatch.tooltip":"僅可容納有效物品的特型訪問匯流排", - "gtceu.machine.maintenance_hatch.tooltip":"用於給多方塊結構提供維護", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0":"可以自動維修多方塊結構,附帶清潔功能!", - "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1":"清潔方式:", - "gtceu.machine.maintenance_hatch_configurable.tooltip.0":"更精細的維修多方塊結構", - "gtceu.machine.maintenance_hatch_configurable.tooltip.1":"起手無需維護!", - "gtceu.machine.maintenance_hatch_full_auto.tooltip":"可以自動維修多方塊結構", - "gtceu.machine.maintenance_hatch_tape_slot.tooltip":"放入膠帶以防止出現故障", - "gtceu.machine.maintenance_hatch_tool_slot.tooltip":"所需工具處於物品欄時空手點選該槽位來進行維修", - "gtceu.machine.me.copy_paste.tooltip":"手持快閃記憶體,左擊複製設定,右擊貼上設定", - "gtceu.machine.me.export.tooltip":"在連線到ME網路之前,它具有無限容量。", - "gtceu.machine.me.fluid_export.tooltip":"將流體直接儲存到ME網路中。", - "gtceu.machine.me.fluid_import.data_stick.name":"§oME輸入倉設定資料", - "gtceu.machine.me.fluid_import.tooltip":"自動從ME網路獲取流體。", - "gtceu.machine.me.import_copy_settings":"已將設定儲存到快閃記憶體", - "gtceu.machine.me.import_paste_settings":"已從快閃記憶體應用設定", - "gtceu.machine.me.item_export.tooltip":"將物品直接儲存到ME網路中。", - "gtceu.machine.me.item_import.data_stick.name":"§oME輸入匯流排設定資料", - "gtceu.machine.me.item_import.tooltip":"自動從ME網路獲取物品。", - "gtceu.machine.me.stocking_auto_pull_disabled":"ME自動拉取已停用", - "gtceu.machine.me.stocking_auto_pull_enabled":"ME自動拉取已啟用", - "gtceu.machine.me.stocking_fluid.tooltip.0":"直接從ME網路抽取流體", - "gtceu.machine.me.stocking_fluid.tooltip.1":"ME自動拉取模式將自動標記ME網路中的前16種流體,每5秒更新一次。", - "gtceu.machine.me.stocking_item.tooltip.0":"直接從ME網路抽取物品", - "gtceu.machine.me.stocking_item.tooltip.1":"ME自動拉取模式將自動標記ME網路中的前16種物品,每5秒更新一次。", - "gtceu.machine.me_import_fluid_hatch.configs.tooltip":"可標記16種流體", - "gtceu.machine.me_import_item_hatch.configs.tooltip":"可標記16種物品", - "gtceu.machine.miner.chunkradius":"區塊半徑:%d", - "gtceu.machine.miner.fluid_usage":"消耗§f%d mB/t§7的§f%s§7,每次超頻都會使消耗量加倍。", - "gtceu.machine.miner.minex":"mX:%d", - "gtceu.machine.miner.miney":"mY:%d", - "gtceu.machine.miner.minez":"mZ:%d", - "gtceu.machine.miner.multi.description":"一種佔地面積大、產礦量大的多方塊採礦機。", - "gtceu.machine.miner.multi.modes":"具有絲綢之觸和區塊對齊模式。", - "gtceu.machine.miner.multi.production":"產出§f研磨機§7§f3x§7倍的粉碎礦。", - "gtceu.machine.miner.per_block":"§7每個方塊需要§f%d§7秒。", - "gtceu.machine.miner.radius":"半徑:%d", - "gtceu.machine.miner.startx":"sX:%d", - "gtceu.machine.miner.starty":"sY:%d", - "gtceu.machine.miner.startz":"sZ:%d", - "gtceu.machine.miner.tooltip":"§7只採掘機器下方的礦!工作範圍預設為§f%sx%s§7。", - "gtceu.machine.muffle.off":"靜音:已禁用", - "gtceu.machine.muffle.on":"靜音:已啟用", - "gtceu.machine.muffler_hatch.tooltip.0":"從機器中回收廢料", - "gtceu.machine.muffler_hatch.tooltip.1":"§l切 勿 阻 隔 輸 出 口!", - "gtceu.machine.multi_furnace.tooltip":"就像家裡的烤箱一樣", - "gtceu.machine.multiblock.tank.tooltip":"透過控制器或儲罐閥門進行吞吐。", - "gtceu.machine.mv_alloy_smelter.tooltip":"§7高科技融合冶煉爐", - "gtceu.machine.mv_arc_furnace.tooltip":"§7誰需要高爐?", - "gtceu.machine.mv_assembler.tooltip":"§7復仇者,集結!", - "gtceu.machine.mv_autoclave.tooltip":"§7使粉末結晶", - "gtceu.machine.mv_bender.tooltip":"§7吁,他不行!我們要的是BENDER!!!", - "gtceu.machine.mv_brewery.tooltip":"§7緊湊高效的藥劑釀造", - "gtceu.machine.mv_canner.tooltip":"§7為容器填入或從中倒出物品及流體", - "gtceu.machine.mv_centrifuge.tooltip":"§7分離分子", - "gtceu.machine.mv_chemical_bath.tooltip":"§7用化學品浸漬以分離礦物", - "gtceu.machine.mv_chemical_reactor.tooltip":"§7讓化學品相互反應", - "gtceu.machine.mv_circuit_assembler.tooltip":"§7一拿一放,東揀西裝", - "gtceu.machine.mv_compressor.tooltip":"§7全自動壓縮機 C77", - "gtceu.machine.mv_cutter.tooltip":"§7切片,切塊", - "gtceu.machine.mv_distillery.tooltip":"§7提取流體精華", - "gtceu.machine.mv_electric_furnace.tooltip":"§7別把它當成 Commodore 64 了", - "gtceu.machine.mv_electrolyzer.tooltip":"§7電離分子", - "gtceu.machine.mv_electromagnetic_separator.tooltip":"§7分離出磁性礦物", - "gtceu.machine.mv_extractor.tooltip":"§7毀滅級榨汁機 - D123", - "gtceu.machine.mv_extruder.tooltip":"§7通用型金屬加工器", - "gtceu.machine.mv_fermenter.tooltip":"§7發酵流體", - "gtceu.machine.mv_fluid_drilling_rig.tooltip":"我猜你做這個是為了採油", - "gtceu.machine.mv_fluid_heater.tooltip":"§7加熱你的流體", - "gtceu.machine.mv_fluid_solidifier.tooltip":"§7冷卻液體形成固體", - "gtceu.machine.mv_forge_hammer.tooltip":"§7停,掄錘時間到!", - "gtceu.machine.mv_forming_press.tooltip":"§7影象拓印者", - "gtceu.machine.mv_gas_collector.tooltip":"§7依照維度從空氣中收集種類各異的氣體", - "gtceu.machine.mv_laser_engraver.tooltip":"§7請勿直視雷射", - "gtceu.machine.mv_lathe.tooltip":"§7以更高的效率生產桿", - "gtceu.machine.mv_macerator.tooltip":"§7粉碎礦", - "gtceu.machine.mv_mass_fabricator.tooltip":"§7UU物質 = “質量” * “發生”的平方", - "gtceu.machine.mv_mixer.tooltip":"§7它能被攪碎嗎?", - "gtceu.machine.mv_ore_washer.tooltip":"§7清洗礦以獲得更多副產物", - "gtceu.machine.mv_packer.tooltip":"§7取出盒外,放入盒中", - "gtceu.machine.mv_polarizer.tooltip":"§7將你的磁體極化", - "gtceu.machine.mv_replicator.tooltip":"§7生產最純淨的元素", - "gtceu.machine.mv_rock_crusher.tooltip":"§7在水平相鄰處放置熔岩和水", - "gtceu.machine.mv_scanner.tooltip":"§7掃描材料及其它物質", - "gtceu.machine.mv_sifter.tooltip":"§7保持冷靜,繼續篩選", - "gtceu.machine.mv_thermal_centrifuge.tooltip":"§7更精確地分離礦", - "gtceu.machine.mv_wiremill.tooltip":"§7更高效地生產導線", - "gtceu.machine.network_switch.tooltip.0":"乙太網路集線器", - "gtceu.machine.network_switch.tooltip.1":"用於路由與分發§f算力§7。", - "gtceu.machine.network_switch.tooltip.2":"可以將任意數量的算力§f輸入§7整合為為任意數量的算力§f輸出§7。", - "gtceu.machine.network_switch.tooltip.3":"每個算力資料倉使用§f%s EU/t§7。", - "gtceu.machine.object_holder.tooltip":"研究站的先進支撐機構", - "gtceu.machine.opv_gas_collector.tooltip":"§7依照維度從宇宙中收集種類各異的氣體", - "gtceu.machine.opv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.parallel_hatch.display":"調整多方塊的最多平行處理數。", - "gtceu.machine.parallel_hatch_mk5.tooltip":"允許同時處理至多4個配方。", - "gtceu.machine.parallel_hatch_mk6.tooltip":"允許同時處理至多16個配方。", - "gtceu.machine.parallel_hatch_mk7.tooltip":"允許同時處理至多64個配方。", - "gtceu.machine.parallel_hatch_mk8.tooltip":"允許同時處理至多256個配方。", - "gtceu.machine.parallel_limit":"可同時處理至多§b%d§r§7個配方。", - "gtceu.machine.passthrough_hatch_fluid.tooltip":"將流體從一側輸送到另一側", - "gtceu.machine.passthrough_hatch_item.tooltip":"將物品從一側傳送到另一側", - "gtceu.machine.perfect_oc":"超頻不會損失能效。", - "gtceu.machine.power_substation.tooltip.0":"集中電網的核心", - "gtceu.machine.power_substation.tooltip.1":"所有§f電容§r不需要保持同一電壓等級。", - "gtceu.machine.power_substation.tooltip.2":"最多容許§f%d層電容§r。", - "gtceu.machine.power_substation.tooltip.3":"每§f24小時§7損失相當於總容量的§f1%%§r的能量。", - "gtceu.machine.power_substation.tooltip.4":"每個電容的損失上限為§f%d kEU/t§r。", - "gtceu.machine.power_substation.tooltip.5":"可以使用", - "gtceu.machine.power_substation.tooltip.6":"雷射倉§r。", - "gtceu.machine.primitive_blast_furnace.bronze.tooltip":"為你帶來第一塊鋼", - "gtceu.machine.primitive_water_pump.tooltip":"終界介面蓄水庫-家用款", - "gtceu.machine.processing_array.tooltip":"當幾臺機器無法解決問題時", - "gtceu.machine.pump.tooltip":"§7抽乾大海的最佳手段!", - "gtceu.machine.pump.tooltip_buckets":"每桶§f%d§7tick", - "gtceu.machine.pump_hatch.tooltip":"原始水泵專用流體輸出口", - "gtceu.machine.pyrolyse_oven.tooltip":"電力焦爐", - "gtceu.machine.pyrolyse_oven.tooltip.1":"§a白銅§7線圈會使效率降低§f25%%§7,§a坎塔爾合金§7後的每個線圈都會增加§f50%%§7的速度。", - "gtceu.machine.quantum_chest.items_stored":"物品數量:", - "gtceu.machine.quantum_chest.tooltip":"§7比儲物抽屜好", - "gtceu.machine.quantum_tank.tooltip":"§7小小身體,大大肚量", - "gtceu.machine.research_station.researching":"研究中。", - "gtceu.machine.research_station.tooltip.0":"不僅僅是一個多方塊掃描器", - "gtceu.machine.research_station.tooltip.1":"用於掃描§f資料球§7和§f資料模組§7。", - "gtceu.machine.research_station.tooltip.2":"需要§f算力§7來進行工作。", - "gtceu.machine.research_station.tooltip.3":"提供更多的算力可以使研究進展的更快。", - "gtceu.machine.rotor_holder.tooltip.0":"為多方塊結構的轉子", - "gtceu.machine.rotor_holder.tooltip.1":"提供支撐,固定轉子使其不能飛走", - "gtceu.machine.steam.steam_hatch.tooltip":"§e接受流體:§f蒸汽", - "gtceu.machine.steam_boiler.heat_amount":"熱容:%s %%", - "gtceu.machine.steam_bus.tooltip":"無法作用於非蒸汽驅動的多方塊結構", - "gtceu.machine.steam_grinder.tooltip":"多方塊研磨機,但是沒有副產物", - "gtceu.machine.steam_miner.tooltip":"§7只採掘機器下方的礦!", - "gtceu.machine.steam_oven.tooltip":"不要與工業熔爐混淆", - "gtceu.machine.steam_turbine.tooltip":"§7將蒸汽轉化為 EU", - "gtceu.machine.substation_hatch.input.tooltip":"為蓄能變電站輸入能量", - "gtceu.machine.substation_hatch.output.tooltip":"為蓄能變電站輸出能量", - "gtceu.machine.tank_valve.tooltip":"用以吞吐多方塊儲罐中的流體。正面向下時可自動輸出。", - "gtceu.machine.transformer.description":"§7轉換能量的電壓等級", - "gtceu.machine.transformer.message_transform_down":"降壓 輸出:%d EU %dA 輸出:%d EU %dA", - "gtceu.machine.transformer.message_transform_up":"升壓 輸入:%d EU %dA 輸出:% dEU %dA", - "gtceu.machine.transformer.tooltip_tool_usage":"預設§f降壓§r,使用螺絲起子切換。", - "gtceu.machine.transformer.tooltip_transform_down":"§a降壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", - "gtceu.machine.transformer.tooltip_transform_up":"§c升壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", - "gtceu.machine.uev_gas_collector.tooltip":"§7依照維度從太陽系中收集種類各異的氣體", - "gtceu.machine.uev_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uhv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uhv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uiv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uiv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_alloy_smelter.tooltip":"§7金屬混合調製裝置", - "gtceu.machine.uv_arc_furnace.tooltip":"§7短路加熱器", - "gtceu.machine.uv_assembler.tooltip":"§7裝配構建者", - "gtceu.machine.uv_autoclave.tooltip":"§7重壓單元", - "gtceu.machine.uv_bender.tooltip":"§7物質畸變者", - "gtceu.machine.uv_brewery.tooltip":"§7強勁釀製者", - "gtceu.machine.uv_canner.tooltip":"§7罐子致動器", - "gtceu.machine.uv_centrifuge.tooltip":"§7分子龍捲風", - "gtceu.machine.uv_chemical_bath.tooltip":"§7化學沉浸洗滌者", - "gtceu.machine.uv_chemical_reactor.tooltip":"§7反應催化器", - "gtceu.machine.uv_circuit_assembler.tooltip":"§7電腦工廠", - "gtceu.machine.uv_compressor.tooltip":"§7物質約束器", - "gtceu.machine.uv_cutter.tooltip":"§7物件分割者", - "gtceu.machine.uv_distillery.tooltip":"§7餾分分離器", - "gtceu.machine.uv_electric_furnace.tooltip":"§7原子激發器", - "gtceu.machine.uv_electrolyzer.tooltip":"§7原子離子化裝置", - "gtceu.machine.uv_electromagnetic_separator.tooltip":"§7電磁場驅離裝置", - "gtceu.machine.uv_extractor.tooltip":"§7液化吸取者", - "gtceu.machine.uv_extruder.tooltip":"§7形制驅動者", - "gtceu.machine.uv_fermenter.tooltip":"§7呼吸控制器", - "gtceu.machine.uv_fluid_heater.tooltip":"§7熱量灌輸器", - "gtceu.machine.uv_fluid_solidifier.tooltip":"§7流體硬化器", - "gtceu.machine.uv_forge_hammer.tooltip":"§7衝擊調製器", - "gtceu.machine.uv_forming_press.tooltip":"§7表面移相器", - "gtceu.machine.uv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uv_laser_engraver.tooltip":"§7高精度光子加農炮", - "gtceu.machine.uv_lathe.tooltip":"§7飛旋磨輪", - "gtceu.machine.uv_macerator.tooltip":"§7形態毀滅者", - "gtceu.machine.uv_mass_fabricator.tooltip":"§7存在之源", - "gtceu.machine.uv_mixer.tooltip":"§7材料均質機", - "gtceu.machine.uv_ore_washer.tooltip":"§7微型洗車房", - "gtceu.machine.uv_packer.tooltip":"§7亞馬遜倉庫", - "gtceu.machine.uv_polarizer.tooltip":"§7磁場重置裝置", - "gtceu.machine.uv_replicator.tooltip":"§7元素創制者", - "gtceu.machine.uv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.uv_scanner.tooltip":"§7電子顯微鏡", - "gtceu.machine.uv_sifter.tooltip":"§7脈衝過濾器", - "gtceu.machine.uv_thermal_centrifuge.tooltip":"§7騰焰旋風", - "gtceu.machine.uv_wiremill.tooltip":"§7導線易形者", - "gtceu.machine.uxv_gas_collector.tooltip":"§7根據維度從太陽系中收集氣體", - "gtceu.machine.uxv_rock_crusher.tooltip":"§7火山成型室", - "gtceu.machine.vacuum_freezer.tooltip":"啊哈我的大冰箱!", - "gtceu.machine.workbench.storage_note.0":"(相鄰的物品容器中", - "gtceu.machine.workbench.storage_note.1":"可參與合成的物品)", - "gtceu.machine.workbench.tab.container":"儲存", - "gtceu.machine.workbench.tab.crafting":"合成", - "gtceu.machine.workbench.tab.item_list":"儲存空間", - "gtceu.machine.workbench.tab.workbench":"合成", - "gtceu.machine.workbench.tooltip.0":"比林業的好", - "gtceu.machine.workbench.tooltip.1":"具有物品儲存、工具儲存、從相鄰的儲存容器中讀取物品和儲存配方功能。", - "gtceu.machine.world_accelerator.description":"以兩種模式之一加速周圍方塊的更新刻:§f方塊實體§r或§f隨機刻§7。使用螺絲起子切換模式。", - "gtceu.machine.world_accelerator.mode_entity":"隨機刻模式", - "gtceu.machine.world_accelerator.mode_tile":"方塊實體模式", - "gtceu.machine.world_accelerator.working_area":"§b作用範圍:", - "gtceu.machine.world_accelerator.working_area_random":" 隨機刻模式:§f%dx%d", - "gtceu.machine.world_accelerator.working_area_tile":" 方塊實體模式:§f相鄰方塊", - "gtceu.machine.zpm_alloy_smelter.tooltip":"§7合金集聚器", - "gtceu.machine.zpm_arc_furnace.tooltip":"§7放電加熱器", - "gtceu.machine.zpm_assembler.tooltip":"§l不是§7工作台", - "gtceu.machine.zpm_autoclave.tooltip":"§7高壓鍋", - "gtceu.machine.zpm_bender.tooltip":"§7形態扭曲器", - "gtceu.machine.zpm_brewery.tooltip":"§7釀酒好手", - "gtceu.machine.zpm_canner.tooltip":"§7罐作機", - "gtceu.machine.zpm_centrifuge.tooltip":"§7分子旋風", - "gtceu.machine.zpm_chemical_bath.tooltip":"§7化學品浸潤器", - "gtceu.machine.zpm_chemical_reactor.tooltip":"§7化學表演藝術家", - "gtceu.machine.zpm_circuit_assembler.tooltip":"§7電子廠", - "gtceu.machine.zpm_compressor.tooltip":"§7奇點凝縮機", - "gtceu.machine.zpm_cutter.tooltip":"§7物質切削器", - "gtceu.machine.zpm_distillery.tooltip":"§7凝結物質分離器", - "gtceu.machine.zpm_electric_furnace.tooltip":"§7電子激發處理器", - "gtceu.machine.zpm_electrolyzer.tooltip":"§7分子崩解機 E-4908", - "gtceu.machine.zpm_electromagnetic_separator.tooltip":"§7電磁分類器", - "gtceu.machine.zpm_extractor.tooltip":"§7真空提取機", - "gtceu.machine.zpm_extruder.tooltip":"§7材料壓出器", - "gtceu.machine.zpm_fermenter.tooltip":"§7發酵加速器", - "gtceu.machine.zpm_fluid_heater.tooltip":"§7熱量灌注器", - "gtceu.machine.zpm_fluid_solidifier.tooltip":"§7並不是製冰機", - "gtceu.machine.zpm_forge_hammer.tooltip":"§7鍛板機", - "gtceu.machine.zpm_forming_press.tooltip":"§7物件層化機", - "gtceu.machine.zpm_gas_collector.tooltip":"§7收集不同維度的大氣中種類各異的氣體", - "gtceu.machine.zpm_laser_engraver.tooltip":"§7功率高達三千兩百六十四萬瓦", - "gtceu.machine.zpm_lathe.tooltip":"§7全自動旋轉車削機 L-5908", - "gtceu.machine.zpm_macerator.tooltip":"§7全自動破壁機 9003", - "gtceu.machine.zpm_mass_fabricator.tooltip":"§7創世紀工廠", - "gtceu.machine.zpm_mixer.tooltip":"§7物質組織器", - "gtceu.machine.zpm_ore_washer.tooltip":"§7全新用途滾筒洗衣機 I-362", - "gtceu.machine.zpm_packer.tooltip":"§7裝箱者", - "gtceu.machine.zpm_polarizer.tooltip":"§7磁性引入機", - "gtceu.machine.zpm_replicator.tooltip":"§7物質黏貼機", - "gtceu.machine.zpm_rock_crusher.tooltip":"§7岩漿冷卻固化器 R-10200", - "gtceu.machine.zpm_scanner.tooltip":"§7異常探測儀", - "gtceu.machine.zpm_sifter.tooltip":"§7由群巒傳說贊助提供", - "gtceu.machine.zpm_thermal_centrifuge.tooltip":"§7烈焰血汗工廠 T-6352", - "gtceu.machine.zpm_wiremill.tooltip":"§7錠材拉伸機", - "gtceu.maintenance.configurable_duration":"處理耗時:%fx", - "gtceu.maintenance.configurable_duration.changed_description":"配方處理速度現為正常速度(不計超頻)的%f倍。", - "gtceu.maintenance.configurable_duration.modify":"修改耗時:", - "gtceu.maintenance.configurable_duration.unchanged_description":"配方以正常速度執行。更改設定以更新。", - "gtceu.maintenance.configurable_time":"故障機率:%fx", - "gtceu.maintenance.configurable_time.changed_description":"故障的發生機率現為正常值的%f倍。", - "gtceu.maintenance.configurable_time.unchanged_description":"故障的發生機率為正常值。更改設定以更新。", - "gtceu.medical_condition.antidote.description":"§a解毒劑 §7按住Shift以顯示詳情", - "gtceu.medical_condition.antidote.description.effect_removed":"疾病效果持續時間降低%s%%", - "gtceu.medical_condition.antidote.description.effect_removed.all":"消除所有疾病效果", - "gtceu.medical_condition.antidote.description_shift":"§a治癒以下疾病:", - "gtceu.medical_condition.arsenicosis":"§b砷中毒", - "gtceu.medical_condition.asbestosis":"§d石棉肺", - "gtceu.medical_condition.berylliosis":"§5鈹中毒", - "gtceu.medical_condition.carbon_monoxide_poisoning":"§7一氧化碳汙染", - "gtceu.medical_condition.carcinogen":"§e致癌", - "gtceu.medical_condition.chemical_burns":"§5化學燒傷", - "gtceu.medical_condition.description":"§c§l危險物質 §7按住Shift以顯示詳情", - "gtceu.medical_condition.description_shift":"§c§l危險物質:", - "gtceu.medical_condition.irritant":"§6刺激性", - "gtceu.medical_condition.methanol_poisoning":"§6甲醇中毒", - "gtceu.medical_condition.nausea":"§3噁心", - "gtceu.medical_condition.none":"§2無害", - "gtceu.medical_condition.poison":"§2中毒", - "gtceu.medical_condition.silicosis":"§1矽肺病", - "gtceu.medical_condition.weak_poison":"§a輕度中毒", - "gtceu.minimap.ore_vein.depleted":"已枯竭", - "gtceu.mixer":"攪拌機", - "gtceu.mode.both":"§d全部(流體和物品)§r", - "gtceu.mode.fluid":"§9流體§r", - "gtceu.mode.item":"§6物品§r", - "gtceu.muffler.recovery_tooltip":"§b回收機率:§f%d%%", - "gtceu.multiblock.active_transformer.average_in":"§b平均輸入:§f%s EU/t", - "gtceu.multiblock.active_transformer.average_out":"§b平均輸出:§f%s EU/t", - "gtceu.multiblock.active_transformer.danger_enabled":"§c§b危險:易爆", - "gtceu.multiblock.active_transformer.max_input":"§a最大輸入:§f%s EU/t", - "gtceu.multiblock.active_transformer.max_output":"§c最大輸出:§f%s EU/t", - "gtceu.multiblock.assembly_line.description":"裝配線是由5到16“片”組成的大型多方塊結構。理論上,它是一個大型組裝機,用於生產高階元件。", - "gtceu.multiblock.blast_furnace.max_temperature":"熱容:%s", - "gtceu.multiblock.central_monitor.height":"螢幕高度:%d", - "gtceu.multiblock.central_monitor.height_modify":"調整高度:%d", - "gtceu.multiblock.central_monitor.low_power":"供能不足", - "gtceu.multiblock.central_monitor.tooltip.0":"這臺機器可以監控由數位介面覆蓋板代理的機器。您可以方便地監視能源網路中代理的機器的流體、物品、能量和狀態。", - "gtceu.multiblock.central_monitor.tooltip.1":"監控器螢幕的搭建尺寸為3x2到%dx%d (寬x高)。", - "gtceu.multiblock.central_monitor.tooltip.2":"預設高度為3,在結構形成之前,您可以在GUI中調整螢幕高度。", - "gtceu.multiblock.central_monitor.tooltip.3":"能源消耗:每塊螢幕%d EU/s。", - "gtceu.multiblock.central_monitor.width":"螢幕寬度:%d", - "gtceu.multiblock.charcoal_pile.description.0":"將下方最大9x4x9區域內的原木燒製成脆木炭塊。", - "gtceu.multiblock.charcoal_pile.description.1":"", - "gtceu.multiblock.charcoal_pile.description.2":"木炭堆底部必須由磚塊構成,壁面和頂面則可選用泥土、沙子等任何土地類方塊。堆內必須填滿,不可存在空氣。", - "gtceu.multiblock.charcoal_pile.description.3":"", - "gtceu.multiblock.charcoal_pile.description.4":"木炭堆的尺寸越大,所需的處理時間就越長,但效率更高。", - "gtceu.multiblock.cleanroom.clean_amount":"潔淨度:§a%s%%", - "gtceu.multiblock.cleanroom.clean_state":"狀態:§a潔淨", - "gtceu.multiblock.cleanroom.dirty_state":"狀態:§4汙染", - "gtceu.multiblock.coke_oven.description":"焦爐是一種多方塊結構,用於在早期生產焦煤和雜酚油,無需燃料即可工作,內部至多可容納 32 桶雜酚油。其儲存可透過焦爐倉進行訪問。", - "gtceu.multiblock.computation.max":"最大算力:%s", - "gtceu.multiblock.computation.non_bridging":"發現非橋接連線", - "gtceu.multiblock.computation.non_bridging.detailed":"算力資料倉與一臺無法橋接的機器連線", - "gtceu.multiblock.computation.not_enough_computation":"機器需要更多算力!", - "gtceu.multiblock.computation.usage":"使用:%s", - "gtceu.multiblock.cracker.description":"裂解機是一種用於將輕燃油和重燃油裂解為相應裂解物的多方塊結構。", - "gtceu.multiblock.cracking_unit.energy":"耗能:%s%%", - "gtceu.multiblock.data_bank.description":"資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更復雜的研究資料。", - "gtceu.multiblock.data_bank.providing":"提供資料。", - "gtceu.multiblock.distillation_tower.description":"蒸餾塔是一種用於蒸餾不同石油及其副產品的多方塊結構。", - "gtceu.multiblock.distillation_tower.distilling_fluid":"正在蒸餾%s", - "gtceu.multiblock.electric_blast_furnace.description":"電力高爐是一種用來熔鍊合金、熔化金屬或冶煉礦的多方塊結構。也可用於獲取高階的合金和金屬,例如鋁、不鏽鋼、鈦或矽岩合金。", - "gtceu.multiblock.energy_consumption":"能量消耗:%s EU/t(%s)", - "gtceu.multiblock.exact_hatch_1.tooltip":"§f只允許有且僅有§6一個§f能量輸入倉。", - "gtceu.multiblock.extreme_combustion_engine.description":"極限內燃引擎是一種產出§9IV§r能量的多方塊結構,工作方式與內燃發電機類似。", - "gtceu.multiblock.fluid_rig.drilled_fluid":"流體:%s", - "gtceu.multiblock.fluid_rig.fluid_amount":"抽取速率:%s", - "gtceu.multiblock.fluid_rig.no_fluid_in_area":"區域內沒有。", - "gtceu.multiblock.fluid_rig.vein_depleted":"礦脈已耗盡", - "gtceu.multiblock.fluid_rig.vein_depletion":"礦脈大小:%s", - "gtceu.multiblock.fusion_reactor.energy":"EU:%d / %d", - "gtceu.multiblock.fusion_reactor.heat":"熱量:%d", - "gtceu.multiblock.generation_eu":"輸出功率:§a%s EU/t", - "gtceu.multiblock.hpca.computation":"提供:%s", - "gtceu.multiblock.hpca.description":"高效能運算陣列(HPCA)是個多方塊結構,用於為更復雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", - "gtceu.multiblock.hpca.energy":"使用:%s / %s EU/t (%s)", - "gtceu.multiblock.hpca.error_damaged":"計算元件損壞!", - "gtceu.multiblock.hpca.error_temperature":"溫度超過100℃,可能導致計算元件損壞!", - "gtceu.multiblock.hpca.hover_for_info":"懸停以顯示細節", - "gtceu.multiblock.hpca.info_bridging_disabled":"橋接已關閉", - "gtceu.multiblock.hpca.info_bridging_enabled":"橋接已啟動", - "gtceu.multiblock.hpca.info_coolant_name":"多氯聯苯冷卻液", - "gtceu.multiblock.hpca.info_max_computation":"最大算力:%s", - "gtceu.multiblock.hpca.info_max_coolant_required":"冷卻液還需:%s", - "gtceu.multiblock.hpca.info_max_cooling_available":"冷卻液可用:%s", - "gtceu.multiblock.hpca.info_max_cooling_demand":"冷卻液需求:%s", - "gtceu.multiblock.hpca.temperature":"溫度:%s", - "gtceu.multiblock.hpca.warning_low_cooling":"- 冷卻不足", - "gtceu.multiblock.hpca.warning_multiple_bridges":"- 多個橋接元件(沒有額外好處)", - "gtceu.multiblock.hpca.warning_no_computation":"- 沒有計算元件", - "gtceu.multiblock.hpca.warning_structure_header":"結構警告:", - "gtceu.multiblock.hpca.warning_temperature":"溫度超過50℃,超過100℃時可能導致計算元件損壞!", - "gtceu.multiblock.hpca.warning_temperature_active_cool":"充分利用主動冷卻元件", - "gtceu.multiblock.idling":"待機。", - "gtceu.multiblock.implosion_compressor.description":"聚爆壓縮機是一種多方塊結構,能夠藉助炸藥將寶石粉轉化為相應的寶石。", - "gtceu.multiblock.invalid_structure":"結構無效。", - "gtceu.multiblock.invalid_structure.tooltip":"該方塊是多方塊結構的控制器,請檢視該方塊的JEI介面以獲取搭建圖示。", - "gtceu.multiblock.large_boiler.description":"大型鍋爐是一種使用水和能量源產生蒸汽的多方塊結構。這裡說的“能量源”通常是指固體燃料和高密度流體。不同等級的鍋爐僅在蒸汽產量上有所差別。", - "gtceu.multiblock.large_boiler.efficiency":"效率:%s", - "gtceu.multiblock.large_boiler.explosion_tooltip":"無水時提供燃料將爆炸", - "gtceu.multiblock.large_boiler.heat_time_tooltip":"§7需要§f%d秒§7預熱", - "gtceu.multiblock.large_boiler.max_temperature":"最高溫度:%dK,蒸汽產量:%dmB/t", - "gtceu.multiblock.large_boiler.rate_tooltip":"§7每塊§1煤炭§7可以生產§f%dmB§7的蒸汽", - "gtceu.multiblock.large_boiler.steam_output":"蒸汽輸出:%s mB/t", - "gtceu.multiblock.large_boiler.temperature":"溫度::%sK / %sK", - "gtceu.multiblock.large_boiler.throttle":"節流:%d", - "gtceu.multiblock.large_boiler.throttle.tooltip":"鍋爐可以節流,以減少燃料消耗與蒸汽產出,並且不損失效率,不影響加熱時間。", - "gtceu.multiblock.large_boiler.throttle_modify":"修改節流:", - "gtceu.multiblock.large_chemical_reactor.description":"大型化學反應器能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", - "gtceu.multiblock.large_combustion_engine.boost_disallowed":"§b升級你的能量輸出倉以啟用氧氣促燃", - "gtceu.multiblock.large_combustion_engine.description":"大型內燃引擎是一種產出§5EV§r能量的多方塊結構,工作方式與內燃發電機類似。", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount":"液氧存量:%smB", - "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted":"§b液氧促燃中", - "gtceu.multiblock.large_combustion_engine.lubricant_amount":"潤滑油存量:%smB", - "gtceu.multiblock.large_combustion_engine.obstructed":"引擎進氣口受阻。", - "gtceu.multiblock.large_combustion_engine.oxygen_amount":"氧氣存量:%smB", - "gtceu.multiblock.large_combustion_engine.oxygen_boosted":"§b氧氣促燃中", - "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost":"提供液氧來促燃", - "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost":"提供氧氣來促燃", - "gtceu.multiblock.large_miner.done":"完成!", - "gtceu.multiblock.large_miner.errorradius":"§c工作中不能調整半徑!", - "gtceu.multiblock.large_miner.invfull":"儲存空間已滿!", - "gtceu.multiblock.large_miner.needsfluid":"需要鑽井液", - "gtceu.multiblock.large_miner.needspower":"需要能量!", - "gtceu.multiblock.large_miner.radius":"半徑:§a%d§r格", - "gtceu.multiblock.large_miner.steam":"需要蒸汽!", - "gtceu.multiblock.large_miner.vent":"排氣口受阻!", - "gtceu.multiblock.large_miner.working":"工作中……", - "gtceu.multiblock.large_turbine.description":"大型渦輪是一種使用蒸汽、燃氣或電漿轉動渦輪轉子來發電的多方塊結構。轉子效率和轉子轉速影響能量的輸出。", - "gtceu.multiblock.luv_fusion_reactor.description":"核融合反應爐MK-I是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用LuV,ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加10MEU的能量暫存,最大能量暫存為160MEU。", - "gtceu.multiblock.max_energy_per_tick":"最大功率:§a%s EU/t(%s§r)", - "gtceu.multiblock.max_energy_per_tick_amps":"最大功率:%s(%sA %s)", - "gtceu.multiblock.max_energy_per_tick_hover":"可用於執行配方或超頻的最大EU/t", - "gtceu.multiblock.max_recipe_tier":"最大配方等級:%s", - "gtceu.multiblock.max_recipe_tier_hover":"可執行配方的最大等級", - "gtceu.multiblock.monitor_screen.tooltip.0":"用螺絲起子右擊即可開啟GUI。", - "gtceu.multiblock.monitor_screen.tooltip.1":"數位介面覆蓋板的代理模式可託管機器的功能與介面(是的,你可以在螢幕上直接連線管道)。", - "gtceu.multiblock.monitor_screen.tooltip.2":"該螢幕也支援外掛。", - "gtceu.multiblock.multi_furnace.description":"工業熔爐是一種用於一次性燒製大量物品的多方塊結構。不同級別的線圈會提供速度增幅和能量效率增幅。每次運作的基礎燒製數量為32,且可以使用高等級的線圈增加燒製數量。", - "gtceu.multiblock.multi_furnace.heating_coil_discount":"加熱線圈增幅:%sx", - "gtceu.multiblock.multi_furnace.heating_coil_level":"加熱線圈等級:%s", - "gtceu.multiblock.multiple_recipemaps.header":"機器模式:", - "gtceu.multiblock.multiple_recipemaps.switch_message":"機器必須關閉才能切換模式!", - "gtceu.multiblock.multiple_recipemaps.tooltip":"使用螺絲起子右鍵控制器以更改機器模式。", - "gtceu.multiblock.multiple_recipemaps_recipes.tooltip":"機器模式:§e%s§r", - "gtceu.multiblock.network_switch.description":"網路交換機是個多方塊結構,可以接受任意數量的算力資料靶倉輸入,並從任意數量的算力資料來源倉輸出。對於需要更高算力的研究資料配方,網路交換機的存在是必要的,這是因為研究站只接受一個算力資料靶倉。當與HPCA連線時,HPCA必須具有橋接元件才可以令網路交換機接收其算力。", - "gtceu.multiblock.not_enough_energy":"警告:能量不足。", - "gtceu.multiblock.not_enough_energy_output":"警告:能量輸入/輸出倉等級過低!", - "gtceu.multiblock.ore_rig.drilled_ore_entry":" - %s", - "gtceu.multiblock.ore_rig.drilled_ores_list":"礦:", - "gtceu.multiblock.ore_rig.ore_amount":"鑽進速率:%s", - "gtceu.multiblock.output_line.0":"%s x §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.1":"%s x §e%s§r(%s/s)", - "gtceu.multiblock.output_line.2":"%s ≈ §e%s§r(%ss/ea)", - "gtceu.multiblock.output_line.3":"%s ≈ §e%s§r (%s/s)", - "gtceu.multiblock.page_switcher.io.both":"§5兼顧輸入/輸出", - "gtceu.multiblock.page_switcher.io.export":"§4輸出", - "gtceu.multiblock.page_switcher.io.import":"§2輸入", - "gtceu.multiblock.parallel":"同時處理至多%d個配方", - "gtceu.multiblock.parallel.exact":"同時處理%d個配方", - "gtceu.multiblock.parallelizable.tooltip":"透過平行控制倉讓機器同時處理多個相同配方。", - "gtceu.multiblock.pattern.clear_amount_1":"§6前方必須有1x1x1大小的空間§r", - "gtceu.multiblock.pattern.clear_amount_3":"§6前方必須有3x3x1大小的空間§r", - "gtceu.multiblock.pattern.error":"在%2$s處需要%1$s。", - "gtceu.multiblock.pattern.error.batteries":"§c必須使用同種電池§r", - "gtceu.multiblock.pattern.error.coils":"§c必須使用同種線圈方塊§r", - "gtceu.multiblock.pattern.error.filters":"§c必須使用同種過濾器§r", - "gtceu.multiblock.pattern.error.limited.0":"§c最多:%d個§r", - "gtceu.multiblock.pattern.error.limited.1":"§c最少:%d個§r", - "gtceu.multiblock.pattern.error.limited.2":"§c最多:每層%d個§r", - "gtceu.multiblock.pattern.error.limited.3":"§c最少:每層%d個§r", - "gtceu.multiblock.pattern.error.limited_exact":"§c精確:%d§r", - "gtceu.multiblock.pattern.error.limited_within":"§c最少%d個,最多%d個§r", - "gtceu.multiblock.pattern.location_end":"§c最末端§r", - "gtceu.multiblock.pattern.replaceable_air":"可為空氣", - "gtceu.multiblock.pattern.single":"§6僅可使用該種方塊§r", - "gtceu.multiblock.power_substation.average_in":"§7平均輸入:%s §7EU/t", - "gtceu.multiblock.power_substation.average_in_hover":"蓄能變電站內部的平均功率輸入", - "gtceu.multiblock.power_substation.average_out":"§7平均輸出:%s §7EU/t", - "gtceu.multiblock.power_substation.average_out_hover":"蓄能變電站內部的平均功率輸出", - "gtceu.multiblock.power_substation.capacity":"§7容量:%s §7EU", - "gtceu.multiblock.power_substation.passive_drain":"§7被動損失:%s §7EU/t", - "gtceu.multiblock.power_substation.stored":"§7儲存:%s §7EU", - "gtceu.multiblock.power_substation.time_days":"%s天", - "gtceu.multiblock.power_substation.time_forever":"永遠", - "gtceu.multiblock.power_substation.time_hours":"%s時", - "gtceu.multiblock.power_substation.time_minutes":"%s分", - "gtceu.multiblock.power_substation.time_seconds":"%s秒", - "gtceu.multiblock.power_substation.time_to_drain":"§7預計耗空時間:%s", - "gtceu.multiblock.power_substation.time_to_fill":"§7預計充滿時間:%s", - "gtceu.multiblock.power_substation.time_years":"%s年", - "gtceu.multiblock.power_substation.under_one_hour_left":"不到一小時就會完全耗光!", - "gtceu.multiblock.preview.rotate":"左鍵拖拽以旋轉", - "gtceu.multiblock.preview.select":"右擊方塊以檢視其他可選方塊", - "gtceu.multiblock.preview.zoom":"使用滑鼠滾輪或右鍵拖拽以縮放", - "gtceu.multiblock.primitive_blast_furnace.bronze.description":"土高爐是一種在遊戲前期用來生產鋼的多方塊結構。儘管它不是很快,卻能為你的發展提供鋼材。", - "gtceu.multiblock.primitive_water_pump.description":"原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生態域。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生態域係數 * 輸出倉倍數。", - "gtceu.multiblock.primitive_water_pump.extra1.0":"生態域係數:", - "gtceu.multiblock.primitive_water_pump.extra1.1":" 海洋,河流:1000 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.2":" 沼澤:800 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.3":" 叢林:350 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.4":" 覆雪生態域:300 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.5":" 平原,森林:250 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.6":" 針葉林:175 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.7":" 沙灘:170 mB/s", - "gtceu.multiblock.primitive_water_pump.extra1.8":" 其他:100 mB/s", - "gtceu.multiblock.primitive_water_pump.extra2.0":"輸出倍率:", - "gtceu.multiblock.primitive_water_pump.extra2.1":" 水泵倉:1x", - "gtceu.multiblock.primitive_water_pump.extra2.2":"§8ULV§r輸出倉:2x", - "gtceu.multiblock.primitive_water_pump.extra2.3":"§7LV§r輸出倉:4x", - "gtceu.multiblock.primitive_water_pump.extra2.4":"", - "gtceu.multiblock.primitive_water_pump.extra2.5":"當水泵所處的生態域下雨時,總產水量將增加50%%。", - "gtceu.multiblock.progress":"進度:%ss / %ss(%s%%)", - "gtceu.multiblock.progress_percent":"進度:%s%%", - "gtceu.multiblock.pyrolyse_oven.description":"熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", - "gtceu.multiblock.pyrolyse_oven.speed":"處理速度:%s%%", - "gtceu.multiblock.require_steam_parts":"需要蒸汽倉與輸入/輸出匯流排(蒸汽)!", - "gtceu.multiblock.research_station.description":"研究站是個多方塊結構,用於研究更復雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", - "gtceu.multiblock.research_station.researching":"&6研究中…", - "gtceu.multiblock.running":"執行正常。", - "gtceu.multiblock.steam.duration_modifier":"處理耗時為基礎的§f1.5§7倍,不受物品數量影響。", - "gtceu.multiblock.steam.low_steam":"蒸汽不足,無法執行!", - "gtceu.multiblock.steam.steam_stored":"蒸汽:%s / %s mB", - "gtceu.multiblock.steam_grinder.description":"蒸汽時代的多方塊研磨機。需要至少14塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。", - "gtceu.multiblock.steam_oven.description":"蒸汽時代的多方塊熔爐。需要至少6塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。蒸汽倉必須放置於結構底層,數量至多為一個。", - "gtceu.multiblock.title":"多方塊結構", - "gtceu.multiblock.turbine.efficiency":"渦輪效率:%s%%", - "gtceu.multiblock.turbine.efficiency_tooltip":"轉子支架等級超過%s§r時,每級§7增加§f10%%效率,並翻倍輸出功率§7。", - "gtceu.multiblock.turbine.energy_per_tick":"能量輸出:%s/%s EU/t", - "gtceu.multiblock.turbine.energy_per_tick_maxed":"能量輸出:%s EU/t", - "gtceu.multiblock.turbine.fuel_amount":"燃料量:%smB(%s)", - "gtceu.multiblock.turbine.fuel_needed":"消耗量:%s / %s ticks", - "gtceu.multiblock.turbine.obstructed":"渦輪受阻", - "gtceu.multiblock.turbine.rotor_durability":"轉子耐久度:%s%%", - "gtceu.multiblock.turbine.rotor_speed":"轉子轉速:%s/%sRPM", - "gtceu.multiblock.universal.distinct":"匯流排隔離:", - "gtceu.multiblock.universal.distinct.info":"啟用時,每個物品匯流排將在配方識別中被視為完全獨立。對於消耗材料相同,使用的非消耗材料(模具、透鏡等)不同則產物也不同的配方來說作用顯著。", - "gtceu.multiblock.universal.distinct.no":"否", - "gtceu.multiblock.universal.distinct.yes":"是", - "gtceu.multiblock.universal.has_problems":"存在故障!", - "gtceu.multiblock.universal.has_problems_header":"在維修倉中修復以下問題:", - "gtceu.multiblock.universal.muffler_obstructed":"消音倉受阻!", - "gtceu.multiblock.universal.muffler_obstructed.tooltip":"消音倉口前方必須有一格空氣。", - "gtceu.multiblock.universal.no_problems":"無故障!", - "gtceu.multiblock.universal.problem.crowbar":"§7這東西不屬於這裡。(§a撬棍§7)", - "gtceu.multiblock.universal.problem.hard_hammer":"§7外殼有些凹痕。(§a鍛造錘§7)", - "gtceu.multiblock.universal.problem.screwdriver":"§7螺絲沒擰緊。(§a螺絲起子§7)", - "gtceu.multiblock.universal.problem.soft_mallet":"§7有什麼東西卡住了。(§a軟錘§7)", - "gtceu.multiblock.universal.problem.wire_cutter":"§7有幾根線燒焦了(§a剪線鉗§7)", - "gtceu.multiblock.universal.problem.wrench":"§7管道鬆動了。(§a扳手§7)", - "gtceu.multiblock.universal.rotor_obstructed":"轉子進氣口受阻!", - "gtceu.multiblock.uv_fusion_reactor.description":"核融合反應爐MK-III是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用UV等級的能量輸入倉。每個能量輸入倉可增加40MEU的能量暫存,最大能量暫存為640MEU。", - "gtceu.multiblock.vacuum_freezer.description":"真空冷凍機是一種多方塊結構,主要用於將熱錠冷卻為成品錠。此外,它還可以凍結水等其他物質。", - "gtceu.multiblock.validation_failed":"輸入倉/輸出倉數量無效。", - "gtceu.multiblock.waiting":"警告:機器待機", - "gtceu.multiblock.work_paused":"暫停。", - "gtceu.multiblock.zpm_fusion_reactor.description":"核融合反應爐MK-II是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加20MEU的能量暫存,最大能量暫存為320MEU。", - "gtceu.oc.tooltip.0":"最低:%s", - "gtceu.oc.tooltip.1":"左鍵增加超頻等級", - "gtceu.oc.tooltip.2":"右鍵降低超頻等級", - "gtceu.oc.tooltip.3":"中鍵重設超頻等級", - "gtceu.oc.tooltip.4":"按住Shift以無損超頻顯示", - "gtceu.ore_washer":"洗礦廠", - "gtceu.packer":"打包機", - "gtceu.plasma_generator":"電漿燃料", - "gtceu.polarizer":"兩極磁化機", - "gtceu.primitive_blast_furnace":"土高爐", - "gtceu.pyrolyse_oven":"熱解爐", - "gtceu.recipe.amperage":"電流:%s", - "gtceu.recipe.category.arc_furnace_recycling":"電弧爐:電漿回收", - "gtceu.recipe.category.chem_dyes":"化學水浴機:化學染色", - "gtceu.recipe.category.extractor_recycling":"流體提取機:重熔回收", - "gtceu.recipe.category.ingot_molding":"合金爐:金屬成型", - "gtceu.recipe.category.macerator_recycling":"研磨機:粉碎回收", - "gtceu.recipe.category.ore_bathing":"化學水浴機:礦物處理", - "gtceu.recipe.category.ore_crushing":"研磨機:礦物處理", - "gtceu.recipe.category.ore_forging":"鍛造錘:礦物處理", - "gtceu.recipe.chance":"產出機率:%s + %s/電壓等級", - "gtceu.recipe.cleanroom":"需要%s", - "gtceu.recipe.cleanroom.display_name":"無塵室", - "gtceu.recipe.cleanroom_sterile.display_name":"無菌無塵室", - "gtceu.recipe.coil.tier":"線圈:%s", - "gtceu.recipe.computation_per_tick":"最小算力:%s CWU/t", - "gtceu.recipe.dimensions":"維度:%s", - "gtceu.recipe.duration":"耗時:%s 秒", - "gtceu.recipe.environmental_hazard":"§c區域內必須有%s", - "gtceu.recipe.environmental_hazard.reverse":"§c區域內必須沒有%s", - "gtceu.recipe.eu":"耗能功率:%s EU/t", - "gtceu.recipe.eu_inverted":"產能功率:%s EU/t", - "gtceu.recipe.eu_to_start":"啟動耗能:%sEU%s", - "gtceu.recipe.explosive":"爆炸物:%s", - "gtceu.recipe.max_eu":"最大功率:%s EU", - "gtceu.recipe.not_consumed":"不在加工中消耗", - "gtceu.recipe.research":"需要研究", - "gtceu.recipe.scan_for_research":"裝配線配方掃描", - "gtceu.recipe.temperature":"溫度:%sK", - "gtceu.recipe.total":"總計:%s EU", - "gtceu.recipe.total_computation":"算力:%s CWU", - "gtceu.recipe_logic.condition_fails":"條件不足", - "gtceu.recipe_logic.insufficient_fuel":"燃料不足", - "gtceu.recipe_logic.insufficient_in":"需要輸入", - "gtceu.recipe_logic.insufficient_out":"輸出堵塞", - "gtceu.recipe_memory_widget.tooltip.0":"§7左鍵點選自動輸入該配方至合成格", - "gtceu.recipe_memory_widget.tooltip.1":"§7按住Shift並點選以鎖定或解鎖該配方", - "gtceu.recipe_type.show_recipes":"檢視配方", - "gtceu.rei.group.potion_fluids":"藥水流體", - "gtceu.research_station":"研究站", - "gtceu.rock_breaker":"碎岩機", - "gtceu.scanner":"掃描器", - "gtceu.scanner.copy_stick_empty":"§o空快閃記憶體", - "gtceu.scanner.copy_stick_from":"§o要複製的快閃記憶體", - "gtceu.scanner.copy_stick_to":"§o快閃記憶體(已複製)", - "gtceu.sifter":"篩選機", - "gtceu.steam_boiler":"蒸汽鍋爐", - "gtceu.steam_turbine":"蒸汽渦輪", - "gtceu.subtitle.arc":"電弧爐:嗡——", - "gtceu.subtitle.assembler":"組裝機:運行中", - "gtceu.subtitle.bath":"化學水浴機:嘶嘶", - "gtceu.subtitle.boiler":"鍋爐:液體沸騰", - "gtceu.subtitle.centrifuge":"離心機:旋轉", - "gtceu.subtitle.chainsaw":"鏈鋸:拉動油門", - "gtceu.subtitle.chemical":"化學反應器:運行中", - "gtceu.subtitle.combustion":"內燃發電機:燃料燃燒", - "gtceu.subtitle.compressor":"壓縮機:擠壓", - "gtceu.subtitle.computation":"計算機:嗶嗶", - "gtceu.subtitle.cooling":"真空冷凍機:嗡——", - "gtceu.subtitle.cut":"切割機:嘶嘶叫", - "gtceu.subtitle.drill":"電鑽:嗡嗡", - "gtceu.subtitle.electrolyzer":"電解機:爆出火花", - "gtceu.subtitle.file":"銼:磨削", - "gtceu.subtitle.fire":"火:爆裂", - "gtceu.subtitle.forge_hammer":"鍛造錘:DUANG", - "gtceu.subtitle.furnace":"電爐:冶煉", - "gtceu.subtitle.jet_engine":"噴射背包:轟轟", - "gtceu.subtitle.macerator":"研磨機:破碎", - "gtceu.subtitle.metal_pipe":"流體管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", - "gtceu.subtitle.miner":"採礦機:開採", - "gtceu.subtitle.mixer":"攪拌機:攪動", - "gtceu.subtitle.mortar":"研缽:研磨", - "gtceu.subtitle.motor":"馬達:轉啊轉", - "gtceu.subtitle.plunger":"搋子:清理流體", - "gtceu.subtitle.portable_scanner":"便攜式掃描儀:掃描", - "gtceu.subtitle.portal_closing":"傳送門:關閉", - "gtceu.subtitle.portal_opening":"傳送門:開啟", - "gtceu.subtitle.replicator":"複製機:運行", - "gtceu.subtitle.saw":"鋸:切割", - "gtceu.subtitle.science":"化學反應器:科!學!", - "gtceu.subtitle.screwdriver":"螺絲刀:擰螺絲", - "gtceu.subtitle.soft_hammer":"軟錘:輕敲", - "gtceu.subtitle.spray_can":"噴漆罐:噴塗", - "gtceu.subtitle.sus":"唱片:你有嫌疑", - "gtceu.subtitle.turbine":"渦輪:呼嘯", - "gtceu.subtitle.wirecutter":"剪線鉗:剪斷", - "gtceu.subtitle.wrench":"扳手:嘎啦", - "gtceu.thermal_centrifuge":"熱力離心機", - "gtceu.tool.class.axe":"斧", - "gtceu.tool.class.butchery_knife":"屠刀", - "gtceu.tool.class.crowbar":"撬棍", - "gtceu.tool.class.drill":"電鑽", - "gtceu.tool.class.file":"銼", - "gtceu.tool.class.hammer":"錘", - "gtceu.tool.class.hoe":"鋤", - "gtceu.tool.class.knife":"刀", - "gtceu.tool.class.mallet":"軟錘", - "gtceu.tool.class.mining_hammer":"採礦錘", - "gtceu.tool.class.mortar":"研缽", - "gtceu.tool.class.pickaxe":"鎬", - "gtceu.tool.class.plunger":"搋子", - "gtceu.tool.class.rolling_pin":"擀麵棍", - "gtceu.tool.class.saw":"鋸", - "gtceu.tool.class.screwdriver":"螺絲起子", - "gtceu.tool.class.scythe":"鐮刀", - "gtceu.tool.class.shears":"剪刀", - "gtceu.tool.class.shovel":"鍬", - "gtceu.tool.class.spade":"鏟", - "gtceu.tool.class.sword":"劍", - "gtceu.tool.class.wire_cutter":"剪線鉗", - "gtceu.tool.class.wrench":"扳手", - "gtceu.tool_action.crowbar":"§8使用撬棍卸下覆蓋板", - "gtceu.tool_action.hammer":"§8使用鍛造錘消除聲響", - "gtceu.tool_action.screwdriver.access_covers":"§8使用螺絲起子訪問覆蓋板", - "gtceu.tool_action.screwdriver.auto_collapse":"§8使用螺絲起子開關物品堆疊自動合併", - "gtceu.tool_action.screwdriver.auto_output":"§8使用螺絲起子切換自動輸出", - "gtceu.tool_action.screwdriver.auto_output_covers":"§8使用螺絲起子設定允許從輸出端輸入或訪問覆蓋板", - "gtceu.tool_action.screwdriver.toggle_mode":"§8使用螺絲起子切換模式", - "gtceu.tool_action.screwdriver.toggle_mode_covers":"§8使用螺絲起子切換模式或訪問覆蓋板", - "gtceu.tool_action.show_tooltips":"§7按住§6SHIFT§7顯示工具資訊", - "gtceu.tool_action.soft_mallet.reset":"§8使用軟錘開關機器", - "gtceu.tool_action.soft_mallet.toggle_mode":"§8使用軟錘切換模式", - "gtceu.tool_action.tape":"§8使用膠帶維護機器", - "gtceu.tool_action.wire_cutter.connect":"§8使用剪線鉗連線/斷開電線", - "gtceu.tool_action.wrench.connect":"§8使用扳手連線/斷開管道,潛行可以阻止輸入", - "gtceu.tool_action.wrench.set_facing":"§8使用扳手設定朝向", - "gtceu.tooltip.fluid_pipe_hold_shift":"§7按住§6SHIFT§7以檢視流體容器詳情", - "gtceu.tooltip.hold_ctrl":"§7按住CTRL獲得更多資訊", - "gtceu.tooltip.hold_shift":"§7按住§6SHIFT§7獲得更多資訊", - "gtceu.tooltip.potion.each":"§r%4$s%%§7機率獲得§r%1$s %2$s§7(§r%3$s§7tick)", - "gtceu.tooltip.potion.header":"§6包含效果:", - "gtceu.tooltip.proxy_bind":"§f綁定到%s %s %s處的樣板供應倉", - "gtceu.tooltip.tool_fluid_hold_shift":"§7按住§6SHIFT§7以檢視流體容器及工具詳情", - "gtceu.top.allow_output_input":"允許輸入", - "gtceu.top.auto_output":"自動輸出", - "gtceu.top.buffer_bound_pos":"已綁定至 - X:%s;Y:%s;Z:%s", - "gtceu.top.cable_amperage":"電流:", - "gtceu.top.cable_voltage":"電壓:", - "gtceu.top.convert_eu":"轉換模式:§eEU§r ->§cFE§r", - "gtceu.top.convert_fe":"轉換模式:§cFE§r ->§eEU§r", - "gtceu.top.energy_consumption":"耗能", - "gtceu.top.energy_production":"產能", - "gtceu.top.energy_stored":" / %d EU", - "gtceu.top.exhaust_vent_blocked":"受阻", - "gtceu.top.exhaust_vent_direction":"排氣口:%s", - "gtceu.top.filter.label":"過濾:", - "gtceu.top.fluid_auto_output":"流體輸出:%s", - "gtceu.top.fuel_min_consume":"需要", - "gtceu.top.fuel_none":"無燃料", - "gtceu.top.invalid_structure":"結構不完整", - "gtceu.top.item_auto_output":"物品輸出:%s", - "gtceu.top.link_cover.color":"顏色:", - "gtceu.top.machine_mode":"機器模式:", - "gtceu.top.maintenance.crowbar":"這東西不屬於這兒", - "gtceu.top.maintenance.hard_hammer":"外殼有些凹痕", - "gtceu.top.maintenance.screwdriver":"螺絲沒擰緊", - "gtceu.top.maintenance.soft_mallet":"有什麼東西卡住了", - "gtceu.top.maintenance.wire_cutter":"有幾根線燒焦了", - "gtceu.top.maintenance.wrench":"管道鬆動了", - "gtceu.top.maintenance_broken":"需要維護", - "gtceu.top.maintenance_fixed":"無需維修", - "gtceu.top.mode.export":"輸出", - "gtceu.top.mode.import":"輸入", - "gtceu.top.obstructed_structure":"結構受阻", - "gtceu.top.primitive_pump_production":"產出:%s mB/s", - "gtceu.top.progress_computation":" / %s CWU", - "gtceu.top.progress_sec":" / %s s", - "gtceu.top.progress_tick":" / %s t", - "gtceu.top.proxies_bound":"遠端樣板供應倉綁定數量:%s", - "gtceu.top.recipe_output":"配方輸出:", - "gtceu.top.stained":"顏色:%s", - "gtceu.top.transform_down":"§a降壓§r %s", - "gtceu.top.transform_input":"§6輸入:§r %s", - "gtceu.top.transform_output":"§9輸出:§r %s", - "gtceu.top.transform_up":"§c升壓§r %s", - "gtceu.top.unit.fluid_buckets":"B", - "gtceu.top.unit.fluid_milibuckets":"mB", - "gtceu.top.unit.items":"物品", - "gtceu.top.valid_structure":"結構已成型", - "gtceu.top.working_disabled":"已暫停工作", - "gtceu.universal.clear_nbt_recipe.tooltip":"§c這將清除所有內容物!", - "gtceu.universal.disabled":"多方塊結構共享:§4禁止", - "gtceu.universal.enabled":"多方塊結構共享:§a允許", - "gtceu.universal.kiloliters":"%s B", - "gtceu.universal.liters":"%s mB", - "gtceu.universal.tooltip.amperage_in":"§e輸入電流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out":"§e輸入/輸出電流:§f%dA", - "gtceu.universal.tooltip.amperage_in_out_till":"§e輸入/輸出電流上限:§f%dA", - "gtceu.universal.tooltip.amperage_in_till":"§e輸入電流上限:§f%dA", - "gtceu.universal.tooltip.amperage_out":"§e輸出電流:§f%dA", - "gtceu.universal.tooltip.amperage_out_till":"§e輸出電流上限:§f%dA", - "gtceu.universal.tooltip.base_production_eut":"§e基礎產能功率:§f%d EU/t", - "gtceu.universal.tooltip.base_production_fluid":"§e基礎產出速率:§f%d mB/t", - "gtceu.universal.tooltip.chunk_mode":"區塊模式:", - "gtceu.universal.tooltip.deprecated":"§4§l警告:§r§4已棄用。將在未來版本中移除。§r", - "gtceu.universal.tooltip.energy_storage_capacity":"§c能量暫存:§r%d EU", - "gtceu.universal.tooltip.energy_tier_range":"§a適配電壓等級:§f%s§f-%s", - "gtceu.universal.tooltip.fluid_storage_capacity":"§9流體容量:§f%d mB", - "gtceu.universal.tooltip.fluid_storage_capacity_mult":"§9流體容量:§r共§f%d§7個流體槽,每個§f%dmB§7", - "gtceu.universal.tooltip.fluid_stored":"§2內部流體:%2$d mB §f%1$s", - "gtceu.universal.tooltip.fluid_transfer_rate":"§b傳輸速率:§f%d mB/t", - "gtceu.universal.tooltip.item_storage_capacity":"§6物品槽位數量:§f%d", - "gtceu.universal.tooltip.item_storage_total":"§6物品容量:§f%d物品", - "gtceu.universal.tooltip.item_stored":"§d內部物品:§f%2$d個%1$s", - "gtceu.universal.tooltip.item_transfer_rate":"§b傳輸速率:§f%d物品/s", - "gtceu.universal.tooltip.item_transfer_rate_stacks":"§b傳輸速率:§f%d組/s", - "gtceu.universal.tooltip.max_voltage_in":"§a最大輸入電壓:§f%d(%s§f)", - "gtceu.universal.tooltip.max_voltage_in_out":"§a最大輸入/輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.max_voltage_out":"§a最大輸出電壓:§f%d(%s§f)", - "gtceu.universal.tooltip.parallel":"§d最大平行:§f%d", - "gtceu.universal.tooltip.produces_fluid":"§e產出速率:§f%d mB/t", - "gtceu.universal.tooltip.requires_redstone":"§4需要紅石訊號", - "gtceu.universal.tooltip.silk_touch":"絲綢之觸:", - "gtceu.universal.tooltip.terrain_resist":"該機器不會在暴露於惡劣天氣時爆炸", - "gtceu.universal.tooltip.uses_per_hour_lubricant":"工作時消耗§f%d mB/hr§7§6潤滑油§7", - "gtceu.universal.tooltip.uses_per_op":"每次工作時消耗§f%d EU§7", - "gtceu.universal.tooltip.uses_per_second":"工作時消耗§f%d EU/s§7", - "gtceu.universal.tooltip.uses_per_tick":"工作時消耗§f%d EU/t§7", - "gtceu.universal.tooltip.uses_per_tick_steam":"工作時消耗§f%dmB/t§7蒸汽", - "gtceu.universal.tooltip.voltage_in":"§a輸入電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_in_out":"§a輸入/輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.voltage_out":"§a輸出電壓:§f%d EU/t(%s§f)", - "gtceu.universal.tooltip.working_area":"§b工作範圍:§f%dx%d", - "gtceu.universal.tooltip.working_area_chunks":"§b工作範圍:§f%dx%d 區塊", - "gtceu.universal.tooltip.working_area_chunks_max":"§b最大工作範圍:§f%dx%d 區塊", - "gtceu.universal.tooltip.working_area_max":"§b最大工作範圍:§f%dx%d", - "gtceu.vacuum_freezer":"真空冷凍機", - "gtceu.wiremill":"線材軋機", - "gui.gtceu.refund_all.desc":"將原料送回ME網路", - "gui.gtceu.rename.desc":"重新命名樣板供應倉", - "gui.gtceu.share_inventory.desc.0":"與樣板供應倉的所有樣板共享物品!", - "gui.gtceu.share_inventory.desc.1":"儲存不消耗的催化劑,實現更高效的自動化", - "gui.gtceu.share_inventory.title":"共享物品庫存", - "gui.gtceu.share_tank.desc.0":"與樣板供應倉的所有樣板共享流體!", - "gui.gtceu.share_tank.title":"共享流體庫存", - "gui.widget.incrementButton.default_tooltip":"按住Shift,Ctrl鍵或同時按住這兩個鍵來改變數量", - "gui.widget.recipeProgressWidget.default_tooltip":"檢視配方", - "item.glass_lens":"玻璃透鏡(白色)", - "item.gtceu.activity_detector_cover":"活躍探測覆蓋板", - "item.gtceu.activity_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f機器活躍狀態§7發出紅石訊號。", - "item.gtceu.advanced_activity_detector_cover":"進階活躍狀態探測器", - "item.gtceu.advanced_activity_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f機器處理進度§7發出紅石訊號。", - "item.gtceu.advanced_electric_jetpack":"進階電力噴射背包", - "item.gtceu.advanced_energy_detector_cover":"進階能量探測覆蓋板", - "item.gtceu.advanced_energy_detector_cover.tooltip":"§7作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f能量狀態§7發出紅石訊號。", - "item.gtceu.advanced_fluid_detector_cover":"進階流體探測器", - "item.gtceu.advanced_fluid_detector_cover.tooltip":"作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f流體儲存狀態§7發出紅石訊號。", - "item.gtceu.advanced_fluid_voiding_cover":"進階流體銷毀覆蓋板", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時允許按數量銷毀§f流體§7。", - "item.gtceu.advanced_fluid_voiding_cover.tooltip.1":"加裝後使用§f軟錘§7啟用", - "item.gtceu.advanced_integrated_circuit":"進階積體電路", - "item.gtceu.advanced_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.advanced_integrated_circuit.tooltip.1":"§6HV級電路", - "item.gtceu.advanced_item_detector_cover":"進階物品探測器", - "item.gtceu.advanced_item_detector_cover.tooltip":"作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f物品儲存狀態§7發出紅石訊號。", - "item.gtceu.advanced_item_voiding_cover":"進階物品銷毀覆蓋板", - "item.gtceu.advanced_item_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時銷毀物品。", - "item.gtceu.advanced_item_voiding_cover.tooltip.1":"加裝後使用§f軟錘§7啟用", - "item.gtceu.advanced_power_thruster":"進階電力推進器", - "item.gtceu.advanced_quarktech_chestplate":"夸克科技™進階套裝胸甲", - "item.gtceu.advanced_smd_capacitor":"高階貼片電容", - "item.gtceu.advanced_smd_capacitor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_diode":"高階貼片二極體", - "item.gtceu.advanced_smd_diode.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_inductor":"高階貼片電感", - "item.gtceu.advanced_smd_inductor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_resistor":"高階貼片電阻", - "item.gtceu.advanced_smd_resistor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_smd_transistor":"高階貼片電晶體", - "item.gtceu.advanced_smd_transistor.tooltip":"§7高階電子元件", - "item.gtceu.advanced_soc":"ASoC", - "item.gtceu.advanced_soc.tooltip":"§7先進系統級晶片", - "item.gtceu.advanced_soc_wafer":"ASoC晶圓", - "item.gtceu.advanced_soc_wafer.tooltip":"§7高階電路原料", - "item.gtceu.aluminium_fluid_cell":"鋁單元", - "item.gtceu.anvil_casting_mold":"鑄造模具(砧)", - "item.gtceu.anvil_casting_mold.tooltip":"§7用來製作砧的鑄造模具", - "item.gtceu.ash_dust":"灰燼", - "item.gtceu.advanced_nanomuscle_chestplate":"奈米肌體™進階套裝胸甲", - "item.gtceu.axe_extruder_mold.tooltip":"§7用來製作斧的擠壓模具", - "item.gtceu.ball_casting_mold":"鑄造模具(球)", - "item.gtceu.ball_casting_mold.tooltip":"§7用來製作球的鑄造模具", - "item.gtceu.basaltic_mineral_sand_dust":"玄武岩礦砂", - "item.gtceu.basic_electronic_circuit":"基礎電子電路", - "item.gtceu.basic_electronic_circuit.tooltip.0":"§7你的第一塊電路", - "item.gtceu.basic_electronic_circuit.tooltip.1":"§cLV級電路", - "item.gtceu.basic_integrated_circuit":"基礎積體電路", - "item.gtceu.basic_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.basic_integrated_circuit.tooltip.1":"§6LV級電路", - "item.gtceu.basic_tape":"膠帶", - "item.gtceu.basic_tape.tooltip":"強度不足,無法解決機械故障\\n可以带走板條箱,且不丟失物品", - "item.gtceu.battery.charge_detailed":"%s/%sEU-%s級§7(剩餘供能時長:%s/%s%s§7)", - "item.gtceu.battery.charge_time":"§a最大供能時長:%s%s(%s)", - "item.gtceu.battery.charge_unit.hour":"時", - "item.gtceu.battery.charge_unit.minute":"分", - "item.gtceu.battery.charge_unit.second":"秒", - "item.gtceu.bentonite_dust":"膨潤土", - "item.gtceu.bio_chaff":"生物糠", - "item.gtceu.black_dye_spray_can":"噴漆罐(黑色)", - "item.gtceu.black_glass_lens":"玻璃透鏡(黑色)", - "item.gtceu.blacklight":"黑光燈", - "item.gtceu.blacklight.tooltip":"§7長波§d紫外線§7光源", - "item.gtceu.block_casting_mold":"鑄造模具(方塊)", - "item.gtceu.block_casting_mold.tooltip":"§7用來製作方塊的鑄造模具", - "item.gtceu.block_extruder_mold":"擠壓模具(方塊)", - "item.gtceu.block_extruder_mold.tooltip":"§7用來製作方塊的擠壓模具", - "item.gtceu.blue_dye_spray_can":"噴漆罐(藍色)", - "item.gtceu.blue_glass_lens":"玻璃透鏡(藍色)", - "item.gtceu.bolt_extruder_mold":"擠壓模具(螺栓)", - "item.gtceu.bolt_extruder_mold.tooltip":"§7用來製作螺栓的擠壓模具", - "item.gtceu.bone_dust":"骨粉", - "item.gtceu.borosilicate_glass_ingot":"硼矽玻璃條", - "item.gtceu.bottle.purple.drink.tooltip":"§7來點檸檬汽水,還是冰紅茶?我手裡這瓶可是紫色飲料!", - "item.gtceu.bottle_casting_mold":"鑄造模具(瓶子)", - "item.gtceu.bottle_casting_mold.tooltip":"§7用來製作瓶的鑄造模具", - "item.gtceu.bottle_extruder_mold":"擠壓模具(瓶子)", - "item.gtceu.bottle_extruder_mold.tooltip":"§7用來製作瓶子的擠壓模具", - "item.gtceu.brick_wooden_form":"木製磚模具", - "item.gtceu.brown_dye_spray_can":"噴漆罐(棕色)", - "item.gtceu.brown_glass_lens":"玻璃透鏡(棕色)", - "item.gtceu.bucket":"%s桶", - "item.gtceu.capacitor":"電容", - "item.gtceu.capacitor.tooltip":"§7基礎電子元件", - "item.gtceu.carbon_fiber_mesh":"碳纖維網", - "item.gtceu.carbon_fiber_plate":"碳板", - "item.gtceu.carbon_fibers":"生碳纖維", - "item.gtceu.casing_casting_mold.tooltip":"§7用來製作外殼的鑄造模具", - "item.gtceu.casing_extruder_mold.tooltip":"§7用來製作外殼的擠壓模具", - "item.gtceu.cassiterite_sand_dust":"錫石礦砂", - "item.gtceu.cell_extruder_mold":"擠壓模具(單元)", - "item.gtceu.cell_extruder_mold.tooltip":"§7用來製作單元的擠壓模具", - "item.gtceu.chemical_black_dye":"黑色化學染料", - "item.gtceu.chemical_blue_dye":"藍色化學染料", - "item.gtceu.chemical_brown_dye":"棕色化學染料", - "item.gtceu.chemical_cyan_dye":"青色化學染料", - "item.gtceu.chemical_gray_dye":"灰色化學染料", - "item.gtceu.chemical_green_dye":"綠色化學染料", - "item.gtceu.chemical_light_blue_dye":"淺藍色化學染料", - "item.gtceu.chemical_light_gray_dye":"淺灰色化學染料", - "item.gtceu.chemical_lime_dye":"淺綠色化學染料", - "item.gtceu.chemical_magenta_dye":"洋紅色化學染料", - "item.gtceu.chemical_orange_dye":"橙色化學染料", - "item.gtceu.chemical_pink_dye":"粉紅色化學染料", - "item.gtceu.chemical_purple_dye":"紫色化學染料", - "item.gtceu.chemical_red_dye":"紅色化學染料", - "item.gtceu.chemical_white_dye":"白色化學染料", - "item.gtceu.chemical_yellow_dye":"黃色化學染料", - "item.gtceu.chipped_glass_gem":"破碎的玻璃晶體", - "item.gtceu.chipped_sugar_gem":"小塊方糖", - "item.gtceu.circuit.integrated.gui":"§7程式設計電路設定", - "item.gtceu.coke_oven_brick":"焦爐磚", - "item.gtceu.compressed_clay":"壓縮黏土", - "item.gtceu.compressed_coke_clay":"壓縮焦黏土", - "item.gtceu.compressed_fireclay":"壓縮耐火黏土", - "item.gtceu.computer_monitor_cover":"電腦螢幕覆蓋板", - "item.gtceu.computer_monitor_cover.tooltip":"§7作§f覆蓋板§7時顯示§f資料§7。", - "item.gtceu.conveyor.module.tooltip":"§7作§f覆蓋板§7時以特定速率傳輸§f物品§7。", - "item.gtceu.cpu_chip":"CPU晶片", - "item.gtceu.cpu_chip.tooltip":"§7中央處理器", - "item.gtceu.cpu_wafer":"CPU晶圓", - "item.gtceu.cpu_wafer.tooltip":"§7中央處理器原料", - "item.gtceu.crushed_bentonite_ore":"精研膨潤土", - "item.gtceu.crushed_cassiterite_sand_ore":"粉碎錫石礦砂", - "item.gtceu.crushed_pitchblende_ore":"精研瀝青鈾礦", - "item.gtceu.crushed_talc_ore_ore":"精研滑石", - "item.gtceu.crystal_cpu":"晶體CPU", - "item.gtceu.crystal_cpu.tooltip":"§7晶體處理器", - "item.gtceu.crystal_processor":"晶體處理器", - "item.gtceu.crystal_processor.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor.tooltip.1":"§9IV級電路", - "item.gtceu.crystal_processor_assembly":"晶體處理器叢集", - "item.gtceu.crystal_processor_assembly.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_assembly.tooltip.1":"§9LuV級電路", - "item.gtceu.crystal_processor_computer":"晶體處理器超級電腦", - "item.gtceu.crystal_processor_computer.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_computer.tooltip.1":"§9ZPM級電路", - "item.gtceu.crystal_processor_mainframe":"晶體處理器主機", - "item.gtceu.crystal_processor_mainframe.tooltip.0":"§7得益於晶體蝕刻技術", - "item.gtceu.crystal_processor_mainframe.tooltip.1":"§9UV級電路", - "item.gtceu.crystal_soc":"晶體SoC", - "item.gtceu.crystal_soc.tooltip":"§7晶體系統級晶片", - "item.gtceu.cyan_dye_spray_can":"噴漆罐(青色)", - "item.gtceu.cyan_glass_lens":"玻璃透鏡(青色)", - "item.gtceu.cylinder_casting_mold":"鑄造模具(圓柱)", - "item.gtceu.cylinder_casting_mold.tooltip":"§7用來製作圓柱的鑄造模具", - "item.gtceu.dark_ash_dust":"黑色灰燼", - "item.gtceu.data_module":"資料模組", - "item.gtceu.data_orb":"資料球", - "item.gtceu.data_orb.tooltip":" §7大容量的資料儲存器", - "item.gtceu.data_stick":"快閃記憶體", - "item.gtceu.data_stick.tooltip":"§7小容量的資料儲存器", - "item.gtceu.diamond_grinding_head":"鑽石研磨頭", - "item.gtceu.diode":"二極體", - "item.gtceu.diode.tooltip":"§7基礎電子元件", - "item.gtceu.dough":"麵團", - "item.gtceu.duct_tape":"布萊恩科技航空專用強化膠帶FAL-84型", - "item.gtceu.duct_tape.tooltip":"§7如果一卷修不好,那就再來一卷!", - "item.gtceu.dynamite":"炸藥", - "item.gtceu.electric.pump.tooltip":"§7作§f覆蓋板§7時以特定速率傳輸§f流體§7。", - "item.gtceu.electric_jetpack":"電力噴射背包", - "item.gtceu.empty_mold":"空模板", - "item.gtceu.empty_mold.tooltip":"§7用以製作鑄造模具與擠壓模具", - "item.gtceu.empty_spray_can":"空噴漆罐", - "item.gtceu.empty_spray_can.tooltip":"§7可充入各種顏色的噴劑", - "item.gtceu.empty_wooden_form":"空木製模具", - "item.gtceu.ender_fluid_link_cover":"終界流體連線", - "item.gtceu.ender_fluid_link_cover.tooltip":"§7作§f覆蓋板§7時利用§f無線§7§d終界§f連線§7傳輸§f流體§7。", - "item.gtceu.energium_dust":"能量粉", - "item.gtceu.energy_cluster":"能量簇", - "item.gtceu.energy_cluster.tooltip":"§7可充電電池", - "item.gtceu.energy_crystal":"能量水晶", - "item.gtceu.energy_crystal.tooltip":"§7可充電電池", - "item.gtceu.energy_detector_cover":"能量探測覆蓋板", - "item.gtceu.energy_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f能量儲量§7發出紅石訊號。", - "item.gtceu.energy_module":"能量模組", - "item.gtceu.energy_module.tooltip":"§7可充電電池", - "item.gtceu.engraved_crystal_chip":"蝕刻水晶晶片", - "item.gtceu.engraved_crystal_chip.tooltip":"§7晶體電路所需", - "item.gtceu.engraved_lapotron_crystal_chip":"蝕刻蘭波頓晶片", - "item.gtceu.epoxy_circuit_board":"環氧樹脂基板", - "item.gtceu.epoxy_circuit_board.tooltip":"§7進階電路基板", - "item.gtceu.epoxy_printed_circuit_board":"環氧樹脂印刷電路基板", - "item.gtceu.epoxy_printed_circuit_board.tooltip":"§7更高階的電路基板", - "item.gtceu.ev_battery_hull":"小型釩電池外殼", - "item.gtceu.ev_battery_hull.tooltip":"§7一個空的§5EV§7電池外殼", - "item.gtceu.ev_conveyor_module":"§5EV§r傳送帶", - "item.gtceu.ev_electric_motor":"§5EV§r電動馬達", - "item.gtceu.ev_electric_piston":"§5EV§r電力活塞", - "item.gtceu.ev_electric_pump":"§5EV§r電動泵", - "item.gtceu.ev_emitter":"§5EV§r發射器", - "item.gtceu.ev_field_generator":"§5EV§r力場發生器", - "item.gtceu.ev_fluid_regulator":"§5EV§r流體調節器", - "item.gtceu.ev_power_unit":"§5EV§r能量單元", - "item.gtceu.ev_robot_arm":"§5EV§r機械臂", - "item.gtceu.ev_sensor":"§5EV§r感測器", - "item.gtceu.ev_solar_panel":"超高壓太陽能板(§5EV§r)", - "item.gtceu.ev_vanadium_battery":"小型釩電池", - "item.gtceu.ev_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.ev_voltage_coil":"超高壓線圈(§5EV§r)", - "item.gtceu.ev_voltage_coil.tooltip":"極限線圈", - "item.gtceu.exquisite_glass_gem":"精緻的玻璃晶體", - "item.gtceu.facade_cover":"覆蓋偽裝板", - "item.gtceu.facade_cover.tooltip.0":"§7可作為§f覆蓋板§7加裝的裝飾性外殼。", - "item.gtceu.facade_cover.tooltip.1":"§7使用三個鐵板與任意方塊合成", - "item.gtceu.face_mask":"面罩", - "item.gtceu.fertilizer":"肥料", - "item.gtceu.fiber_reinforced_circuit_board":"纖維強化電路基板", - "item.gtceu.fiber_reinforced_circuit_board.tooltip":"§7超級電路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board":"纖維強化印刷電路基板", - "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip":"§7更高階的電路基板", - "item.gtceu.file_extruder_mold.tooltip":"§7用來製作銼的擠壓模具", - "item.gtceu.fine_borosilicate_glass_wire":"硼矽玻璃纖維", - "item.gtceu.firebrick":"耐火磚", - "item.gtceu.firebrick.tooltip":"§7耐熱", - "item.gtceu.flawed_glass_gem":"有瑕的玻璃晶體", - "item.gtceu.flawed_sugar_gem":"小顆方糖", - "item.gtceu.flawless_glass_gem":"無瑕的玻璃晶體", - "item.gtceu.fluid.regulator.tooltip":"§7作§f覆蓋板§7時§7限制§f§f流體§7的流量。", - "item.gtceu.fluid_cell":"流體單元", - "item.gtceu.fluid_detector_cover":"流體探測覆蓋板", - "item.gtceu.fluid_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f流體儲量§7發出紅石訊號。", - "item.gtceu.fluid_filter":"流體過濾卡", - "item.gtceu.fluid_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§流體§7的輸入/輸出。", - "item.gtceu.fluid_filter.tooltip.1":"§7亦可用於§f電動泵§7與§f流體調節器§7。", - "item.gtceu.fluid_tag_filter":"流體標籤過濾卡", - "item.gtceu.fluid_tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f流體標籤§7過濾§f流體§7的輸入/輸出。", - "item.gtceu.fluid_tag_filter.tooltip.1":"§7亦可用於§f電動泵§7與§f流體調節器§7。", - "item.gtceu.fluid_voiding_cover":"流體銷毀覆蓋板", - "item.gtceu.fluid_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時允許銷毀§f流體§7。", - "item.gtceu.fluid_voiding_cover.tooltip.1":"§7加裝後使用§f軟錘§7啟用", - "item.gtceu.foam_sprayer.tooltip.0":"§7噴射建築泡沫", - "item.gtceu.foam_sprayer.tooltip.1":"右擊框架來給框架噴塗泡沫", - "item.gtceu.foam_sprayer.tooltip.2":"泡沫可以染色", - "item.gtceu.foil_extruder_mold":"擠壓模具(箔)", - "item.gtceu.foil_extruder_mold.tooltip":"§7用來製作箔的擠壓模具", - "item.gtceu.fullers_earth_dust":"漂白土", - "item.gtceu.garnet_sand_dust":"石榴石砂", - "item.gtceu.gear_casting_mold":"鑄造模具(齒輪)", - "item.gtceu.gear_casting_mold.small.tooltip":"§7用來製作小型齒輪的鑄造模具", - "item.gtceu.gear_casting_mold.tooltip":"§7用來製作齒輪的鑄造模具", - "item.gtceu.gear_extruder_mold":"擠壓模具(齒輪)", - "item.gtceu.gear_extruder_mold.tooltip":"§7用來製作齒輪的擠壓模具", - "item.gtceu.gear_small_extruder_mold.tooltip":"§7用來製作小型齒輪的擠壓模具", - "item.gtceu.gelled_toluene":"膠凝甲苯", - "item.gtceu.gelled_toluene.tooltip":"§7炸藥原料", - "item.gtceu.glass_gem":"玻璃晶體", - "item.gtceu.glass_plate":"玻璃板", - "item.gtceu.glass_tube":"玻璃管", - "item.gtceu.glass_vial":"玻璃試管", - "item.gtceu.glauconite_sand_dust":"海綠石砂", - "item.gtceu.good_electronic_circuit":"優質電子電路", - "item.gtceu.good_electronic_circuit.tooltip.0":"§7你的第二塊電路", - "item.gtceu.good_electronic_circuit.tooltip.1":"§cMV級電路", - "item.gtceu.good_integrated_circuit":"優質積體電路", - "item.gtceu.good_integrated_circuit.tooltip.0":"§7更小也更強", - "item.gtceu.good_integrated_circuit.tooltip.1":"§6MV級電路", - "item.gtceu.granitic_mineral_sand_dust":"花崗岩礦砂", - "item.gtceu.gravi_star":"重力之星", - "item.gtceu.gravi_star.tooltip":"§7終極地獄之星", - "item.gtceu.gravitation_engine_unit":"重力引擎單元", - "item.gtceu.gray_dye_spray_can":"噴漆罐(灰色)", - "item.gtceu.gray_glass_lens":"玻璃透鏡(灰色)", - "item.gtceu.green_dye_spray_can":"噴漆罐(綠色)", - "item.gtceu.green_glass_lens":"玻璃透鏡(綠色)", - "item.gtceu.hammer_extruder_mold.tooltip":"§7用來製作錘的擠壓模具", - "item.gtceu.hazmat_boots":"防護衣靴子", - "item.gtceu.hazmat_chestpiece":"防護衣胸甲", - "item.gtceu.hazmat_headpiece":"防護衣頭盔", - "item.gtceu.hazmat_leggings":"防護衣護腿", - "item.gtceu.highly_advanced_soc":"HASoC", - "item.gtceu.highly_advanced_soc.tooltip":"§7高度先進的系統級晶片", - "item.gtceu.highly_advanced_soc_wafer":"HASoC晶圓", - "item.gtceu.highly_advanced_soc_wafer.tooltip":"§7高度先進的電路原料", - "item.gtceu.hoe_extruder_mold.tooltip":"§7用來製作鋤的擠壓模具", - "item.gtceu.hpic_chip":"HPIC晶片", - "item.gtceu.hpic_chip.tooltip":"§7高功率積體電路", - "item.gtceu.hpic_wafer":"HPIC晶圓", - "item.gtceu.hpic_wafer.tooltip":"§7高功率積體電路原料", - "item.gtceu.huge_pipe_extruder_mold":"擠壓模具(巨型管道)", - "item.gtceu.hv_battery_hull":"大型電池外殼", - "item.gtceu.hv_battery_hull.tooltip":"§7一個空的§6HV§7電池外殼", - "item.gtceu.hv_cadmium_battery":"大型鎘電池", - "item.gtceu.hv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_conveyor_module":"§6HV§r傳送帶", - "item.gtceu.hv_electric_motor":"§6HV§r電動馬達", - "item.gtceu.hv_electric_piston":"§6HV§r電力活塞", - "item.gtceu.hv_electric_pump":"§6HV§r電動泵", - "item.gtceu.hv_emitter":"§6HV§r發射器", - "item.gtceu.hv_field_generator":"§6HV§r力場發生器", - "item.gtceu.hv_fluid_regulator":"§6HV§r流體調節器", - "item.gtceu.hv_item_magnet":"§6HV§r物品磁鐵", - "item.gtceu.hv_lithium_battery":"大型鋰電池", - "item.gtceu.hv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_power_unit":"§6HV§r能量單元", - "item.gtceu.hv_robot_arm":"§6HV§r機械臂", - "item.gtceu.hv_sensor":"§6HV§r感測器", - "item.gtceu.hv_sodium_battery":"大型鈉電池", - "item.gtceu.hv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.hv_solar_panel":"高壓太陽能板(§6HV§r)", - "item.gtceu.hv_voltage_coil":"高壓線圈(§6HV§r)", - "item.gtceu.hv_voltage_coil.tooltip":"高階線圈", - "item.gtceu.ice_dust":"碎冰", - "item.gtceu.ilc_chip":"IC晶片", - "item.gtceu.ilc_chip.tooltip":"§7整合邏輯電路", - "item.gtceu.ilc_wafer":"ILC晶圓", - "item.gtceu.ilc_wafer.tooltip":"§7積體電路原料", - "item.gtceu.impure_bentonite_dust":"含雜膨潤土", - "item.gtceu.impure_cassiterite_sand_dust":"含雜錫石礦砂", - "item.gtceu.impure_pitchblende_dust":"含雜瀝青鈾礦", - "item.gtceu.impure_rock_salt_dust":"含雜岩鹽", - "item.gtceu.impure_salt_dust":"含雜鹽", - "item.gtceu.impure_talc_dust":"含雜滑石", - "item.gtceu.inductor":"電感", - "item.gtceu.inductor.tooltip":"§7一個小線圈", - "item.gtceu.inert_metal_mixture_dust":"惰性金屬混合物", - "item.gtceu.infinite_water_cover":"無限水覆蓋板", - "item.gtceu.infinite_water_cover.tooltip":"§7作§f覆蓋板§7時為所附著的容器供§9水§7。", - "item.gtceu.ingot_casting_mold":"鑄造模具(錠)", - "item.gtceu.ingot_casting_mold.tooltip":"§7用來製作錠的鑄造模具", - "item.gtceu.ingot_extruder_mold":"擠壓模具(錠)", - "item.gtceu.ingot_extruder_mold.tooltip":"§7用來……等會,用熔爐不好嗎?", - "item.gtceu.invar_lighter":"殷鋼打火機", - "item.gtceu.iridium_metal_residue_dust":"銥金屬渣", - "item.gtceu.iron_minecart_wheels":"鐵礦車車輪", - "item.gtceu.item_detector_cover":"物品探測覆蓋板", - "item.gtceu.item_detector_cover.tooltip":"§7作§f覆蓋板§7時依照§f物品儲量§7發出紅石訊號。", - "item.gtceu.item_filter":"物品過濾卡", - "item.gtceu.item_filter.tooltip.0":"§7作§f覆蓋板§7時過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_smart_filter":"智慧物品過濾卡", - "item.gtceu.item_smart_filter.tooltip.0":"§7作§f覆蓋板§7時以§f機器的配方§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_smart_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_tag_filter":"物品標籤過濾卡", - "item.gtceu.item_tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f物品標籤§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.item_tag_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.item_voiding_cover":"物品銷毀覆蓋板", - "item.gtceu.item_voiding_cover.tooltip.0":"§7作§f覆蓋板§7時銷毀物品。", - "item.gtceu.item_voiding_cover.tooltip.1":"§7加裝後使用§f軟錘§7啟用", - "item.gtceu.iv_battery_hull":"中型釩電池外殼", - "item.gtceu.iv_battery_hull.tooltip":"§7一個空的§1IV§7電池外殼", - "item.gtceu.iv_conveyor_module":"§9IV§r傳送帶", - "item.gtceu.iv_electric_motor":"§9IV§r電動馬達", - "item.gtceu.iv_electric_piston":"§9IV§r電力活塞", - "item.gtceu.iv_electric_pump":"§9IV§r電動泵", - "item.gtceu.iv_emitter":"§9IV§r發射器", - "item.gtceu.iv_field_generator":"§9IV§r力場發生器", - "item.gtceu.iv_fluid_regulator":"§9IV§r流體調節器", - "item.gtceu.iv_power_unit":"§9IV§r能量單元", - "item.gtceu.iv_robot_arm":"§9IV§r機械臂", - "item.gtceu.iv_sensor":"§9IV§r感測器", - "item.gtceu.iv_solar_panel":"強導壓太陽能板(§9IV§r)", - "item.gtceu.iv_vanadium_battery":"中型釩電池", - "item.gtceu.iv_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.iv_voltage_coil":"強導壓線圈(§9IV§r)", - "item.gtceu.iv_voltage_coil.tooltip":"精英線圈", - "item.gtceu.lapotron_crystal":"蘭波頓水晶", - "item.gtceu.lapotron_crystal.tooltip":"§7可充電電池", - "item.gtceu.lapotronic_energy_orb":"蘭波頓能量球", - "item.gtceu.lapotronic_energy_orb.tooltip":"§7可充電電池", - "item.gtceu.lapotronic_energy_orb_cluster":"蘭波頓能量球簇", - "item.gtceu.lapotronic_energy_orb_cluster.tooltip":"§7可充電電池", - "item.gtceu.large_pipe_extruder_mold":"擠壓模具(大型管道)", - "item.gtceu.light_blue_dye_spray_can":"噴漆罐(淺藍色)", - "item.gtceu.light_blue_glass_lens":"玻璃透鏡(淺藍色)", - "item.gtceu.light_gray_dye_spray_can":"噴漆罐(淺灰色)", - "item.gtceu.light_gray_glass_lens":"玻璃透鏡(淺灰色)", - "item.gtceu.lime_dye_spray_can":"噴漆罐(淺綠色)", - "item.gtceu.lime_glass_lens":"玻璃透鏡(淺綠色)", - "item.gtceu.liquid_fuel_jetpack":"液體燃料噴射背包", - "item.gtceu.long_rod_extruder_mold":"擠壓模具(長桿)", - "item.gtceu.long_treated_wood_rod":"長防腐木棍", - "item.gtceu.long_wood_rod":"長木棍", - "item.gtceu.lpic_chip":"LPIC晶片", - "item.gtceu.lpic_chip.tooltip":"§7低功率積體電路", - "item.gtceu.lpic_wafer":"LPIC晶圓", - "item.gtceu.lpic_wafer.tooltip":"§7低功率積體電路原料", - "item.gtceu.luv_battery_hull":"大型釩電池外殼", - "item.gtceu.luv_battery_hull.tooltip":"§7一個空的§dLuV§r電池外殼", - "item.gtceu.luv_conveyor_module":"§dLuV§r傳送帶", - "item.gtceu.luv_electric_motor":"§dLuV§r電動馬達", - "item.gtceu.luv_electric_piston":"§dLuV§r電力活塞", - "item.gtceu.luv_electric_pump":"§dLuV§r電動泵", - "item.gtceu.luv_emitter":"§dLuV§r發射器", - "item.gtceu.luv_field_generator":"§dLuV§r力場發生器", - "item.gtceu.luv_fluid_regulator":"§dLuV§r流體調節器", - "item.gtceu.luv_robot_arm":"§dLuV§r機械臂", - "item.gtceu.luv_sensor":"§dLuV§r感測器", - "item.gtceu.luv_solar_panel":"劇差壓太陽能板(§dLuV§r)", - "item.gtceu.luv_vanadium_battery":"大型釩電池", - "item.gtceu.luv_vanadium_battery.tooltip":"§7可充電電池", - "item.gtceu.luv_voltage_coil":"劇差壓線圈(§dLuV§r)", - "item.gtceu.luv_voltage_coil.tooltip":"大師線圈", - "item.gtceu.lv_battery_hull":"小型電池外殼", - "item.gtceu.lv_battery_hull.tooltip":"§7一個空的§7LV§7電池外殼", - "item.gtceu.lv_cadmium_battery":"小型鎘電池", - "item.gtceu.lv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_conveyor_module":"§7LV§r傳送帶", - "item.gtceu.lv_electric_motor":"§7LV§r電動馬達", - "item.gtceu.lv_electric_piston":"§7LV§r電力活塞", - "item.gtceu.lv_electric_pump":"§7LV§r電動泵", - "item.gtceu.lv_emitter":"§7LV§r發射器", - "item.gtceu.lv_field_generator":"§7LV§r力場發生器", - "item.gtceu.lv_fluid_regulator":"§7LV§r流體調節器", - "item.gtceu.lv_item_magnet":"§7LV§r物品磁鐵", - "item.gtceu.lv_lithium_battery":"小型鋰電池", - "item.gtceu.lv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_power_unit":"§7LV§r能量單元", - "item.gtceu.lv_robot_arm":"§7LV§r機械臂", - "item.gtceu.lv_sensor":"§7LV§r感測器", - "item.gtceu.lv_sodium_battery":"小型鈉電池", - "item.gtceu.lv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.lv_solar_panel":"低壓太陽能板(§7LV§r)", - "item.gtceu.lv_voltage_coil":"低壓線圈(§7LV§r)", - "item.gtceu.lv_voltage_coil.tooltip":"基礎線圈", - "item.gtceu.machine_controller.tooltip":"§7作§f覆蓋板§7時可以§f開/關§7機器。", - "item.gtceu.machine_controller_cover":"機器控制覆蓋板", - "item.gtceu.machine_memory_card":"機器記憶卡", - "item.gtceu.magenta_dye_spray_can":"噴漆罐(洋紅色)", - "item.gtceu.magenta_glass_lens":"玻璃透鏡(洋紅色)", - "item.gtceu.maintenance_detector_cover":"維護探測覆蓋板", - "item.gtceu.mask_filter":"防毒面具過濾罐", - "item.gtceu.matchbox":"火柴盒", - "item.gtceu.matches":"火柴", - "item.gtceu.max_battery":"終極電池", - "item.gtceu.max_battery.tooltip":"§7填滿就能通關Minecraft", - "item.gtceu.max_voltage_coil.tooltip":"至高線圈", - "item.gtceu.meat_dust":"肉末", - "item.gtceu.micro_processor":"微型處理器", - "item.gtceu.micro_processor.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor.tooltip.1":"§eMV級電路", - "item.gtceu.micro_processor_assembly":"微型處理器叢集", - "item.gtceu.micro_processor_assembly.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_assembly.tooltip.1":"§eHV級電路", - "item.gtceu.micro_processor_computer":"微型處理器超級電腦", - "item.gtceu.micro_processor_computer.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_computer.tooltip.1":"§eEV級電路", - "item.gtceu.micro_processor_mainframe":"微型處理器主機", - "item.gtceu.micro_processor_mainframe.tooltip.0":"§7運算速度驚人!", - "item.gtceu.micro_processor_mainframe.tooltip.1":"§eIV級電路", - "item.gtceu.microchip_processor":"微晶片處理器", - "item.gtceu.microchip_processor.tooltip.0":"§7卓越的基礎電路", - "item.gtceu.microchip_processor.tooltip.1":"§eLV級電路", - "item.gtceu.mpic_chip":"MPIC晶片", - "item.gtceu.mpic_chip.tooltip":"§7功率積體電路", - "item.gtceu.mpic_wafer":"MPIC晶圓", - "item.gtceu.mpic_wafer.tooltip":"§7功率積體電路原料", - "item.gtceu.multilayer_fiber_reinforced_circuit_board":"多層纖維強化電路基板", - "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip":"§7精英電路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board":"多層纖維強化印刷電路基板", - "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip":"§7精英級電路基板", - "item.gtceu.mv_battery_hull":"中型電池外殼", - "item.gtceu.mv_battery_hull.tooltip":"§7一個空的§bMV§7電池外殼", - "item.gtceu.mv_cadmium_battery":"中型鎘電池", - "item.gtceu.mv_cadmium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_conveyor_module":"§bMV§r傳送帶", - "item.gtceu.mv_electric_motor":"§bMV§r電動馬達", - "item.gtceu.mv_electric_piston":"§bMV§r電力活塞", - "item.gtceu.mv_electric_pump":"§bMV§r電動泵", - "item.gtceu.mv_emitter":"§bMV§r發射器", - "item.gtceu.mv_field_generator":"§bMV§r力場發生器", - "item.gtceu.mv_fluid_regulator":"§bMV§r流體調節器", - "item.gtceu.mv_lithium_battery":"中型鋰電池", - "item.gtceu.mv_lithium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_power_unit":"§bMV§r能量單元", - "item.gtceu.mv_robot_arm":"§bMV§r機械臂", - "item.gtceu.mv_sensor":"§bMV§r感測器", - "item.gtceu.mv_sodium_battery":"中型鈉電池", - "item.gtceu.mv_sodium_battery.tooltip":"§7可充電電池", - "item.gtceu.mv_solar_panel":"中壓太陽能板(§bMV§r)", - "item.gtceu.mv_voltage_coil":"中壓線圈(§bMV§r)", - "item.gtceu.mv_voltage_coil.tooltip":"優質線圈", - "item.gtceu.name_casting_mold":"鑄造模具(命名)", - "item.gtceu.name_casting_mold.tooltip":"§7用來在衝壓機床中為物品命名的鑄造模具(用鐵砧重新命名鑄造模具)", - "item.gtceu.nan_certificate":"不再是菜鳥的證明", - "item.gtceu.nan_certificate.tooltip":"已接受挑戰!", - "item.gtceu.nand_chip":"NAND晶片", - "item.gtceu.nand_chip.tooltip.0":"§7卓越的簡單電路", - "item.gtceu.nand_chip.tooltip.1":"§6ULV級電路", - "item.gtceu.nand_memory_chip":"NAND儲存器晶片", - "item.gtceu.nand_memory_chip.tooltip":"§7與非邏輯閘", - "item.gtceu.nand_memory_wafer":"NAND儲存器晶圓", - "item.gtceu.nand_memory_wafer.tooltip":"§7邏輯閘原料", - "item.gtceu.nano_cpu_chip":"奈米CPU晶片", - "item.gtceu.nano_cpu_chip.tooltip":"§7奈米中央處理器", - "item.gtceu.nano_cpu_wafer":"奈米CPU晶圓", - "item.gtceu.nano_cpu_wafer.tooltip":"§7奈米電路原料", - "item.gtceu.nano_processor":"奈米處理器", - "item.gtceu.nano_processor.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor.tooltip.1":"§bHV級電路", - "item.gtceu.nano_processor_assembly":"奈米處理器叢集", - "item.gtceu.nano_processor_assembly.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_assembly.tooltip.1":"§bEV級電路", - "item.gtceu.nano_processor_computer":"奈米處理器超級電腦", - "item.gtceu.nano_processor_computer.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_computer.tooltip.1":"§bIV級電路", - "item.gtceu.nano_processor_mainframe":"奈米處理器主機", - "item.gtceu.nano_processor_mainframe.tooltip.0":"§7比小更小", - "item.gtceu.nano_processor_mainframe.tooltip.1":"§bLuV級電路", - "item.gtceu.nano_saber":"奈米劍", - "item.gtceu.nano_saber.tooltip":"§7嚐嚐龍神之劍!", - "item.gtceu.nanomuscle_boots":"奈米肌體™套裝靴子", - "item.gtceu.nanomuscle_chestplate":"奈米肌體™套裝胸甲", - "item.gtceu.nanomuscle_helmet":"奈米肌體™套裝頭盔", - "item.gtceu.nanomuscle_leggings":"奈米肌體™套裝護腿", - "item.gtceu.naquadah_boule":"矽岩摻雜的單晶矽", - "item.gtceu.naquadah_boule.tooltip":"§7電路原料", - "item.gtceu.naquadah_wafer":"矽岩摻雜的晶圓", - "item.gtceu.naquadah_wafer.tooltip":"§7電路原料", - "item.gtceu.neuro_processing_unit":"神經處理單元", - "item.gtceu.neuro_processing_unit.tooltip":"§7神經CPU", - "item.gtceu.neutron_reflector":"銥中子反射板", - "item.gtceu.neutron_reflector.tooltip":"§7堅不可摧", - "item.gtceu.neutronium_boule":"中子素摻雜的單晶矽", - "item.gtceu.neutronium_boule.tooltip":"§7電路原料", - "item.gtceu.neutronium_wafer":"中子素摻雜的晶圓", - "item.gtceu.neutronium_wafer.tooltip":"§7電路原料", - "item.gtceu.nightvision_goggles":"夜視鏡", - "item.gtceu.nor_memory_chip":"NOR儲存器晶片", - "item.gtceu.nor_memory_chip.tooltip":"§7或非邏輯閘", - "item.gtceu.nor_memory_wafer":"NOR儲存器晶圓", - "item.gtceu.nor_memory_wafer.tooltip":"§7邏輯閘原料", - "item.gtceu.normal_pipe_extruder_mold":"擠壓模具(普通管道)", - "item.gtceu.nugget_casting_mold":"鑄造模具(粒)", - "item.gtceu.nugget_casting_mold.tooltip":"§7用來製作粒的鑄造模具", - "item.gtceu.opv_conveyor_module":"§9§lOpV§r傳送帶", - "item.gtceu.opv_electric_motor":"§9§lOpV§r電動馬達", - "item.gtceu.opv_electric_piston":"§9§lOpV§r電力活塞", - "item.gtceu.opv_electric_pump":"§9§lOpV§r電動泵", - "item.gtceu.opv_emitter":"§9OpV§r發射器", - "item.gtceu.opv_field_generator":"§9§lOpV§r力場發生器", - "item.gtceu.opv_fluid_regulator":"§9§lOpV§r流體調節器", - "item.gtceu.opv_robot_arm":"§9§lOpV§r機械臂", - "item.gtceu.opv_sensor":"§9§lOpV§r感測器", - "item.gtceu.opv_voltage_coil.tooltip":"傳奇線圈", - "item.gtceu.orange_dye_spray_can":"噴漆罐(橙色)", - "item.gtceu.orange_glass_lens":"玻璃透鏡(橙色)", - "item.gtceu.palladium_raw_dust":"粗鈀粉", - "item.gtceu.paper_dust":"紙屑", - "item.gtceu.paracetamol_pill":"對乙醯氨基酚藥片", - "item.gtceu.petri_dish":"培養皿", - "item.gtceu.petri_dish.tooltip":"§7用來培育細胞", - "item.gtceu.phenolic_circuit_board":"酚醛樹脂電路基板", - "item.gtceu.phenolic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.phenolic_printed_circuit_board":"酚醛樹脂印刷電路基板", - "item.gtceu.phenolic_printed_circuit_board.tooltip":"§7優質電路基板", - "item.gtceu.phosphorus_boule":"磷摻雜的單晶矽", - "item.gtceu.phosphorus_boule.tooltip":"§7電路原料", - "item.gtceu.phosphorus_wafer":"磷摻雜的晶圓", - "item.gtceu.phosphorus_wafer.tooltip":"§7電路原料", - "item.gtceu.pickaxe_extruder_mold.tooltip":"§7用來製作鎬的擠壓模具", - "item.gtceu.pill_casting_mold":"鑄造模具(藥片)", - "item.gtceu.pink_dye_spray_can":"噴漆罐(粉紅色)", - "item.gtceu.pink_glass_lens":"玻璃透鏡(粉紅色)", - "item.gtceu.pipe.huge_extruder_mold.tooltip":"§7用來製作佔據整個方塊的管道的擠壓模具", - "item.gtceu.pipe.large_extruder_mold.tooltip":"§7用來製作大型管道的擠壓模具", - "item.gtceu.pipe.normal_extruder_mold.tooltip":"§7用來製作管道的擠壓模具", - "item.gtceu.pipe.small_extruder_mold.tooltip":"§7用來製作小型管道的擠壓模具", - "item.gtceu.pipe.tiny_extruder_mold.tooltip":"§7用來製作微型管道的擠壓模具", - "item.gtceu.pitchblende_dust":"瀝青鈾礦", - "item.gtceu.plant_ball":"植物球", - "item.gtceu.plastic_circuit_board":"塑膠電路基板", - "item.gtceu.plastic_circuit_board.tooltip":"§7更好的基板", - "item.gtceu.plastic_printed_circuit_board":"塑膠印刷電路基板", - "item.gtceu.plastic_printed_circuit_board.tooltip":"§7優質電路基板", - "item.gtceu.plate_casting_mold":"鑄造模具(板)", - "item.gtceu.plate_casting_mold.tooltip":"§7用來製作板的鑄造模具", - "item.gtceu.plate_extruder_mold":"擠壓模具(板)", - "item.gtceu.plate_extruder_mold.tooltip":"§7用來製作板的擠壓模具", - "item.gtceu.platinum_group_sludge_dust":"鉑系礦泥", - "item.gtceu.platinum_lighter":"鉑打火機", - "item.gtceu.platinum_raw_dust":"粗鉑粉", - "item.gtceu.platinum_sludge_residue_dust":"鉑泥渣", - "item.gtceu.portable_debug_scanner":"行動式掃描器", - "item.gtceu.portable_scanner":"行動式掃描器", - "item.gtceu.power_thruster":"電力推進器", - "item.gtceu.programmed_circuit":"程式設計電路", - "item.gtceu.programmed_circuit.tooltip.0":"右擊開啟設定頁面", - "item.gtceu.programmed_circuit.tooltip.1":"潛行右擊有虛擬電路槽的", - "item.gtceu.programmed_circuit.tooltip.2":"機器,將其設定為本電路", - "item.gtceu.programmed_circuit.tooltip.3":"的值。", - "item.gtceu.prospector.hv":"進階探礦儀(§6HV§r)", - "item.gtceu.prospector.luv":"超級探礦儀(§dLuV§r)", - "item.gtceu.prospector.lv":"探礦儀(§7LV§r)", - "item.gtceu.pure_bentonite_dust":"純淨膨潤土", - "item.gtceu.pure_cassiterite_sand_dust":"純淨錫石礦砂", - "item.gtceu.pure_pitchblende_dust":"純淨瀝青鈾礦", - "item.gtceu.pure_rock_salt_dust":"純淨岩鹽", - "item.gtceu.pure_salt_dust":"純淨鹽", - "item.gtceu.pure_talc_dust":"純淨滑石", - "item.gtceu.purified_bentonite_ore":"純淨膨潤土", - "item.gtceu.purified_cassiterite_sand_ore":"純淨錫石礦砂", - "item.gtceu.purified_pitchblende_ore":"純淨瀝青鈾礦", - "item.gtceu.purified_talc_ore":"純淨滑石", - "item.gtceu.purple_drink":"紫色飲料", - "item.gtceu.purple_dye_spray_can":"噴漆罐(紫色)", - "item.gtceu.purple_glass_lens":"玻璃透鏡(紫色)", - "item.gtceu.qbit_cpu_chip":"量子位CPU晶片", - "item.gtceu.qbit_cpu_chip.tooltip":"§7量子位中央處理器", - "item.gtceu.qbit_cpu_wafer":"量子位CPU晶圓", - "item.gtceu.qbit_cpu_wafer.tooltip":"§7量子位電路原料", - "item.gtceu.quantum_eye":"量子之眼", - "item.gtceu.quantum_eye.tooltip":"§7改良的終界之眼", - "item.gtceu.quantum_processor":"量子處理器", - "item.gtceu.quantum_processor.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor.tooltip.1":"§aEV級電路", - "item.gtceu.quantum_processor_assembly":"量子處理器叢集", - "item.gtceu.quantum_processor_assembly.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_assembly.tooltip.1":"§aIV級電路", - "item.gtceu.quantum_processor_computer":"量子處理器超級電腦", - "item.gtceu.quantum_processor_computer.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_computer.tooltip.1":"§aLuV級電路", - "item.gtceu.quantum_processor_mainframe":"量子處理器主機", - "item.gtceu.quantum_processor_mainframe.tooltip.0":"§7量子計算終成現實!", - "item.gtceu.quantum_processor_mainframe.tooltip.1":"§aZPM級電路", - "item.gtceu.quantum_star":"量子之星", - "item.gtceu.quantum_star.tooltip":"§7改良的地獄之星", - "item.gtceu.quarktech_boots":"夸克科技™套裝靴子", - "item.gtceu.quarktech_chestplate":"夸克科技™套裝胸甲", - "item.gtceu.quarktech_helmet":"夸克科技™套裝頭盔", - "item.gtceu.quarktech_leggings":"夸克科技™套裝護腿", - "item.gtceu.quartz_sand_dust":"石英砂", - "item.gtceu.rad_away_pill":"消輻寧™藥片", - "item.gtceu.ram_chip":"RAM晶片", - "item.gtceu.ram_chip.tooltip":"§7隨機存取儲存器", - "item.gtceu.ram_wafer":"RAM晶圓", - "item.gtceu.ram_wafer.tooltip":"§7記憶體原料", - "item.gtceu.rare_earth_dust":"稀土", - "item.gtceu.rarest_metal_mixture_dust":"稀有金屬混合物", - "item.gtceu.raw_crystal_chip":"晶體晶片原料", - "item.gtceu.raw_crystal_chip.tooltip":"§7晶體處理器原料", - "item.gtceu.raw_crystal_chip_parts":"晶體晶片部件原料", - "item.gtceu.raw_crystal_chip_parts.tooltip":"§7晶體處理器部件原料", - "item.gtceu.red_dye_spray_can":"噴漆罐(紅色)", - "item.gtceu.red_glass_lens":"玻璃透鏡(紅色)", - "item.gtceu.refined_bentonite_ore":"精煉膨潤土", - "item.gtceu.refined_cassiterite_sand_ore":"精煉錫石礦砂", - "item.gtceu.refined_pitchblende_ore":"精煉瀝青鈾礦", - "item.gtceu.refined_talc_ore":"精煉滑石", - "item.gtceu.resin_circuit_board":"覆膜電路基板", - "item.gtceu.resin_circuit_board.tooltip":"§7電路的基底", - "item.gtceu.resin_printed_circuit_board":"覆膜印刷電路基板", - "item.gtceu.resin_printed_circuit_board.tooltip":"§7基礎電路基板", - "item.gtceu.resistor":"電阻", - "item.gtceu.resistor.tooltip":"§7基礎電子元件", - "item.gtceu.ring_extruder_mold":"擠壓模具(環)", - "item.gtceu.ring_extruder_mold.tooltip":"§7用來製作環的擠壓模具", - "item.gtceu.robot.arm.tooltip":"作§f覆蓋板§7時限制§f物品§7到特定數量。", - "item.gtceu.rock_salt_dust":"岩鹽", - "item.gtceu.rod_extruder_mold":"擠壓模具(桿)", - "item.gtceu.rod_extruder_mold.tooltip":"§7用來製作桿的擠壓模具", - "item.gtceu.rod_long_extruder_mold.tooltip":"§7用來製作長桿的擠壓模具", - "item.gtceu.rotor_casting_mold":"鑄造模具(轉子)", - "item.gtceu.rotor_casting_mold.tooltip":"§7用來製作轉子的鑄造模具", - "item.gtceu.rotor_extruder_mold":"擠壓模具(轉子)", - "item.gtceu.rotor_extruder_mold.tooltip":"§7用來製作轉子的擠壓模具", - "item.gtceu.rubber_boat":"橡膠木船", - "item.gtceu.rubber_chest_boat":"儲物箱橡膠木船", - "item.gtceu.rubber_gloves":"橡膠手套", - "item.gtceu.salt_dust":"鹽", - "item.gtceu.saw_extruder_mold.tooltip":"§7用來製作鋸的擠壓模具", - "item.gtceu.shovel_extruder_mold.tooltip":"§7用來製作鍬的擠壓模具", - "item.gtceu.shutter_module_cover":"扇板", - "item.gtceu.shutter_module_cover.tooltip":"§7作§f覆蓋板§7時§f阻止§7機器側面的任何§f傳輸§7行為。", - "item.gtceu.silicon_boule":"單晶矽", - "item.gtceu.silicon_boule.tooltip":"§7電路原料", - "item.gtceu.silicon_wafer":"矽晶圓", - "item.gtceu.silicon_wafer.tooltip":"§7電路原料", - "item.gtceu.simple_soc":"簡易SoC", - "item.gtceu.simple_soc.tooltip":"§7簡易系統級晶片", - "item.gtceu.simple_soc_wafer":"簡易SoC晶圓", - "item.gtceu.simple_soc_wafer.tooltip":"§7簡易電路原料", - "item.gtceu.small_ash_dust":"小堆灰燼", - "item.gtceu.small_basaltic_mineral_sand_dust":"小堆玄武岩礦砂", - "item.gtceu.small_bentonite_dust":"小堆膨潤土", - "item.gtceu.small_blaze_dust":"小堆烈焰粉", - "item.gtceu.small_bone_dust":"小堆骨粉", - "item.gtceu.small_cassiterite_sand_dust":"小堆錫石礦砂", - "item.gtceu.small_dark_ash_dust":"小堆黑色灰燼", - "item.gtceu.small_fullers_earth_dust":"小堆漂白土", - "item.gtceu.small_garnet_sand_dust":"小堆石榴石砂", - "item.gtceu.small_gear_casting_mold":"鑄造模具(小型齒輪)", - "item.gtceu.small_gear_extruder_mold":"擠壓模具(小型齒輪)", - "item.gtceu.small_glauconite_sand_dust":"小堆海綠石砂", - "item.gtceu.small_granitic_mineral_sand_dust":"小堆花崗岩礦砂", - "item.gtceu.small_gunpowder_dust":"小堆火藥", - "item.gtceu.small_ice_dust":"小堆碎冰", - "item.gtceu.small_inert_metal_mixture_dust":"小堆惰性金屬混合物", - "item.gtceu.small_iridium_metal_residue_dust":"小堆銥金屬渣", - "item.gtceu.small_meat_dust":"小堆肉末", - "item.gtceu.small_palladium_raw_dust":"小堆粗鈀粉", - "item.gtceu.small_paper_dust":"小堆紙屑", - "item.gtceu.small_pipe_extruder_mold":"擠壓模具(小型管道)", - "item.gtceu.small_pitchblende_dust":"小堆瀝青鈾礦", - "item.gtceu.small_platinum_group_sludge_dust":"小堆鉑系礦泥", - "item.gtceu.small_platinum_raw_dust":"小堆粗鉑粉", - "item.gtceu.small_platinum_sludge_residue_dust":"小堆鉑泥渣", - "item.gtceu.small_quartz_sand_dust":"小堆石英砂", - "item.gtceu.small_rare_earth_dust":"小堆稀土", - "item.gtceu.small_rarest_metal_mixture_dust":"小堆稀有金屬混合物", - "item.gtceu.small_rock_salt_dust":"小堆岩鹽", - "item.gtceu.small_salt_dust":"小堆鹽", - "item.gtceu.small_sugar_dust":"小堆糖", - "item.gtceu.small_talc_dust":"小堆滑石", - "item.gtceu.small_treated_wood_dust":"小堆防腐木漿", - "item.gtceu.small_wheat_dust":"小堆麵粉", - "item.gtceu.small_wood_dust":"小堆木漿", - "item.gtceu.smd_capacitor":"貼片電容", - "item.gtceu.smd_capacitor.tooltip":"§7電子元件", - "item.gtceu.smd_diode":"貼片二極體", - "item.gtceu.smd_diode.tooltip":"§7電子元件", - "item.gtceu.smd_inductor":"貼片電感", - "item.gtceu.smd_inductor.tooltip":"§7電子元件", - "item.gtceu.smd_resistor":"貼片電阻", - "item.gtceu.smd_resistor.tooltip":"§7電子元件", - "item.gtceu.smd_transistor":"貼片電晶體", - "item.gtceu.smd_transistor.tooltip":"§7電子元件", - "item.gtceu.soc":"SoC", - "item.gtceu.soc.tooltip":"§7系統級晶片", - "item.gtceu.soc_wafer":"SoC晶圓", - "item.gtceu.soc_wafer.tooltip":"§7基礎電路原料", - "item.gtceu.solar_panel":"太陽能板", - "item.gtceu.solar_panel.tooltip.0":"§7願太陽與你同在。", - "item.gtceu.solar_panel.tooltip.1":"§7作§f覆蓋板§7時利用§e太陽§7生產§f能量§7。", - "item.gtceu.solvent_spray_can":"噴漆罐(溶劑)", - "item.gtceu.stainless_steel_fluid_cell":"不鏽鋼單元", - "item.gtceu.steel_fluid_cell":"鋼單元", - "item.gtceu.steel_minecart_wheels":"鋼礦車車輪", - "item.gtceu.stem_cells":"幹細胞", - "item.gtceu.stem_cells.tooltip":"§7智慧原料", - "item.gtceu.sticky_resin":"黏性樹脂", - "item.gtceu.storage_cover":"儲存覆蓋板", - "item.gtceu.sugar_gem":"方糖", - "item.gtceu.sus_record":"音樂唱片", - "item.gtceu.sus_record.desc":"可疑!", - "item.gtceu.sword_extruder_mold.tooltip":"§7用來製作劍刃的擠壓模具", - "item.gtceu.tag_filter.tooltip.0":"§7作§f覆蓋板§7時以§f礦物詞典§7過濾§f物品§7的輸入/輸出。", - "item.gtceu.tag_filter.tooltip.1":"§7亦可用於§f傳送帶§7與§f機械臂§7。", - "item.gtceu.talc_dust":"滑石", - "item.gtceu.tantalum_capacitor":"鉭電容", - "item.gtceu.terminal":"終端", - "item.gtceu.terminal.tooltip":"潛行右擊多方塊控制器以自動搭建此多方塊結構", - "item.gtceu.tiny_ash_dust":"小撮灰燼", - "item.gtceu.tiny_basaltic_mineral_sand_dust":"小撮玄武岩礦砂", - "item.gtceu.tiny_bentonite_dust":"小撮膨潤土", - "item.gtceu.tiny_blaze_dust":"小撮烈焰粉", - "item.gtceu.tiny_bone_dust":"小撮骨粉", - "item.gtceu.tiny_cassiterite_sand_dust":"小撮錫石礦砂", - "item.gtceu.tiny_dark_ash_dust":"小撮黑色灰燼", - "item.gtceu.tiny_fullers_earth_dust":"小撮漂白土", - "item.gtceu.tiny_garnet_sand_dust":"小撮石榴石砂", - "item.gtceu.tiny_glauconite_sand_dust":"小撮海綠石砂", - "item.gtceu.tiny_granitic_mineral_sand_dust":"小撮花崗岩礦砂", - "item.gtceu.tiny_gunpowder_dust":"小撮火藥", - "item.gtceu.tiny_ice_dust":"小撮碎冰", - "item.gtceu.tiny_inert_metal_mixture_dust":"小撮惰性金屬混合物", - "item.gtceu.tiny_iridium_metal_residue_dust":"小撮銥金屬渣", - "item.gtceu.tiny_meat_dust":"小撮肉末", - "item.gtceu.tiny_palladium_raw_dust":"小撮粗鈀粉", - "item.gtceu.tiny_paper_dust":"小撮紙屑", - "item.gtceu.tiny_pipe_extruder_mold":"擠壓模具(微型管道)", - "item.gtceu.tiny_pitchblende_dust":"小撮瀝青鈾礦", - "item.gtceu.tiny_platinum_group_sludge_dust":"小撮鉑系礦泥", - "item.gtceu.tiny_platinum_raw_dust":"小撮粗鉑粉", - "item.gtceu.tiny_platinum_sludge_residue_dust":"小撮鉑泥渣", - "item.gtceu.tiny_quartz_sand_dust":"小撮石英砂", - "item.gtceu.tiny_rare_earth_dust":"小撮稀土", - "item.gtceu.tiny_rarest_metal_mixture_dust":"小撮稀有金屬混合物", - "item.gtceu.tiny_rock_salt_dust":"小撮岩鹽", - "item.gtceu.tiny_salt_dust":"小撮鹽", - "item.gtceu.tiny_sugar_dust":"小撮糖", - "item.gtceu.tiny_talc_dust":"小撮滑石", - "item.gtceu.tiny_treated_wood_dust":"小撮防腐木漿", - "item.gtceu.tiny_wheat_dust":"小撮麵粉", - "item.gtceu.tiny_wood_dust":"小撮木漿", - "item.gtceu.titanium_fluid_cell":"鈦單元", - "item.gtceu.tool.aoe.columns":"行", - "item.gtceu.tool.aoe.layers":"層", - "item.gtceu.tool.aoe.rows":"列", - "item.gtceu.tool.axe":"%s斧", - "item.gtceu.tool.behavior.aoe_mining":"§5作用範圍:§f%sx%sx%s", - "item.gtceu.tool.behavior.block_rotation":"§2精械師傅:§f旋轉方塊", - "item.gtceu.tool.behavior.crop_harvesting":"§a莊稼收割:§f收穫成熟的作物", - "item.gtceu.tool.behavior.damage_boost":"§4傷害增益:§f對%s造成額外傷害", - "item.gtceu.tool.behavior.grass_path":"§e園林策劃:§f製造草徑", - "item.gtceu.tool.behavior.ground_tilling":"§e耕地農夫:§f耕耘土地", - "item.gtceu.tool.behavior.plunger":"§9水管工人:§f清除流體", - "item.gtceu.tool.behavior.rail_rotation":"§e鐵路技工:§f旋轉軌道", - "item.gtceu.tool.behavior.relocate_mining":"§2磁力吸引:§f採掘的方塊進入物品欄", - "item.gtceu.tool.behavior.remove_wax":"§6清潔試劑:§f脫蠟", - "item.gtceu.tool.behavior.scrape":"§b拋光工藝:§f除鏽", - "item.gtceu.tool.behavior.shield_disable":"§c野獸蠻攻:§f無視盾牌", - "item.gtceu.tool.behavior.silk_ice":"§b切冰利刃:§f絲綢之觸採集冰塊", - "item.gtceu.tool.behavior.strip_log":"§5林業工匠:§f剝去原木的表皮", - "item.gtceu.tool.behavior.torch_place":"§e洞窟探客:§f右擊放置火把", - "item.gtceu.tool.behavior.tree_felling":"§4伐木好手:§f連鎖砍樹", - "item.gtceu.tool.butchery_knife":"%s屠刀", - "item.gtceu.tool.butchery_knife.tooltip":"§8攻擊速度較慢", - "item.gtceu.tool.buzzsaw":"%s圓鋸(§7LV§r)", - "item.gtceu.tool.buzzsaw.tooltip":"§8並不適合用來採掘方塊", - "item.gtceu.tool.crowbar":"%s撬棍", - "item.gtceu.tool.crowbar.tooltip":"§8卸下覆蓋板", - "item.gtceu.tool.ev_drill":"%s電鑽(§5EV§r)", - "item.gtceu.tool.file":"%s銼", - "item.gtceu.tool.hammer":"%s鍛造錘", - "item.gtceu.tool.hammer.tooltip":"§8錘碎而非採掘方塊", - "item.gtceu.tool.harvest_level.0":"§8木", - "item.gtceu.tool.harvest_level.1":"§7石頭", - "item.gtceu.tool.harvest_level.2":"§a鐵", - "item.gtceu.tool.harvest_level.3":"§b鑽石", - "item.gtceu.tool.harvest_level.4":"§d獄髓", - "item.gtceu.tool.harvest_level.5":"§9鏗鈾", - "item.gtceu.tool.harvest_level.6":"§c中子素", - "item.gtceu.tool.hoe":"%s鋤", - "item.gtceu.tool.hv_chainsaw":"%s鏈鋸(§6HV§r)", - "item.gtceu.tool.hv_drill":"%s電鑽(§6HV§r)", - "item.gtceu.tool.hv_wirecutter":"%s剪線鉗(§6HV§r)", - "item.gtceu.tool.hv_wrench":"%s扳手(§6HV§r)", - "item.gtceu.tool.hv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.iv_drill":"%s電鑽(§9IV§r)", - "item.gtceu.tool.iv_wirecutter":"%s剪線鉗(§9IV§r)", - "item.gtceu.tool.iv_wrench":"%s扳手(§9IV§r)", - "item.gtceu.tool.iv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.knife":"%s刀", - "item.gtceu.tool.lighter.platinum.tooltip":"§7上面刻著一位知名的惡作劇大師", - "item.gtceu.tool.lv_chainsaw":"%s鏈鋸(§7LV§r)", - "item.gtceu.tool.lv_drill":"%s電鑽(§7LV§r)", - "item.gtceu.tool.lv_screwdriver":"%s螺絲起子(§7LV§r)", - "item.gtceu.tool.lv_screwdriver.tooltip":"§8調整覆蓋板和機器", - "item.gtceu.tool.lv_wirecutter":"%s剪線鉗(§7LV§r)", - "item.gtceu.tool.lv_wrench":"%s扳手(§7LV§r)", - "item.gtceu.tool.lv_wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.tool.mallet":"%s軟錘", - "item.gtceu.tool.mallet.tooltip.0":"§8潛行以在當前配方完成後暫停機器。", - "item.gtceu.tool.mallet.tooltip.1":"§8關/開機", - "item.gtceu.tool.matchbox.tooltip":"§7別把它當成玩具車了", - "item.gtceu.tool.mining_hammer":"%s採礦錘", - "item.gtceu.tool.mining_hammer.tooltip":"§8一次性開採大片區域(除非你蹲下)", - "item.gtceu.tool.mortar":"%s研缽", - "item.gtceu.tool.mv_chainsaw":"%s鏈鋸(§bMV§r)", - "item.gtceu.tool.mv_drill":"%s電鑽(§bMV§r)", - "item.gtceu.tool.pickaxe":"%s鎬", - "item.gtceu.tool.plunger":"%s搋子", - "item.gtceu.tool.plunger.tooltip":"§8從機器中抽除流體", - "item.gtceu.tool.replace_tool_head":"在合成欄用新的工具頭替換", - "item.gtceu.tool.rolling_pin":"%s擀麵棍", - "item.gtceu.tool.saw":"%s鋸", - "item.gtceu.tool.screwdriver":"%s螺絲起子", - "item.gtceu.tool.screwdriver.tooltip":"§8調整覆蓋板和機器", - "item.gtceu.tool.scythe":"%s鐮刀", - "item.gtceu.tool.scythe.tooltip":"§8因為鐮刀(scythe)沒有意義(sense)", - "item.gtceu.tool.shears":"%s剪刀", - "item.gtceu.tool.shovel":"%s鍬", - "item.gtceu.tool.spade":"%s鏟", - "item.gtceu.tool.spade.tooltip":"§8一次性開採大片區域(除非你蹲下)", - "item.gtceu.tool.sword":"%s劍", - "item.gtceu.tool.tooltip.attack_damage":"§c攻擊傷害§r:%s", - "item.gtceu.tool.tooltip.attack_speed":"§9攻擊速度§r:%s", - "item.gtceu.tool.tooltip.crafting_uses":"§a合成耐久度§r:%s", - "item.gtceu.tool.tooltip.general_uses":"§b耐久度§r:%s", - "item.gtceu.tool.tooltip.harvest_level":"§e採掘等級:%s", - "item.gtceu.tool.tooltip.harvest_level_extra":"§e採掘等級:%s§f(%s§f)", - "item.gtceu.tool.tooltip.max_uses":"§e最大耐久度§r:%s", - "item.gtceu.tool.tooltip.mining_speed":"§d採掘速度§r:%s", - "item.gtceu.tool.tooltip.repair_info":"§8按住SHIFT顯示修復詳情", - "item.gtceu.tool.tooltip.repair_material":"§8修復材料§r:§f§a%s", - "item.gtceu.tool.usable_as":"§8可用作§r:§f%s", - "item.gtceu.tool.wire_cutter":"%s剪線鉗", - "item.gtceu.tool.wrench":"%s扳手", - "item.gtceu.tool.wrench.tooltip":"§8按住左鍵以拆卸機器", - "item.gtceu.transistor":"電晶體", - "item.gtceu.transistor.tooltip":"§7基礎電子元件", - "item.gtceu.treated_wood_boat":"防腐木船", - "item.gtceu.treated_wood_bolt":"短防腐木棍", - "item.gtceu.treated_wood_chest_boat":"儲物箱防腐木船", - "item.gtceu.treated_wood_dust":"防腐木漿", - "item.gtceu.treated_wood_plate":"防腐木材", - "item.gtceu.treated_wood_rod":"防腐木棍", - "item.gtceu.tungsten_grinding_head":"鎢研磨頭", - "item.gtceu.tungsten_steel_fluid_cell":"鎢鋼單元", - "item.gtceu.turbine_rotor":"渦輪轉子", - "item.gtceu.turbine_rotor.tooltip":"供渦輪機使用的渦輪轉子", - "item.gtceu.uev_conveyor_module":"§aUEV§r傳送帶", - "item.gtceu.uev_electric_motor":"§aUEV§r電動馬達", - "item.gtceu.uev_electric_piston":"§aUEV§r電力活塞", - "item.gtceu.uev_electric_pump":"§aUEV§r電動泵", - "item.gtceu.uev_emitter":"§aUEV§r發射器", - "item.gtceu.uev_field_generator":"§aUEV§r力場發生器", - "item.gtceu.uev_fluid_regulator":"§aUEV§r流體調節器", - "item.gtceu.uev_robot_arm":"§aUEV§r機械臂", - "item.gtceu.uev_sensor":"§aUEV§r感測器", - "item.gtceu.uev_voltage_coil.tooltip":"超凡線圈", - "item.gtceu.uhpic_chip":"UHPIC晶片", - "item.gtceu.uhpic_chip.tooltip":"§7超高功率積體電路", - "item.gtceu.uhpic_wafer":"UHPIC晶圓", - "item.gtceu.uhpic_wafer.tooltip":"§7超高功率積體電路原料", - "item.gtceu.uhv_conveyor_module":"§4UHV§r傳送帶", - "item.gtceu.uhv_electric_motor":"§4UHV§r電動馬達", - "item.gtceu.uhv_electric_piston":"§4UHV§r電力活塞", - "item.gtceu.uhv_electric_pump":"§4UHV§r電動泵", - "item.gtceu.uhv_emitter":"§4UHV§r發射器", - "item.gtceu.uhv_field_generator":"§4UHV§r力場發生器", - "item.gtceu.uhv_fluid_regulator":"§4UHV§r流體調節器", - "item.gtceu.uhv_robot_arm":"§4UHV§r機械臂", - "item.gtceu.uhv_sensor":"§4UHV§r感測器", - "item.gtceu.uhv_voltage_coil.tooltip":"極致線圈", - "item.gtceu.uiv_conveyor_module":"§2UIV§r傳送帶", - "item.gtceu.uiv_electric_motor":"§2UIV§r電動馬達", - "item.gtceu.uiv_electric_piston":"§2UIV§r電力活塞", - "item.gtceu.uiv_electric_pump":"§2UIV§r電動泵", - "item.gtceu.uiv_emitter":"§2UIV§r發射器", - "item.gtceu.uiv_field_generator":"§2UIV§r力場發生器", - "item.gtceu.uiv_fluid_regulator":"§2UIV§r流體調節器", - "item.gtceu.uiv_robot_arm":"§2UIV§r機械臂", - "item.gtceu.uiv_sensor":"§2UIV§r感測器", - "item.gtceu.uiv_voltage_coil.tooltip":"瘋狂線圈", - "item.gtceu.ulpic_chip":"ULPIC晶片", - "item.gtceu.ulpic_chip.tooltip":"§7超低功率積體電路", - "item.gtceu.ulpic_wafer":"ULPIC晶圓", - "item.gtceu.ulpic_wafer.tooltip":"§7超低功率積體電路原料", - "item.gtceu.ulv_solar_panel":"超低壓太陽能板(§8ULV§r)", - "item.gtceu.ulv_tantalum_battery.tooltip":"§7可充電電池", - "item.gtceu.ulv_voltage_coil":"超低壓線圈(§8ULV§r)", - "item.gtceu.ulv_voltage_coil.tooltip":"初級線圈", - "item.gtceu.universal_fluid_cell":"通用單元", - "item.gtceu.uv_battery_hull":"大型超能矽岩電池外殼", - "item.gtceu.uv_battery_hull.tooltip":"§7一個空的§3UV§7電池外殼", - "item.gtceu.uv_conveyor_module":"§3UV§r傳送帶", - "item.gtceu.uv_electric_motor":"§3UV§r電動馬達", - "item.gtceu.uv_electric_piston":"§3UV§r電力活塞", - "item.gtceu.uv_electric_pump":"§3UV§r電動泵", - "item.gtceu.uv_emitter":"§3UV§r發射器", - "item.gtceu.uv_field_generator":"§3UV§r力場發生器", - "item.gtceu.uv_fluid_regulator":"§3UV§r流體調節器", - "item.gtceu.uv_naquadria_battery":"大型超能矽岩電池", - "item.gtceu.uv_naquadria_battery.tooltip":"§7可充電電池", - "item.gtceu.uv_robot_arm":"§3UV§r機械臂", - "item.gtceu.uv_sensor":"§3UV§r感測器", - "item.gtceu.uv_solar_panel":"極限壓太陽能板(§3UV§r)", - "item.gtceu.uv_voltage_coil":"極限壓線圈(§3UV§r)", - "item.gtceu.uv_voltage_coil.tooltip":"終極線圈", - "item.gtceu.uxv_conveyor_module":"§eUXV§r傳送帶", - "item.gtceu.uxv_electric_motor":"§eUXV§r電動馬達", - "item.gtceu.uxv_electric_piston":"§eUXV§r電力活塞", - "item.gtceu.uxv_electric_pump":"§eUXV§r§r電動泵", - "item.gtceu.uxv_emitter":"§eUXV§r發射器", - "item.gtceu.uxv_field_generator":"§eUXV§r力場發生器", - "item.gtceu.uxv_fluid_regulator":"§eUXV§r流體調節器", - "item.gtceu.uxv_robot_arm":"§eUXV§r機械臂", - "item.gtceu.uxv_sensor":"§eUXV§r感測器", - "item.gtceu.uxv_voltage_coil.tooltip":"史詩線圈", - "item.gtceu.vacuum_tube":"真空管", - "item.gtceu.vacuum_tube.tooltip.0":"§7技術上是二極體", - "item.gtceu.vacuum_tube.tooltip.1":"§cULV等級", - "item.gtceu.wetware_circuit_board":"溼件電路基板", - "item.gtceu.wetware_circuit_board.tooltip":"§7維生之板", - "item.gtceu.wetware_printed_circuit_board":"溼件印刷電路基板", - "item.gtceu.wetware_printed_circuit_board.tooltip":"§7維生之板", - "item.gtceu.wetware_processor":"溼件處理器", - "item.gtceu.wetware_processor.tooltip.0":"§7祂在看我嗎?", - "item.gtceu.wetware_processor.tooltip.1":"§4LuV級電路", - "item.gtceu.wetware_processor_assembly":"溼件處理器叢集", - "item.gtceu.wetware_processor_assembly.tooltip.0":"§7可以玩Minecraft", - "item.gtceu.wetware_processor_assembly.tooltip.1":"§4ZPM級電路", - "item.gtceu.wetware_processor_computer":"溼件處理器超級電腦", - "item.gtceu.wetware_processor_computer.tooltip.0":"§7肉體與機器的終極結合", - "item.gtceu.wetware_processor_computer.tooltip.1":"§4UV級電路", - "item.gtceu.wetware_processor_mainframe":"溼件處理器主機", - "item.gtceu.wetware_processor_mainframe.tooltip.0":"§7千載獨步,惟公一人", - "item.gtceu.wetware_processor_mainframe.tooltip.1":"§4UHV級電路", - "item.gtceu.wheat_dust":"麵粉", - "item.gtceu.white_dye_spray_can":"噴漆罐(白色)", - "item.gtceu.wire_extruder_mold":"擠壓模具(導線)", - "item.gtceu.wire_extruder_mold.tooltip":"§7用來製作導線的擠壓模具", - "item.gtceu.wood_bolt":"短木棍", - "item.gtceu.wood_dust":"木漿", - "item.gtceu.wood_plate":"木板", - "item.gtceu.yellow_dye_spray_can":"噴漆罐(黃色)", - "item.gtceu.yellow_glass_lens":"玻璃透鏡(黃色)", - "item.gtceu.zero_point_module":"零點模組", - "item.gtceu.zpm_battery_hull":"中型超能矽岩電池外殼", - "item.gtceu.zpm_battery_hull.tooltip":"§7一個空的§fZPM§7電池外殼", - "item.gtceu.zpm_conveyor_module":"§cZPM§r傳送帶", - "item.gtceu.zpm_electric_motor":"§cZPM§r電動馬達", - "item.gtceu.zpm_electric_piston":"§cZPM§r電力活塞", - "item.gtceu.zpm_electric_pump":"§cZPM§r電動泵", - "item.gtceu.zpm_emitter":"§cZPM§r發射器", - "item.gtceu.zpm_field_generator":"§cZPM§r力場發生器", - "item.gtceu.zpm_fluid_regulator":"§cZPM§r流體調節器", - "item.gtceu.zpm_naquadria_battery":"中型超能矽岩電池", - "item.gtceu.zpm_naquadria_battery.tooltip":"§7可充電電池", - "item.gtceu.zpm_robot_arm":"§cZPM§r機械臂", - "item.gtceu.zpm_sensor":"§cZPM§r感測器", - "item.gtceu.zpm_solar_panel":"零點壓太陽能板(§cZPM§r)", - "item.gtceu.zpm_voltage_coil":"零點壓線圈(§cZPM§r)", - "item.gtceu.zpm_voltage_coil.tooltip":"超級線圈", - "item.invalid.name":"無效物品", - "item.netherrack_nether_quartz":"地獄石英礦", - "item.toggle.advanced.info.tooltip":"§8<按住Shift查閱已儲存設定資訊>", - "itemGroup.gtceu.decoration":"格雷科技 | 裝飾方塊", - "itemGroup.gtceu.item":"格雷科技 | 物品", - "itemGroup.gtceu.machine":"格雷科技 | 機器", - "itemGroup.gtceu.material_block":"格雷科技 | 材料-方塊", - "itemGroup.gtceu.material_fluid":"格雷科技 | 材料-流體容器", - "itemGroup.gtceu.material_item":"格雷科技 | 材料-物品", - "itemGroup.gtceu.material_pipe":"格雷科技 | 材料-管道", - "itemGroup.gtceu.tool":"格雷科技 | 工具", - "ldlib.gui.editor.register.editor.gtceu.mui":"機器UI專案", - "ldlib.gui.editor.register.editor.gtceu.rtui":"配方型別UI專案", - "ldlib.gui.editor.register.editor.gtceu.template_tab":"模板", - "mataarmor.hud.supply_mode":"供能模式:%s", - "material.gtceu.acetic_acid":"乙酸", - "material.gtceu.acetic_anhydride":"乙酸酐", - "material.gtceu.acetone":"丙酮", - "material.gtceu.acidic_bromine_exhaust":"酸性溴廢氣", - "material.gtceu.acidic_bromine_solution":"酸性溴溶液", - "material.gtceu.acidic_enriched_naquadah_solution":"酸性富集矽岩溶液", - "material.gtceu.acidic_naquadria_solution":"酸性超能矽岩溶液", - "material.gtceu.acidic_osmium_solution":"酸性鋨溶液", - "material.gtceu.actinium":"錒", - "material.gtceu.activated_carbon":"活性炭", - "material.gtceu.agar":"瓊脂", - "material.gtceu.air":"空氣", - "material.gtceu.allyl_chloride":"烯丙基氯", - "material.gtceu.almandine":"鐵鋁榴石", - "material.gtceu.aluminium":"鋁", - "material.gtceu.aluminium_sulfite":"亞硫酸鋁", - "material.gtceu.alunite":"明礬石", - "material.gtceu.americium":"鋂", - "material.gtceu.amethyst":"紫水晶", - "material.gtceu.aminophenol":"氨基苯酚", - "material.gtceu.ammonia":"氨", - "material.gtceu.ammonium_chloride":"氯化銨", - "material.gtceu.ammonium_formate":"甲酸銨", - "material.gtceu.andesite":"安山岩", - "material.gtceu.andradite":"鈣鐵榴石", - "material.gtceu.annealed_copper":"退火銅", - "material.gtceu.antimony":"銻", - "material.gtceu.antimony_trifluoride":"三氟化銻", - "material.gtceu.antimony_trioxide":"三氧化二銻", - "material.gtceu.apatite":"磷灰石", - "material.gtceu.aqua_regia":"王水", - "material.gtceu.argon":"氬", - "material.gtceu.arsenic":"砷", - "material.gtceu.arsenic_trioxide":"三氧化二砷", - "material.gtceu.asbestos":"石棉", - "material.gtceu.ash":"灰燼", - "material.gtceu.astatine":"砈", - "material.gtceu.bacteria":"細菌", - "material.gtceu.bacterial_sludge":"細菌漿液", - "material.gtceu.barite":"重晶石", - "material.gtceu.barium":"鋇", - "material.gtceu.barium_sulfide":"硫化鋇", - "material.gtceu.basalt":"玄武岩", - "material.gtceu.basaltic_mineral_sand":"玄武岩礦砂", - "material.gtceu.bastnasite":"氟碳鑭鈰", - "material.gtceu.battery_alloy":"電池合金", - "material.gtceu.bauxite":"鋁土", - "material.gtceu.bentonite":"膨潤土", - "material.gtceu.benzene":"苯", - "material.gtceu.berkelium":"鉳", - "material.gtceu.beryllium":"鈹", - "material.gtceu.bio_diesel":"生物柴油", - "material.gtceu.biomass":"生物質", - "material.gtceu.biotite":"黑雲母", - "material.gtceu.biphenyl":"聯苯", - "material.gtceu.bismuth":"鉍", - "material.gtceu.bismuth_bronze":"鉍青銅", - "material.gtceu.bisphenol_a":"雙酚A", - "material.gtceu.black_bronze":"黑青銅", - "material.gtceu.black_dye":"黑色染料", - "material.gtceu.black_steel":"黑鋼", - "material.gtceu.blackstone":"黑石", - "material.gtceu.blaze":"烈焰", - "material.gtceu.blue_alloy":"藍色合金", - "material.gtceu.blue_dye":"藍色染料", - "material.gtceu.blue_steel":"藍鋼", - "material.gtceu.blue_topaz":"藍黃玉", - "material.gtceu.bohrium":"釒波", - "material.gtceu.bone":"骨頭", - "material.gtceu.borax":"硼砂", - "material.gtceu.bornite":"斑銅", - "material.gtceu.boron":"硼", - "material.gtceu.borosilicate_glass":"硼矽玻璃", - "material.gtceu.brass":"黃銅", - "material.gtceu.brick":"磚", - "material.gtceu.brominated_chlorine_vapor":"溴化氯蒸氣", - "material.gtceu.bromine":"溴", - "material.gtceu.bronze":"青銅", - "material.gtceu.brown_dye":"棕色染料", - "material.gtceu.butadiene":"丁二烯", - "material.gtceu.butane":"丁烷", - "material.gtceu.butene":"丁烯", - "material.gtceu.butyraldehyde":"丁醛", - "material.gtceu.cadmium":"鎘", - "material.gtceu.caesium":"銫", - "material.gtceu.calcite":"方解石", - "material.gtceu.calcium":"鈣", - "material.gtceu.calcium_carbonate":"碳酸鈣", - "material.gtceu.calcium_chloride":"氯化鈣", - "material.gtceu.calcium_ferrocyanide":"亞鐵氰化鈣", - "material.gtceu.calcium_hydroxide":"氫氧化鈣", - "material.gtceu.calcium_phosphide":"磷化鈣", - "material.gtceu.californium":"鉲", - "material.gtceu.caprolactam":"己內醯胺", - "material.gtceu.carbon":"碳", - "material.gtceu.carbon_dioxide":"二氧化碳", - "material.gtceu.carbon_monoxide":"一氧化碳", - "material.gtceu.cassiterite":"錫石", - "material.gtceu.cassiterite_sand":"錫石礦砂", - "material.gtceu.cerium":"鈰", - "material.gtceu.certus_quartz":"賽特斯石英", - "material.gtceu.cetane_boosted_diesel":"高十六烷值柴油", - "material.gtceu.chalcocite":"輝銅", - "material.gtceu.chalcopyrite":"黃銅", - "material.gtceu.charcoal":"木炭", - "material.gtceu.charcoal_byproducts":"木炭副產物", - "material.gtceu.chlorine":"氯", - "material.gtceu.chlorobenzene":"氯苯", - "material.gtceu.chloroform":"氯仿", - "material.gtceu.chloromethane":"氯甲烷", - "material.gtceu.chromite":"鉻鐵", - "material.gtceu.chromium":"鉻", - "material.gtceu.chromium_trioxide":"三氧化鉻", - "material.gtceu.cinnabar":"硃砂", - "material.gtceu.clay":"黏土", - "material.gtceu.coal":"煤炭", - "material.gtceu.coal_gas":"煤氣", - "material.gtceu.coal_tar":"煤焦油", - "material.gtceu.cobalt":"鈷", - "material.gtceu.cobalt_brass":"鈷黃銅", - "material.gtceu.cobalt_oxide":"氧化鈷", - "material.gtceu.cobaltite":"輝鈷", - "material.gtceu.cocoa":"可可", - "material.gtceu.coke":"焦煤", - "material.gtceu.collagen":"膠原", - "material.gtceu.concentrated_bromine_solution":"濃溴溶液", - "material.gtceu.concrete":"混凝土", - "material.gtceu.construction_foam":"建築泡沫", - "material.gtceu.cooperite":"謝爾頓", - "material.gtceu.copernicium":"鎶", - "material.gtceu.copper":"銅", - "material.gtceu.creosote":"雜酚油", - "material.gtceu.cumene":"異丙苯", - "material.gtceu.cupric_oxide":"氧化銅", - "material.gtceu.cupronickel":"白銅", - "material.gtceu.curium":"鋦", - "material.gtceu.cyan_dye":"青色染料", - "material.gtceu.cyclohexane":"環己烷", - "material.gtceu.cyclohexanone_oxime":"環己酮肟", - "material.gtceu.damascus_steel":"大馬士革鋼", - "material.gtceu.dark_ash":"黑色灰燼", - "material.gtceu.darmstadtium":"鐽", - "material.gtceu.debrominated_brine":"脫溴滷水", - "material.gtceu.deepslate":"深板岩", - "material.gtceu.depleted_uranium_hexafluoride":"枯竭六氟化鈾", - "material.gtceu.deuterium":"氘", - "material.gtceu.diaminobenzidine":"二氨基聯苯胺", - "material.gtceu.diamond":"鑽石", - "material.gtceu.diatomite":"矽藻土", - "material.gtceu.dichlorobenzene":"二氯苯", - "material.gtceu.dichlorobenzidine":"二氯聯苯胺", - "material.gtceu.dichloroethane":"二氯乙烷", - "material.gtceu.diesel":"柴油", - "material.gtceu.diethylenetriamine":"二乙烯三胺", - "material.gtceu.diethylenetriamine_pentaacetonitrile":"二乙烯三胺五乙腈", - "material.gtceu.diethylenetriaminepentaacetic_acid":"二乙烯三胺五乙酸", - "material.gtceu.diluted_hydrochloric_acid":"稀鹽酸", - "material.gtceu.diluted_sulfuric_acid":"稀硫酸", - "material.gtceu.dimethylamine":"二甲胺", - "material.gtceu.dimethylbenzene":"二甲苯", - "material.gtceu.dimethyldichlorosilane":"二甲基二氯矽烷", - "material.gtceu.dimethylhydrazine":"二甲基肼", - "material.gtceu.dinitrogen_tetroxide":"四氧化二氮", - "material.gtceu.diorite":"閃長岩", - "material.gtceu.diphenyl_isophthalate":"間苯二甲酸二苯酯", - "material.gtceu.dissolved_calcium_acetate":"乙酸鈣溶液", - "material.gtceu.distilled_water":"蒸餾水", - "material.gtceu.drilling_fluid":"鑽井液", - "material.gtceu.dubnium":"釒杜", - "material.gtceu.duranium":"鏗鈾", - "material.gtceu.dysprosium":"鏑", - "material.gtceu.echo_shard":"回聲碎片", - "material.gtceu.einsteinium":"鑀", - "material.gtceu.electrotine":"藍石", - "material.gtceu.electrum":"琥珀金", - "material.gtceu.emerald":"綠寶石", - "material.gtceu.ender_air":"終界空氣", - "material.gtceu.ender_eye":"終界之眼", - "material.gtceu.ender_pearl":"終界珍珠", - "material.gtceu.endstone":"終界石", - "material.gtceu.enriched_bacterial_sludge":"富集細菌漿液", - "material.gtceu.enriched_naquadah":"富集矽岩", - "material.gtceu.enriched_naquadah_solution":"富集矽岩溶液", - "material.gtceu.enriched_naquadah_sulfate":"硫酸富集矽岩", - "material.gtceu.enriched_naquadah_trinium_europium_duranide":"富集矽岩凱金銪鏗鈾合金", - "material.gtceu.enriched_naquadah_waste":"富集矽岩廢液", - "material.gtceu.enriched_uranium_hexafluoride":"富集六氟化鈾", - "material.gtceu.epichlorohydrin":"環氧氯丙烷", - "material.gtceu.epoxy":"環氧樹脂", - "material.gtceu.erbium":"鉺", - "material.gtceu.ethane":"乙烷", - "material.gtceu.ethanol":"乙醇", - "material.gtceu.ethenone":"乙烯酮", - "material.gtceu.ethyl_tertbutyl_ether":"乙基叔丁基醚", - "material.gtceu.ethylbenzene":"乙苯", - "material.gtceu.ethylene":"乙烯", - "material.gtceu.europium":"銪", - "material.gtceu.fermented_biomass":"發酵生物質", - "material.gtceu.fermium":"鐨", - "material.gtceu.ferrite_mixture":"鐵氧體混合物", - "material.gtceu.ferrosilite":"鐵輝石", - "material.gtceu.fireclay":"耐火黏土", - "material.gtceu.fish_oil":"魚油", - "material.gtceu.flerovium":"鈇", - "material.gtceu.flint":"燧石", - "material.gtceu.fluorine":"氟", - "material.gtceu.fluoroantimonic_acid":"氟銻酸", - "material.gtceu.formaldehyde":"甲醛", - "material.gtceu.formamide":"甲醯胺", - "material.gtceu.formic_acid":"甲酸", - "material.gtceu.francium":"鍅", - "material.gtceu.fullers_earth":"漂白土", - "material.gtceu.gadolinium":"釓", - "material.gtceu.galena":"方鉛", - "material.gtceu.gallium":"鎵", - "material.gtceu.gallium_arsenide":"砷化鎵", - "material.gtceu.gallium_sulfide":"硫化鎵", - "material.gtceu.garnet_sand":"石榴石砂", - "material.gtceu.garnierite":"矽鎂鎳", - "material.gtceu.gasoline":"汽油", - "material.gtceu.gelatin":"明膠", - "material.gtceu.gelatin_mixture":"明膠混合物", - "material.gtceu.germanium":"鍺", - "material.gtceu.glass":"玻璃", - "material.gtceu.glauconite_sand":"海綠石砂", - "material.gtceu.glowstone":"螢石", - "material.gtceu.glue":"膠水", - "material.gtceu.glycerol":"甘油", - "material.gtceu.glyceryl_trinitrate":"硝酸甘油", - "material.gtceu.glycolonitrile":"乙腈", - "material.gtceu.goethite":"針鐵", - "material.gtceu.gold":"金", - "material.gtceu.granite":"花崗岩", - "material.gtceu.granite_red":"紅花崗岩", - "material.gtceu.granitic_mineral_sand":"花崗岩礦砂", - "material.gtceu.graphene":"石墨烯", - "material.gtceu.graphite":"石墨", - "material.gtceu.gray_dye":"灰色染料", - "material.gtceu.green_dye":"綠色染料", - "material.gtceu.green_sapphire":"綠色藍寶石", - "material.gtceu.green_sapphire_slurry":"綠色藍寶石漿液", - "material.gtceu.grossular":"鈣鋁榴石", - "material.gtceu.gunpowder":"火藥", - "material.gtceu.gypsum":"石膏", - "material.gtceu.hafnium":"鉿", - "material.gtceu.hassium":"釒黑", - "material.gtceu.hastelloy_c_276":"哈斯特洛依合金 C-276", - "material.gtceu.hastelloy_x":"哈斯特洛依合金-X", - "material.gtceu.heavy_fuel":"重燃油", - "material.gtceu.helium":"氦", - "material.gtceu.helium_3":"氦-3", - "material.gtceu.hematite":"赤鐵", - "material.gtceu.high_octane_gasoline":"高辛烷值汽油", - "material.gtceu.holmium":"鈥", - "material.gtceu.hot_alkaline_debrominated_brine":"熱鹼性脫溴滷水", - "material.gtceu.hot_brine":"熱滷水", - "material.gtceu.hot_chlorinated_brominated_brine":"熱氯化溴滷水", - "material.gtceu.hot_debrominated_brine":"熱脫溴滷水", - "material.gtceu.hsla_steel":"HSLA鋼", - "material.gtceu.hsse":"高速鋼-E", - "material.gtceu.hssg":"高速鋼-G", - "material.gtceu.hsss":"高速鋼-S", - "material.gtceu.hydro_cracked_butadiene":"加氫裂解丁二烯", - "material.gtceu.hydro_cracked_butane":"加氫裂解丁烷", - "material.gtceu.hydro_cracked_butene":"加氫裂解丁烯", - "material.gtceu.hydro_cracked_ethane":"加氫裂解乙烷", - "material.gtceu.hydro_cracked_ethylene":"加氫裂解乙烯", - "material.gtceu.hydro_cracked_propane":"加氫裂解丙烷", - "material.gtceu.hydro_cracked_propene":"加氫裂解丙烯", - "material.gtceu.hydrochloric_acid":"鹽酸", - "material.gtceu.hydrofluoric_acid":"氫氟酸", - "material.gtceu.hydrogen":"氫", - "material.gtceu.hydrogen_cyanide":"氰化氫", - "material.gtceu.hydrogen_iodide":"碘化氫", - "material.gtceu.hydrogen_sulfide":"硫化氫", - "material.gtceu.hypochlorous_acid":"次氯酸", - "material.gtceu.ice":"冰", - "material.gtceu.ilmenite":"鈦鐵", - "material.gtceu.impure_enriched_naquadah_solution":"含雜富集矽岩溶液", - "material.gtceu.impure_naquadria_solution":"含雜超能矽岩溶液", - "material.gtceu.incoloy_ma_956":"耐熱鉻鐵合金 MA-956", - "material.gtceu.indium":"銦", - "material.gtceu.indium_concentrate":"銦富集溶液", - "material.gtceu.indium_gallium_phosphide":"磷化銦鎵", - "material.gtceu.indium_phosphide":"磷化銦", - "material.gtceu.indium_tin_barium_titanium_cuprate":"銦錫鋇鈦銅氧合金", - "material.gtceu.inert_metal_mixture":"惰性金屬混合物", - "material.gtceu.invar":"殷鋼", - "material.gtceu.iodine":"碘", - "material.gtceu.iridium":"銥", - "material.gtceu.iridium_chloride":"氯化銥", - "material.gtceu.iridium_metal_residue":"銥金屬渣", - "material.gtceu.iron":"鐵", - "material.gtceu.iron_ii_chloride":"氯化亞鐵", - "material.gtceu.iron_iii_chloride":"氯化鐵", - "material.gtceu.isoprene":"異戊二烯", - "material.gtceu.kanthal":"坎塔爾合金", - "material.gtceu.krypton":"氪", - "material.gtceu.kyanite":"藍晶石", - "material.gtceu.lanthanum":"鑭", - "material.gtceu.lapis":"青金石", - "material.gtceu.lapotron":"蘭波頓", - "material.gtceu.lava":"熔岩", - "material.gtceu.lawrencium":"鐒", - "material.gtceu.lazurite":"藍金石", - "material.gtceu.lead":"鉛", - "material.gtceu.lead_zinc_solution":"鉛鋅溶液", - "material.gtceu.lepidolite":"鋰雲母", - "material.gtceu.light_blue_dye":"淺藍色染料", - "material.gtceu.light_fuel":"輕燃油", - "material.gtceu.light_gray_dye":"淺灰色染料", - "material.gtceu.lightly_hydro_cracked_gas":"輕度加氫裂解煉油氣", - "material.gtceu.lightly_hydro_cracked_heavy_fuel":"輕度加氫裂解重燃油", - "material.gtceu.lightly_hydro_cracked_light_fuel":"輕度加氫裂解輕燃油", - "material.gtceu.lightly_hydro_cracked_naphtha":"輕度加氫裂解石腦油", - "material.gtceu.lightly_steam_cracked_gas":"輕度蒸汽裂解煉油氣", - "material.gtceu.lightly_steam_cracked_heavy_fuel":"輕度蒸汽裂解重燃油", - "material.gtceu.lightly_steam_cracked_light_fuel":"輕度蒸汽裂解輕燃油", - "material.gtceu.lightly_steam_cracked_naphtha":"輕度蒸汽裂解石腦油", - "material.gtceu.lime_dye":"淺綠色染料", - "material.gtceu.liquid_air":"液態空氣", - "material.gtceu.liquid_ender_air":"液態終界空氣", - "material.gtceu.liquid_nether_air":"液態地獄空氣", - "material.gtceu.lithium":"鋰", - "material.gtceu.lithium_chloride":"氯化鋰", - "material.gtceu.livermorium":"鉝", - "material.gtceu.lpg":"液化石油氣", - "material.gtceu.lubricant":"潤滑油", - "material.gtceu.lutetium":"鎦", - "material.gtceu.magenta_dye":"洋紅色染料", - "material.gtceu.magnalium":"鎂鋁合金", - "material.gtceu.magnesia":"氧化鎂", - "material.gtceu.magnesite":"菱鎂", - "material.gtceu.magnesium":"鎂", - "material.gtceu.magnesium_chloride":"氯化鎂", - "material.gtceu.magnesium_diboride":"二硼化鎂", - "material.gtceu.magnetic_iron":"磁化鐵", - "material.gtceu.magnetic_neodymium":"磁化釹", - "material.gtceu.magnetic_samarium":"磁化釤", - "material.gtceu.magnetic_steel":"磁化鋼", - "material.gtceu.magnetite":"磁鐵", - "material.gtceu.malachite":"孔雀石", - "material.gtceu.manganese":"錳", - "material.gtceu.manganese_phosphide":"磷化錳", - "material.gtceu.maraging_steel_300":"麻時效鋼-300", - "material.gtceu.marble":"大理石", - "material.gtceu.massicot":"鉛黃", - "material.gtceu.mc_guffium_239":"麥高芬-239", - "material.gtceu.meat":"肉", - "material.gtceu.meitnerium":"䥑", - "material.gtceu.mendelevium":"鍆", - "material.gtceu.mercury":"汞", - "material.gtceu.mercury_barium_calcium_cuprate":"汞鋇鈣銅氧化物", - "material.gtceu.metal_mixture":"金屬混合物", - "material.gtceu.methane":"甲烷", - "material.gtceu.methanol":"甲醇", - "material.gtceu.methyl_acetate":"乙酸甲酯", - "material.gtceu.mica":"雲母", - "material.gtceu.milk":"牛奶", - "material.gtceu.mirabilite":"芒硝", - "material.gtceu.molybdenite":"輝鉬", - "material.gtceu.molybdenum":"鉬", - "material.gtceu.molybdenum_disilicide":"二矽化鉬", - "material.gtceu.monazite":"獨居石", - "material.gtceu.monochloramine":"氯胺", - "material.gtceu.moscovium":"鏌", - "material.gtceu.mutagen":"誘變劑", - "material.gtceu.naphtha":"石腦油", - "material.gtceu.naphthalene":"萘", - "material.gtceu.naquadah":"矽岩", - "material.gtceu.naquadah_alloy":"矽岩合金", - "material.gtceu.naquadria":"超能矽岩", - "material.gtceu.naquadria_solution":"超能矽岩溶液", - "material.gtceu.naquadria_sulfate":"硫酸超能矽岩", - "material.gtceu.naquadria_waste":"超能矽岩廢液", - "material.gtceu.natural_gas":"天然氣", - "material.gtceu.neodymium":"釹", - "material.gtceu.neon":"氖", - "material.gtceu.neptunium":"錼", - "material.gtceu.nether_air":"地獄空氣", - "material.gtceu.nether_quartz":"地獄石英", - "material.gtceu.nether_star":"地獄之星", - "material.gtceu.netherite":"獄髓", - "material.gtceu.netherrack":"地獄岩", - "material.gtceu.neutronium":"中子素", - "material.gtceu.nichrome":"鎳鉻合金", - "material.gtceu.nickel":"鎳", - "material.gtceu.nickel_zinc_ferrite":"鎳鋅鐵氧體", - "material.gtceu.nihonium":"鉨", - "material.gtceu.niobium":"鈮", - "material.gtceu.niobium_nitride":"氮化鈮", - "material.gtceu.niobium_titanium":"鈮鈦合金", - "material.gtceu.nitration_mixture":"硝酸混酸", - "material.gtceu.nitric_acid":"硝酸", - "material.gtceu.nitric_oxide":"一氧化氮", - "material.gtceu.nitrobenzene":"硝基苯", - "material.gtceu.nitrochlorobenzene":"硝基氯苯", - "material.gtceu.nitrogen":"氮", - "material.gtceu.nitrogen_dioxide":"二氧化氮", - "material.gtceu.nitrosyl_chloride":"亞硝醯氯", - "material.gtceu.nitrous_oxide":"一氧化二氮", - "material.gtceu.nobelium":"鍩", - "material.gtceu.obsidian":"黑曜石", - "material.gtceu.octane":"辛烷", - "material.gtceu.oganesson":"氣奧", - "material.gtceu.oil":"石油", - "material.gtceu.oil_heavy":"重油", - "material.gtceu.oil_light":"輕油", - "material.gtceu.oil_medium":"原油", - "material.gtceu.oilsands":"油砂", - "material.gtceu.olivine":"橄欖石", - "material.gtceu.opal":"貓眼石", - "material.gtceu.orange_dye":"橙色染料", - "material.gtceu.osmiridium":"銥鋨合金", - "material.gtceu.osmium":"鋨", - "material.gtceu.osmium_tetroxide":"四氧化鋨", - "material.gtceu.oxygen":"氧", - "material.gtceu.palladium":"鈀", - "material.gtceu.palladium_raw":"粗鈀", - "material.gtceu.paper":"紙", - "material.gtceu.paracetamol":"對乙醯氨基酚", - "material.gtceu.pcb_coolant":"多氯聯苯冷卻液 ", - "material.gtceu.pentlandite":"鎳黃鐵", - "material.gtceu.perlite":"珍珠岩", - "material.gtceu.phenol":"苯酚", - "material.gtceu.phosphate":"磷酸鹽", - "material.gtceu.phosphoric_acid":"磷酸", - "material.gtceu.phosphorus":"磷", - "material.gtceu.phosphorus_pentoxide":"五氧化二磷", - "material.gtceu.phthalic_acid":"鄰苯二甲酸", - "material.gtceu.pink_dye":"粉紅色染料", - "material.gtceu.pitchblende":"瀝青鈾", - "material.gtceu.platinum":"鉑", - "material.gtceu.platinum_group_sludge":"鉑系礦泥", - "material.gtceu.platinum_raw":"粗鉑", - "material.gtceu.platinum_sludge_residue":"鉑泥渣", - "material.gtceu.plutonium":"鈽", - "material.gtceu.plutonium_241":"鈽-241", - "material.gtceu.pollucite":"銫榴石", - "material.gtceu.polonium":"釙", - "material.gtceu.polybenzimidazole":"聚苯並咪唑", - "material.gtceu.polycaprolactam":"聚己內醯胺", - "material.gtceu.polychlorinated_biphenyl":"多氯聯苯", - "material.gtceu.polydimethylsiloxane":"聚二甲基矽氧烷", - "material.gtceu.polyethylene":"聚乙烯", - "material.gtceu.polyphenylene_sulfide":"聚苯硫醚", - "material.gtceu.polytetrafluoroethylene":"聚四氟乙烯", - "material.gtceu.polyvinyl_acetate":"聚乙酸乙烯酯", - "material.gtceu.polyvinyl_butyral":"聚乙烯醇縮丁醛", - "material.gtceu.polyvinyl_chloride":"聚氯乙烯", - "material.gtceu.potash":"鉀鹼", - "material.gtceu.potassium":"鉀", - "material.gtceu.potassium_carbonate":"碳酸鉀", - "material.gtceu.potassium_cyanide":"氰化鉀", - "material.gtceu.potassium_dichromate":"重鉻酸鉀", - "material.gtceu.potassium_feldspar":"鉀長石", - "material.gtceu.potassium_ferrocyanide":"亞鐵氰化鉀", - "material.gtceu.potassium_hydroxide":"氫氧化鉀", - "material.gtceu.potassium_iodide":"碘化鉀", - "material.gtceu.potassium_sulfate":"硫酸鉀", - "material.gtceu.potin":"粗青銅合金", - "material.gtceu.powellite":"鉬鈣", - "material.gtceu.praseodymium":"鐠", - "material.gtceu.promethium":"鉕", - "material.gtceu.propane":"丙烷", - "material.gtceu.propene":"丙烯", - "material.gtceu.protactinium":"鏷", - "material.gtceu.prussian_blue":"普魯士藍", - "material.gtceu.purple_dye":"紫色染料", - "material.gtceu.pyrite":"黃鐵", - "material.gtceu.pyrochlore":"燒綠石", - "material.gtceu.pyrolusite":"軟錳", - "material.gtceu.pyrope":"鎂鋁榴石", - "material.gtceu.quartz_sand":"石英砂", - "material.gtceu.quartzite":"石英岩", - "material.gtceu.quicklime":"生石灰", - "material.gtceu.rad_away":"消輻寧", - "material.gtceu.radium":"鐳", - "material.gtceu.radon":"氡", - "material.gtceu.rare_earth":"稀土", - "material.gtceu.rarest_metal_mixture":"稀有金屬混合物", - "material.gtceu.raw_brine":"粗鹵水", - "material.gtceu.raw_gasoline":"粗汽油", - "material.gtceu.raw_growth_medium":"培養基原液", - "material.gtceu.raw_rubber":"生橡膠", - "material.gtceu.raw_styrene_butadiene_rubber":"生丁苯橡膠", - "material.gtceu.realgar":"雄黃", - "material.gtceu.red_alloy":"紅色合金", - "material.gtceu.red_dye":"紅色染料", - "material.gtceu.red_garnet":"紅石榴石", - "material.gtceu.red_steel":"紅鋼", - "material.gtceu.redrock":"紅岩", - "material.gtceu.redstone":"紅石", - "material.gtceu.refinery_gas":"煉油氣", - "material.gtceu.reinforced_epoxy_resin":"強化環氧樹脂", - "material.gtceu.rhenium":"錸", - "material.gtceu.rhodium":"銠", - "material.gtceu.rhodium_plated_palladium":"鍍銠鈀", - "material.gtceu.rhodium_sulfate":"硫酸銠", - "material.gtceu.rock_salt":"岩鹽", - "material.gtceu.rocket_fuel":"火箭燃料", - "material.gtceu.roentgenium":"錀", - "material.gtceu.rose_gold":"玫瑰金", - "material.gtceu.rtm_alloy":"釕鎢鉬合金", - "material.gtceu.rubber":"橡膠", - "material.gtceu.rubidium":"銣", - "material.gtceu.ruby":"紅寶石", - "material.gtceu.ruby_slurry":"紅寶石漿液", - "material.gtceu.ruridit":"釕銥合金", - "material.gtceu.ruthenium":"釕", - "material.gtceu.ruthenium_tetroxide":"四氧化釕", - "material.gtceu.ruthenium_trinium_americium_neutronate":"釕凱金鋂中子素氧化物", - "material.gtceu.rutherfordium":"鑪", - "material.gtceu.rutile":"金紅石", - "material.gtceu.salt":"鹽", - "material.gtceu.salt_water":"鹽水", - "material.gtceu.saltpeter":"硝石", - "material.gtceu.samarium":"釤", - "material.gtceu.samarium_iron_arsenic_oxide":"釤鐵砷氧化物", - "material.gtceu.sapphire":"藍寶石", - "material.gtceu.sapphire_slurry":"藍寶石漿液", - "material.gtceu.scandium":"鈧", - "material.gtceu.scheelite":"白鎢", - "material.gtceu.sculk":"伏聆", - "material.gtceu.seaborgium":"釒喜", - "material.gtceu.seed_oil":"種子油", - "material.gtceu.selenium":"硒", - "material.gtceu.severely_hydro_cracked_gas":"重度加氫裂解煉油氣", - "material.gtceu.severely_hydro_cracked_heavy_fuel":"重度加氫裂解重燃油", - "material.gtceu.severely_hydro_cracked_light_fuel":"重度加氫裂解輕燃油", - "material.gtceu.severely_hydro_cracked_naphtha":"重度加氫裂解石腦油", - "material.gtceu.severely_steam_cracked_gas":"重度蒸汽裂解煉油氣", - "material.gtceu.severely_steam_cracked_heavy_fuel":"重度蒸汽裂解重燃油", - "material.gtceu.severely_steam_cracked_light_fuel":"重度蒸汽裂解輕燃油", - "material.gtceu.severely_steam_cracked_naphtha":"重度蒸汽裂解石腦油", - "material.gtceu.silicon":"矽", - "material.gtceu.silicon_dioxide":"二氧化矽", - "material.gtceu.silicone_rubber":"矽橡膠", - "material.gtceu.silver":"銀", - "material.gtceu.soapstone":"皂石", - "material.gtceu.soda_ash":"純鹼", - "material.gtceu.sodalite":"方鈉石", - "material.gtceu.sodium":"鈉", - "material.gtceu.sodium_bicarbonate":"碳酸氫鈉", - "material.gtceu.sodium_bisulfate":"硫酸氫鈉", - "material.gtceu.sodium_hydroxide":"氫氧化鈉", - "material.gtceu.sodium_nitrite":"亞硝酸鈉", - "material.gtceu.sodium_persulfate":"過硫酸鈉", - "material.gtceu.sodium_potassium":"鈉鉀合金", - "material.gtceu.sodium_sulfide":"硫化鈉", - "material.gtceu.soldering_alloy":"焊錫", - "material.gtceu.spessartine":"錳鋁榴石", - "material.gtceu.sphalerite":"閃鋅", - "material.gtceu.spodumene":"鋰輝石", - "material.gtceu.stainless_steel":"不鏽鋼", - "material.gtceu.steam":"蒸汽", - "material.gtceu.steam_cracked_butadiene":"蒸汽裂解丁二烯", - "material.gtceu.steam_cracked_butane":"蒸汽裂解丁烷", - "material.gtceu.steam_cracked_butene":"蒸汽裂解丁烯", - "material.gtceu.steam_cracked_ethane":"蒸汽裂解乙烷", - "material.gtceu.steam_cracked_ethylene":"蒸汽裂解乙烯", - "material.gtceu.steam_cracked_propane":"蒸汽裂解丙烷", - "material.gtceu.steam_cracked_propene":"蒸汽裂解丙烯", - "material.gtceu.steel":"鋼", - "material.gtceu.stellite_100":"司太立-100", - "material.gtceu.sterilized_growth_medium":"無菌培養基", - "material.gtceu.sterling_silver":"標準純銀", - "material.gtceu.stibnite":"輝銻", - "material.gtceu.stone":"石頭", - "material.gtceu.strontium":"鍶", - "material.gtceu.styrene":"苯乙烯", - "material.gtceu.styrene_butadiene_rubber":"丁苯橡膠", - "material.gtceu.sugar":"糖", - "material.gtceu.sulfur":"硫", - "material.gtceu.sulfur_dioxide":"二氧化硫", - "material.gtceu.sulfur_trioxide":"三氧化硫", - "material.gtceu.sulfuric_acid":"硫酸", - "material.gtceu.sulfuric_copper_solution":"硫酸銅溶液", - "material.gtceu.sulfuric_gas":"含硫煉油氣", - "material.gtceu.sulfuric_heavy_fuel":"含硫重燃油", - "material.gtceu.sulfuric_light_fuel":"含硫輕燃油", - "material.gtceu.sulfuric_naphtha":"含硫石腦油", - "material.gtceu.sulfuric_nickel_solution":"硫酸鎳溶液", - "material.gtceu.talc":"滑石", - "material.gtceu.tantalite":"鉭鐵", - "material.gtceu.tantalum":"鉭", - "material.gtceu.tantalum_carbide":"碳化鉭", - "material.gtceu.technetium":"鎝", - "material.gtceu.tellurium":"碲", - "material.gtceu.tennessine":"石田", - "material.gtceu.terbium":"鋱", - "material.gtceu.tetrafluoroethylene":"四氟乙烯", - "material.gtceu.tetrahedrite":"黝銅", - "material.gtceu.tetranitromethane":"四硝基甲烷", - "material.gtceu.thallium":"鉈", - "material.gtceu.thorium":"釷", - "material.gtceu.thulium":"銩", - "material.gtceu.tin":"錫", - "material.gtceu.tin_alloy":"錫鐵合金", - "material.gtceu.titanium":"鈦", - "material.gtceu.titanium_carbide":"碳化鈦", - "material.gtceu.titanium_tetrachloride":"四氯化鈦", - "material.gtceu.titanium_trifluoride":"三氟化鈦", - "material.gtceu.titanium_tungsten_carbide":"碳化鈦鎢", - "material.gtceu.toluene":"甲苯", - "material.gtceu.topaz":"黃玉", - "material.gtceu.treated_wood":"防腐木", - "material.gtceu.tricalcium_phosphate":"磷酸三鈣", - "material.gtceu.trinium":"凱金", - "material.gtceu.trinium_sulfide":"硫化凱金", - "material.gtceu.tritanium":"三鈦", - "material.gtceu.tritium":"氚", - "material.gtceu.trona":"天然鹼", - "material.gtceu.tungstate":"鎢酸鋰", - "material.gtceu.tungsten":"鎢", - "material.gtceu.tungsten_carbide":"碳化鎢", - "material.gtceu.tungsten_steel":"鎢鋼", - "material.gtceu.tungstic_acid":"鎢酸", - "material.gtceu.ultimet":"哈氏合金", - "material.gtceu.uraninite":"晶質鈾", - "material.gtceu.uranium":"鈾", - "material.gtceu.uranium_235":"鈾-235", - "material.gtceu.uranium_hexafluoride":"六氟化鈾", - "material.gtceu.uranium_rhodium_dinaquadide":"鈾銠矽岩合金", - "material.gtceu.uranium_triplatinum":"三鉑化鈾", - "material.gtceu.uu_matter":"UU物質", - "material.gtceu.uvarovite":"鈣鉻榴石", - "material.gtceu.vanadium":"釩", - "material.gtceu.vanadium_gallium":"釩鎵合金", - "material.gtceu.vanadium_magnetite":"釩磁鐵", - "material.gtceu.vanadium_steel":"釩鋼", - "material.gtceu.vinyl_acetate":"乙酸乙烯酯", - "material.gtceu.vinyl_chloride":"氯乙烯", - "material.gtceu.water":"水", - "material.gtceu.watertight_steel":"防水鋼", - "material.gtceu.wax":"蠟", - "material.gtceu.wheat":"小麥", - "material.gtceu.white_dye":"白色染料", - "material.gtceu.wood":"木", - "material.gtceu.wood_gas":"木煤氣", - "material.gtceu.wood_tar":"木焦油", - "material.gtceu.wood_vinegar":"木醋酸", - "material.gtceu.wrought_iron":"鍛鐵", - "material.gtceu.wulfenite":"鉬鉛", - "material.gtceu.xenon":"氙", - "material.gtceu.yellow_dye":"黃色染料", - "material.gtceu.yellow_garnet":"黃石榴石", - "material.gtceu.yellow_limonite":"黃褐鐵", - "material.gtceu.ytterbium":"鐿", - "material.gtceu.yttrium":"釔", - "material.gtceu.yttrium_barium_cuprate":"釔鋇銅氧化物", - "material.gtceu.zeolite":"沸石", - "material.gtceu.zeron_100":"賽龍-100", - "material.gtceu.zinc":"鋅", - "material.gtceu.zinc_sulfide":"硫化鋅", - "material.gtceu.zincite":"紅鋅", - "material.gtceu.zirconium":"鋯", - "message.gtceu.new_veins":"勘探到%d個新礦脈!", - "metaarmor.energy_share.disable":"能量供給:工具充能已禁用", - "metaarmor.energy_share.enable":"能量供給:工具充能已啟用", - "metaarmor.energy_share.error":"能量供給:§c能量不足,無法為工具充能!", - "metaarmor.energy_share.tooltip":"供能模式:%s", - "metaarmor.energy_share.tooltip.guide":"手持物品並潛行右擊以更換模式", - "metaarmor.hud.energy_lvl":"能量儲存:%s", - "metaarmor.hud.engine_enabled":"引擎已啟用:%s", - "metaarmor.hud.fuel_lvl":"燃料儲存:%s", - "metaarmor.hud.gravi_engine":"重力引擎:%s", - "metaarmor.hud.hover_mode":"懸浮模式:%s", - "metaarmor.hud.status.disabled":"§c關", - "metaarmor.hud.status.enabled":"§a開", - "metaarmor.jetpack.emergency_hover_mode":"緊急懸浮模式已啟用!", - "metaarmor.jetpack.flight.disable":"噴射背包:飛行已停用", - "metaarmor.jetpack.flight.enable":"噴射背包:飛行已啟用", - "metaarmor.jetpack.hover.disable":"噴射背包:懸浮模式已禁用", - "metaarmor.jetpack.hover.enable":"噴射背包:懸浮模式已啟用", - "metaarmor.message.nightvision.disabled":"§b夜視:§c關閉", - "metaarmor.message.nightvision.enabled":"§b夜視:§a開啟", - "metaarmor.message.nightvision.error":"§c能量不足!", - "metaarmor.nms.boosted_jump.disabled":"奈米肌體™套裝:跳躍提升已停用", - "metaarmor.nms.boosted_jump.enabled":"奈米肌體™套裝:跳躍提升已啟用", - "metaarmor.nms.nightvision.disabled":"奈米肌體™套裝:夜視已禁用", - "metaarmor.nms.nightvision.enabled":"奈米肌體™套裝:夜視已啟用", - "metaarmor.nms.nightvision.error":"奈米肌體™套裝:§c能量不足!", - "metaarmor.nms.share.disable":"奈米肌體™套裝:供能模式已禁用", - "metaarmor.nms.share.enable":"奈米肌體™套裝:供能模式已啟用", - "metaarmor.nms.share.error":"奈米肌體™套裝:§c能量不足,無法供能!", - "metaarmor.qts.nightvision.disabled":"夸克科技™套裝:夜視已禁用", - "metaarmor.qts.nightvision.enabled":"夸克科技™套裝:夜視已啟用", - "metaarmor.qts.nightvision.error":"夸克科技™套裝:§c能量不足!", - "metaarmor.qts.share.disable":"夸克科技™套裝:供能模式已禁用", - "metaarmor.qts.share.enable":"夸克科技™套裝:供能模式已啟用", - "metaarmor.qts.share.error":"夸克科技™套裝:§c能量不足,無法供能!", - "metaarmor.tooltip.autoeat":"使用物品欄中的食物補充飽食度", - "metaarmor.tooltip.breath":"補充氧氣條", - "metaarmor.tooltip.burning":"消除燃燒傷害", - "metaarmor.tooltip.falldamage":"消除摔落傷害", - "metaarmor.tooltip.freezing":"防止寒冷侵襲", - "metaarmor.tooltip.jump":"提升跳躍高度與距離", - "metaarmor.tooltip.potions":"消除負面效果", - "metaarmor.tooltip.speed":"提升奔跑速度", - "metaarmor.tooltip.stepassist":"提供步行輔助", - "metaitem.behavior.mode_switch.current_mode":"模式:%s", - "metaitem.behavior.mode_switch.mode_switched":"§e模式設定為:%s", - "metaitem.behavior.mode_switch.tooltip":"潛行右擊以切換模式", - "metaitem.clipboard.tooltip":"可以在上面書寫(無需任何書寫工具)。手持右鍵在牆面上放置,潛行右擊取下。", - "metaitem.cover.digital.mode.energy.disabled":"點選以啟用能量模式", - "metaitem.cover.digital.mode.energy.enabled":"已啟用能量模式", - "metaitem.cover.digital.mode.fluid.disabled":"點選以啟用流體模式", - "metaitem.cover.digital.mode.fluid.enabled":"已啟用流體模式", - "metaitem.cover.digital.mode.item.disabled":"點選以啟用物品模式", - "metaitem.cover.digital.mode.item.enabled":"已啟用物品模式", - "metaitem.cover.digital.mode.machine.disabled":"點選以啟用機器模式", - "metaitem.cover.digital.mode.machine.enabled":"已啟用機器模式", - "metaitem.cover.digital.mode.proxy.disabled":"點選以啟用代理模式", - "metaitem.cover.digital.mode.proxy.enabled":"已啟用代理模式", - "metaitem.cover.digital.tooltip":"§7作§f覆蓋板§7時透過§f能量線纜f7將機器連線到§f中央監視器§7。", - "metaitem.cover.digital.wireless.tooltip.0":"§7作§f覆蓋板§7時§f將機器§f無線§7接入§f中央監控器§7。", - "metaitem.cover.digital.wireless.tooltip.1":"§f手持右擊中央監控器§7來進行遠端綁定。", - "metaitem.cover.digital.wireless.tooltip.2":"§f手持並潛行右擊§7則可移除現有綁定。", - "metaitem.cover.digital.wireless.tooltip.3":"§a綁定至:§f%s", - "metaitem.crushed.tooltip.purify":"右擊盛有水的鍋釜以清洗", - "metaitem.debug_scanner.tooltip":"三錄儀", - "metaitem.dust.tooltip.purify":"右擊盛有水的鍋釜以清洗", - "metaitem.electric.discharge_mode.disabled":"§e釋能模式已禁用", - "metaitem.electric.discharge_mode.enabled":"§e釋能模式已啟用", - "metaitem.electric.discharge_mode.tooltip":"潛行右擊以開關釋能模式", - "metaitem.generic.electric_item.stored":"%d/%d EU(%s)", - "metaitem.generic.electric_item.tooltip":"%d/%d EU - %s電壓", - "metaitem.generic.fluid_container.tooltip":"%d/%dmB %s", - "metaitem.int_circuit.configuration":"設定:%d", - "metaitem.liquid_fuel_jetpack.tooltip":"利用內燃發電機的燃料來提供推進動力", - "metaitem.machine_configuration.mode":"§a設定模式:§r%s", - "metaitem.plugin.proxy.tooltips.1":"(請將螢幕調整為代理模式)", - "metaitem.plugin.tooltips.1":"可為螢幕安裝外掛以實現更多功能。", - "metaitem.prospector.mode.bedrock_ore":"§b基岩礦勘探模式§r", - "metaitem.prospector.mode.fluid":"§b流體勘探模式§r", - "metaitem.prospector.mode.ores":"§a礦探勘模式§r", - "metaitem.prospector.tooltip.modes":"可用模式:", - "metaitem.prospector.tooltip.radius":"掃描半徑:%s", - "metaitem.record.sus.tooltip":"§7Leonz - Among Us Drip", - "metaitem.terminal.tooltip":"工欲善其事,必先利其器。", - "metaitem.terminal.tooltip.creative":"§b創造模式", - "metaitem.terminal.tooltip.hardware":"§a硬體:%d", - "metaitem.tool.tooltip.durability":"§f耐久度:§a%d / %d", - "metaitem.tool.tooltip.primary_material":"§f材料:§e%s", - "metaitem.tool.tooltip.rotor.efficiency":"渦輪效率:§9%d%%", - "metaitem.tool.tooltip.rotor.power":"渦輪產能:§9%d%%", - "metaitem.tricorder_scanner.tooltip":"三錄儀", - "monitor.gui.title.argb":"ARGB:", - "monitor.gui.title.back":"返回", - "monitor.gui.title.config":"設定", - "monitor.gui.title.plugin":"外掛:", - "monitor.gui.title.scale":"尺寸:", - "monitor.gui.title.slot":"槽位:", - "ore.spawnlocation.name":"礦物生成資訊", - "recipe.capability.eu.name":"GTCEu能量", - "recipe.capability.fluid.name":"流體", - "recipe.capability.item.name":"物品", - "recipe.condition.adjacent_block.tooltip":"水平相鄰方塊應為", - "recipe.condition.biome.tooltip":"生態域:%s", - "recipe.condition.daytime.day.tooltip":"白天才能運作", - "recipe.condition.daytime.night.tooltip":"夜晚才能運作", - "recipe.condition.dimension.tooltip":"維度:%s", - "recipe.condition.dimension_marker.tooltip":"維度:", - "recipe.condition.eu_to_start.tooltip":"啟動耗能:%d%s", - "recipe.condition.pos_y.tooltip":"Y軸高度:%d <= Y <= %d", - "recipe.condition.rain.tooltip":"雨量:%d", - "recipe.condition.rock_breaker.tooltip":"水平相鄰方塊需要為流體源", - "recipe.condition.steam_vent.tooltip":"清潔蒸汽排氣口", - "recipe.condition.thunder.tooltip":"雷級:%d", - "tagprefix.andesite":"安山岩%s礦", - "tagprefix.basalt":"玄武岩%s礦", - "tagprefix.blackstone":"黑石%s礦", - "tagprefix.block":"%s方塊", - "tagprefix.bolt":"%s螺栓", - "tagprefix.buzz_saw_blade":"%s圓鋸鋸片", - "tagprefix.cable_gt_double":"2x%s線纜", - "tagprefix.cable_gt_hex":"16x%s線纜", - "tagprefix.cable_gt_octal":"8x%s線纜", - "tagprefix.cable_gt_quadruple":"4x%s線纜", - "tagprefix.cable_gt_single":"1x%s線纜", - "tagprefix.chainsaw_head":"%s鏈鋸頭", - "tagprefix.chipped_gem":"破碎的%s", - "tagprefix.crushed_ore":"粉碎%s礦", - "tagprefix.deepslate":"深板岩%s礦", - "tagprefix.dense_plate":"緻密%s板", - "tagprefix.diorite":"閃長岩%s礦", - "tagprefix.door":"%s門", - "tagprefix.double_plate":"雙層%s板", - "tagprefix.drill_head":"%s鑽頭", - "tagprefix.dust":"%s粉", - "tagprefix.dye":"%s染料", - "tagprefix.endstone":"終界石%s礦", - "tagprefix.exquisite_gem":"精緻的%s", - "tagprefix.fence":"%s柵欄", - "tagprefix.fence_gate":"%s柵欄門", - "tagprefix.fine_wire":"細%s導線", - "tagprefix.flawed_gem":"有瑕的%s", - "tagprefix.flawless_gem":"無瑕的%s", - "tagprefix.foil":"%s箔", - "tagprefix.frame":"%s框架", - "tagprefix.gear":"%s齒輪", - "tagprefix.gem":"%s", - "tagprefix.granite":"花崗岩%s礦", - "tagprefix.gravel":"沙礫%s礦", - "tagprefix.hot_ingot":"熱%s錠", - "tagprefix.impure_dust":"含雜%s粉", - "tagprefix.ingot":"%s錠", - "tagprefix.lens":"%s透鏡", - "tagprefix.log":"%s原木", - "tagprefix.long_rod":"長%s桿", - "tagprefix.marble":"大理岩%s礦", - "tagprefix.netherrack":"地獄岩%s礦", - "tagprefix.nugget":"%s粒", - "tagprefix.pipe_huge_fluid":"巨型%s流體管道", - "tagprefix.pipe_huge_item":"巨型%s物品管道", - "tagprefix.pipe_huge_restrictive":"巨型加固%s物品管道", - "tagprefix.pipe_large_fluid":"大型%s流體管道", - "tagprefix.pipe_large_item":"大型%s物品管道", - "tagprefix.pipe_large_restrictive":"大型加固%s物品管道", - "tagprefix.pipe_nonuple_fluid":"九重%s流體管道", - "tagprefix.pipe_normal_fluid":"普通%s流體管道", - "tagprefix.pipe_normal_item":"普通%s物品管道", - "tagprefix.pipe_normal_restrictive":"普通加固%s物品管道", - "tagprefix.pipe_quadruple_fluid":"四重%s流體管道", - "tagprefix.pipe_small_fluid":"小型%s流體管道", - "tagprefix.pipe_small_item":"小型%s物品管道", - "tagprefix.pipe_small_restrictive":"小型加固%s物品管道", - "tagprefix.pipe_tiny_fluid":"微型%s流體管道", - "tagprefix.planks":"%s木材", - "tagprefix.plate":"%s板", - "tagprefix.polymer.dense_plate":"緻密%s片", - "tagprefix.polymer.double_plate":"雙層%s片", - "tagprefix.polymer.dust":"%s末", - "tagprefix.polymer.foil":"薄%s片", - "tagprefix.polymer.ingot":"%s條", - "tagprefix.polymer.nugget":"%s顆粒", - "tagprefix.polymer.plate":"%s片", - "tagprefix.polymer.small_dust":"小堆%s末", - "tagprefix.polymer.tiny_dust":"小撮%s末", - "tagprefix.pure_dust":"潔淨%s粉", - "tagprefix.purified_ore":"純淨%s礦", - "tagprefix.raw":"%s原礦", - "tagprefix.raw_ore_block":"%s原礦方塊", - "tagprefix.red_granite":"紅花崗岩%s礦", - "tagprefix.red_sand":"紅沙%s礦", - "tagprefix.refined_ore":"精煉%s礦", - "tagprefix.ring":"%s環", - "tagprefix.rock":"%s", - "tagprefix.rod":"%s桿", - "tagprefix.rotor":"%s轉子", - "tagprefix.round":"%s滾珠", - "tagprefix.sand":"沙子%s礦", - "tagprefix.screw":"%s螺絲", - "tagprefix.screwdriver_tip":"%s螺絲起子頭", - "tagprefix.slab":"%s半磚", - "tagprefix.small_dust":"小堆%s粉", - "tagprefix.small_gear":"小型%s齒輪", - "tagprefix.small_spring":"小型%s彈簧", - "tagprefix.spring":"%s彈簧", - "tagprefix.stairs":"%s階梯", - "tagprefix.stone":"%s礦", - "tagprefix.tiny_dust":"小撮%s粉", - "tagprefix.tuff":"凝灰岩%s礦", - "tagprefix.turbine_blade":"%s渦輪扇葉", - "tagprefix.wire_cutter_head":"%s剪線鉗鉗頭", - "tagprefix.wire_gt_double":"2x%s導線", - "tagprefix.wire_gt_hex":"16x%s導線", - "tagprefix.wire_gt_octal":"8x%s導線", - "tagprefix.wire_gt_quadruple":"4x%s導線", - "tagprefix.wire_gt_single":"1x%s導線", - "tagprefix.wrench_tip":"%s扳手頂", - "tile.gtceu.brittle_charcoal.name":"脆木炭塊", - "tile.gtceu.brittle_charcoal.tooltip.0":"產自木炭堆點火器。", - "tile.gtceu.brittle_charcoal.tooltip.1":"採掘以獲得木炭。", - "tile.gtceu.foam.name":"建築泡沫", - "tile.gtceu.petrified_foam.name":"石化建築泡沫", - "tile.gtceu.reinforced_foam.name":"強化建築泡沫", - "tile.gtceu.reinforced_stone.name":"防爆石", - "tile.gtceu.seal.name":"密封方塊" + "behavior.data_item.assemblyline.data": "- §a%s", + "behavior.data_item.assemblyline.title": "§n裝配線結構資料:", + "behavior.item_magnet.disabled": "§c磁場已禁用", + "behavior.item_magnet.enabled": "§a磁場已啟用", + "behavior.portable_scanner.amp_per_sec": "最後一秒 %s A", + "behavior.portable_scanner.bedrock_fluid.amount": "流體儲量:%s %s - %s%%", + "behavior.portable_scanner.bedrock_fluid.amount_unknown": "流體儲量:%s%%", + "behavior.portable_scanner.bedrock_fluid.nothing": "流體儲量:§6無§r", + "behavior.portable_scanner.block_hardness": "硬度:%s;爆炸抗性:%s", + "behavior.portable_scanner.block_name": "名稱:%s;後設資料:%s", + "behavior.portable_scanner.debug_cpu_load": "%2$s刻內平均CPU負載約%1$sns,最差情況為%sns。", + "behavior.portable_scanner.debug_cpu_load_seconds": "負載秒數為%s秒。", + "behavior.portable_scanner.debug_lag_count": "已在伺服器中造成%s次延遲尖峰警告(任何大於%sms的情況)。", + "behavior.portable_scanner.debug_machine": "元ID:%s", + "behavior.portable_scanner.debug_machine_invalid": " 無效!", + "behavior.portable_scanner.debug_machine_invalid_null=invalid! MetaTileEntity =": " null!", + "behavior.portable_scanner.debug_machine_valid": "無效!", + "behavior.portable_scanner.divider": "=========================", + "behavior.portable_scanner.energy_container_in": "輸入上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_out": "輸出上限:%s(%s)EU,%s A", + "behavior.portable_scanner.energy_container_storage": "電量:%s EU / %s EU", + "behavior.portable_scanner.environmental_hazard": "區域內的環境污染:%s§r - %s ppm", + "behavior.portable_scanner.environmental_hazard.nothing": "區域內的環境污染:§6無§r", + "behavior.portable_scanner.eu_per_sec": "最後一秒 %s EU/t", + "behavior.portable_scanner.guild_name": "§2公會名稱:%s§r", + "behavior.portable_scanner.local_hazard": "區域內的其他污染:%s§r - %s ppm", + "behavior.portable_scanner.local_hazard.nothing": "區域內的其他污染:§6無§r", + "behavior.portable_scanner.machine_disabled": "已停止。", + "behavior.portable_scanner.machine_front_facing": "控制器面向:%s", + "behavior.portable_scanner.machine_ownership": "§2機器所有者型別:%s§r", + "behavior.portable_scanner.machine_power_loss": "因斷電而停止工作。", + "behavior.portable_scanner.machine_progress": "處理進度/總計:%s / %s", + "behavior.portable_scanner.machine_upwards_facing": "控制器正面朝向:%s", + "behavior.portable_scanner.mode.caption": "顯示模式:%s", + "behavior.portable_scanner.mode.show_all_info": "顯示所有資訊", + "behavior.portable_scanner.mode.show_block_info": "顯示方塊資訊", + "behavior.portable_scanner.mode.show_electrical_info": "顯示電器資訊", + "behavior.portable_scanner.mode.show_environmental_info": "顯示環境資訊", + "behavior.portable_scanner.mode.show_machine_info": "顯示機器資訊", + "behavior.portable_scanner.mode.show_recipe_info": "顯示配方資訊", + "behavior.portable_scanner.muffled": "已靜音。", + "behavior.portable_scanner.multiblock_energy_input": "最大輸入:%s EU/t,電壓等級 %s", + "behavior.portable_scanner.multiblock_energy_output": "最大輸出:%s EU/t,電壓等級 %s", + "behavior.portable_scanner.multiblock_maintenance": "故障:%s", + "behavior.portable_scanner.multiblock_parallel": "平行處理:%s", + "behavior.portable_scanner.player_name": "§2玩家姓名:%s§r,§7玩家線上:%s§r", + "behavior.portable_scanner.position": "----- X:%s;Y:%s;Z:%s;D:%s -----", + "behavior.portable_scanner.state": "%s:%s", + "behavior.portable_scanner.tank": "流體儲量(槽位%s):%s mB / %s mB %s", + "behavior.portable_scanner.tanks_empty": "未儲存流體", + "behavior.portable_scanner.team_name": "§2團隊名稱:%s§r", + "behavior.portable_scanner.workable_consumption": "預計耗能:%s EU/t,%s A", + "behavior.portable_scanner.workable_production": "預計產能:%s EU/t,%s A", + "behavior.portable_scanner.workable_progress": "處理進度:%s s / %s s", + "behavior.portable_scanner.workable_stored_energy": "能量暫存:%s EU / %s EU", + "behavior.prospector.added_waypoint": "已建立路徑點:%s!", + "behavior.prospector.not_enough_energy": "能量不足!", + "behavior.toggle_energy_consumer.tooltip": "右擊切換模式", + "behaviour.boor.by": "透過%s", + "behaviour.hammer": "右擊機器以開啟或關閉消音功能", + "behaviour.hoe": "可以翻耕泥土", + "behaviour.lighter.fluid.tooltip": "可使用丙烷或丁烷來生火", + "behaviour.lighter.tooltip.description": "可以點火", + "behaviour.lighter.tooltip.usage": "潛行右擊以開/關", + "behaviour.lighter.uses": "剩餘次數:%d", + "behaviour.meta.machine.config.copy.tooltip": "§7潛行右擊以複製機器設定", + "behaviour.meta.machine.config.paste.tooltip": "§7右擊以貼上機器設定", + "behaviour.paintspray.black.tooltip": "可以將物品染成黑色", + "behaviour.paintspray.blue.tooltip": "可以將物品染成藍色", + "behaviour.paintspray.brown.tooltip": "可以將物品染成棕色", + "behaviour.paintspray.cyan.tooltip": "可以將物品染成青色", + "behaviour.paintspray.gray.tooltip": "可以將物品染成灰色", + "behaviour.paintspray.green.tooltip": "可以將物品染成綠色", + "behaviour.paintspray.light_blue.tooltip": "可以將物品染成淺藍色", + "behaviour.paintspray.light_gray.tooltip": "可以將物品染成淺灰色", + "behaviour.paintspray.lime.tooltip": "可以將物品染成淺綠色", + "behaviour.paintspray.magenta.tooltip": "可以將物品染成洋紅色", + "behaviour.paintspray.orange.tooltip": "可以將物品染成橙色", + "behaviour.paintspray.pink.tooltip": "可以將物品染成粉紅色", + "behaviour.paintspray.purple.tooltip": "可以將物品染成紫色", + "behaviour.paintspray.red.tooltip": "可以將物品染成紅色", + "behaviour.paintspray.solvent.tooltip": "可以移除已染色物品的顏色", + "behaviour.paintspray.uses": "剩餘次數:%d", + "behaviour.paintspray.white.tooltip": "可以將物品染成白色", + "behaviour.paintspray.yellow.tooltip": "可以將物品染成黃色", + "behaviour.prospecting": "適用於探礦", + "behaviour.setting.allow.input.from.output.tooltip": "%s-允許從輸出面輸入:%s", + "behaviour.setting.item_auto_output.tooltip": "%s-自動輸出:%s", + "behaviour.setting.muffled.tooltip": "靜音:%s", + "behaviour.setting.output.direction.tooltip": "%s-輸出面方向:%s", + "behaviour.soft_hammer": "用來開啟與關閉機器", + "behaviour.soft_hammer.disabled": "已暫停工作", + "behaviour.soft_hammer.enabled": "已恢復工作", + "behaviour.soft_hammer.idle_after_cycle": "當前週期結束後暫停機器", + "behaviour.wrench": "右擊以旋轉方塊", + "block.filter_casing.tooltip": "建立一個§a無塵§r環境", + "block.gtceu.acid_hazard_sign_block": "強酸危害警示方塊", + "block.gtceu.active_transformer": "有源變壓器", + "block.gtceu.advanced_computer_casing": "高階電腦外殼", + "block.gtceu.advanced_data_access_hatch": "高階資料訪問倉", + "block.gtceu.alloy_blast_smelter": "合金冶煉爐", + "block.gtceu.aluminium_crate": "鋁板條箱", + "block.gtceu.aluminium_drum": "鋁桶", + "block.gtceu.antimatter_hazard_sign_block": "反物質危害警示方塊", + "block.gtceu.assembly_line": "裝配線", + "block.gtceu.assembly_line_casing": "裝配線外殼", + "block.gtceu.assembly_line_grating": "裝配線格柵", + "block.gtceu.assembly_line_unit": "裝配線控制外殼", + "block.gtceu.atomic_casing": "原子機械方塊", + "block.gtceu.auto_maintenance_hatch": "自動維護倉", + "block.gtceu.bio_hazard_sign_block": "生化危害警示方塊", + "block.gtceu.black_borderless_lamp": "黑色無框燈", + "block.gtceu.black_lamp": "黑色燈", + "block.gtceu.black_large_metal_sheet": "黑色粗紋金屬板方塊", + "block.gtceu.black_metal_sheet": "黑色金屬板方塊", + "block.gtceu.black_studs": "黑色橡膠混凝土", + "block.gtceu.blue_borderless_lamp": "藍色無框燈", + "block.gtceu.blue_lamp": "藍色燈", + "block.gtceu.blue_large_metal_sheet": "藍色粗紋金屬板方塊", + "block.gtceu.blue_metal_sheet": "藍色金屬板方塊", + "block.gtceu.blue_studs": "藍色橡膠混凝土", + "block.gtceu.boss_hazard_sign_block": "Boss危害警示方塊", + "block.gtceu.brittle_charcoal": "脆木炭塊", + "block.gtceu.bronze_brick_casing": "磚砌青銅外殼", + "block.gtceu.bronze_crate": "青銅板條箱", + "block.gtceu.bronze_drum": "青銅桶", + "block.gtceu.bronze_firebox_casing": "青銅燃燒室", + "block.gtceu.bronze_gearbox": "青銅齒輪箱機械方塊", + "block.gtceu.bronze_large_boiler": "大型青銅鍋爐", + "block.gtceu.bronze_machine_casing": "青銅機器外殼", + "block.gtceu.bronze_pipe_casing": "青銅管道方塊", + "block.gtceu.brown_borderless_lamp": "棕色無框燈", + "block.gtceu.brown_lamp": "棕色燈", + "block.gtceu.brown_large_metal_sheet": "棕色粗紋金屬板方塊", + "block.gtceu.brown_metal_sheet": "棕色金屬板方塊", + "block.gtceu.brown_studs": "棕色橡膠混凝土", + "block.gtceu.casing_coke_bricks": "焦爐磚塊", + "block.gtceu.casing_grate": "柵格機械方塊", + "block.gtceu.causality_hazard_sign_block": "因果律危害警示方塊", + "block.gtceu.charcoal_pile_igniter": "木炭堆點火器", + "block.gtceu.chiseled_dark_concrete": "浮雕深色混凝土", + "block.gtceu.chiseled_light_concrete": "浮雕淺色混凝土", + "block.gtceu.chiseled_marble": "浮雕大理岩", + "block.gtceu.chiseled_red_granite": "浮雕紅花崗岩", + "block.gtceu.clean_machine_casing": "潔淨不鏽鋼機械方塊", + "block.gtceu.cleaning_maintenance_hatch": "無塵維護倉", + "block.gtceu.cleanroom": "無塵室", + "block.gtceu.cleanroom_glass": "無塵室玻璃", + "block.gtceu.coke_oven": "焦爐", + "block.gtceu.coke_oven_bricks": "焦爐磚塊", + "block.gtceu.coke_oven_hatch": "焦爐倉", + "block.gtceu.computation_receiver_hatch": "算力資料靶倉", + "block.gtceu.computation_transmitter_hatch": "算力資料來源倉", + "block.gtceu.computer_casing": "電腦外殼", + "block.gtceu.computer_heat_vent": "電腦散熱口", + "block.gtceu.configurable_maintenance_hatch": "可配置維護倉", + "block.gtceu.corrosion_proof_casing": "耐腐蝕機械方塊", + "block.gtceu.cracked_dark_concrete_bricks": "裂紋深色混凝土磚", + "block.gtceu.cracked_light_concrete_bricks": "裂紋淺色混凝土磚", + "block.gtceu.cracked_marble_bricks": "裂紋大理岩磚", + "block.gtceu.cracked_red_granite_bricks": "裂紋紅花崗岩磚", + "block.gtceu.cracker": "裂解機", + "block.gtceu.creative_chest": "創造模式箱子", + "block.gtceu.creative_computation_provider": "創造模式算力提供器", + "block.gtceu.creative_data_access_hatch": "創造模式資料訪問倉", + "block.gtceu.creative_energy": "創造模式能量單元", + "block.gtceu.creative_tank": "創造模式儲罐", + "block.gtceu.crushing_wheels": "粉碎輪", + "block.gtceu.cupronickel_coil_block": "白銅線圈方塊", + "block.gtceu.cyan_borderless_lamp": "青色無框燈", + "block.gtceu.cyan_lamp": "青色燈", + "block.gtceu.cyan_large_metal_sheet": "青色粗紋金屬板方塊", + "block.gtceu.cyan_metal_sheet": "青色金屬板方塊", + "block.gtceu.cyan_studs": "青色橡膠混凝土", + "block.gtceu.dark_concrete": "深色混凝土", + "block.gtceu.dark_concrete_bricks": "深色混凝土磚", + "block.gtceu.dark_concrete_cobblestone": "深色混凝土鵝卵石", + "block.gtceu.dark_concrete_small_tile": "深色混凝土小片磚瓦", + "block.gtceu.dark_concrete_tile": "深色混凝土磚瓦", + "block.gtceu.dark_concrete_windmill_a": "深色混凝土風車形磚瓦 A", + "block.gtceu.dark_concrete_windmill_b": "深色混凝土風車形磚瓦 B", + "block.gtceu.data_access_hatch": "資料訪問倉", + "block.gtceu.data_bank": "資料庫", + "block.gtceu.data_receiver_hatch": "光學資料靶倉", + "block.gtceu.data_transmitter_hatch": "光學資料來源倉", + "block.gtceu.distillation_tower": "蒸餾塔", + "block.gtceu.electric_blast_furnace": "電力高爐", + "block.gtceu.electrolytic_cell": "電解器", + "block.gtceu.empty_tier_i_battery": "空電容(Tier I)", + "block.gtceu.empty_tier_ii_battery": "空電容(Tier II)", + "block.gtceu.empty_tier_iii_battery": "空電容(Tier III)", + "block.gtceu.engine_intake_casing": "引擎進氣機械方塊", + "block.gtceu.ev_16a_energy_converter": "16§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_1a_energy_converter": "1§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_4a_energy_converter": "4§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_8a_energy_converter": "8§e安§r§5EV§r能量轉換器", + "block.gtceu.ev_air_scrubber": "§5進階空氣淨化器 III§r", + "block.gtceu.ev_alloy_smelter": "§5進階合金爐 III§r", + "block.gtceu.ev_arc_furnace": "§5進階電弧爐 III§r", + "block.gtceu.ev_assembler": "§5進階組裝機 III§r", + "block.gtceu.ev_autoclave": "§5進階高壓釜 III§r", + "block.gtceu.ev_battery_buffer_16x": "16x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_4x": "4x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_battery_buffer_8x": "8x§5超高壓§r電池箱(§5EV§r)", + "block.gtceu.ev_bedrock_ore_miner": "§5進階基岩採礦機 III§r", + "block.gtceu.ev_bender": "§5進階卷板機 III§r", + "block.gtceu.ev_block_breaker": "§5進階方塊破壞器 III§r", + "block.gtceu.ev_brewery": "§5進階釀造室 III§r", + "block.gtceu.ev_canner": "§5進階裝罐機 III§r", + "block.gtceu.ev_centrifuge": "§5進階離心機 III§r", + "block.gtceu.ev_charger_4x": "4x§5超高壓§r充電機(§5EV§r)", + "block.gtceu.ev_chemical_bath": "§5進階化學水浴機 III§r", + "block.gtceu.ev_chemical_reactor": "§5進階化學反應器 III§r", + "block.gtceu.ev_circuit_assembler": "§5進階電路組裝機 III§r", + "block.gtceu.ev_compressor": "§5進階壓縮機 III§r", + "block.gtceu.ev_cutter": "§5進階切割機 III§r", + "block.gtceu.ev_diode": "§5EV§r二極體", + "block.gtceu.ev_distillery": "§5進階蒸餾室 III§r", + "block.gtceu.ev_electric_furnace": "§5進階電爐 III§r", + "block.gtceu.ev_electrolyzer": "§5進階電解機 III§r", + "block.gtceu.ev_electromagnetic_separator": "§5進階電磁分離機 III§r", + "block.gtceu.ev_energy_input_hatch": "§5EV§r能量輸入倉", + "block.gtceu.ev_energy_input_hatch_16a": "16安§5EV§r能量輸入倉", + "block.gtceu.ev_energy_input_hatch_4a": "4安§5EV§r能量輸入倉 ", + "block.gtceu.ev_energy_output_hatch": "§5EV§r能量輸出倉", + "block.gtceu.ev_energy_output_hatch_16a": "16安§5EV§r能量輸出倉", + "block.gtceu.ev_energy_output_hatch_4a": "4安§5EV§r能量輸出倉", + "block.gtceu.ev_extractor": "§5進階提取機 III§r", + "block.gtceu.ev_extruder": "§5進階壓模器 III§r", + "block.gtceu.ev_fermenter": "§5進階發酵槽 III§r", + "block.gtceu.ev_fisher": "§5進階捕魚機 III§r", + "block.gtceu.ev_fluid_drilling_rig": "§5進階流體鑽機 III§r", + "block.gtceu.ev_fluid_heater": "§5進階流體加熱器 III§r", + "block.gtceu.ev_fluid_passthrough_hatch": "§5EV§r流體通行倉", + "block.gtceu.ev_fluid_solidifier": "§5進階流體固化器 III§r", + "block.gtceu.ev_forge_hammer": "§5進階鍛造錘 III§r", + "block.gtceu.ev_forming_press": "§5進階衝壓機床 III§r", + "block.gtceu.ev_gas_collector": "§5進階集氣室 III§r", + "block.gtceu.ev_hermetic_casing": "密封機械方塊 IV", + "block.gtceu.ev_input_bus": "§5EV§r輸入匯流排", + "block.gtceu.ev_input_hatch": "§5EV§r輸入倉", + "block.gtceu.ev_input_hatch_4x": "§5EV§r四重輸入倉", + "block.gtceu.ev_input_hatch_9x": "§5EV§r九重輸入倉", + "block.gtceu.ev_item_collector": "§5進階物品收集器 III§r", + "block.gtceu.ev_item_passthrough_hatch": "§5EV§r物品通行倉", + "block.gtceu.ev_lapotronic_battery": "§5EV§r蘭波頓電池", + "block.gtceu.ev_large_miner": "§5進階大型採礦機 III§r", + "block.gtceu.ev_laser_engraver": "§5進階雷射蝕刻機 III§r", + "block.gtceu.ev_lathe": "§5進階車床 III§r", + "block.gtceu.ev_macerator": "§5進階研磨機 III§r", + "block.gtceu.ev_machine_casing": "§5EV§r機械方塊", + "block.gtceu.ev_machine_hull": "§5EV§r機器外殼", + "block.gtceu.ev_mixer": "§5進階攪拌機 III§r", + "block.gtceu.ev_muffler_hatch": "§5EV§r消音倉", + "block.gtceu.ev_ore_washer": "§5進階洗礦廠 III§r", + "block.gtceu.ev_output_bus": "§5EV§r輸出匯流排", + "block.gtceu.ev_output_hatch": "§5EV§r輸出倉", + "block.gtceu.ev_output_hatch_4x": "§5EV§r四重輸出倉", + "block.gtceu.ev_output_hatch_9x": "§5EV§r九重輸出倉", + "block.gtceu.ev_packer": "§5進階打包機 III§r", + "block.gtceu.ev_polarizer": "§5進階兩極磁化機 III§r", + "block.gtceu.ev_pump": "§5進階泵 III§r", + "block.gtceu.ev_rock_crusher": "§5進階碎岩機 III§r", + "block.gtceu.ev_rotor_holder": "§5EV§r轉子支架", + "block.gtceu.ev_scanner": "§5進階掃描器 III§r", + "block.gtceu.ev_sifter": "§5進階篩選機 III§r", + "block.gtceu.ev_substation_input_hatch_64a": "64安§5EV§r變電能量輸入倉", + "block.gtceu.ev_substation_output_hatch_64a": "64安§5EV§r變電能量輸出倉", + "block.gtceu.ev_super_chest": "超級箱 IV", + "block.gtceu.ev_super_tank": "超級缸 IV", + "block.gtceu.ev_thermal_centrifuge": "§5進階熱力離心機 III§r", + "block.gtceu.ev_transformer_16a": "§5超高壓§r高能變壓器(§5EV§r)", + "block.gtceu.ev_transformer_1a": "§5超高壓§r變壓器(§5EV§r)", + "block.gtceu.ev_transformer_2a": "§5超高壓§r進階變壓器(§5EV§r)", + "block.gtceu.ev_transformer_4a": "§5超高壓§r高流變壓器(§5EV§r)", + "block.gtceu.ev_wiremill": "§5進階線材軋機 III§r", + "block.gtceu.ev_world_accelerator": "§5進階世界加速器 III§r", + "block.gtceu.explosion_hazard_sign_block": "爆炸危害警示方塊", + "block.gtceu.explosive.breaking_tooltip": "破壞它會引爆火藥,潛行挖掘以重新拾取", + "block.gtceu.explosive.lighting_tooltip": "無法用紅石信號引爆", + "block.gtceu.extreme_combustion_engine": "極限內燃引擎", + "block.gtceu.extreme_engine_intake_casing": "極限引擎進氣機械方塊", + "block.gtceu.filter_casing": "過濾器機械方塊", + "block.gtceu.fire_hazard_sign_block": "易燃危害警示方塊", + "block.gtceu.firebricks": "耐火磚塊", + "block.gtceu.foam": "建築泡沫", + "block.gtceu.frost_hazard_sign_block": "低溫危害警示方塊", + "block.gtceu.frostproof_machine_casing": "鋁製防凍機械方塊", + "block.gtceu.fusion_casing": "核融合機械方塊", + "block.gtceu.fusion_casing_mk2": "核融合機械方塊 MK-II", + "block.gtceu.fusion_casing_mk3": "核融合機械方塊 MK-III", + "block.gtceu.fusion_coil": "核融合線圈方塊", + "block.gtceu.fusion_glass": "核融合玻璃", + "block.gtceu.gas_large_turbine": "大型燃氣渦輪", + "block.gtceu.generic_hazard_sign_block": "泛用危害警示方塊", + "block.gtceu.gold_drum": "金桶", + "block.gtceu.gray_borderless_lamp": "灰色無框燈", + "block.gtceu.gray_lamp": "灰色燈", + "block.gtceu.gray_large_metal_sheet": "灰色粗紋金屬板方塊", + "block.gtceu.gray_metal_sheet": "灰色金屬板方塊", + "block.gtceu.gray_studs": "灰色橡膠混凝土", + "block.gtceu.green_borderless_lamp": "綠色無框燈", + "block.gtceu.green_lamp": "綠色燈", + "block.gtceu.green_large_metal_sheet": "綠色粗紋金屬板方塊", + "block.gtceu.green_metal_sheet": "綠色金屬板方塊", + "block.gtceu.green_studs": "綠色橡膠混凝土", + "block.gtceu.gregification_hazard_sign_block": "格雷化危害警示方塊", + "block.gtceu.heat_vent": "散熱片", + "block.gtceu.heatproof_machine_casing": "殷鋼隔熱機械方塊", + "block.gtceu.high_performance_computation_array": "高效能運算陣列(HPCA)", + "block.gtceu.high_power_casing": "高能機械方塊", + "block.gtceu.high_pressure_hazard_sign_block": "高壓力危害警示方塊", + "block.gtceu.high_temperature_hazard_sign_block": "高溫危害警示方塊", + "block.gtceu.high_temperature_smelting_casing": "高溫冶煉機械方塊", + "block.gtceu.high_voltage_hazard_sign_block": "高壓電危害警示方塊", + "block.gtceu.hp_steam_alloy_smelter": "高壓蒸汽合金爐", + "block.gtceu.hp_steam_compressor": "高壓蒸汽壓縮機", + "block.gtceu.hp_steam_extractor": "高壓蒸汽提取機", + "block.gtceu.hp_steam_forge_hammer": "高壓蒸汽鍛造錘", + "block.gtceu.hp_steam_furnace": "高壓蒸汽熔爐", + "block.gtceu.hp_steam_liquid_boiler": "高壓蒸汽液體燃料鍋爐", + "block.gtceu.hp_steam_macerator": "高壓蒸汽研磨機", + "block.gtceu.hp_steam_miner": "高壓蒸汽採礦機", + "block.gtceu.hp_steam_rock_crusher": "高壓蒸汽碎岩機", + "block.gtceu.hp_steam_solar_boiler": "高壓蒸汽太陽能鍋爐", + "block.gtceu.hp_steam_solid_boiler": "高壓蒸汽固體燃料鍋爐", + "block.gtceu.hpca_active_cooler_component": "HPCA主動冷卻元件", + "block.gtceu.hpca_advanced_computation_component": "HPCA高階計算元件", + "block.gtceu.hpca_bridge_component": "HPCA橋接元件", + "block.gtceu.hpca_computation_component": "HPCA計算元件", + "block.gtceu.hpca_empty_component": "空HPCA元件", + "block.gtceu.hpca_heat_sink_component": "HPCA散熱元件", + "block.gtceu.hssg_coil_block": "高速鋼-G線圈方塊", + "block.gtceu.huge_duct_pipe": "巨型風管", + "block.gtceu.hv_16a_energy_converter": "16§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_1a_energy_converter": "1§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_4a_energy_converter": "4§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_8a_energy_converter": "8§e安§r§6HV§r能量轉換器", + "block.gtceu.hv_air_scrubber": "§6進階空氣淨化器 II§r", + "block.gtceu.hv_alloy_smelter": "§6進階合金爐 II§r", + "block.gtceu.hv_arc_furnace": "§6進階電弧爐 II§r", + "block.gtceu.hv_assembler": "§6進階組裝機 II§r", + "block.gtceu.hv_autoclave": "§6進階高壓釜 II§r", + "block.gtceu.hv_battery_buffer_16x": "16x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_4x": "4x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_battery_buffer_8x": "8x§6高壓§r電池箱(§6HV§r)", + "block.gtceu.hv_bedrock_ore_miner": "§6進階基岩採礦機 II§r", + "block.gtceu.hv_bender": "§6進階卷板機 II§r", + "block.gtceu.hv_block_breaker": "§6進階方塊破壞機 II§r", + "block.gtceu.hv_brewery": "§6進階釀造室 II§r", + "block.gtceu.hv_buffer": "§6進階緩衝器 II§r", + "block.gtceu.hv_canner": "§6進階裝罐機 II§r", + "block.gtceu.hv_centrifuge": "§6進階離心機 II§r", + "block.gtceu.hv_charger_4x": "4x§6高壓§r充電機(§6HV§r)", + "block.gtceu.hv_chemical_bath": "§6進階化學水浴機 II§r", + "block.gtceu.hv_chemical_reactor": "§6進階化學反應器 II§r", + "block.gtceu.hv_circuit_assembler": "§6進階電路組裝機 II§r", + "block.gtceu.hv_combustion": "§6進階內燃發電機 II§r", + "block.gtceu.hv_compressor": "§6進階壓縮機 II§r", + "block.gtceu.hv_cutter": "§6進階切割機 II§r", + "block.gtceu.hv_diode": "§6HV§r二極體", + "block.gtceu.hv_distillery": "§6進階蒸餾室 II§r", + "block.gtceu.hv_electric_furnace": "§6進階電爐 II§r", + "block.gtceu.hv_electrolyzer": "§6進階電解機 II§r", + "block.gtceu.hv_electromagnetic_separator": "§6進階電磁分離機 II§r", + "block.gtceu.hv_energy_input_hatch": "§6HV§r能量輸入倉", + "block.gtceu.hv_energy_output_hatch": "§6HV§r能量輸出倉", + "block.gtceu.hv_extractor": "§6進階提取機 II§r", + "block.gtceu.hv_extruder": "§6進階壓模器 II§r", + "block.gtceu.hv_fermenter": "§6進階發酵槽 II§r", + "block.gtceu.hv_fisher": "§6進階捕魚機 II§r", + "block.gtceu.hv_fluid_drilling_rig": "§6進階流體鑽機 II§r", + "block.gtceu.hv_fluid_heater": "§6進階流體加熱器 II§r", + "block.gtceu.hv_fluid_passthrough_hatch": "§6HV§r流體通行倉", + "block.gtceu.hv_fluid_solidifier": "§6進階流體固化器 II§r", + "block.gtceu.hv_forge_hammer": "§6進階鍛造錘 II§r", + "block.gtceu.hv_forming_press": "§6進階衝壓機床 II§r", + "block.gtceu.hv_gas_collector": "§6進階集氣室 II§r", + "block.gtceu.hv_gas_turbine": "§6進階燃氣輪機 II§r", + "block.gtceu.hv_hermetic_casing": "密封機械方塊 III", + "block.gtceu.hv_input_bus": "§6HV§r輸入匯流排", + "block.gtceu.hv_input_hatch": "§6HV§r輸入倉", + "block.gtceu.hv_item_collector": "§6進階物品收集器 II§r", + "block.gtceu.hv_item_passthrough_hatch": "§6HV§r物品通行倉", + "block.gtceu.hv_laser_engraver": "§6進階雷射蝕刻機 II§r", + "block.gtceu.hv_lathe": "§6進階車床 II§r", + "block.gtceu.hv_macerator": "§6進階研磨機 II§r", + "block.gtceu.hv_machine_casing": "§6HV§r機械方塊", + "block.gtceu.hv_machine_hull": "§6HV§r機器外殼", + "block.gtceu.hv_miner": "§6進階採礦機 II§r", + "block.gtceu.hv_mixer": "§6進階攪拌機 II§r", + "block.gtceu.hv_muffler_hatch": "§6HV§r消音倉", + "block.gtceu.hv_ore_washer": "§6進階洗礦廠 II§r", + "block.gtceu.hv_output_bus": "§6HV§r輸出匯流排", + "block.gtceu.hv_output_hatch": "§6HV§r輸出倉", + "block.gtceu.hv_packer": "§6進階打包機 II§r", + "block.gtceu.hv_polarizer": "§6進階兩極磁化機 II§r", + "block.gtceu.hv_pump": "§6進階泵 II§r", + "block.gtceu.hv_rock_crusher": "§6進階碎岩機 II§r", + "block.gtceu.hv_rotor_holder": "§6HV§r轉子支架", + "block.gtceu.hv_scanner": "§6進階掃描器 II§r", + "block.gtceu.hv_sifter": "§6進階篩選機 II§r", + "block.gtceu.hv_steam_turbine": "§6進階蒸汽輪機 II§r", + "block.gtceu.hv_super_chest": "超級箱 III", + "block.gtceu.hv_super_tank": "超級缸 III", + "block.gtceu.hv_thermal_centrifuge": "§6進階熱力離心機 II§r", + "block.gtceu.hv_transformer_16a": "§6高壓§r高能變壓器(§6HV§r)", + "block.gtceu.hv_transformer_1a": "§6高壓§r變壓器(§6HV§r)", + "block.gtceu.hv_transformer_2a": "§6高壓§r進階變壓器(§6HV§r)", + "block.gtceu.hv_transformer_4a": "§6高壓§r高流變壓器(§6HV§r)", + "block.gtceu.hv_wiremill": "§6進階線材軋機 II§r", + "block.gtceu.hv_world_accelerator": "§6進階世界加速器 II§r", + "block.gtceu.implosion_compressor": "聚爆壓縮機", + "block.gtceu.industrial_steam_casing": "工業蒸汽機械方塊", + "block.gtceu.industrial_tnt": "工業TNT", + "block.gtceu.inert_machine_casing": "聚四氟乙烯化學惰性機械方塊", + "block.gtceu.itnt.drops_tooltip": "爆炸範圍比TNT大得多,所有被摧毀的方塊都會掉落", + "block.gtceu.iv_1024a_laser_source_hatch": "1024§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_1024a_laser_target_hatch": "1024§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_16a_energy_converter": "16§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_1a_energy_converter": "1§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_256a_laser_source_hatch": "256§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_256a_laser_target_hatch": "256§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_4096a_laser_source_hatch": "4096§e安§r§9IV§r雷射源倉", + "block.gtceu.iv_4096a_laser_target_hatch": "4096§e安§r§9IV§r雷射靶倉", + "block.gtceu.iv_4a_energy_converter": "4§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_8a_energy_converter": "8§e安§r§9IV§r能量轉換器", + "block.gtceu.iv_alloy_smelter": "§9精英合金爐§r", + "block.gtceu.iv_arc_furnace": "§9精英電弧爐§r", + "block.gtceu.iv_assembler": "§9精英組裝機§r", + "block.gtceu.iv_autoclave": "§9精英高壓釜§r", + "block.gtceu.iv_battery_buffer_16x": "16x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_4x": "4x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_battery_buffer_8x": "8x§9強導壓§r電池箱(§9IV§r)", + "block.gtceu.iv_bender": "§9精英卷板機§r", + "block.gtceu.iv_brewery": "§9精英釀造室§r", + "block.gtceu.iv_canner": "§9精英裝罐機§r", + "block.gtceu.iv_centrifuge": "§9精英離心機§r", + "block.gtceu.iv_charger_4x": "4x§9強導壓§r充電機(§9IV§r)", + "block.gtceu.iv_chemical_bath": "§9精英化學水浴機§r", + "block.gtceu.iv_chemical_reactor": "§9精英化學反應器§r", + "block.gtceu.iv_circuit_assembler": "§9精英電路組裝機§r", + "block.gtceu.iv_compressor": "§9精英壓縮機§r", + "block.gtceu.iv_cutter": "§9精英切割機§r", + "block.gtceu.iv_diode": "§9IV§r二極體", + "block.gtceu.iv_distillery": "§9精英蒸餾室§r", + "block.gtceu.iv_electric_furnace": "§9精英電爐§r", + "block.gtceu.iv_electrolyzer": "§9精英電解機§r", + "block.gtceu.iv_electromagnetic_separator": "§9精英電磁分離機§r", + "block.gtceu.iv_energy_input_hatch": "§9IV§r能量輸入倉", + "block.gtceu.iv_energy_input_hatch_16a": "16安§9IV§r能量輸入倉", + "block.gtceu.iv_energy_input_hatch_4a": "4安§9IV§r能量輸入倉", + "block.gtceu.iv_energy_output_hatch": "§9IV§r能量輸出倉", + "block.gtceu.iv_energy_output_hatch_16a": "16安§9IV§r能量輸出倉", + "block.gtceu.iv_energy_output_hatch_4a": "4安§9IV§r能量輸出倉", + "block.gtceu.iv_extractor": "§9精英提取機§r", + "block.gtceu.iv_extruder": "§9精英壓模器§r", + "block.gtceu.iv_fermenter": "§9精英發酵槽§r", + "block.gtceu.iv_fisher": "§9精英捕魚機§r", + "block.gtceu.iv_fluid_heater": "§9精英流體加熱器§r", + "block.gtceu.iv_fluid_passthrough_hatch": "§9IV§r流體通行倉", + "block.gtceu.iv_fluid_solidifier": "§9精英流體固化器§r", + "block.gtceu.iv_forge_hammer": "§9精英鍛造錘§r", + "block.gtceu.iv_forming_press": "§9精英衝壓機床§r", + "block.gtceu.iv_gas_collector": "§9精英集氣室§r", + "block.gtceu.iv_hermetic_casing": "密封機械方塊 V", + "block.gtceu.iv_input_bus": "§9IV§r輸入匯流排", + "block.gtceu.iv_input_hatch": "§9IV§r輸入倉", + "block.gtceu.iv_input_hatch_4x": "§9IV§r四重輸入倉", + "block.gtceu.iv_input_hatch_9x": "§9IV§r九重輸入倉", + "block.gtceu.iv_item_passthrough_hatch": "§9IV§r物品通行倉", + "block.gtceu.iv_lapotronic_battery": "§9IV§r蘭波頓電池", + "block.gtceu.iv_large_miner": "§9精英大型採礦機§r", + "block.gtceu.iv_laser_engraver": "§9精英雷射蝕刻機§r", + "block.gtceu.iv_lathe": "§9精英車床§r", + "block.gtceu.iv_macerator": "§9精英研磨機§r", + "block.gtceu.iv_machine_casing": "§9IV§r機械方塊", + "block.gtceu.iv_machine_hull": "§9IV§r機器外殼", + "block.gtceu.iv_mixer": "§9精英攪拌機§r", + "block.gtceu.iv_muffler_hatch": "§9IV§r消音倉", + "block.gtceu.iv_ore_washer": "§9精英洗礦廠§r", + "block.gtceu.iv_output_bus": "§9IV§r輸出匯流排", + "block.gtceu.iv_output_hatch": "§9IV§r輸出倉", + "block.gtceu.iv_output_hatch_4x": "§9IV§r四重輸出倉", + "block.gtceu.iv_output_hatch_9x": "§9IV§r九重輸出倉", + "block.gtceu.iv_packer": "§9精英打包機§r", + "block.gtceu.iv_parallel_hatch": "§9IV§r平行控制倉", + "block.gtceu.iv_polarizer": "§9精英兩極磁化機§r", + "block.gtceu.iv_quantum_chest": "量子箱 V", + "block.gtceu.iv_quantum_tank": "量子缸 V", + "block.gtceu.iv_rock_crusher": "§9精英碎岩機§r", + "block.gtceu.iv_rotor_holder": "§9IV§r轉子支架", + "block.gtceu.iv_scanner": "§9精英掃描器§r", + "block.gtceu.iv_sifter": "§9精英篩選機§r", + "block.gtceu.iv_substation_input_hatch_64a": "64安§9IV§r變電能量輸入倉", + "block.gtceu.iv_substation_output_hatch_64a": "64安§9IV§r變電能量輸出倉", + "block.gtceu.iv_thermal_centrifuge": "§9精英熱力離心機§r", + "block.gtceu.iv_transformer_16a": "§9強導壓§r高能變壓器(§9IV§r)", + "block.gtceu.iv_transformer_1a": "§9強導壓§r變壓器(§9IV§r)", + "block.gtceu.iv_transformer_2a": "§9強導壓§r進階變壓器(§9IV§r)", + "block.gtceu.iv_transformer_4a": "§9強導壓§r高流變壓器(§9IV§r)", + "block.gtceu.iv_wiremill": "§9精英線材軋機§r", + "block.gtceu.iv_world_accelerator": "§9精英世界加速器§r", + "block.gtceu.kanthal_coil_block": "坎塔爾合金線圈方塊", + "block.gtceu.laminated_glass": "夾層玻璃", + "block.gtceu.lamp.tooltip.inverted": "反相", + "block.gtceu.lamp.tooltip.no_bloom": "無泛光", + "block.gtceu.lamp.tooltip.no_light": "無光照", + "block.gtceu.large_arc_smelter": "大型電弧爐", + "block.gtceu.large_assembler": "大型組裝廠", + "block.gtceu.large_autoclave": "大型高壓結晶室", + "block.gtceu.large_brewer": "大型釀造廠", + "block.gtceu.large_centrifuge": "大型離心機組", + "block.gtceu.large_chemical_bath": "大型化學水浴機", + "block.gtceu.large_chemical_reactor": "大型化學反應器", + "block.gtceu.large_circuit_assembler": "大型電路組裝設施", + "block.gtceu.large_combustion_engine": "大型內燃引擎", + "block.gtceu.large_cutter": "大型切割機", + "block.gtceu.large_distillery": "大型分餾蒸餾廠", + "block.gtceu.large_duct_pipe": "大型風管", + "block.gtceu.large_electrolyzer": "大型電解槽", + "block.gtceu.large_electromagnet": "大型電磁工廠", + "block.gtceu.large_engraving_laser": "大型雷射蝕刻機", + "block.gtceu.large_extractor": "大型提取機", + "block.gtceu.large_extruder": "大型壓模機", + "block.gtceu.large_maceration_tower": "大型研磨塔", + "block.gtceu.large_material_press": "大型擠壓機", + "block.gtceu.large_mixer": "大型攪拌罐", + "block.gtceu.large_packer": "大型打包機", + "block.gtceu.large_scale_assembler_casing": "大型組裝機機械方塊", + "block.gtceu.large_sifting_funnel": "大型篩選漏斗", + "block.gtceu.large_solidifier": "大型固化陣列", + "block.gtceu.large_wiremill": "大型線材工廠", + "block.gtceu.laser_hazard_sign_block": "雷射危害警示方塊", + "block.gtceu.laser_safe_engraving_casing": "雷射安全機械方塊", + "block.gtceu.light_blue_borderless_lamp": "淺藍色無框燈", + "block.gtceu.light_blue_lamp": "淺藍色燈", + "block.gtceu.light_blue_large_metal_sheet": "淺藍色粗紋金屬板方塊", + "block.gtceu.light_blue_metal_sheet": "淺藍色金屬板方塊", + "block.gtceu.light_blue_studs": "淺藍色橡膠混凝土", + "block.gtceu.light_concrete": "淺色混凝土", + "block.gtceu.light_concrete_bricks": "淺色混凝土磚", + "block.gtceu.light_concrete_cobblestone": "淺色混凝土鵝卵石", + "block.gtceu.light_concrete_small_tile": "淺色混凝土小片磚瓦", + "block.gtceu.light_concrete_tile": "淺色混凝土磚瓦", + "block.gtceu.light_concrete_windmill_a": "淺色混凝土風車形磚瓦 A", + "block.gtceu.light_concrete_windmill_b": "淺色混凝土風車形磚瓦 B", + "block.gtceu.light_gray_borderless_lamp": "淺灰色無框燈", + "block.gtceu.light_gray_lamp": "淺灰色燈", + "block.gtceu.light_gray_large_metal_sheet": "淺灰色粗紋金屬板方塊", + "block.gtceu.light_gray_metal_sheet": "淺灰色金屬板方塊", + "block.gtceu.light_gray_studs": "淺灰色橡膠混凝土", + "block.gtceu.lime_borderless_lamp": "淺綠色無框燈", + "block.gtceu.lime_lamp": "淺綠色燈", + "block.gtceu.lime_large_metal_sheet": "淺綠色粗紋金屬板方塊", + "block.gtceu.lime_metal_sheet": "淺綠色金屬板方塊", + "block.gtceu.lime_studs": "淺綠色橡膠混凝土", + "block.gtceu.long_distance_fluid_pipeline": "長距離流體管道", + "block.gtceu.long_distance_fluid_pipeline_endpoint": "長距離流體管道介面", + "block.gtceu.long_distance_item_pipeline": "長距離物品管道", + "block.gtceu.long_distance_item_pipeline_endpoint": "長距離物品管道介面", + "block.gtceu.long_distance_item_pipeline_input_endpoint": "輸入介面", + "block.gtceu.long_distance_item_pipeline_input_pos": " - 輸入:%s", + "block.gtceu.long_distance_item_pipeline_network_header": "網路:", + "block.gtceu.long_distance_item_pipeline_no_network": "找不到網路", + "block.gtceu.long_distance_item_pipeline_output_endpoint": "輸出介面", + "block.gtceu.long_distance_item_pipeline_output_pos": " - 輸出:%s", + "block.gtceu.long_distance_item_pipeline_pipe_count": " - 管道:%s", + "block.gtceu.lp_steam_alloy_smelter": "低壓蒸汽合金爐", + "block.gtceu.lp_steam_compressor": "低壓蒸汽壓縮機", + "block.gtceu.lp_steam_extractor": "低壓蒸汽提取機", + "block.gtceu.lp_steam_forge_hammer": "低壓蒸汽鍛造錘", + "block.gtceu.lp_steam_furnace": "低壓蒸汽熔爐", + "block.gtceu.lp_steam_liquid_boiler": "低壓蒸汽液體燃料鍋爐", + "block.gtceu.lp_steam_macerator": "低壓蒸汽研磨機", + "block.gtceu.lp_steam_miner": "低壓蒸汽採礦機", + "block.gtceu.lp_steam_rock_crusher": "低壓蒸汽碎岩機", + "block.gtceu.lp_steam_solar_boiler": "低壓蒸汽太陽能鍋爐", + "block.gtceu.lp_steam_solid_boiler": "低壓蒸汽固體燃料鍋爐", + "block.gtceu.luv_1024a_laser_source_hatch": "1024§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_1024a_laser_target_hatch": "1024§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_16a_energy_converter": "16§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_1a_energy_converter": "1§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_256a_laser_source_hatch": "256§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_256a_laser_target_hatch": "256§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_4096a_laser_source_hatch": "4096§e安§r§dLuV§r雷射源倉", + "block.gtceu.luv_4096a_laser_target_hatch": "4096§e安§r§dLuV§r雷射靶倉", + "block.gtceu.luv_4a_energy_converter": "4§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_8a_energy_converter": "8§e安§r§dLuV§r能量轉換器", + "block.gtceu.luv_alloy_smelter": "§d精英合金爐 II§r", + "block.gtceu.luv_arc_furnace": "§d精英電弧爐 II§r", + "block.gtceu.luv_assembler": "§d精英組裝機 II§r", + "block.gtceu.luv_autoclave": "§d精英高壓釜 II§r", + "block.gtceu.luv_battery_buffer_16x": "16x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_4x": "4x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_battery_buffer_8x": "8x§d劇差壓§r電池箱(§dLuV§r)", + "block.gtceu.luv_bender": "§d精英卷板機 II§r", + "block.gtceu.luv_brewery": "§d精英釀造室 II§r", + "block.gtceu.luv_canner": "§d精英裝罐機 II§r", + "block.gtceu.luv_centrifuge": "§d精英離心機 II§r", + "block.gtceu.luv_charger_4x": "4x§d劇差壓§r充電機(§dLuV§r)", + "block.gtceu.luv_chemical_bath": "§d精英化學水浴機 II§r", + "block.gtceu.luv_chemical_reactor": "§d精英化學反應器 II§r", + "block.gtceu.luv_circuit_assembler": "§d精英電路組裝機 II§r", + "block.gtceu.luv_compressor": "§d精英壓縮機 II§r", + "block.gtceu.luv_cutter": "§d精英切割機 II§r", + "block.gtceu.luv_diode": "§dLuV§r二極體", + "block.gtceu.luv_distillery": "§d精英蒸餾室 II§r", + "block.gtceu.luv_dual_input_hatch": "§dLuV§r兩用輸入倉", + "block.gtceu.luv_dual_output_hatch": "§dLuV§r兩用輸出倉", + "block.gtceu.luv_electric_furnace": "§d精英電爐 II§r", + "block.gtceu.luv_electrolyzer": "§d精英電解機 II§r", + "block.gtceu.luv_electromagnetic_separator": "§d精英電磁分離機 II§r", + "block.gtceu.luv_energy_input_hatch": "§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_input_hatch_16a": "16安§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_input_hatch_4a": "4安§dLuV§r能量輸入倉", + "block.gtceu.luv_energy_output_hatch": "§dLuV§r能量輸出倉", + "block.gtceu.luv_energy_output_hatch_16a": "16安§dLuV§r能量輸出倉", + "block.gtceu.luv_energy_output_hatch_4a": "4安§dLuV§r能量輸出倉", + "block.gtceu.luv_extractor": "§d精英提取機 II§r", + "block.gtceu.luv_extruder": "§d精英壓模器 II§r", + "block.gtceu.luv_fermenter": "§d精英發酵槽 II§r", + "block.gtceu.luv_fisher": "§d精英捕魚機 II§r", + "block.gtceu.luv_fluid_heater": "§d精英流體加熱器 II§r", + "block.gtceu.luv_fluid_passthrough_hatch": "§dLuV§r流體通行倉", + "block.gtceu.luv_fluid_solidifier": "§d精英流體固化器 II§r", + "block.gtceu.luv_forge_hammer": "§d精英鍛造錘 II§r", + "block.gtceu.luv_forming_press": "§d精英衝壓機床 II§r", + "block.gtceu.luv_fusion_reactor": "核融合反應爐控制電腦 MK I", + "block.gtceu.luv_gas_collector": "§d精英集氣室 II§r", + "block.gtceu.luv_hermetic_casing": "密封機械方塊 VI", + "block.gtceu.luv_input_bus": "§dLuV§r輸入匯流排", + "block.gtceu.luv_input_hatch": "§dLuV§r輸入倉", + "block.gtceu.luv_input_hatch_4x": "§dLuV§r四重輸入倉", + "block.gtceu.luv_input_hatch_9x": "§dLuV§r九重輸入倉", + "block.gtceu.luv_item_passthrough_hatch": "§dLuV§r物品通行倉", + "block.gtceu.luv_lapotronic_battery": "§dLuV§r蘭波頓電池", + "block.gtceu.luv_large_miner": "§d精英大型採礦機 II§r", + "block.gtceu.luv_laser_engraver": "§d精英雷射蝕刻機 II§r", + "block.gtceu.luv_lathe": "§d精英車床 II§r", + "block.gtceu.luv_macerator": "§d精英研磨機 II§r", + "block.gtceu.luv_machine_casing": "§dLuV§r機械方塊", + "block.gtceu.luv_machine_hull": "§dLuV§r機器外殼", + "block.gtceu.luv_mixer": "§d精英攪拌機 II§r", + "block.gtceu.luv_muffler_hatch": "§dLuV§r消音倉", + "block.gtceu.luv_ore_washer": "§d精英洗礦廠 II§r", + "block.gtceu.luv_output_bus": "§dLuV§r輸出匯流排", + "block.gtceu.luv_output_hatch": "§dLuV§r輸出倉", + "block.gtceu.luv_output_hatch_4x": "§dLuV§r四重輸出倉", + "block.gtceu.luv_output_hatch_9x": "§dLuV§r九重輸出倉", + "block.gtceu.luv_packer": "§d精英打包機 II§r", + "block.gtceu.luv_parallel_hatch": "§dLuV§r平行控制倉", + "block.gtceu.luv_polarizer": "§d精英兩極磁化機 II§r", + "block.gtceu.luv_quantum_chest": "量子箱 VI", + "block.gtceu.luv_quantum_tank": "量子缸 VI", + "block.gtceu.luv_rock_crusher": "§d精英碎岩機 II§r", + "block.gtceu.luv_rotor_holder": "§dLuV§r轉子支架", + "block.gtceu.luv_scanner": "§d精英掃描器 II§r", + "block.gtceu.luv_sifter": "§d精英篩選機 II§r", + "block.gtceu.luv_substation_input_hatch_64a": "64安§dLuV§r變電能量輸入倉", + "block.gtceu.luv_substation_output_hatch_64a": "64安§dLuV§r變電能量輸出倉", + "block.gtceu.luv_thermal_centrifuge": "§d精英熱力離心機 II§r", + "block.gtceu.luv_transformer_16a": "§d劇差壓§r高能變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_1a": "§d劇差壓§r變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_2a": "§d劇差壓§r進階變壓器(§dLuV§r)", + "block.gtceu.luv_transformer_4a": "§d劇差壓§r高流變壓器(§dLuV§r)", + "block.gtceu.luv_wiremill": "§d精英線材軋機 II§r", + "block.gtceu.luv_world_accelerator": "§d精英世界加速器 II§r", + "block.gtceu.lv_16a_energy_converter": "16§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_1a_energy_converter": "1§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_4a_energy_converter": "4§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_8a_energy_converter": "8§e安§r§7LV§r能量轉換器", + "block.gtceu.lv_air_scrubber": "基礎空氣淨化器§r", + "block.gtceu.lv_alloy_smelter": "基礎合金爐§r", + "block.gtceu.lv_arc_furnace": "基礎電弧爐§r", + "block.gtceu.lv_assembler": "基礎組裝機§r", + "block.gtceu.lv_autoclave": "基礎高壓釜§r", + "block.gtceu.lv_battery_buffer_16x": "16x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_4x": "4x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_battery_buffer_8x": "8x§7低壓§r電池箱(§7LV§r)", + "block.gtceu.lv_bender": "基礎卷板機§r", + "block.gtceu.lv_block_breaker": "基礎方塊破壞器§r", + "block.gtceu.lv_brewery": "基礎釀造室§r", + "block.gtceu.lv_buffer": "基礎緩衝器§r", + "block.gtceu.lv_canner": "基礎裝罐機§r", + "block.gtceu.lv_centrifuge": "基礎離心機§r", + "block.gtceu.lv_charger_4x": "4x§7低壓§r充電機(§7LV§r)", + "block.gtceu.lv_chemical_bath": "基礎化學水浴機§r", + "block.gtceu.lv_chemical_reactor": "基礎化學反應器§r", + "block.gtceu.lv_circuit_assembler": "基礎電路組裝機§r", + "block.gtceu.lv_combustion": "基礎內燃發電機§r", + "block.gtceu.lv_compressor": "基礎壓縮機§r", + "block.gtceu.lv_cutter": "基礎切割機§r", + "block.gtceu.lv_diode": "§7LV§r二極體", + "block.gtceu.lv_distillery": "基礎蒸餾室§r", + "block.gtceu.lv_electric_furnace": "基礎電爐§r", + "block.gtceu.lv_electrolyzer": "基礎電解機§r", + "block.gtceu.lv_electromagnetic_separator": "基礎電磁分離機§r", + "block.gtceu.lv_energy_input_hatch": "§7LV§r能量輸入倉", + "block.gtceu.lv_energy_output_hatch": "§7LV§r能量輸出倉", + "block.gtceu.lv_extractor": "基礎提取機§r", + "block.gtceu.lv_extruder": "基礎壓模器§r", + "block.gtceu.lv_fermenter": "基礎發酵槽§r", + "block.gtceu.lv_fisher": "基礎捕魚機§r", + "block.gtceu.lv_fluid_heater": "基礎流體加熱器§r", + "block.gtceu.lv_fluid_passthrough_hatch": "§7LV§r流體通行倉", + "block.gtceu.lv_fluid_solidifier": "基礎流體固化器§r", + "block.gtceu.lv_forge_hammer": "基礎鍛造錘§r", + "block.gtceu.lv_forming_press": "基礎衝壓機床§r", + "block.gtceu.lv_gas_collector": "基礎集氣室§r", + "block.gtceu.lv_gas_turbine": "基礎燃氣輪機§r", + "block.gtceu.lv_hermetic_casing": "密封機械方塊 I", + "block.gtceu.lv_input_bus": "§7LV§r輸入匯流排", + "block.gtceu.lv_input_hatch": "§7LV§r輸入倉", + "block.gtceu.lv_item_collector": "基礎物品收集器§r", + "block.gtceu.lv_item_passthrough_hatch": "§7LV§r物品通行倉", + "block.gtceu.lv_laser_engraver": "基礎雷射蝕刻機§r", + "block.gtceu.lv_lathe": "基礎車床§r", + "block.gtceu.lv_macerator": "基礎研磨機§r", + "block.gtceu.lv_machine_casing": "§7LV§r機械方塊", + "block.gtceu.lv_machine_hull": "§7LV§r機器外殼", + "block.gtceu.lv_miner": "基礎採礦機§r", + "block.gtceu.lv_mixer": "基礎攪拌機§r", + "block.gtceu.lv_muffler_hatch": "§7LV§r消音倉", + "block.gtceu.lv_ore_washer": "基礎洗礦廠§r", + "block.gtceu.lv_output_bus": "§7LV§r輸出匯流排", + "block.gtceu.lv_output_hatch": "§7LV§r輸出倉", + "block.gtceu.lv_packer": "基礎打包機§r", + "block.gtceu.lv_polarizer": "基礎兩極磁化機§r", + "block.gtceu.lv_pump": "基礎泵§r", + "block.gtceu.lv_rock_crusher": "基礎碎岩機§r", + "block.gtceu.lv_scanner": "基礎掃描器§r", + "block.gtceu.lv_sifter": "基礎篩選機§r", + "block.gtceu.lv_steam_turbine": "基礎蒸汽輪機§r", + "block.gtceu.lv_super_chest": "超級箱 I", + "block.gtceu.lv_super_tank": "超級缸 I", + "block.gtceu.lv_thermal_centrifuge": "基礎熱力離心機§r", + "block.gtceu.lv_transformer_16a": "§7低壓§r高能變壓器(§7LV§r)", + "block.gtceu.lv_transformer_1a": "§7低壓§r變壓器(§7LV§r)", + "block.gtceu.lv_transformer_2a": "§7低壓§r進階變壓器(§7LV§r)", + "block.gtceu.lv_transformer_4a": "§7低壓§r高流變壓器(§7LV§r)", + "block.gtceu.lv_wiremill": "基礎線材軋機§r", + "block.gtceu.lv_world_accelerator": "基礎世界加速器§r", + "block.gtceu.magenta_borderless_lamp": "洋紅色無框燈", + "block.gtceu.magenta_lamp": "洋紅色燈", + "block.gtceu.magenta_large_metal_sheet": "洋紅色粗紋金屬板方塊", + "block.gtceu.magenta_metal_sheet": "洋紅色金屬板方塊", + "block.gtceu.magenta_studs": "洋紅色橡膠混凝土", + "block.gtceu.magic_hazard_sign_block": "魔力危害警示方塊", + "block.gtceu.magnetic_hazard_sign_block": "強磁危害警示方塊", + "block.gtceu.maintenance_hatch": "維護倉", + "block.gtceu.marble": "大理岩", + "block.gtceu.marble_bricks": "大理岩磚", + "block.gtceu.marble_cobblestone": "大理岩鵝卵石", + "block.gtceu.marble_small_tile": "大理岩小片磚瓦", + "block.gtceu.marble_tile": "大理岩磚瓦", + "block.gtceu.marble_windmill_a": "大理岩風車形磚瓦 A", + "block.gtceu.marble_windmill_b": "大理岩風車形磚瓦 B", + "block.gtceu.max_16a_energy_converter": "16§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_1a_energy_converter": "1§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_4a_energy_converter": "4§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_8a_energy_converter": "8§e安§r§c§lMAX§r能量轉換器", + "block.gtceu.max_battery_buffer_16x": "16x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_4x": "4x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_battery_buffer_8x": "8x上限壓電池箱(§c§lMAX§r)", + "block.gtceu.max_charger_4x": "4x上限壓充電機(§c§lMAX§r)", + "block.gtceu.max_dual_input_hatch": "§c§lMAX§r兩用輸入倉", + "block.gtceu.max_dual_output_hatch": "§c§lMAX§r兩用輸出倉", + "block.gtceu.max_energy_input_hatch": "§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_input_hatch_16a": "16安§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_input_hatch_4a": "4安§c§lMAX§r能量輸入倉", + "block.gtceu.max_energy_output_hatch": "§c§lMAX§r能量輸出倉", + "block.gtceu.max_energy_output_hatch_16a": "16安§c§lMAX§r能量輸出倉", + "block.gtceu.max_energy_output_hatch_4a": "4安§c§lMAX§r能量輸出倉", + "block.gtceu.max_input_bus": "§c§lMAX§r輸入匯流排", + "block.gtceu.max_input_hatch": "§c§lMAX§r輸入倉", + "block.gtceu.max_input_hatch_4x": "§c§lMAX§r四重輸入倉", + "block.gtceu.max_input_hatch_9x": "§c§lMAX§r九重輸入倉", + "block.gtceu.max_machine_casing": "§c§lMAX§r機械方塊", + "block.gtceu.max_machine_hull": "§c§lMAX§r機器外殼", + "block.gtceu.max_output_bus": "§c§lMAX§r輸出匯流排", + "block.gtceu.max_output_hatch": "§c§lMAX§r輸出倉", + "block.gtceu.max_output_hatch_4x": "§c§lMAX§r四重輸出倉", + "block.gtceu.max_output_hatch_9x": "§c§lMAX§r九重輸出倉", + "block.gtceu.max_substation_input_hatch_64a": "64安§c§lMAX§r變電能量輸入倉", + "block.gtceu.max_substation_output_hatch_64a": "64安§c§lMAX§r變電能量輸出倉", + "block.gtceu.me_input_bus": "ME輸入匯流排", + "block.gtceu.me_input_hatch": "ME輸入倉", + "block.gtceu.me_output_bus": "ME輸出匯流排", + "block.gtceu.me_output_hatch": "ME輸出倉", + "block.gtceu.me_pattern_buffer": "ME樣板供應倉", + "block.gtceu.me_pattern_buffer_proxy": "ME遠端樣板供應倉", + "block.gtceu.me_stocking_input_bus": "ME庫存輸入匯流排", + "block.gtceu.me_stocking_input_hatch": "ME庫存輸入倉", + "block.gtceu.mega_blast_furnace": "轉底爐", + "block.gtceu.mega_vacuum_freezer": "巨型真空冷凍機", + "block.gtceu.miner_pipe": "採礦管道", + "block.gtceu.mob_infestation_hazard_sign_block": "怪物侵襲危害警示方塊", + "block.gtceu.mob_spawner_hazard_sign_block": "生怪磚危害警示方塊", + "block.gtceu.molybdenum_disilicide_coil_block": "二矽化鉬線圈方塊", + "block.gtceu.mossy_dark_concrete_bricks": "青苔深色混凝土磚", + "block.gtceu.mossy_dark_concrete_cobblestone": "青苔深色混凝土鵝卵石", + "block.gtceu.mossy_light_concrete_bricks": "青苔淺色混凝土磚", + "block.gtceu.mossy_light_concrete_cobblestone": "青苔淺色混凝土鵝卵石", + "block.gtceu.mossy_marble_bricks": "青苔大理岩磚", + "block.gtceu.mossy_marble_cobblestone": "青苔大理岩鵝卵石", + "block.gtceu.mossy_red_granite_bricks": "青苔紅花崗岩磚", + "block.gtceu.mossy_red_granite_cobblestone": "青苔紅花崗岩鵝卵石", + "block.gtceu.multi_smelter": "工業熔爐", + "block.gtceu.mv_16a_energy_converter": "16§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_1a_energy_converter": "1§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_4a_energy_converter": "4§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_8a_energy_converter": "8§e安§r§bMV§r能量轉換器", + "block.gtceu.mv_air_scrubber": "§b進階空氣淨化器§r", + "block.gtceu.mv_alloy_smelter": "§b進階合金爐§r", + "block.gtceu.mv_arc_furnace": "§b進階電弧爐§r", + "block.gtceu.mv_assembler": "§b進階組裝機§r", + "block.gtceu.mv_autoclave": "§b進階高壓釜§r", + "block.gtceu.mv_battery_buffer_16x": "16x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_4x": "4x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_battery_buffer_8x": "8x§b中壓§r電池箱(§bMV§r)", + "block.gtceu.mv_bedrock_ore_miner": "§b進階基岩採礦機§r", + "block.gtceu.mv_bender": "§b進階卷板機§r", + "block.gtceu.mv_block_breaker": "§b進階方塊破壞器§r", + "block.gtceu.mv_brewery": "§b進階釀造室§r", + "block.gtceu.mv_buffer": "§b進階緩衝器§r", + "block.gtceu.mv_canner": "§b進階裝罐機§r", + "block.gtceu.mv_centrifuge": "§b進階離心機§r", + "block.gtceu.mv_charger_4x": "4x§b中壓§r充電機(§bMV§r)", + "block.gtceu.mv_chemical_bath": "§b進階化學水浴機§r", + "block.gtceu.mv_chemical_reactor": "§b進階化學反應器§r", + "block.gtceu.mv_circuit_assembler": "§b進階電路組裝機§r", + "block.gtceu.mv_combustion": "§b進階內燃發電機§r", + "block.gtceu.mv_compressor": "§b進階壓縮機§r", + "block.gtceu.mv_cutter": "§b進階切割機§r", + "block.gtceu.mv_diode": "§bMV§r二極體", + "block.gtceu.mv_distillery": "§b進階蒸餾室§r", + "block.gtceu.mv_electric_furnace": "§b進階電爐§r", + "block.gtceu.mv_electrolyzer": "§b進階電解機§r", + "block.gtceu.mv_electromagnetic_separator": "§b進階電磁分離機§r", + "block.gtceu.mv_energy_input_hatch": "§bMV§r能量輸入倉", + "block.gtceu.mv_energy_output_hatch": "§bMV§r能量輸出倉", + "block.gtceu.mv_extractor": "§b進階提取機§r", + "block.gtceu.mv_extruder": "§b進階壓模器§r", + "block.gtceu.mv_fermenter": "§b進階發酵槽§r", + "block.gtceu.mv_fisher": "§b進階捕魚機§r", + "block.gtceu.mv_fluid_drilling_rig": "§b進階流體鑽機 §r", + "block.gtceu.mv_fluid_heater": "§b進階流體加熱器§r", + "block.gtceu.mv_fluid_passthrough_hatch": "§bMV§r流體通行倉", + "block.gtceu.mv_fluid_solidifier": "§b進階流體固化器§r", + "block.gtceu.mv_forge_hammer": "§b進階鍛造錘§r", + "block.gtceu.mv_forming_press": "§b進階衝壓機床§r", + "block.gtceu.mv_gas_collector": "§b進階集氣室§r", + "block.gtceu.mv_gas_turbine": "§b進階燃氣輪機§r", + "block.gtceu.mv_hermetic_casing": "密封機械方塊 II", + "block.gtceu.mv_input_bus": "§bMV§r輸入匯流排", + "block.gtceu.mv_input_hatch": "§bMV§r輸入倉", + "block.gtceu.mv_item_collector": "§b進階物品收集器§r", + "block.gtceu.mv_item_passthrough_hatch": "§bMV§r物品通行倉", + "block.gtceu.mv_laser_engraver": "§b進階雷射蝕刻機§r", + "block.gtceu.mv_lathe": "§b進階車床§r", + "block.gtceu.mv_macerator": "§b進階研磨機§r", + "block.gtceu.mv_machine_casing": "§bMV§r機械方塊", + "block.gtceu.mv_machine_hull": "§bMV§r機器外殼", + "block.gtceu.mv_miner": "§b進階採礦機§r", + "block.gtceu.mv_mixer": "§b進階攪拌機§r", + "block.gtceu.mv_muffler_hatch": "§bMV§r消音倉", + "block.gtceu.mv_ore_washer": "§b進階洗礦廠§r", + "block.gtceu.mv_output_bus": "§bMV§r輸出匯流排", + "block.gtceu.mv_output_hatch": "§bMV§r輸出倉", + "block.gtceu.mv_packer": "§b進階打包機§r", + "block.gtceu.mv_polarizer": "§b進階兩極磁化機§r", + "block.gtceu.mv_pump": "§b進階泵§r", + "block.gtceu.mv_rock_crusher": "§b進階碎岩機§r", + "block.gtceu.mv_scanner": "§b進階掃描器§r", + "block.gtceu.mv_sifter": "§b進階篩選機§r", + "block.gtceu.mv_steam_turbine": "§b進階蒸汽輪機§r", + "block.gtceu.mv_super_chest": "超級箱 II", + "block.gtceu.mv_super_tank": "超級缸 II", + "block.gtceu.mv_thermal_centrifuge": "§b進階熱力離心機§r", + "block.gtceu.mv_transformer_16a": "§b中壓§r高能變壓器(§bMV§r)", + "block.gtceu.mv_transformer_1a": "§b中壓§r變壓器(§bMV§r)", + "block.gtceu.mv_transformer_2a": "§b中壓§r進階變壓器(§bMV§r)", + "block.gtceu.mv_transformer_4a": "§b中壓§r高流變壓器(§bMV§r)", + "block.gtceu.mv_wiremill": "§b進階線材軋機§r", + "block.gtceu.mv_world_accelerator": "§b進階世界加速器§r", + "block.gtceu.naquadah_coil_block": "矽岩線圈方塊", + "block.gtceu.network_switch": "網路交換機", + "block.gtceu.nichrome_coil_block": "鎳鉻合金線圈方塊", + "block.gtceu.noise_hazard_sign_block": "噪音危害警示方塊", + "block.gtceu.nonconducting_casing": "絕緣機械方塊", + "block.gtceu.normal_duct_pipe": "普通風管", + "block.gtceu.normal_laser_pipe": "普通雷射管道", + "block.gtceu.normal_laser_pipe.tooltip": "§f無損§7傳遞能量,僅限直線擺放", + "block.gtceu.normal_optical_pipe": "光纜", + "block.gtceu.normal_optical_pipe.tooltip": "§7傳遞§f算力§7或§f研究資料§7", + "block.gtceu.object_holder": "物品支架", + "block.gtceu.oil_heavy": "重油", + "block.gtceu.oil_light": "輕油", + "block.gtceu.oil_medium": "原油", + "block.gtceu.opv_1024a_laser_source_hatch": "1024§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_1024a_laser_target_hatch": "1024§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_16a_energy_converter": "16§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_1a_energy_converter": "1§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_256a_laser_source_hatch": "256§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_256a_laser_target_hatch": "256§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_4096a_laser_source_hatch": "4096§e安§r§9§lOpV§r雷射源倉", + "block.gtceu.opv_4096a_laser_target_hatch": "4096§e安§r§9§lOpV§r雷射靶倉", + "block.gtceu.opv_4a_energy_converter": "4§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_8a_energy_converter": "8§e安§r§9§lOpV§r能量轉換器", + "block.gtceu.opv_alloy_smelter": "§9§l傳奇合金爐§r", + "block.gtceu.opv_arc_furnace": "§9§l傳奇電弧爐§r", + "block.gtceu.opv_assembler": "§9§l傳奇組裝機§r", + "block.gtceu.opv_autoclave": "§9§l傳奇高壓釜§r", + "block.gtceu.opv_battery_buffer_16x": "16x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_4x": "4x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_battery_buffer_8x": "8x§9過載壓§r電池箱(§9§lOpV§r)", + "block.gtceu.opv_bender": "§9§l傳奇卷板機§r", + "block.gtceu.opv_brewery": "§9§l傳奇釀造室§r", + "block.gtceu.opv_canner": "§9§l傳奇裝罐機§r", + "block.gtceu.opv_centrifuge": "§9§l傳奇離心機§r", + "block.gtceu.opv_charger_4x": "4x§9過載壓§r充電機(§9§lOpV§r)", + "block.gtceu.opv_chemical_bath": "§9§l傳奇化學水浴機§r", + "block.gtceu.opv_chemical_reactor": "§9§l傳奇化學反應器§r", + "block.gtceu.opv_circuit_assembler": "§9§l傳奇電路組裝機§r", + "block.gtceu.opv_compressor": "§9§l傳奇壓縮機§r", + "block.gtceu.opv_cutter": "§9§l傳奇切割機§r", + "block.gtceu.opv_diode": "§9§lOpV§r二極體", + "block.gtceu.opv_distillery": "§9§l傳奇蒸餾室§r", + "block.gtceu.opv_dual_input_hatch": "§9§lOpV§r兩用輸入倉", + "block.gtceu.opv_dual_output_hatch": "§9§lOpV§r兩用輸出倉", + "block.gtceu.opv_electric_furnace": "§9§l傳奇電爐§r", + "block.gtceu.opv_electrolyzer": "§9§l傳奇電解機§r", + "block.gtceu.opv_electromagnetic_separator": "§9§l傳奇電磁分離機§r", + "block.gtceu.opv_energy_input_hatch": "§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_input_hatch_16a": "16安§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_input_hatch_4a": "4安§9§lOpV§r能量輸入倉", + "block.gtceu.opv_energy_output_hatch": "§9§lOpV§r能量輸出倉", + "block.gtceu.opv_energy_output_hatch_16a": "16安§9§lOpV§r能量輸出倉", + "block.gtceu.opv_energy_output_hatch_4a": "4安§9§lOpV§r能量輸出倉", + "block.gtceu.opv_extractor": "§9§l傳奇提取機§r", + "block.gtceu.opv_extruder": "§9§l傳奇壓模器§r", + "block.gtceu.opv_fermenter": "§9§l傳奇發酵槽§r", + "block.gtceu.opv_fluid_heater": "§9§l傳奇流體加熱器§r", + "block.gtceu.opv_fluid_passthrough_hatch": "§9§lOpV§r流體通行倉", + "block.gtceu.opv_fluid_solidifier": "§9§l傳奇流體固化器§r", + "block.gtceu.opv_forge_hammer": "§9§l傳奇鍛造錘§r", + "block.gtceu.opv_forming_press": "§9§l傳奇衝壓機床§r", + "block.gtceu.opv_gas_collector": "§9§l傳奇集氣室§r", + "block.gtceu.opv_input_bus": "§9§lOpV§r輸入匯流排", + "block.gtceu.opv_input_hatch": "§9§lOpV§r輸入倉", + "block.gtceu.opv_input_hatch_4x": "§9§lOpV§r四重輸入倉", + "block.gtceu.opv_input_hatch_9x": "§9§lOpV§r九重輸入倉", + "block.gtceu.opv_item_passthrough_hatch": "§9§lOpV§r物品通行倉", + "block.gtceu.opv_laser_engraver": "§9§l傳奇雷射蝕刻機§r", + "block.gtceu.opv_lathe": "§9§l傳奇車床§r", + "block.gtceu.opv_macerator": "§9§l傳奇研磨機§r", + "block.gtceu.opv_machine_casing": "§9§lOpV§r機械方塊", + "block.gtceu.opv_machine_hull": "§9§lOpV§r機器外殼", + "block.gtceu.opv_mixer": "§9§l傳奇攪拌機§r", + "block.gtceu.opv_muffler_hatch": "§9§lOpV§r消音倉", + "block.gtceu.opv_ore_washer": "§9§l傳奇洗礦廠§r", + "block.gtceu.opv_output_bus": "§9§lOpV§r輸出匯流排", + "block.gtceu.opv_output_hatch": "§9§lOpV§r輸出倉", + "block.gtceu.opv_output_hatch_4x": "§9§lOpV§r四重輸出倉", + "block.gtceu.opv_output_hatch_9x": "§9§lOpV§r九重輸出倉", + "block.gtceu.opv_packer": "§9§l傳奇打包機§r", + "block.gtceu.opv_polarizer": "§9§l傳奇兩極磁化機§r", + "block.gtceu.opv_quantum_chest": "量子箱 XIII", + "block.gtceu.opv_quantum_tank": "量子缸 XIII", + "block.gtceu.opv_rock_crusher": "§9§l傳奇碎岩機§r", + "block.gtceu.opv_rotor_holder": "§9§lOpV§r轉子支架", + "block.gtceu.opv_scanner": "§9§l傳奇掃描器§r", + "block.gtceu.opv_sifter": "§9§l傳奇篩選機§r", + "block.gtceu.opv_substation_input_hatch_64a": "64安§9§lOpV§r變電能量輸入倉", + "block.gtceu.opv_substation_output_hatch_64a": "64安§9§lOpV§r變電能量輸出倉", + "block.gtceu.opv_thermal_centrifuge": "§9§l傳奇熱力離心機§r", + "block.gtceu.opv_transformer_16a": "§9過載壓§r高能變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_1a": "§9過載壓§r變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_2a": "§9過載壓§r進階變壓器(§9OpV§r)", + "block.gtceu.opv_transformer_4a": "§9過載壓§r高流變壓器(§9OpV§r)", + "block.gtceu.opv_wiremill": "§9§l傳奇線材軋機§r", + "block.gtceu.orange_borderless_lamp": "橙色無框燈", + "block.gtceu.orange_lamp": "橙色燈", + "block.gtceu.orange_large_metal_sheet": "橙色粗紋金屬板方塊", + "block.gtceu.orange_metal_sheet": "橙色金屬板方塊", + "block.gtceu.orange_studs": "橙色橡膠混凝土", + "block.gtceu.overworld_marker": "主世界", + "block.gtceu.palladium_substation": "鍍鈀變電站機械方塊", + "block.gtceu.pattern_buffer.desc.0": "§f多方塊結構的整合式§6AE2樣板供應器§f。", + "block.gtceu.pattern_buffer.desc.1": "§fAE2樣板可以利用§6共享庫存§f中的一切。", + "block.gtceu.pattern_buffer.desc.2": "§f使用§b快閃記憶體§f綁定§6ME遠端樣板供應倉§f,以使機器相互連線!", + "block.gtceu.pattern_buffer_proxy.desc.0": "§f可以將單單一個§6ME樣板供應倉§f連線到眾多機器。", + "block.gtceu.pattern_buffer_proxy.desc.1": "§f所有綁定的遠端樣板供應倉將共享§6原樣板供應倉§f中的樣板。", + "block.gtceu.pattern_buffer_proxy.desc.2": "§f讓工廠蓬勃發展!", + "block.gtceu.petrified_foam": "石化建築泡沫", + "block.gtceu.pink_borderless_lamp": "粉紅色無框燈", + "block.gtceu.pink_lamp": "粉紅色燈", + "block.gtceu.pink_large_metal_sheet": "粉紅色粗紋金屬板方塊", + "block.gtceu.pink_metal_sheet": "粉紅色金屬板方塊", + "block.gtceu.pink_studs": "粉紅色橡膠混凝土", + "block.gtceu.plascrete": "塑膠混凝土", + "block.gtceu.plasma_large_turbine": "大型電漿渦輪", + "block.gtceu.polished_dark_concrete": "拋光深色混凝土", + "block.gtceu.polished_light_concrete": "拋光淺色混凝土", + "block.gtceu.polished_marble": "拋光大理岩", + "block.gtceu.polished_red_granite": "拋光紅花崗岩", + "block.gtceu.powderbarrel": "火藥桶", + "block.gtceu.powderbarrel.drops_tooltip": "爆炸範圍略大於TNT,所有被摧毀的方塊都會掉落", + "block.gtceu.power_substation": "蓄能變電站", + "block.gtceu.primitive_blast_furnace": "土高爐", + "block.gtceu.primitive_pump": "原始水泵", + "block.gtceu.ptfe_pipe_casing": "聚四氟乙烯管道方塊", + "block.gtceu.pump_deck": "水泵蓋板", + "block.gtceu.pump_hatch": "水泵倉", + "block.gtceu.purple_borderless_lamp": "紫色無框燈", + "block.gtceu.purple_lamp": "紫色燈", + "block.gtceu.purple_large_metal_sheet": "紫色粗紋金屬板方塊", + "block.gtceu.purple_metal_sheet": "紫色金屬板方塊", + "block.gtceu.purple_studs": "紫色橡膠混凝土", + "block.gtceu.pyrolyse_oven": "熱解爐", + "block.gtceu.radioactive_hazard_sign_block": "輻射危害警示方塊", + "block.gtceu.reaction_safe_mixing_casing": "惰性攪拌機械方塊", + "block.gtceu.red_borderless_lamp": "紅色無框燈", + "block.gtceu.red_granite": "紅花崗岩", + "block.gtceu.red_granite_bricks": "紅花崗岩磚", + "block.gtceu.red_granite_cobblestone": "紅花崗岩鵝卵石", + "block.gtceu.red_granite_small_tile": "紅花崗岩小片磚瓦", + "block.gtceu.red_granite_tile": "紅花崗岩磚磚瓦", + "block.gtceu.red_granite_windmill_a": "紅花崗岩風車形磚磚瓦 A", + "block.gtceu.red_granite_windmill_b": "紅花崗岩風車形磚磚瓦 B", + "block.gtceu.red_lamp": "紅色燈", + "block.gtceu.red_large_metal_sheet": "紅色粗紋金屬板方塊", + "block.gtceu.red_metal_sheet": "紅色金屬板方塊", + "block.gtceu.red_studs": "紅色橡膠混凝土", + "block.gtceu.reinforced_foam": "強化建築泡沫", + "block.gtceu.reinforced_stone": "防爆石", + "block.gtceu.research_station": "研究站", + "block.gtceu.reservoir_hatch": "蓄水倉", + "block.gtceu.robust_machine_casing": "強化鎢鋼機械方塊", + "block.gtceu.rtm_alloy_coil_block": "釕鎢鉬合金線圈方塊", + "block.gtceu.rubber_button": "橡膠木按鈕", + "block.gtceu.rubber_door": "橡膠木門", + "block.gtceu.rubber_fence": "橡膠木柵欄", + "block.gtceu.rubber_fence_gate": "橡膠木柵欄門", + "block.gtceu.rubber_hanging_sign": "懸掛式橡膠木告示牌", + "block.gtceu.rubber_leaves": "橡膠木樹葉", + "block.gtceu.rubber_log": "橡膠木原木", + "block.gtceu.rubber_planks": "橡膠木材", + "block.gtceu.rubber_pressure_plate": "橡膠木壓力板", + "block.gtceu.rubber_sapling": "橡膠木樹苗", + "block.gtceu.rubber_sign": "橡膠木告示牌", + "block.gtceu.rubber_slab": "橡膠木半磚", + "block.gtceu.rubber_stairs": "橡膠木階梯", + "block.gtceu.rubber_trapdoor": "橡膠木地板門", + "block.gtceu.rubber_wood": "橡膠木", + "block.gtceu.secure_maceration_casing": "安全研磨機械方塊", + "block.gtceu.shock_proof_cutting_casing": "防震切割機械方塊", + "block.gtceu.slicing_blades": "切片刀", + "block.gtceu.small_dark_concrete_bricks": "深色混凝土小塊磚", + "block.gtceu.small_duct_pipe": "小型風管", + "block.gtceu.small_light_concrete_bricks": "淺色混凝土小塊磚", + "block.gtceu.small_marble_bricks": "大理岩小塊磚", + "block.gtceu.small_red_granite_bricks": "紅花崗岩小塊磚", + "block.gtceu.solid_machine_casing": "脫氧機械方塊", + "block.gtceu.spatial_storage_hazard_sign_block": "空間儲存危害警示方塊", + "block.gtceu.square_dark_concrete_bricks": "深色混凝土方形磚", + "block.gtceu.square_light_concrete_bricks": "淺色混凝土方形磚", + "block.gtceu.square_marble_bricks": "大理岩方形磚", + "block.gtceu.square_red_granite_bricks": "紅花崗岩方形磚", + "block.gtceu.stable_machine_casing": "加強鈦機械方塊", + "block.gtceu.stainless_steel_crate": "不鏽鋼板條箱", + "block.gtceu.stainless_steel_drum": "不鏽鋼桶", + "block.gtceu.stainless_steel_gearbox": "不鏽鋼齒輪箱機械方塊", + "block.gtceu.stainless_steel_turbine_casing": "不鏽鋼渦輪機械方塊", + "block.gtceu.steam_casing_bricked_bronze": "磚砌青銅外殼", + "block.gtceu.steam_casing_bricked_bronze.tooltip": "§7用來製作你的第一批蒸汽機器", + "block.gtceu.steam_casing_bricked_steel": "磚砌鍛鐵外殼", + "block.gtceu.steam_casing_bricked_steel.tooltip": "§7用來製作更高等級的蒸汽機器", + "block.gtceu.steam_casing_bronze": "青銅外殼", + "block.gtceu.steam_casing_bronze.tooltip": "§7用來製作你的第一批蒸汽機器", + "block.gtceu.steam_casing_steel": "鋼製外殼", + "block.gtceu.steam_casing_steel.tooltip": "§7用來製作更高等級的蒸汽機器", + "block.gtceu.steam_grinder": "蒸汽碾磨機", + "block.gtceu.steam_input_bus": "輸入匯流排(蒸汽)", + "block.gtceu.steam_input_hatch": "蒸汽輸入倉", + "block.gtceu.steam_large_turbine": "大型蒸汽渦輪", + "block.gtceu.steam_liquid_boiler.bronze": "小型蒸汽液體燃料鍋爐", + "block.gtceu.steam_machine_casing": "蒸汽機械方塊", + "block.gtceu.steam_output_bus": "輸出匯流排(蒸汽)", + "block.gtceu.steam_oven": "蒸汽熔煉爐", + "block.gtceu.steam_solid_boiler.bronze": "小型蒸汽固體燃料鍋爐", + "block.gtceu.steel_brick_casing": "磚砌鍛鐵外殼", + "block.gtceu.steel_crate": "鋼板條箱", + "block.gtceu.steel_drum": "鋼桶", + "block.gtceu.steel_firebox_casing": "鋼製燃燒室", + "block.gtceu.steel_gearbox": "鋼齒輪箱機械方塊", + "block.gtceu.steel_large_boiler": "大型鋼鍋爐", + "block.gtceu.steel_machine_casing": "脫氧鋼機械方塊", + "block.gtceu.steel_multiblock_tank": "鋼製多方塊儲罐", + "block.gtceu.steel_pipe_casing": "鋼管道方塊", + "block.gtceu.steel_tank_valve": "鋼製儲罐閥門", + "block.gtceu.steel_turbine_casing": "鋼渦輪機械方塊", + "block.gtceu.sterilizing_filter_casing": "除菌過濾器機械方塊", + "block.gtceu.stress_proof_casing": "耐壓機械方塊", + "block.gtceu.stripped_rubber_log": "剝皮橡膠木原木", + "block.gtceu.stripped_rubber_wood": "剝皮橡膠木塊", + "block.gtceu.sturdy_machine_casing": "堅固高速鋼-E機械方塊", + "block.gtceu.substation_capacitor.tooltip_empty": "§7用於填補蓄能變電站的結構空隙", + "block.gtceu.substation_capacitor.tooltip_filled": "§c電池容量:§f%d EU", + "block.gtceu.superconducting_coil": "超導線圈方塊", + "block.gtceu.tempered_glass": "鋼化玻璃", + "block.gtceu.the_end_marker": "終界", + "block.gtceu.the_nether_marker": "地獄", + "block.gtceu.titanium_crate": "鈦板條箱", + "block.gtceu.titanium_drum": "鈦桶", + "block.gtceu.titanium_firebox_casing": "鈦燃燒室", + "block.gtceu.titanium_gearbox": "鈦齒輪箱機械方塊", + "block.gtceu.titanium_large_boiler": "大型鈦鍋爐", + "block.gtceu.titanium_pipe_casing": "鈦管道方塊", + "block.gtceu.titanium_turbine_casing": "鈦渦輪機械方塊", + "block.gtceu.treated_wood_button": "防腐木按鈕", + "block.gtceu.treated_wood_door": "防腐木門", + "block.gtceu.treated_wood_fence": "防腐木柵欄", + "block.gtceu.treated_wood_fence_gate": "防腐木柵欄門", + "block.gtceu.treated_wood_hanging_sign": "懸掛式防腐木告示牌", + "block.gtceu.treated_wood_planks": "防腐木材", + "block.gtceu.treated_wood_pressure_plate": "防腐木壓力板", + "block.gtceu.treated_wood_sign": "防腐木告示牌", + "block.gtceu.treated_wood_slab": "防腐木半磚", + "block.gtceu.treated_wood_stairs": "防腐木階梯", + "block.gtceu.treated_wood_trapdoor": "防腐木地板門", + "block.gtceu.trinium_coil_block": "凱金線圈方塊", + "block.gtceu.tritanium_coil_block": "三鈦線圈方塊", + "block.gtceu.tungsten_steel_crate": "鎢鋼板條箱", + "block.gtceu.tungsten_steel_drum": "鎢鋼桶", + "block.gtceu.tungstensteel_firebox_casing": "鎢鋼燃燒室", + "block.gtceu.tungstensteel_gearbox": "鎢鋼齒輪箱機械方塊", + "block.gtceu.tungstensteel_large_boiler": "大型鎢鋼鍋爐", + "block.gtceu.tungstensteel_pipe_casing": "鎢鋼管道方塊", + "block.gtceu.tungstensteel_turbine_casing": "鎢鋼渦輪機械方塊", + "block.gtceu.turret_hazard_sign_block": "炮塔危害警示方塊", + "block.gtceu.uev_1024a_laser_source_hatch": "1024§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_1024a_laser_target_hatch": "1024§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_16a_energy_converter": "16§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_1a_energy_converter": "1§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_256a_laser_source_hatch": "256§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_256a_laser_target_hatch": "256§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_4096a_laser_source_hatch": "4096§e安§r§aUEV§r雷射源倉", + "block.gtceu.uev_4096a_laser_target_hatch": "4096§e安§r§aUEV§r雷射靶倉", + "block.gtceu.uev_4a_energy_converter": "4§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_8a_energy_converter": "8§e安§r§aUEV§r能量轉換器", + "block.gtceu.uev_alloy_smelter": "§a史詩合金爐 II§r", + "block.gtceu.uev_arc_furnace": "§a史詩電弧爐 II§r", + "block.gtceu.uev_assembler": "§a史詩組裝機 II§r", + "block.gtceu.uev_autoclave": "§a史詩高壓釜 II§r", + "block.gtceu.uev_battery_buffer_16x": "16x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_4x": "4x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_battery_buffer_8x": "8x§a極超壓§r電池箱(§aUEV§r)", + "block.gtceu.uev_bender": "§a史詩卷板機 II§r", + "block.gtceu.uev_brewery": "§a史詩釀造室 II§r", + "block.gtceu.uev_canner": "§a史詩裝罐機 II§r", + "block.gtceu.uev_centrifuge": "§a史詩離心機 II§r", + "block.gtceu.uev_charger_4x": "4x§a極超壓§r充電機(§aUEV§r)", + "block.gtceu.uev_chemical_bath": "§a史詩化學水浴機 II§r", + "block.gtceu.uev_chemical_reactor": "§a史詩化學反應器 II§r", + "block.gtceu.uev_circuit_assembler": "§a史詩電路組裝機 II§r", + "block.gtceu.uev_compressor": "§a史詩壓縮機 II§r", + "block.gtceu.uev_cutter": "§a史詩切割機 II§r", + "block.gtceu.uev_diode": "§aUEV§r二極體", + "block.gtceu.uev_distillery": "§a史詩蒸餾室 II§r", + "block.gtceu.uev_dual_input_hatch": "§aUEV§r兩用輸入倉", + "block.gtceu.uev_dual_output_hatch": "§aUEV§r兩用輸出倉", + "block.gtceu.uev_electric_furnace": "§a史詩電爐 II§r", + "block.gtceu.uev_electrolyzer": "§a史詩電解機 II§r", + "block.gtceu.uev_electromagnetic_separator": "§a史詩電磁分離機 II§r", + "block.gtceu.uev_energy_input_hatch": "§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_input_hatch_16a": "16安§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_input_hatch_4a": "4安§aUEV§r能量輸入倉", + "block.gtceu.uev_energy_output_hatch": "§aUEV§r能量輸出倉", + "block.gtceu.uev_energy_output_hatch_16a": "16安§aUEV§r能量輸出倉", + "block.gtceu.uev_energy_output_hatch_4a": "4安§aUEV§r能量輸出倉", + "block.gtceu.uev_extractor": "§a史詩提取機 II§r", + "block.gtceu.uev_extruder": "§a史詩壓模器 II§r", + "block.gtceu.uev_fermenter": "§a史詩發酵槽 II§r", + "block.gtceu.uev_fluid_heater": "§a史詩流體加熱器 II§r", + "block.gtceu.uev_fluid_passthrough_hatch": "§aUEV§r流體通行倉", + "block.gtceu.uev_fluid_solidifier": "§a史詩流體固化器 II§r", + "block.gtceu.uev_forge_hammer": "§a史詩鍛造錘 II§r", + "block.gtceu.uev_forming_press": "§a史詩衝壓機床 II§r", + "block.gtceu.uev_gas_collector": "§a史詩集氣室 II§r", + "block.gtceu.uev_input_bus": "§aUEV§r輸入匯流排", + "block.gtceu.uev_input_hatch": "§aUEV§r輸入倉", + "block.gtceu.uev_input_hatch_4x": "§aUEV§r四重輸入倉", + "block.gtceu.uev_input_hatch_9x": "§aUEV§r九重輸入倉", + "block.gtceu.uev_item_passthrough_hatch": "§aUEV§r物品通行倉", + "block.gtceu.uev_laser_engraver": "§a史詩雷射蝕刻機 II§r", + "block.gtceu.uev_lathe": "§a史詩車床 II§r", + "block.gtceu.uev_macerator": "§a史詩研磨機 II§r", + "block.gtceu.uev_machine_casing": "§aUEV§r機械方塊", + "block.gtceu.uev_machine_hull": "§aUEV§r機器外殼", + "block.gtceu.uev_mixer": "§a史詩攪拌機 II§r", + "block.gtceu.uev_muffler_hatch": "§aUEV§r消音倉", + "block.gtceu.uev_ore_washer": "§a史詩洗礦廠 II§r", + "block.gtceu.uev_output_bus": "§aUEV§r輸出匯流排", + "block.gtceu.uev_output_hatch": "§aUEV§r輸出倉", + "block.gtceu.uev_output_hatch_4x": "§aUEV§r四重輸出倉", + "block.gtceu.uev_output_hatch_9x": "§aUEV§r九重輸出倉", + "block.gtceu.uev_packer": "§a史詩打包機 II§r", + "block.gtceu.uev_polarizer": "§a史詩兩極磁化機 II§r", + "block.gtceu.uev_quantum_chest": "量子箱 X", + "block.gtceu.uev_quantum_tank": "量子缸 X", + "block.gtceu.uev_rock_crusher": "§a史詩碎岩機 II§r", + "block.gtceu.uev_rotor_holder": "§aUEV§r轉子支架", + "block.gtceu.uev_scanner": "§a史詩掃描器 II§r", + "block.gtceu.uev_sifter": "§a史詩篩選機 II§r", + "block.gtceu.uev_substation_input_hatch_64a": "64安§aUEV§r變電能量輸入倉", + "block.gtceu.uev_substation_output_hatch_64a": "64安§aUEV§r變電能量輸出倉", + "block.gtceu.uev_thermal_centrifuge": "§a史詩熱力離心機 II§r", + "block.gtceu.uev_transformer_16a": "§a極超壓§r高能變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_1a": "§a極超壓§r變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_2a": "§a極超壓§r進階變壓器(§aUEV§r)", + "block.gtceu.uev_transformer_4a": "§a極超壓§r高流變壓器(§aUEV§r)", + "block.gtceu.uev_wiremill": "§a史詩線材軋機 II§r", + "block.gtceu.uhv_1024a_laser_source_hatch": "1024§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_1024a_laser_target_hatch": "1024§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_16a_energy_converter": "16§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_1a_energy_converter": "1§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_256a_laser_source_hatch": "256§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_256a_laser_target_hatch": "256§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_4096a_laser_source_hatch": "4096§e安§r§4UHV§r雷射源倉", + "block.gtceu.uhv_4096a_laser_target_hatch": "4096§e安§r§4UHV§r雷射靶倉", + "block.gtceu.uhv_4a_energy_converter": "4§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_8a_energy_converter": "8§e安§r§4UHV§r能量轉換器", + "block.gtceu.uhv_alloy_smelter": "§4史詩合金爐§r", + "block.gtceu.uhv_arc_furnace": "§4史詩電弧爐§r", + "block.gtceu.uhv_assembler": "§4史詩組裝機§r", + "block.gtceu.uhv_autoclave": "§4史詩高壓釜§r", + "block.gtceu.uhv_battery_buffer_16x": "16x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_4x": "4x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_battery_buffer_8x": "8x§4極高壓§r電池箱(§4UHV§r)", + "block.gtceu.uhv_bender": "§4史詩卷板機§r", + "block.gtceu.uhv_brewery": "§4史詩釀造室§r", + "block.gtceu.uhv_canner": "§4史詩裝罐機§r", + "block.gtceu.uhv_centrifuge": "§4史詩離心機§r", + "block.gtceu.uhv_charger_4x": "4x§4極高壓§r充電機(§4UHV§r)", + "block.gtceu.uhv_chemical_bath": "§4史詩化學水浴機§r", + "block.gtceu.uhv_chemical_reactor": "§4史詩化學反應器§r", + "block.gtceu.uhv_circuit_assembler": "§4史詩電路組裝機§r", + "block.gtceu.uhv_compressor": "§4史詩壓縮機§r", + "block.gtceu.uhv_cutter": "§4史詩切割機§r", + "block.gtceu.uhv_diode": "§4UHV§r二極體", + "block.gtceu.uhv_distillery": "§4史詩蒸餾室§r", + "block.gtceu.uhv_dual_input_hatch": "§4UHV§r兩用輸入倉", + "block.gtceu.uhv_dual_output_hatch": "§4UHV§r兩用輸出倉", + "block.gtceu.uhv_electric_furnace": "§4史詩電爐§r", + "block.gtceu.uhv_electrolyzer": "§4史詩電解機§r", + "block.gtceu.uhv_electromagnetic_separator": "§4史詩電磁分離機§r", + "block.gtceu.uhv_energy_input_hatch": "§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_input_hatch_16a": "16安§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_input_hatch_4a": "4安§4UHV§r能量輸入倉", + "block.gtceu.uhv_energy_output_hatch": "§4UHV§r能量輸出倉", + "block.gtceu.uhv_energy_output_hatch_16a": "16安§4UHV§r能量輸出倉", + "block.gtceu.uhv_energy_output_hatch_4a": "4安§4UHV§r能量輸出倉", + "block.gtceu.uhv_extractor": "§4史詩提取機§r", + "block.gtceu.uhv_extruder": "§4史詩壓模器§r", + "block.gtceu.uhv_fermenter": "§4史詩發酵槽§r", + "block.gtceu.uhv_fluid_heater": "§4史詩流體加熱器§r", + "block.gtceu.uhv_fluid_passthrough_hatch": "§4UHV§r流體通行倉", + "block.gtceu.uhv_fluid_solidifier": "§4史詩流體固化器§r", + "block.gtceu.uhv_forge_hammer": "§4史詩鍛造錘§r", + "block.gtceu.uhv_forming_press": "§4史詩衝壓機床§r", + "block.gtceu.uhv_gas_collector": "§4史詩集氣室§r", + "block.gtceu.uhv_hermetic_casing": "密封機械方塊 IX", + "block.gtceu.uhv_input_bus": "§4UHV§r輸入匯流排", + "block.gtceu.uhv_input_hatch": "§4UHV§r輸入倉", + "block.gtceu.uhv_input_hatch_4x": "§4UHV§r四重輸入倉", + "block.gtceu.uhv_input_hatch_9x": "§4UHV§r九重輸入倉", + "block.gtceu.uhv_item_passthrough_hatch": "§4UHV§r物品通行倉", + "block.gtceu.uhv_laser_engraver": "§4史詩雷射蝕刻機§r", + "block.gtceu.uhv_lathe": "§4史詩車床§r", + "block.gtceu.uhv_macerator": "§4史詩研磨機§r", + "block.gtceu.uhv_machine_casing": "§4UHV§r機械方塊", + "block.gtceu.uhv_machine_hull": "§4UHV§r機器外殼", + "block.gtceu.uhv_mixer": "§4史詩攪拌機§r", + "block.gtceu.uhv_muffler_hatch": "§4UHV§r消音倉", + "block.gtceu.uhv_ore_washer": "§4史詩洗礦廠§r", + "block.gtceu.uhv_output_bus": "§4UHV§r輸出匯流排", + "block.gtceu.uhv_output_hatch": "§4UHV§r輸出倉", + "block.gtceu.uhv_output_hatch_4x": "§4UHV§r四重輸出倉", + "block.gtceu.uhv_output_hatch_9x": "§4UHV§r九重輸出倉", + "block.gtceu.uhv_packer": "§4史詩打包機§r", + "block.gtceu.uhv_polarizer": "§4史詩兩極磁化機§r", + "block.gtceu.uhv_quantum_chest": "量子箱 IX", + "block.gtceu.uhv_quantum_tank": "量子缸 IX", + "block.gtceu.uhv_rock_crusher": "§4史詩碎岩機§r", + "block.gtceu.uhv_rotor_holder": "§4UHV§r轉子支架", + "block.gtceu.uhv_scanner": "§4史詩掃描器 §r", + "block.gtceu.uhv_sifter": "§4史詩篩選機§r", + "block.gtceu.uhv_substation_input_hatch_64a": "64安§4UHV§r變電能量輸入倉", + "block.gtceu.uhv_substation_output_hatch_64a": "64安§4UHV§r變電能量輸出倉", + "block.gtceu.uhv_thermal_centrifuge": "§4史詩熱力離心機§r", + "block.gtceu.uhv_transformer_16a": "§4極高壓§r高能變壓器(§4UHV§r)", + "block.gtceu.uhv_transformer_1a": "§4極高壓§r變壓器(§4UHV§r)", + "block.gtceu.uhv_transformer_2a": "§4極高壓§r進階變壓器(§4UHV§r) ", + "block.gtceu.uhv_transformer_4a": "§4極高壓§r高流變壓器(§4UHV§r)", + "block.gtceu.uhv_ultimate_battery": "§4UHV§r終極電池", + "block.gtceu.uhv_wiremill": "§4史詩線材軋機§r", + "block.gtceu.uiv_1024a_laser_source_hatch": "1024§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_1024a_laser_target_hatch": "1024§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_16a_energy_converter": "16§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_1a_energy_converter": "1§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_256a_laser_source_hatch": "256§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_256a_laser_target_hatch": "256§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_4096a_laser_source_hatch": "4096§e安§r§2UIV§r雷射源倉", + "block.gtceu.uiv_4096a_laser_target_hatch": "4096§e安§r§2UIV§r雷射靶倉", + "block.gtceu.uiv_4a_energy_converter": "4§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_8a_energy_converter": "8§e安§r§2UIV§r能量轉換器", + "block.gtceu.uiv_alloy_smelter": "§2史詩合金爐 III§r", + "block.gtceu.uiv_arc_furnace": "§2史詩電弧爐 III§r", + "block.gtceu.uiv_assembler": "§2史詩組裝機 III§r", + "block.gtceu.uiv_autoclave": "§2史詩高壓釜 III§r", + "block.gtceu.uiv_battery_buffer_16x": "16x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_4x": "4x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_battery_buffer_8x": "8x§2極巨壓§r電池箱(§2UIV§r)", + "block.gtceu.uiv_bender": "§2史詩卷板機 III§r", + "block.gtceu.uiv_brewery": "§2史詩釀造室 III§r", + "block.gtceu.uiv_canner": "§2史詩裝罐機 III§r", + "block.gtceu.uiv_centrifuge": "§2史詩離心機 III§r", + "block.gtceu.uiv_charger_4x": "4x§2極巨壓§r充電機(§2UIV§r)", + "block.gtceu.uiv_chemical_bath": "§2史詩化學水浴機 III§r", + "block.gtceu.uiv_chemical_reactor": "§2史詩化學反應器 III§r", + "block.gtceu.uiv_circuit_assembler": "§2史詩電路組裝機 III§r", + "block.gtceu.uiv_compressor": "§2史詩壓縮機 III§r", + "block.gtceu.uiv_cutter": "§2史詩切割機 III§r", + "block.gtceu.uiv_diode": "§2UIV§r二極體", + "block.gtceu.uiv_distillery": "§2史詩蒸餾室 III§r", + "block.gtceu.uiv_dual_input_hatch": "§2UIV§r兩用輸入倉", + "block.gtceu.uiv_dual_output_hatch": "§2UIV§r兩用輸出倉", + "block.gtceu.uiv_electric_furnace": "§2史詩電爐 III§r", + "block.gtceu.uiv_electrolyzer": "§2史詩電解機 III§r", + "block.gtceu.uiv_electromagnetic_separator": "§2史詩電磁分離機 III§r", + "block.gtceu.uiv_energy_input_hatch": "§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_input_hatch_16a": "16安§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_input_hatch_4a": "4安§2UIV§r能量輸入倉", + "block.gtceu.uiv_energy_output_hatch": "§2UIV§r能量輸出倉", + "block.gtceu.uiv_energy_output_hatch_16a": "16安§2UIV§r能量輸出倉", + "block.gtceu.uiv_energy_output_hatch_4a": "4安§2UIV§r能量輸出倉", + "block.gtceu.uiv_extractor": "§2史詩提取機 III§r", + "block.gtceu.uiv_extruder": "§2史詩壓模器 III§r", + "block.gtceu.uiv_fermenter": "§2史詩發酵槽 III§r", + "block.gtceu.uiv_fluid_heater": "§2史詩流體加熱器 III§r", + "block.gtceu.uiv_fluid_passthrough_hatch": "§2UIV§r流體通行倉", + "block.gtceu.uiv_fluid_solidifier": "§2史詩流體固化器 III§r", + "block.gtceu.uiv_forge_hammer": "§2史詩鍛造錘 III§r", + "block.gtceu.uiv_forming_press": "§2史詩衝壓機床 III§r", + "block.gtceu.uiv_gas_collector": "§2史詩集氣室 III§r", + "block.gtceu.uiv_input_bus": "§2UIV§r輸入匯流排", + "block.gtceu.uiv_input_hatch": "§2UIV§r輸入倉", + "block.gtceu.uiv_input_hatch_4x": "§2UIV§r四重輸入倉", + "block.gtceu.uiv_input_hatch_9x": "§2UIV§r九重輸入倉", + "block.gtceu.uiv_item_passthrough_hatch": "§2UIV§r物品通行倉", + "block.gtceu.uiv_laser_engraver": "§2史詩雷射蝕刻機 III§r", + "block.gtceu.uiv_lathe": "§2史詩車床 III§r", + "block.gtceu.uiv_macerator": "§2史詩研磨機 III§r", + "block.gtceu.uiv_machine_casing": "§2UIV§r機械方塊", + "block.gtceu.uiv_machine_hull": "§2UIV§r機器外殼", + "block.gtceu.uiv_mixer": "§2史詩攪拌機 III§r", + "block.gtceu.uiv_muffler_hatch": "§2UIV§r消音倉", + "block.gtceu.uiv_ore_washer": "§2史詩洗礦廠 III§r", + "block.gtceu.uiv_output_bus": "§2UIV§r輸出匯流排", + "block.gtceu.uiv_output_hatch": "§2UIV§r輸出倉", + "block.gtceu.uiv_output_hatch_4x": "§2UIV§r四重輸出倉", + "block.gtceu.uiv_output_hatch_9x": "§2UIV§r九重輸出倉", + "block.gtceu.uiv_packer": "§2史詩打包機 III§r", + "block.gtceu.uiv_polarizer": "§2史詩兩極磁化機 III§r", + "block.gtceu.uiv_quantum_chest": "量子箱 XI", + "block.gtceu.uiv_quantum_tank": "量子缸 XI", + "block.gtceu.uiv_rock_crusher": "§2史詩碎岩機 III§r", + "block.gtceu.uiv_rotor_holder": "§2UIV§r轉子支架", + "block.gtceu.uiv_scanner": "§2史詩掃描器 III§r", + "block.gtceu.uiv_sifter": "§2史詩篩選機 III§r", + "block.gtceu.uiv_substation_input_hatch_64a": "64安§2UIV§r變電能量輸入倉", + "block.gtceu.uiv_substation_output_hatch_64a": "64安§2UIV§r變電能量輸出倉", + "block.gtceu.uiv_thermal_centrifuge": "§2史詩熱力離心機 III§r", + "block.gtceu.uiv_transformer_16a": "§2極巨壓§r高能變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_1a": "§2極巨壓§r變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_2a": "§2極巨壓§r進階變壓器(§2UIV§r)", + "block.gtceu.uiv_transformer_4a": "§2極巨壓§r高流變壓器(§2UIV§r)", + "block.gtceu.uiv_wiremill": "§2史詩線材軋機 III§r", + "block.gtceu.ulv_16a_energy_converter": "16§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_1a_energy_converter": "1§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_4a_energy_converter": "4§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_8a_energy_converter": "8§e安§r§8ULV§r能量轉換器", + "block.gtceu.ulv_battery_buffer_16x": "16x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_4x": "4x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_battery_buffer_8x": "8x§8超低壓§r電池箱(§8ULV§r)", + "block.gtceu.ulv_charger_4x": "4x§8超低壓§r充電機(§8ULV§r)", + "block.gtceu.ulv_energy_input_hatch": "§8ULV§r能量輸入倉", + "block.gtceu.ulv_energy_output_hatch": "§8ULV§r能量輸出倉", + "block.gtceu.ulv_input_bus": "§8ULV§r輸入匯流排", + "block.gtceu.ulv_input_hatch": "§8ULV§r輸入倉", + "block.gtceu.ulv_machine_casing": "§8ULV§r機械方塊", + "block.gtceu.ulv_machine_hull": "§8ULV§r機器外殼", + "block.gtceu.ulv_output_bus": "§8ULV§r輸出匯流排", + "block.gtceu.ulv_output_hatch": "§8ULV§r輸出倉", + "block.gtceu.ulv_transformer_16a": "§8超低壓§r高能變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_1a": "§8超低壓§r變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_2a": "§8超低壓§r進階變壓器(§8ULV§r)", + "block.gtceu.ulv_transformer_4a": "§8超低壓§r高流變壓器(§8ULV§r)", + "block.gtceu.uv_1024a_laser_source_hatch": "1024§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_1024a_laser_target_hatch": "1024§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_16a_energy_converter": "16§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_1a_energy_converter": "1§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_256a_laser_source_hatch": "256§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_256a_laser_target_hatch": "256§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_4096a_laser_source_hatch": "4096§e安§r§3UV§r雷射源倉", + "block.gtceu.uv_4096a_laser_target_hatch": "4096§e安§r§3UV§r雷射靶倉", + "block.gtceu.uv_4a_energy_converter": "4§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_8a_energy_converter": "8§e安§r§3UV§r能量轉換器", + "block.gtceu.uv_alloy_smelter": "§3終極合金爐§r", + "block.gtceu.uv_arc_furnace": "§3終極電弧爐§r", + "block.gtceu.uv_assembler": "§3終極組裝機§r", + "block.gtceu.uv_autoclave": "§3終極高壓釜§r", + "block.gtceu.uv_battery_buffer_16x": "16x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_4x": "4x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_battery_buffer_8x": "8x§3極限壓§r電池箱(§3UV§r)", + "block.gtceu.uv_bender": "§3終極卷板機§r", + "block.gtceu.uv_brewery": "§3終極釀造室§r", + "block.gtceu.uv_canner": "§3終極裝罐機§r", + "block.gtceu.uv_centrifuge": "§3終極離心機§r", + "block.gtceu.uv_charger_4x": "4x§3極限壓§r充電機(§3UV§r)", + "block.gtceu.uv_chemical_bath": "§3終極化學水浴機§r", + "block.gtceu.uv_chemical_reactor": "§3終極化學反應器§r", + "block.gtceu.uv_circuit_assembler": "§3終極電路組裝機§r", + "block.gtceu.uv_compressor": "§3終極壓縮機§r", + "block.gtceu.uv_cutter": "§3終極切割機§r", + "block.gtceu.uv_diode": "§3UV§r二極體", + "block.gtceu.uv_distillery": "§3終極蒸餾室§r", + "block.gtceu.uv_dual_input_hatch": "§3UV§r兩用輸入倉", + "block.gtceu.uv_dual_output_hatch": "§3UV§r兩用輸出倉", + "block.gtceu.uv_electric_furnace": "§3終極電爐§r", + "block.gtceu.uv_electrolyzer": "§3終極電解機§r", + "block.gtceu.uv_electromagnetic_separator": "§3終極電磁分離機§r", + "block.gtceu.uv_energy_input_hatch": "§3UV§r能量輸入倉", + "block.gtceu.uv_energy_input_hatch_16a": "16安§3UV§r能量輸入倉", + "block.gtceu.uv_energy_input_hatch_4a": "4安§3UV§r能量輸入倉", + "block.gtceu.uv_energy_output_hatch": "§3UV§r能量輸出倉", + "block.gtceu.uv_energy_output_hatch_16a": "16安§3UV§r能量輸出倉", + "block.gtceu.uv_energy_output_hatch_4a": "4安§3UV§r能量輸出倉", + "block.gtceu.uv_extractor": "§3終極提取機§r", + "block.gtceu.uv_extruder": "§3終極壓模器§r", + "block.gtceu.uv_fermenter": "§3終極發酵槽§r", + "block.gtceu.uv_fluid_heater": "§3終極流體加熱器§r", + "block.gtceu.uv_fluid_passthrough_hatch": "§3UV§r流體通行倉", + "block.gtceu.uv_fluid_solidifier": "§3終極流體固化器§r", + "block.gtceu.uv_forge_hammer": "§3終極鍛造錘§r", + "block.gtceu.uv_forming_press": "§3終極衝壓機床§r", + "block.gtceu.uv_fusion_reactor": "核融合反應爐控制電腦 MK-III", + "block.gtceu.uv_gas_collector": "§3終極集氣室§r", + "block.gtceu.uv_hermetic_casing": "密封機械方塊 VIII", + "block.gtceu.uv_input_bus": "§3UV§r輸入匯流排", + "block.gtceu.uv_input_hatch": "§3UV§r輸入倉", + "block.gtceu.uv_input_hatch_4x": "§3UV§r四重輸入倉", + "block.gtceu.uv_input_hatch_9x": "§3UV§r九重輸入倉", + "block.gtceu.uv_item_passthrough_hatch": "§3UV§r物品通行倉", + "block.gtceu.uv_lapotronic_battery": "§3UV§r蘭波頓電池", + "block.gtceu.uv_laser_engraver": "§3終極雷射蝕刻機§r", + "block.gtceu.uv_lathe": "§3終極車床§r", + "block.gtceu.uv_macerator": "§3終極研磨機§r", + "block.gtceu.uv_machine_casing": "§3UV§r機械方塊", + "block.gtceu.uv_machine_hull": "§3UV§r機器外殼", + "block.gtceu.uv_mixer": "§3終極攪拌機§r", + "block.gtceu.uv_muffler_hatch": "§3UV§r消音倉", + "block.gtceu.uv_ore_washer": "§3終極洗礦廠§r", + "block.gtceu.uv_output_bus": "§3UV§r輸出匯流排", + "block.gtceu.uv_output_hatch": "§3UV§r輸出倉", + "block.gtceu.uv_output_hatch_4x": "§3UV§r四重輸出倉", + "block.gtceu.uv_output_hatch_9x": "§3UV§r九重輸出倉", + "block.gtceu.uv_packer": "§3終極打包機§r", + "block.gtceu.uv_parallel_hatch": "§3UV§r平行控制倉", + "block.gtceu.uv_polarizer": "§3終極兩極磁化機§r", + "block.gtceu.uv_quantum_chest": "量子箱 VIII", + "block.gtceu.uv_quantum_tank": "量子缸 VIII", + "block.gtceu.uv_rock_crusher": "§3終極碎岩機§r", + "block.gtceu.uv_rotor_holder": "§3UV§r轉子支架", + "block.gtceu.uv_scanner": "§3終極掃描器§r", + "block.gtceu.uv_sifter": "§3終極篩選機§r", + "block.gtceu.uv_substation_input_hatch_64a": "64安§3UV§r變電能量輸入倉", + "block.gtceu.uv_substation_output_hatch_64a": "64安§3UV§r變電能量輸出倉", + "block.gtceu.uv_thermal_centrifuge": "§3終極熱力離心機§r", + "block.gtceu.uv_transformer_16a": "§3極限壓§r高能變壓器(§3UV§r)", + "block.gtceu.uv_transformer_1a": "§3極限壓§r變壓器(§3UV§r)", + "block.gtceu.uv_transformer_2a": "§3極限壓§r進階變壓器(§3UV§r)", + "block.gtceu.uv_transformer_4a": "§3極限壓§r高流變壓器(§3UV§r)", + "block.gtceu.uv_wiremill": "§3終極線材軋機§r", + "block.gtceu.uv_world_accelerator": "§3終極世界加速器§r", + "block.gtceu.uxv_1024a_laser_source_hatch": "1024§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_1024a_laser_target_hatch": "1024§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_16a_energy_converter": "16§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_1a_energy_converter": "1§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_256a_laser_source_hatch": "256§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_256a_laser_target_hatch": "256§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_4096a_laser_source_hatch": "4096§e安§r§eUXV§r雷射源倉", + "block.gtceu.uxv_4096a_laser_target_hatch": "4096§e安§r§eUXV§r雷射靶倉", + "block.gtceu.uxv_4a_energy_converter": "4§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_8a_energy_converter": "8§e安§r§eUXV§r能量轉換器", + "block.gtceu.uxv_alloy_smelter": "§e史詩合金爐 IV§r", + "block.gtceu.uxv_arc_furnace": "§e史詩電弧爐 IV§r", + "block.gtceu.uxv_assembler": "§e史詩組裝機 IV§r", + "block.gtceu.uxv_autoclave": "§e史詩高壓釜 IV§r", + "block.gtceu.uxv_battery_buffer_16x": "16x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_4x": "4x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_battery_buffer_8x": "8x§e極頂壓§r電池箱(§eUXV§r)", + "block.gtceu.uxv_bender": "§e史詩卷板機 IV§r", + "block.gtceu.uxv_brewery": "§e史詩釀造室 IV§r", + "block.gtceu.uxv_canner": "§e史詩裝罐機 IV§r", + "block.gtceu.uxv_centrifuge": "§e史詩離心機 IV§r", + "block.gtceu.uxv_charger_4x": "4x§e極頂壓§r充電機(§eUXV§r)", + "block.gtceu.uxv_chemical_bath": "§e史詩化學水浴機 IV§r", + "block.gtceu.uxv_chemical_reactor": "§e史詩化學反應器 IV§r", + "block.gtceu.uxv_circuit_assembler": "§e史詩電路組裝機 IV§r", + "block.gtceu.uxv_compressor": "§e史詩壓縮機 IV§r", + "block.gtceu.uxv_cutter": "§e史詩切割機 IV§r", + "block.gtceu.uxv_diode": "§eUXV§r二極體", + "block.gtceu.uxv_distillery": "§e史詩蒸餾室 IV§r", + "block.gtceu.uxv_dual_input_hatch": "§eUXV§r兩用輸入倉", + "block.gtceu.uxv_dual_output_hatch": "§eUXV§r兩用輸出倉", + "block.gtceu.uxv_electric_furnace": "§e史詩電爐 IV§r", + "block.gtceu.uxv_electrolyzer": "§e史詩電解機 IV§r", + "block.gtceu.uxv_electromagnetic_separator": "§e史詩電磁分離機 IV§r", + "block.gtceu.uxv_energy_input_hatch": "§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_input_hatch_16a": "16安§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_input_hatch_4a": "4安§eUXV§r能量輸入倉", + "block.gtceu.uxv_energy_output_hatch": "§eUXV§r能量輸出倉", + "block.gtceu.uxv_energy_output_hatch_16a": "16安§eUXV§r能量輸出倉", + "block.gtceu.uxv_energy_output_hatch_4a": "4安§eUXV§r能量輸出倉", + "block.gtceu.uxv_extractor": "§e史詩提取機 IV§r", + "block.gtceu.uxv_extruder": "§e史詩壓模器 IV§r", + "block.gtceu.uxv_fermenter": "§e史詩發酵槽 IV§r", + "block.gtceu.uxv_fluid_heater": "§e史詩流體加熱器 IV§r", + "block.gtceu.uxv_fluid_passthrough_hatch": "§eUXV§r流體通行倉", + "block.gtceu.uxv_fluid_solidifier": "§e史詩流體固化器 IV§r", + "block.gtceu.uxv_forge_hammer": "§e史詩鍛造錘 IV§r", + "block.gtceu.uxv_forming_press": "§e史詩衝壓機床 IV§r", + "block.gtceu.uxv_gas_collector": "§e史詩集氣室 IV§r", + "block.gtceu.uxv_input_bus": "§eUXV§r輸入匯流排", + "block.gtceu.uxv_input_hatch": "§eUXV§r輸入倉", + "block.gtceu.uxv_input_hatch_4x": "§eUXV§r四重輸入倉", + "block.gtceu.uxv_input_hatch_9x": "§eUXV§r九重輸入倉", + "block.gtceu.uxv_item_passthrough_hatch": "§eUXV§r物品通行倉", + "block.gtceu.uxv_laser_engraver": "§e史詩雷射蝕刻機 IV§r", + "block.gtceu.uxv_lathe": "§e史詩車床 IV§r", + "block.gtceu.uxv_macerator": "§e史詩研磨機 IV§r", + "block.gtceu.uxv_machine_casing": "§eUXV§r機械方塊", + "block.gtceu.uxv_machine_hull": "§eUXV§r機器外殼", + "block.gtceu.uxv_mixer": "§e史詩攪拌機 IV§r", + "block.gtceu.uxv_muffler_hatch": "§eUXV§r消音倉", + "block.gtceu.uxv_ore_washer": "§e史詩洗礦廠 IV§r", + "block.gtceu.uxv_output_bus": "§eUXV§r輸出匯流排", + "block.gtceu.uxv_output_hatch": "§eUXV§r輸出倉", + "block.gtceu.uxv_output_hatch_4x": "§eUXV§r四重輸出倉", + "block.gtceu.uxv_output_hatch_9x": "§eUXV§r九重輸出倉", + "block.gtceu.uxv_packer": "§e史詩打包機 IV§r", + "block.gtceu.uxv_polarizer": "§e史詩兩極磁化機 IV§r", + "block.gtceu.uxv_quantum_chest": "量子箱 XII", + "block.gtceu.uxv_quantum_tank": "量子缸 XII", + "block.gtceu.uxv_rock_crusher": "§e史詩碎岩機 IV§r", + "block.gtceu.uxv_rotor_holder": "§eUXV§r轉子支架", + "block.gtceu.uxv_scanner": "§e史詩掃描器 IV§r", + "block.gtceu.uxv_sifter": "§e史詩篩選機 IV§r", + "block.gtceu.uxv_substation_input_hatch_64a": "64安§eUXV§r變電能量輸入倉", + "block.gtceu.uxv_substation_output_hatch_64a": "64安§eUXV§r變電能量輸出倉", + "block.gtceu.uxv_thermal_centrifuge": "§e史詩熱力離心機 IV§r", + "block.gtceu.uxv_transformer_16a": "§e極頂壓§r高能變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_1a": "§e極頂壓§r變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_2a": "§e極頂壓§r進階變壓器(§eUXV§r)", + "block.gtceu.uxv_transformer_4a": "§e極頂壓§r高流變壓器(§eUXV§r)", + "block.gtceu.uxv_wiremill": "§e史詩線材軋機 IV§r", + "block.gtceu.vacuum_freezer": "真空冷凍機", + "block.gtceu.vibration_safe_casing": "防震機械方塊", + "block.gtceu.void_hazard_sign_block": "虛空危害警示方塊", + "block.gtceu.watertight_casing": "防水機械方塊", + "block.gtceu.white_borderless_lamp": "白色無框燈", + "block.gtceu.white_lamp": "白色燈", + "block.gtceu.white_large_metal_sheet": "白色粗紋金屬板方塊", + "block.gtceu.white_metal_sheet": "白色金屬板方塊", + "block.gtceu.white_studs": "白色橡膠混凝土", + "block.gtceu.wire_coil.tooltip_cracking": "§8裂解機:", + "block.gtceu.wire_coil.tooltip_energy_cracking": "§a耗能:§f%s%%", + "block.gtceu.wire_coil.tooltip_energy_smelter": "§a耗能:§8每配方§f%s EU/t", + "block.gtceu.wire_coil.tooltip_extended_info": "§7按住§6SHIFT§7獲得更多線圈資訊", + "block.gtceu.wire_coil.tooltip_heat": "§c基礎熱容:§f%d K", + "block.gtceu.wire_coil.tooltip_parallel_smelter": "§5最大平行:§f%s", + "block.gtceu.wire_coil.tooltip_pyro": "§8熱解爐:", + "block.gtceu.wire_coil.tooltip_smelter": "§8工業熔爐:", + "block.gtceu.wire_coil.tooltip_speed_pyro": "§b處理速度:§f%s%%", + "block.gtceu.wood_crate": "木板條箱", + "block.gtceu.wood_drum": "木桶", + "block.gtceu.wood_wall": "木牆", + "block.gtceu.wooden_multiblock_tank": "木製多方塊儲罐", + "block.gtceu.wooden_tank_valve": "木製儲罐閥門", + "block.gtceu.yellow_borderless_lamp": "黃色無框燈", + "block.gtceu.yellow_lamp": "黃色燈", + "block.gtceu.yellow_large_metal_sheet": "黃色粗紋金屬板方塊", + "block.gtceu.yellow_metal_sheet": "黃色金屬板方塊", + "block.gtceu.yellow_stripes_block.a": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.b": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.c": "黃色路障方塊", + "block.gtceu.yellow_stripes_block.d": "黃色路障方塊", + "block.gtceu.yellow_stripes_block_a": "黃色路障方塊A", + "block.gtceu.yellow_stripes_block_b": "黃色路障方塊B", + "block.gtceu.yellow_studs": "黃色橡膠混凝土", + "block.gtceu.zpm_1024a_laser_source_hatch": "1024§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_1024a_laser_target_hatch": "1024§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_16a_energy_converter": "16§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_1a_energy_converter": "1§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_256a_laser_source_hatch": "256§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_256a_laser_target_hatch": "256§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_4096a_laser_source_hatch": "4096§e安§r§cZPM§r雷射源倉", + "block.gtceu.zpm_4096a_laser_target_hatch": "4096§e安§r§cZPM§r雷射靶倉", + "block.gtceu.zpm_4a_energy_converter": "4§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_8a_energy_converter": "8§e安§r§cZPM§r能量轉換器", + "block.gtceu.zpm_alloy_smelter": "§c精英合金爐 III§r", + "block.gtceu.zpm_arc_furnace": "§c精英電弧爐 III§r", + "block.gtceu.zpm_assembler": "§c精英組裝機 III§r", + "block.gtceu.zpm_autoclave": "§c精英高壓釜 III§r", + "block.gtceu.zpm_battery_buffer_16x": "16x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_4x": "4x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_battery_buffer_8x": "8x§c零點壓§r電池箱(§cZPM§r)", + "block.gtceu.zpm_bender": "§c精英卷板機 III§r", + "block.gtceu.zpm_brewery": "§c精英釀造室 III§r", + "block.gtceu.zpm_canner": "§c精英裝罐機 III§r", + "block.gtceu.zpm_centrifuge": "§c精英離心機 III§r", + "block.gtceu.zpm_charger_4x": "4x§c零點壓§r充電機(§cZPM§r)", + "block.gtceu.zpm_chemical_bath": "§c精英化學水浴機 III§r", + "block.gtceu.zpm_chemical_reactor": "§c精英化學反應器 III§r", + "block.gtceu.zpm_circuit_assembler": "§c精英電路組裝機 III§r", + "block.gtceu.zpm_compressor": "§c精英壓縮機 III§r", + "block.gtceu.zpm_cutter": "§c精英切割機 III§r", + "block.gtceu.zpm_diode": "§cZPM§r二極體", + "block.gtceu.zpm_distillery": "§c精英蒸餾室 III§r", + "block.gtceu.zpm_dual_input_hatch": "§cZPM§r兩用輸入倉", + "block.gtceu.zpm_dual_output_hatch": "§cZPM§r兩用輸出倉", + "block.gtceu.zpm_electric_furnace": "§c精英電爐 III§r", + "block.gtceu.zpm_electrolyzer": "§c精英電解機 III§r", + "block.gtceu.zpm_electromagnetic_separator": "§c精英電磁分離機 III§r", + "block.gtceu.zpm_energy_input_hatch": "§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_input_hatch_16a": "16安§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_input_hatch_4a": "4安§cZPM§r能量輸入倉", + "block.gtceu.zpm_energy_output_hatch": "§cZPM§r能量輸出倉", + "block.gtceu.zpm_energy_output_hatch_16a": "16安§cZPM§r能量輸出倉", + "block.gtceu.zpm_energy_output_hatch_4a": "4安§cZPM§r能量輸出倉", + "block.gtceu.zpm_extractor": "§c精英提取機 III§r", + "block.gtceu.zpm_extruder": "§c精英壓模器 III§r", + "block.gtceu.zpm_fermenter": "§c精英發酵槽 III§r", + "block.gtceu.zpm_fluid_heater": "§c精英流體加熱器 III§r", + "block.gtceu.zpm_fluid_passthrough_hatch": "§cZPM§r流體通行倉", + "block.gtceu.zpm_fluid_solidifier": "§c精英流體固化器 III§r", + "block.gtceu.zpm_forge_hammer": "§c精英鍛造錘 III§r", + "block.gtceu.zpm_forming_press": "§c精英衝壓機床 III§r", + "block.gtceu.zpm_fusion_reactor": "核融合反應爐控制電腦 MK-II", + "block.gtceu.zpm_gas_collector": "§c精英集氣室 III§r", + "block.gtceu.zpm_hermetic_casing": "密封機械方塊 VII", + "block.gtceu.zpm_input_bus": "§cZPM§r輸入匯流排", + "block.gtceu.zpm_input_hatch": "§cZPM§r輸入倉", + "block.gtceu.zpm_input_hatch_4x": "§cZPM§r四重輸入倉", + "block.gtceu.zpm_input_hatch_9x": "§cZPM§r九重輸入倉", + "block.gtceu.zpm_item_passthrough_hatch": "§cZPM§r物品通行倉", + "block.gtceu.zpm_lapotronic_battery": "§cZPM§r蘭波頓電池", + "block.gtceu.zpm_laser_engraver": "§c精英雷射蝕刻機 III§r", + "block.gtceu.zpm_lathe": "§c精英車床 III§r", + "block.gtceu.zpm_macerator": "§c精英研磨機 III§r", + "block.gtceu.zpm_machine_casing": "§cZPM§r機械方塊", + "block.gtceu.zpm_machine_hull": "§cZPM§r機器外殼", + "block.gtceu.zpm_mixer": "§c精英攪拌機 III§r", + "block.gtceu.zpm_muffler_hatch": "§cZPM§r消音倉", + "block.gtceu.zpm_ore_washer": "§c精英洗礦廠 III§r", + "block.gtceu.zpm_output_bus": "§cZPM§r輸出匯流排", + "block.gtceu.zpm_output_hatch": "§cZPM§r輸出倉", + "block.gtceu.zpm_output_hatch_4x": "§cZPM§r四重輸出倉", + "block.gtceu.zpm_output_hatch_9x": "§cZPM§r九重輸出倉", + "block.gtceu.zpm_packer": "§c精英打包機 III§r", + "block.gtceu.zpm_parallel_hatch": "§cZPM§r平行控制倉", + "block.gtceu.zpm_polarizer": "§c精英兩極磁化機 III§r", + "block.gtceu.zpm_quantum_chest": "量子箱 VII", + "block.gtceu.zpm_quantum_tank": "量子缸 VII", + "block.gtceu.zpm_rock_crusher": "§c精英碎岩機 III§r", + "block.gtceu.zpm_rotor_holder": "§cZPM§r轉子支架", + "block.gtceu.zpm_scanner": "§c精英掃描器III§r", + "block.gtceu.zpm_sifter": "§c精英篩選機 III§r", + "block.gtceu.zpm_substation_input_hatch_64a": "64安§cZPM§r變電能量輸入倉", + "block.gtceu.zpm_substation_output_hatch_64a": "64安§cZPM§r變電能量輸出倉", + "block.gtceu.zpm_thermal_centrifuge": "§c精英熱力離心機 III§r", + "block.gtceu.zpm_transformer_16a": "§c零點壓§r高能變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_1a": "§c零點壓§r變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_2a": "§c零點壓§r進階變壓器(§cZPM§r)", + "block.gtceu.zpm_transformer_4a": "§c零點壓§r高流變壓器(§cZPM§r)", + "block.gtceu.zpm_wiremill": "§c精英線材軋機 III§r", + "block.gtceu.zpm_world_accelerator": "§c精英世界加速器 III§r", + "block.sterilizing_filter_casing.tooltip": "創造一個§a無菌§r環境", + "block.surface_rock": "地表岩石(%s)", + "button.gtceu.mark_as_depleted.name": "標記為枯竭", + "button.gtceu.toggle_waypoint.name": "切換路徑點", + "command.gtceu.dump_data.success": "已將登錄檔%2$s中的%1$s個資源轉儲到%3$s", + "command.gtceu.medical_condition.get": "玩家%s有以下疾病:", + "command.gtceu.medical_condition.get.element": "症狀【%s】§r:%s分%s秒", + "command.gtceu.medical_condition.get.element.permanent": "症狀【%s】§r:%s分%s秒(永久)", + "command.gtceu.medical_condition.get.empty": "玩家%s沒有疾病。", + "command.gtceu.place_vein.failure": "無法放置%s礦脈於%s", + "command.gtceu.place_vein.success": "成功放置%s礦脈於%s", + "command.gtceu.share_prospection_data.notification": "%s與你分享了礦脈資料!", + "config.gtceu.option.addLoot": "新增戰利品", + "config.gtceu.option.ae2": "ae2", + "config.gtceu.option.allUniqueStoneTypes": "所有獨特石頭型別", + "config.gtceu.option.animationTime": "動畫時間", + "config.gtceu.option.armorHud": "盔甲HUD", + "config.gtceu.option.bedrockOreDistance": "基岩礦距離", + "config.gtceu.option.bedrockOreDropTagPrefix": "基岩礦掉落Tag", + "config.gtceu.option.borderColor": "邊框顏色", + "config.gtceu.option.bronzeBoilerHeatSpeed": "青銅鍋爐-加熱速度", + "config.gtceu.option.bronzeBoilerMaxTemperature": "青銅鍋爐-最高溫度", + "config.gtceu.option.buttonAnchor": "按鈕位置", + "config.gtceu.option.casingsPerCraft": "每次合成機械方塊數量", + "config.gtceu.option.cleanMultiblocks": "多方塊結構是否潔淨", + "config.gtceu.option.client": "客戶端", + "config.gtceu.option.compat": "相容", + "config.gtceu.option.debug": "除錯", + "config.gtceu.option.debugWorldgen": "礦位置Debug模式", + "config.gtceu.option.defaultPaintingColor": "機器預設噴漆顏色", + "config.gtceu.option.defaultUIColor": "預設UI顏色", + "config.gtceu.option.dev": "開發", + "config.gtceu.option.direction": "方向", + "config.gtceu.option.disableManualCompression": "關閉手工壓縮", + "config.gtceu.option.doBedrockOres": "新增基岩礦", + "config.gtceu.option.doSuperflatOres": "超平坦世界生成礦", + "config.gtceu.option.doesExplosionDamagesTerrain": "機器爆炸是否破壞地形", + "config.gtceu.option.dumpAssets": "匯出資源", + "config.gtceu.option.dumpRecipes": "匯出配方", + "config.gtceu.option.enableCleanroom": "啟用無塵室", + "config.gtceu.option.enableFEConverters": "啟用FE轉換器", + "config.gtceu.option.enableMaintenance": "啟用維護倉", + "config.gtceu.option.enableResearch": "啟用研究", + "config.gtceu.option.enableTieredCasings": "啟用分級機械方塊", + "config.gtceu.option.enableWorldAccelerators": "啟用世界加速器", + "config.gtceu.option.enchantedTools": "附魔工具", + "config.gtceu.option.energy": "能量", + "config.gtceu.option.energyConsumption": "能耗", + "config.gtceu.option.energyUsageMultiplier": "能源消耗倍率", + "config.gtceu.option.environmentalHazardDecayRate": "環境污染衰減速率", + "config.gtceu.option.environmentalHazards": "環境污染", + "config.gtceu.option.euToFeRatio": "GTEU到FE的轉換比例", + "config.gtceu.option.feToEuRatio": "FE到GTEU的轉換比例", + "config.gtceu.option.flintAndSteelRequireSteel": "打火石配方是否需要鋼", + "config.gtceu.option.ftbChunksIntegration": "FTB區塊-整合", + "config.gtceu.option.gameplay": "遊戲玩法", + "config.gtceu.option.generateLowQualityGems": "生成劣質寶石", + "config.gtceu.option.ghostCircuit": "虛擬電路", + "config.gtceu.option.gt6StylePipesCables": "類GT6管道/線纜", + "config.gtceu.option.hardAdvancedIronRecipes": "更難的高階鐵製品配方", + "config.gtceu.option.hardDyeRecipes": "更難的染料配方", + "config.gtceu.option.hardGlassRecipes": "更難的玻璃配方", + "config.gtceu.option.hardIronRecipes": "更難的鐵製品配方", + "config.gtceu.option.hardMiscRecipes": "更難的雜項配方", + "config.gtceu.option.hardMultiRecipes": "更難的多方塊控制器配方", + "config.gtceu.option.hardRedstoneRecipes": "更難的紅石配方", + "config.gtceu.option.hardToolArmorRecipes": "更難的工具盔甲配方", + "config.gtceu.option.hardWoodRecipes": "更難的木頭配方", + "config.gtceu.option.harderBrickRecipes": "更難的磚塊配方", + "config.gtceu.option.harderCharcoalRecipe": "更難的木炭配方", + "config.gtceu.option.harderCircuitRecipes": "更難的電路板配方", + "config.gtceu.option.harderRods": "更難的桿配方", + "config.gtceu.option.harmlessActiveTransformers": "無害的有源變壓器", + "config.gtceu.option.hazardsEnabled": "啟用危險物質", + "config.gtceu.option.hideFacadesInRecipeViewer": "配方瀏覽器中隱藏偽裝板", + "config.gtceu.option.hideFilledCellsInRecipeViewer": "配方瀏覽器中隱藏裝滿的單元", + "config.gtceu.option.hideOreProcessingDiagrams": "隱藏礦物處理流程圖", + "config.gtceu.option.highTierContent": "極高電壓內容", + "config.gtceu.option.hpLiquidBoilerBaseOutput": "高壓液體鍋爐-基礎輸出", + "config.gtceu.option.hpSolarBoilerBaseOutput": "高壓太陽能鍋爐-基礎輸出", + "config.gtceu.option.hpSolidBoilerBaseOutput": "高壓固體鍋爐-基礎輸出", + "config.gtceu.option.hudLocation": "HUD位置", + "config.gtceu.option.hudOffsetX": "HUD偏移X", + "config.gtceu.option.hudOffsetY": "HUD偏移Y", + "config.gtceu.option.inWorldPreviewDuration": "世界中預覽時長", + "config.gtceu.option.increaseDungeonLoot": "更多的地牢戰利品", + "config.gtceu.option.infiniteBedrockOresFluids": "無限基岩礦流體", + "config.gtceu.option.journeyMapIntegration": "旅行地圖-整合", + "config.gtceu.option.largeBoilers": "大型鍋爐", + "config.gtceu.option.ldFluidPipeMinDistance": "長距流體管道最小距離", + "config.gtceu.option.ldItemPipeMinDistance": "長距物品管道最小距離", + "config.gtceu.option.liquidBoilerBaseOutput": "液體鍋爐-基礎輸出", + "config.gtceu.option.machineSounds": "機器音效", + "config.gtceu.option.machines": "機器", + "config.gtceu.option.machinesEmissiveTextures": "啟用機器泛光紋理", + "config.gtceu.option.meHatchEnergyUsage": "ME倉能耗", + "config.gtceu.option.minerSpeed": "採礦機速度", + "config.gtceu.option.minimap": "小地圖", + "config.gtceu.option.nanoSaber": "奈米劍", + "config.gtceu.option.nanoSaberBaseDamage": "奈米劍基礎傷害", + "config.gtceu.option.nanoSaberDamageBoost": "奈米劍傷害增幅", + "config.gtceu.option.nativeEUToFE": "線纜直接給FE機器供能", + "config.gtceu.option.nerfPaperCrafting": "削弱紙配方", + "config.gtceu.option.nerfWoodCrafting": "削弱木材木棒合成", + "config.gtceu.option.onlyOwnerBreak": "僅所有者可破壞", + "config.gtceu.option.onlyOwnerGUI": "僅所有者可開啟GUI", + "config.gtceu.option.orderedAssemblyLineFluids": "有序的裝配線-流體", + "config.gtceu.option.orderedAssemblyLineItems": "有序的裝配線-物品", + "config.gtceu.option.oreBlockProspectRange": "礦物探測半徑", + "config.gtceu.option.oreGenerationChunkCacheSize": "礦物生成區塊快取大小", + "config.gtceu.option.oreIconSize": "礦物圖示大小", + "config.gtceu.option.oreIndicatorChunkCacheSize": "礦脈指示物區塊快取大小", + "config.gtceu.option.oreIndicators": "礦脈指示物", + "config.gtceu.option.oreNamePrefix": "礦物名稱字首", + "config.gtceu.option.oreScaleStop": "最大圖示縮放比例", + "config.gtceu.option.oreVeinGridSize": "礦脈網格大小", + "config.gtceu.option.oreVeinRandomOffset": "礦脈隨機偏移", + "config.gtceu.option.oreVeins": "礦脈", + "config.gtceu.option.ownerOPBypass": "跳過所有權檢查的最低許可權等級", + "config.gtceu.option.prospectorEnergyUseMultiplier": "探礦儀能源消耗倍率", + "config.gtceu.option.recipeProgressLowEnergy": "跳電時,機器進度將", + "config.gtceu.option.recipes": "配方", + "config.gtceu.option.removeSmeltingForEBFMetals": "移除需要電力高爐冶煉的金屬的熔爐配方", + "config.gtceu.option.removeVanillaBlockRecipes": "移除原版方塊配方", + "config.gtceu.option.removeVanillaLargeOreVeins": "移除原版大型礦脈", + "config.gtceu.option.removeVanillaOreGen": "移除原版礦物", + "config.gtceu.option.removeVanillaTNTRecipe": "移除原版TNT配方", + "config.gtceu.option.renderFluids": "渲染流體", + "config.gtceu.option.renderer": "渲染器", + "config.gtceu.option.replaceMinedBlocksWith": "用...替換採礦機採過的方塊", + "config.gtceu.option.requireGTToolsForBlocks": "方塊需要格雷工具", + "config.gtceu.option.rngDamageElectricTools": "電動工具耐久度消耗機率", + "config.gtceu.option.rubberTreeSpawnChance": "橡膠樹生成權重", + "config.gtceu.option.sandOresFall": "沙子礦受重力嗎", + "config.gtceu.option.shouldWeatherOrTerrainExplosion": "機器是否因天氣或地形爆炸", + "config.gtceu.option.showDimensionTier": "顯示維度等級", + "config.gtceu.option.smallBoilers": "小型鍋爐", + "config.gtceu.option.solarBoilerBaseOutput": "太陽能鍋爐-基礎輸出", + "config.gtceu.option.solidBoilerBaseOutput": "固體鍋爐-基礎輸出", + "config.gtceu.option.sprayCanChainLength": "噴霧罐單次可噴塗長度", + "config.gtceu.option.steamMultiParallelAmount": "蒸汽多方塊機器平行數", + "config.gtceu.option.steamPerWater": "蒸汽-水轉化率", + "config.gtceu.option.steelBoilerHeatSpeed": "鋼鍋爐-加熱速度", + "config.gtceu.option.steelBoilerMaxTemperature": "鋼鍋爐-最高溫度", + "config.gtceu.option.steelSteamMultiblocks": "用鋼的蒸汽多方塊結構", + "config.gtceu.option.surfaceRockProspectRange": "地表岩石探測半徑", + "config.gtceu.option.titaniumBoilerHeatSpeed": "鈦鍋爐-加熱速度", + "config.gtceu.option.titaniumBoilerMaxTemperature": "鈦鍋爐-最高溫度", + "config.gtceu.option.toggle": "切換", + "config.gtceu.option.toolCraftingSounds": "使用工具合成時播放聲音", + "config.gtceu.option.toolUseSounds": "使用工具時播放聲音", + "config.gtceu.option.tools": "工具", + "config.gtceu.option.treeFellingDelay": "砍樹延遲", + "config.gtceu.option.tungstensteelBoilerHeatSpeed": "鎢鋼鍋爐-加熱速度", + "config.gtceu.option.tungstensteelBoilerMaxTemperature": "鎢鋼鍋爐-最高溫度", + "config.gtceu.option.universalHazards": "普遍化的危險物質", + "config.gtceu.option.updateIntervals": "更新間隔", + "config.gtceu.option.useVBO": "使用VBO", + "config.gtceu.option.voltageTierAdvImpeller": "進階噴射背包電壓等級", + "config.gtceu.option.voltageTierAdvNanoSuit": "進階奈米胸甲電壓等級", + "config.gtceu.option.voltageTierAdvQuarkTech": "進階夸克胸甲電壓等級", + "config.gtceu.option.voltageTierImpeller": "噴射背包電壓等級", + "config.gtceu.option.voltageTierNanoSuit": "奈米套裝電壓等級", + "config.gtceu.option.voltageTierNightVision": "夜視儀電壓等級", + "config.gtceu.option.voltageTierQuarkTech": "夸克套裝電壓等級", + "config.gtceu.option.worldAcceleratorBlacklist": "世界加速器黑名單", + "config.gtceu.option.worldgen": "世界生成", + "config.gtceu.option.xOffset": "x偏移", + "config.gtceu.option.xaerosMapIntegration": "Xaero地圖-整合", + "config.gtceu.option.yOffset": "y偏移", + "config.gtceu.option.zombieSpawnWithSabers": "帶奈米劍的殭屍生成", + "config.jade.plugin_gtceu.auto_output_info": "[GTCEu] 自動輸出資訊", + "config.jade.plugin_gtceu.cable_info": "[GTCEu] 線纜資訊", + "config.jade.plugin_gtceu.controllable_provider": "[GTCEu] 是否停工", + "config.jade.plugin_gtceu.electric_container_provider": "[GTCEu] 電力槽", + "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] 能量轉換器模式", + "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] 排氣口資訊", + "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] 污染清理", + "config.jade.plugin_gtceu.machine_mode": "[GTCEu] 機器模式", + "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] 維護資訊", + "config.jade.plugin_gtceu.me_pattern_buffer": "[GTCEu] 樣板供應倉資訊", + "config.jade.plugin_gtceu.me_pattern_buffer_proxy": "[GTCEu] 遠端樣板供應倉資訊", + "config.jade.plugin_gtceu.multiblock_structure": "[GTCEu] 多方塊結構", + "config.jade.plugin_gtceu.parallel_info": "[GTCEu] 平行資訊", + "config.jade.plugin_gtceu.primitive_pump": "[GTCEu] 原始水泵資訊", + "config.jade.plugin_gtceu.recipe_logic_provider": "[GTCEu] 配方資訊", + "config.jade.plugin_gtceu.recipe_output_info": "[GTCEu] 配方輸出資訊", + "config.jade.plugin_gtceu.stained_color": "[GTCEu] 染色方塊資訊", + "config.jade.plugin_gtceu.steam_boiler_info": "[GTCEu] 蒸汽鍋爐資訊", + "config.jade.plugin_gtceu.transformer": "[GTCEu] 變壓器資訊", + "config.jade.plugin_gtceu.workable_provider": "[GTCEu] 工作資訊", + "cover.advanced_detector.latch.disabled.0": "行為:線性", + "cover.advanced_detector.latch.disabled.1": "", + "cover.advanced_detector.latch.disabled.2": "更改此覆蓋板的紅石行為。", + "cover.advanced_detector.latch.disabled.3": "§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", + "cover.advanced_detector.latch.disabled.4": "§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", + "cover.advanced_detector.latch.enabled.0": "行為:鎖存", + "cover.advanced_detector.latch.enabled.1": "", + "cover.advanced_detector.latch.enabled.2": "更改此覆蓋板的紅石行為。", + "cover.advanced_detector.latch.enabled.3": "§e線性§7 - 預設模式;物品數量小於最小值時不發出紅石訊號,大於最大值時發出訊號強度15的紅石訊號,數量介於二者之間發出訊號強度在0 - 15之間的紅石訊號", + "cover.advanced_detector.latch.enabled.4": "§e鎖存§7 - 發出滿級紅石訊號,直到物品數量大於最大值;然後停止發出紅石訊號,直到數量低於最小值", + "cover.advanced_energy_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_energy_detector.invert.disabled.1": "", + "cover.advanced_energy_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_energy_detector.invert.disabled.3": "預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", + "cover.advanced_energy_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_energy_detector.invert.enabled.1": "", + "cover.advanced_energy_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_energy_detector.invert.enabled.3": "預設情況下,能量小於所設定的最小 EU 時覆蓋板將發出紅石訊號,大於最大 EU 時則停止發出紅石訊號", + "cover.advanced_energy_detector.label": "進階能量探測覆蓋板", + "cover.advanced_energy_detector.max": "最大值", + "cover.advanced_energy_detector.min": "最小值", + "cover.advanced_energy_detector.use_percent.disabled.0": "模式:EU設定值", + "cover.advanced_energy_detector.use_percent.disabled.1": "", + "cover.advanced_energy_detector.use_percent.disabled.2": "使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", + "cover.advanced_energy_detector.use_percent.enabled.0": "模式: 百分比", + "cover.advanced_energy_detector.use_percent.enabled.1": "", + "cover.advanced_energy_detector.use_percent.enabled.2": "使用給定的EU數值或百分比來比較所附著的能量儲存中能量的最大/最小值。", + "cover.advanced_fluid_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_fluid_detector.invert.disabled.1": "", + "cover.advanced_fluid_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_fluid_detector.invert.disabled.3": "預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_fluid_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_fluid_detector.invert.enabled.1": "", + "cover.advanced_fluid_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_fluid_detector.invert.enabled.3": "預設情況下,流體量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_fluid_detector.label": "進階流體探測器", + "cover.advanced_fluid_detector.max": "最大流體量(mB)", + "cover.advanced_fluid_detector.min": "最小流體量(mB)", + "cover.advanced_item_detector.invert.disabled.0": "輸出:普通", + "cover.advanced_item_detector.invert.disabled.1": "", + "cover.advanced_item_detector.invert.disabled.2": "切換以反轉紅石邏輯", + "cover.advanced_item_detector.invert.disabled.3": "預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_item_detector.invert.enabled.0": "輸出:反轉", + "cover.advanced_item_detector.invert.enabled.1": "", + "cover.advanced_item_detector.invert.enabled.2": "切換以反轉紅石邏輯", + "cover.advanced_item_detector.invert.enabled.3": "預設情況下,物品數量介於所設定的最小值和最大值之間時覆蓋板將發出紅石訊號,小於最小值時則停止發出紅石訊號", + "cover.advanced_item_detector.label": "進階物品探測器", + "cover.advanced_item_detector.max": "最大物品數量", + "cover.advanced_item_detector.min": "最小物品數量", + "cover.bucket.mode.bucket": "B", + "cover.bucket.mode.milli_bucket": "mB", + "cover.conveyor.blocks_input.disabled.0": "若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", + "cover.conveyor.blocks_input.disabled.1": "§c已禁用", + "cover.conveyor.blocks_input.enabled.0": "若啟用,覆蓋板設定為將物品從儲存空間輸出至管道時將阻止物品從所在面輸入。", + "cover.conveyor.blocks_input.enabled.1": "§a已啟用", + "cover.conveyor.distribution.insert_first.0": "分配模式:§b優先順序", + "cover.conveyor.distribution.insert_first.1": "§7將物品輸入至所搜尋到的優先順序最高的物品儲存空間", + "cover.conveyor.distribution.insert_first.2": "§7加固物品管道會降低管道路徑的優先順序。", + "cover.conveyor.distribution.round_robin_global.0": "分配模式:§b輪詢排程", + "cover.conveyor.distribution.round_robin_global.1": "§7將物品平分至相連的物品儲存空間。", + "cover.conveyor.distribution.round_robin_prio.0": "分配模式:§b輪詢排程(次序式)", + "cover.conveyor.distribution.round_robin_prio.1": "§7嘗試將物品平分至相連的物品儲存空間,並優先考慮優先順序更高的。", + "cover.conveyor.distribution.round_robin_prio.2": "§7加固物品管道會降低管道路徑的優先順序。", + "cover.conveyor.item_filter.title": "物品過濾", + "cover.conveyor.mode": "模式:%s", + "cover.conveyor.mode.export": "模式:輸出", + "cover.conveyor.mode.import": "模式:輸入", + "cover.conveyor.tag.title.0": "標籤名稱", + "cover.conveyor.tag.title.1": "(*可作萬用字元)", + "cover.conveyor.title": "傳送帶覆蓋板設定(%s)", + "cover.conveyor.transfer_rate": "§7物品/秒", + "cover.detector_base.message_inverted_state": "監控狀態: 反轉", + "cover.detector_base.message_normal_state": "監控狀態:普通", + "cover.ender_fluid_link.incomplete_hex.0": "輸入的顏色不正確!", + "cover.ender_fluid_link.incomplete_hex.1": "輸入正確的八位十六進位制顏色碼方可應用", + "cover.ender_fluid_link.incomplete_hex.2": "此時關閉介面將導致丟失編輯內容!", + "cover.ender_fluid_link.iomode.disabled": "已禁用I/O", + "cover.ender_fluid_link.iomode.enabled": "已啟用I/O", + "cover.ender_fluid_link.private.tooltip.disabled.0": "切換至私有儲罐模式", + "cover.ender_fluid_link.private.tooltip.disabled.1": "私有權歸最初加裝該覆蓋板的玩家所有", + "cover.ender_fluid_link.private.tooltip.enabled": "切換至公共儲罐模式", + "cover.ender_fluid_link.title": "終界流體連線", + "cover.filter.blacklist.disabled": "白名單", + "cover.filter.blacklist.enabled": "黑名單", + "cover.filter.mode.filter_both": "過濾兩者", + "cover.filter.mode.filter_extract": "過濾輸出", + "cover.filter.mode.filter_insert": "過濾輸入", + "cover.fluid.voiding.advanced.title": "高階流體銷毀設定", + "cover.fluid.voiding.title": "流體銷毀設定", + "cover.fluid_filter.config_amount.0": "向上或向下滾動滑鼠滾輪以增加或減少流體量。", + "cover.fluid_filter.config_amount.1": "Shift[§6x10§r],Ctrl[§ex100§r],Shift+Ctrl[§ax1000§r]", + "cover.fluid_filter.config_amount.2": "亦可透過右擊或左擊來增減流體量。", + "cover.fluid_filter.config_amount.3": "按住Shift時點選滑鼠則將使流體量翻倍或減半。", + "cover.fluid_filter.config_amount.4": "點選中鍵以清除", + "cover.fluid_filter.mode.filter_both": "過濾兩者", + "cover.fluid_filter.mode.filter_drain": "過濾輸出", + "cover.fluid_filter.mode.filter_fill": "過濾輸入", + "cover.fluid_filter.title": "流體過濾卡", + "cover.fluid_regulator.keep_exact": "保持供應:%s", + "cover.fluid_regulator.supply_exact": "精確供應:%s", + "cover.fluid_regulator.title": "流體調節器設定(%s)", + "cover.fluid_regulator.transfer_mode.description.0": "§e任意傳輸§r-在此模式下,覆蓋板將傳輸任何與過濾卡匹配的流體。", + "cover.fluid_regulator.transfer_mode.description.1": "§e精確供應-在此模式下,覆蓋板會將此按鈕下方視窗中指定的流體按指定量打包傳輸。若流體量小於指定量,流體不會被傳輸。", + "cover.fluid_regulator.transfer_mode.description.2": "§e保持供應-在此模式下,覆蓋板將在目標容器中保持指定數量的液體,低於保持量時傳輸相應量的流體。", + "cover.fluid_regulator.transfer_mode.description.3": "§7小提示:按住Shift/Crtl把增加或減少的數量乘以10/100。", + "cover.item.voiding.advanced.title": "高階物品銷毀設定", + "cover.item.voiding.title": "物品銷毀設定", + "cover.item_filter.ignore_damage.disabled": "匹配耐久度", + "cover.item_filter.ignore_damage.enabled": "無視耐久度", + "cover.item_filter.ignore_nbt.disabled": "匹配NBT", + "cover.item_filter.ignore_nbt.enabled": "忽略NBT", + "cover.item_filter.title": "物品過濾卡", + "cover.item_smart_filter.filtering_mode.centrifuge": "離心機", + "cover.item_smart_filter.filtering_mode.description.0": "為該智慧覆蓋板選擇目標機器。", + "cover.item_smart_filter.filtering_mode.description.1": "它能夠自動挑選符合機器配方的物品。", + "cover.item_smart_filter.filtering_mode.electrolyzer": "電解機", + "cover.item_smart_filter.filtering_mode.sifter": "篩選機", + "cover.item_smart_filter.title": "智慧物品過濾", + "cover.machine_controller.invert.disabled.0": "§e普通§r - 該模式下的覆蓋板需要比設定強度小的紅石訊號來觸發", + "cover.machine_controller.invert.enabled.0": "§e反相§r - 該模式下的覆蓋板需要比設定強度大的紅石訊號來觸發", + "cover.machine_controller.inverted": "反相", + "cover.machine_controller.mode.cover_down": "控制目標:覆蓋板(底面)", + "cover.machine_controller.mode.cover_east": "控制目標:覆蓋板(東面)", + "cover.machine_controller.mode.cover_north": "控制目標:覆蓋板(北面)", + "cover.machine_controller.mode.cover_south": "控制目標:覆蓋板(南面)", + "cover.machine_controller.mode.cover_up": "控制目標:覆蓋板(頂面)", + "cover.machine_controller.mode.cover_west": "控制目標:覆蓋板(西面)", + "cover.machine_controller.mode.machine": "控制目標:機器", + "cover.machine_controller.mode.null": "控制目標:無", + "cover.machine_controller.normal": "普通", + "cover.machine_controller.redstone": "最小紅石訊號強度:%,d", + "cover.machine_controller.title": "機器控制設定", + "cover.pump.fluid_filter.title": "流體過濾", + "cover.pump.mode.export": "模式:輸出", + "cover.pump.mode.import": "模式:輸入", + "cover.pump.title": "泵覆蓋板設定(%s)", + "cover.pump.transfer_rate": "%s", + "cover.robotic_arm.title": "機械臂設定(%s)", + "cover.robotic_arm.transfer_mode.description.0": "§e任意傳輸§r-在此模式下,覆蓋板將儘可能傳輸一切符合過濾設定的物品。", + "cover.robotic_arm.transfer_mode.description.1": "§e精確補給§r-在此模式下,覆蓋板每次都會輸入在物品過濾卡的過濾槽中指定(或者在標籤過濾卡的按鈕裡指定)數量的物品。若物品的數量小於指定數量,物品將不會被輸入。", + "cover.robotic_arm.transfer_mode.description.2": "§e保持補給§r-在此模式下,覆蓋板將保持目標容器中指定物品的數量,需要物品時則供應相應量的物品。", + "cover.robotic_arm.transfer_mode.description.3": "§7小提示:左/右擊過濾槽可以調整物品數量,同時按住Shift可以更快地調整。", + "cover.robotic_arm.transfer_mode.keep_exact": "保持補給", + "cover.robotic_arm.transfer_mode.transfer_any": "任意傳輸", + "cover.robotic_arm.transfer_mode.transfer_exact": "精確補給", + "cover.shutter.message.disabled": "扇板已開啟", + "cover.shutter.message.enabled": "扇板已關閉", + "cover.storage.title": "儲存覆蓋板", + "cover.tag_filter.info.0": "§b接受複雜表示式", + "cover.tag_filter.info.1": "& = 且(AND)", + "cover.tag_filter.info.10": "§b使用範例:§6*dusts/gold | (gtceu:circuits & !*lv)", + "cover.tag_filter.info.11": "這將匹配所有種類的金粉或LV以外的電路", + "cover.tag_filter.info.2": "丨= 或(OR)", + "cover.tag_filter.info.3": "^ = 異或(XOR)", + "cover.tag_filter.info.4": "! = 非(NOT)", + "cover.tag_filter.info.5": "( )表示優先順序", + "cover.tag_filter.info.6": "* 表示萬用字元", + "cover.tag_filter.info.7": "§b例:", + "cover.tag_filter.info.8": "§6dust*Gold | (plate* &! *Double*)", + "cover.tag_filter.info.9": "將匹配所有大小的金粉或所有非雙重板的板", + "cover.tag_filter.matches": "物品匹配", + "cover.tag_filter.matches_not": "物品不匹配", + "cover.tag_filter.test_slot.info": "放入一件物品以測試是否匹配過濾表示式", + "cover.tag_filter.title": "礦物詞典過濾卡", + "cover.universal.manual_import_export.mode.description.0": "§e禁用§r-僅依照覆蓋板與內部過濾卡的指定規則傳輸。", + "cover.universal.manual_import_export.mode.description.1": "§e過濾§r-外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", + "cover.universal.manual_import_export.mode.description.2": "§e無過濾§r-外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", + "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", + "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b過濾\\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", + "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b無過濾\\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", + "cover.voiding.label.disabled": "禁用", + "cover.voiding.label.enabled": "啟用", + "cover.voiding.message.disabled": "已禁用銷毀覆蓋板", + "cover.voiding.message.enabled": "已啟用銷毀覆蓋板", + "cover.voiding.tooltip": "§c警告!§7“啟用”時所有流體和物品全部都會被銷毀。", + "cover.voiding.voiding_mode.description.0": "§e匹配銷毀§r:匹配過濾規則即銷毀。", + "cover.voiding.voiding_mode.description.1": "§e溢位銷毀§r:匹配過濾規則即銷毀超出設定數量的部分物品/流體。", + "cover.voiding.voiding_mode.void_any": "匹配銷毀", + "cover.voiding.voiding_mode.void_overflow": "溢位銷毀", + "curios.identifier.gtceu_magnet": "GTCEu磁鐵", + "death.attack.gtceu.axe": "%s被%s用斧子砍死了", + "death.attack.gtceu.butchery_knife": "%s死在了%s的屠刀之下", + "death.attack.gtceu.buzzsaw": "%2$手中圓鋸的嗞嗞聲成為了%1$s生命中最後聽到的聲音", + "death.attack.gtceu.chainsaw_lv": "%2$s的鏈鋸切碎了%1$s", + "death.attack.gtceu.chemical": "%s歷經了一場化學事故", + "death.attack.gtceu.crowbar": "%s被%s用撬棍撬走了半條命", + "death.attack.gtceu.drill_ev": "%2$s的超高壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_hv": "%2$s的高壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_iv": "%2$s的強導壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_lv": "%2$s的低壓電鑽洞穿了%1$s", + "death.attack.gtceu.drill_mv": "%2$s的中壓電鑽洞穿了%1$s", + "death.attack.gtceu.electric": "%s觸電身亡", + "death.attack.gtceu.explosion": "%s爆炸了", + "death.attack.gtceu.explosion.player": "拜%2$s所賜,%1$s爆炸了", + "death.attack.gtceu.file": "%s歷盡了%s的“銼”折", + "death.attack.gtceu.frost": "%s探索到了低溫的奧秘", + "death.attack.gtceu.hammer": "%s被%s錘死了", + "death.attack.gtceu.heat": "%s被活活煮熟了", + "death.attack.gtceu.heat.player": "%s被%s活活煮熟了", + "death.attack.gtceu.hoe": "%s被%s鋤死了", + "death.attack.gtceu.knife": "%2$s紳士地捅了%1$s幾刀", + "death.attack.gtceu.mallet": "%s被%s用錘頭活活敲死了", + "death.attack.gtceu.medical_condition/arsenicosis": "%s死於砷中毒", + "death.attack.gtceu.medical_condition/asbestosis": "%s得了間皮瘤", + "death.attack.gtceu.medical_condition/berylliosis": "%s貪婪地挖掘綠寶石,結果有點過火了", + "death.attack.gtceu.medical_condition/carbon_monoxide_poisoning": "%s離開時爐子還開着", + "death.attack.gtceu.medical_condition/carcinogen": "%s身患白血病", + "death.attack.gtceu.medical_condition/chemical_burns": "%s歷經了一場化學事故", + "death.attack.gtceu.medical_condition/irritant": "%s身上長了§n§l極其嚴重§r的皮疹", + "death.attack.gtceu.medical_condition/methanol_poisoning": "%s在禁酒令下嘗試飲用私釀烈酒", + "death.attack.gtceu.medical_condition/nausea": "%s死於噁心", + "death.attack.gtceu.medical_condition/none": "%s死於...什麼都沒有?", + "death.attack.gtceu.medical_condition/poison": "%s忘了毒物的確有毒", + "death.attack.gtceu.medical_condition/silicosis": "%s不是死於肺結核,而是矽肺病", + "death.attack.gtceu.medical_condition/weak_poison": "%s吞下了鉛(或水銀!)", + "death.attack.gtceu.mining_hammer": "%s被%s當成礦砸死了", + "death.attack.gtceu.mortar": "%s被%s用研缽磨成了粉", + "death.attack.gtceu.pickaxe": "%s被%s用鎬子鑿死了", + "death.attack.gtceu.radiation": "%s放射出了喜悅的光芒", + "death.attack.gtceu.screwdriver": "%s被%s用螺絲起子鑽死了", + "death.attack.gtceu.screwdriver_lv": "%s的螺絲被%s扭掉了", + "death.attack.gtceu.scythe": "%s一鐮刀下去,%s的靈魂灰飛煙滅", + "death.attack.gtceu.shovel": "%s被%s用鍬掏死了", + "death.attack.gtceu.spade": "%s被%s用鏟子挖死了", + "death.attack.gtceu.turbine": "%s一頭扎進了渦輪裡", + "death.attack.gtceu.wire_cutter": "%s用剪線鉗剪斷了%s的血管", + "death.attack.gtceu.wrench": "%s被%s用扳手夯死了!", + "death.attack.gtceu.wrench_hv": "%s的血管被%s狠狠擰鬆了", + "death.attack.gtceu.wrench_iv": "%2$s一扳手下去,扳倒了%1$s的美好人生", + "death.attack.gtceu.wrench_lv": "%s的血管被%s狠狠擰鬆了", + "effect.gtceu.weak_poison": "輕度中毒", + "enchantment.damage.disjunction": "終界離析", + "enchantment.disjunction": "終界離析", + "enchantment.gtceu.disjunction.description": "對終界生物施加虛弱和緩慢效果。", + "enchantment.gtceu.hard_hammer.description": "像格雷科技的錘一樣粉碎所採掘的方塊。", + "enchantment.hard_hammer": "錘碎", + "entity.gtceu.boat": "船", + "entity.gtceu.chest_boat": "儲物箱船", + "entity.gtceu.dynamite": "炸藥", + "entity.gtceu.industrial_tnt": "工業TNT", + "entity.gtceu.powderbarrel": "火藥桶", + "fluid.empty": "空", + "fluid.gtceu.potion": "藥水", + "fluid.spawnlocation.name": "流體礦脈資訊", + "fluid.tile.lava": "熔岩", + "fluid.tile.water": "水", + "fluid_cell.empty": "空", + "gtceu.air_scrubber": "空氣淨化器", + "gtceu.alloy_blast_smelter": "合金冶煉爐", + "gtceu.alloy_smelter": "合金冶煉", + "gtceu.arc_furnace": "電弧爐", + "gtceu.assembler": "組裝機", + "gtceu.assembly_line": "裝配線", + "gtceu.auto_decomp.rotor": "渦輪轉子", + "gtceu.auto_decomp.tool": "非電動工具", + "gtceu.autoclave": "高壓釜", + "gtceu.battery_buffer.average_input": "平均輸入:%s EU/t", + "gtceu.battery_buffer.average_output": "平均輸出:%s EU/t", + "gtceu.bender": "卷板機", + "gtceu.brewery": "釀造室", + "gtceu.bus.collapse.error": "匯流排位於已成型的多方塊結構後方可進行該操作", + "gtceu.bus.collapse_false": "已禁用物品堆疊自動合併", + "gtceu.bus.collapse_true": "已啟用物品堆疊自動合併", + "gtceu.button.bedrock_fluids": "顯示基岩流體礦脈", + "gtceu.button.hide_depleted": "隱藏枯竭的礦脈", + "gtceu.button.ore_veins": "顯示GT礦脈", + "gtceu.button.show_depleted": "顯示枯竭的礦脈", + "gtceu.cable.amperage": "§e最大電流:§r§e%d", + "gtceu.cable.loss_per_block": "§c線損/公尺/安:§r§c%d§7 伏", + "gtceu.cable.superconductor": "%s§d超導體", + "gtceu.cable.voltage": "§a最大電壓:§r§a%d§a(%s§a)", + "gtceu.canner": "裝罐機", + "gtceu.centrifuge": "離心機", + "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.none": "NONE", + "gtceu.chance_logic.or": "OR", + "gtceu.chance_logic.xor": "XOR", + "gtceu.chat.cape": "§5恭喜你:你剛剛解鎖了一件新披風!檢視終端應用程式“披風選擇器”來使用它。§r", + "gtceu.chemical_bath": "化學水浴機", + "gtceu.chemical_reactor": "化學反應器", + "gtceu.circuit_assembler": "電路組裝機", + "gtceu.coke_oven": "焦爐", + "gtceu.combustion_generator": "內燃發電機", + "gtceu.command.copy.click_to_copy": "點選複製", + "gtceu.command.copy.copied_and_click": "已複製到剪貼簿,點選再次複製", + "gtceu.command.copy.copied_end": "]到剪貼簿", + "gtceu.command.copy.copied_start": "已複製[", + "gtceu.command.hand.electric": "電量資訊:%d / %d EU - 等級:%d; 是否為電池:%s", + "gtceu.command.hand.fluid": "流體資訊:%d / %d mB;是否可輸入:%s; 是否可輸出:%s", + "gtceu.command.hand.fluid2": "流體 ID:", + "gtceu.command.hand.groovy": "考慮使用§6/gs hand", + "gtceu.command.hand.item_id": "物品:%s(後設資料:%d)", + "gtceu.command.hand.material": "材料 ID:", + "gtceu.command.hand.meta_item": "元物品 ID:", + "gtceu.command.hand.no_item": "在執行此命令之前,您的主手或副手必須拿著物品。", + "gtceu.command.hand.not_a_player": "這個命令只有玩家可以使用。", + "gtceu.command.hand.ore_prefix": "礦物字首:", + "gtceu.command.hand.tag_entries": "§3標籤條目:", + "gtceu.command.hand.tool_stats": "工具狀態類:%s", + "gtceu.command.hand.usage": "用法:/gtceu hand", + "gtceu.command.recipecheck.begin": "開始配方衝突檢查...", + "gtceu.command.recipecheck.end": "配方衝突檢查詢到%d可能存在的衝突,檢視伺服器日誌以瞭解更多資訊", + "gtceu.command.recipecheck.end_no_conflicts": "未發現配方衝突!", + "gtceu.command.recipecheck.usage": "用法:/gtceu recipecheck", + "gtceu.command.usage": "用法:/gtceu ", + "gtceu.command.worldgen.reload.failed": "Worldgen重新載入失敗。檢查控制台是否有錯誤。", + "gtceu.command.worldgen.reload.success": "Worldgen已成功從設定重新載入。", + "gtceu.command.worldgen.reload.usage": "用法:/gtceu worldgen reload", + "gtceu.command.worldgen.usage": "用法:/gtceu worldgen ", + "gtceu.compressor": "壓縮機", + "gtceu.cover.activity_detector.message_activity_inverted": "正在以反相模式監控活動狀態", + "gtceu.cover.activity_detector.message_activity_normal": "正在以普通模式監控活動狀態", + "gtceu.cover.activity_detector_advanced.message_activity_inverted": "正在以反相模式監控處理狀態", + "gtceu.cover.activity_detector_advanced.message_activity_normal": "正在以普通模式監控處理狀態", + "gtceu.cover.energy_detector.message_electricity_storage_inverted": "正在以反相模式監控電力儲存", + "gtceu.cover.energy_detector.message_electricity_storage_normal": "正在以普通模式監控電力儲存", + "gtceu.cover.fluid_detector.message_fluid_storage_inverted": "正在以反相模式監控流體儲存", + "gtceu.cover.fluid_detector.message_fluid_storage_normal": "正在以普通模式監控流體儲存", + "gtceu.cover.item_detector.message_item_storage_inverted": "正在以反相模式監控物品儲存", + "gtceu.cover.item_detector.message_item_storage_normal": "正在以普通模式監控物品儲存", + "gtceu.cracker": "裂解機", + "gtceu.creative.activity.off": "未啟用", + "gtceu.creative.activity.on": "已啟用", + "gtceu.creative.chest.ipc": "每次輸出流體量", + "gtceu.creative.chest.item": "物品", + "gtceu.creative.chest.tpc": "每次輸出間隔Tick", + "gtceu.creative.computation.average": "平均CWU/t需求", + "gtceu.creative.energy.amperage": "電流", + "gtceu.creative.energy.sink": "歸零", + "gtceu.creative.energy.source": "最大值", + "gtceu.creative.energy.voltage": "電壓", + "gtceu.creative.tank.fluid": "流體", + "gtceu.creative.tank.mbpc": "每次輸出流體量", + "gtceu.creative.tank.tpc": "每次輸出間隔Tick", + "gtceu.creative_tooltip.1": "§7你需要", + "gtceu.creative_tooltip.2": "§b創造模式", + "gtceu.creative_tooltip.3": "§7來使用它", + "gtceu.cutter": "切割機", + "gtceu.debug.f3_h.enabled": "格雷科技修改了除錯資訊!對於開發人員:在GregTech設定檔案中啟用misc:debug以檢視更多資訊", + "gtceu.direction.tooltip.back": "背面", + "gtceu.direction.tooltip.down": "底面", + "gtceu.direction.tooltip.front": "正面", + "gtceu.direction.tooltip.left": "左面", + "gtceu.direction.tooltip.right": "右面", + "gtceu.direction.tooltip.up": "頂面", + "gtceu.distillation_tower": "蒸餾塔", + "gtceu.distillery": "蒸餾室", + "gtceu.duct_pipe.transfer_rate": "§b空氣傳輸速率:%s", + "gtceu.dummy": "假人", + "gtceu.electric_blast_furnace": "電力高爐", + "gtceu.electric_furnace": "電爐", + "gtceu.electrolyzer": "電解機", + "gtceu.electromagnetic_separator": "電磁分離機", + "gtceu.extractor": "提取機", + "gtceu.extruder": "壓模器", + "gtceu.fermenter": "發酵槽", + "gtceu.fluid.amount": "§9總量:%d/%d mB", + "gtceu.fluid.click_combined": "§7手持流體容器點選流體槽以§c倒出§7或§b填入§7流體(Shift+點擊以用整組容器倒出流體或用整組容器中的流體填入)", + "gtceu.fluid.click_to_empty": "§7手持流體容器點選流體槽以§c倒出§7流體(Shift+點擊以用整組容器倒出流體)", + "gtceu.fluid.click_to_fill": "§7手持流體容器點選流體槽以§b填入§7流體(Shift+點擊以用整組容器中的流體填入)", + "gtceu.fluid.empty": "空", + "gtceu.fluid.gas_generic": "氣態%s", + "gtceu.fluid.gas_vapor": "%s蒸氣", + "gtceu.fluid.generic": "%s", + "gtceu.fluid.liquid_generic": "液態%s", + "gtceu.fluid.molten": "熔融%s", + "gtceu.fluid.plasma": "%s電漿", + "gtceu.fluid.state_gas": "§a狀態:氣態", + "gtceu.fluid.state_liquid": "§a狀態:液態", + "gtceu.fluid.state_plasma": "§a狀態:電漿態", + "gtceu.fluid.temperature": "§c溫度:%d K", + "gtceu.fluid.temperature.cryogenic": "§b低溫流體!輕拿輕放!", + "gtceu.fluid.type_acid.tooltip": "§6酸性流體!輕拿輕放!", + "gtceu.fluid_heater": "流體加熱器", + "gtceu.fluid_pipe.acid_proof": "§6可傳輸酸性物質", + "gtceu.fluid_pipe.capacity": "§9容積:§f%d mB", + "gtceu.fluid_pipe.channels": "§e平行管道:§f%d", + "gtceu.fluid_pipe.cryo_proof": "§6可傳輸低溫物質", + "gtceu.fluid_pipe.gas_proof": "§6可以傳輸氣體", + "gtceu.fluid_pipe.max_temperature": "§c溫度上限:§f%d K", + "gtceu.fluid_pipe.not_gas_proof": "§4氣體可能洩漏!", + "gtceu.fluid_pipe.plasma_proof": "§6可傳輸所有電漿", + "gtceu.fluid_solidifier": "流體固化器", + "gtceu.forge_hammer": "鍛造錘", + "gtceu.forming_press": "衝壓機床", + "gtceu.forming_press.naming.named": "§o已命名物品", + "gtceu.forming_press.naming.press": "§o名稱模板", + "gtceu.forming_press.naming.to_name": "§o待命名物品", + "gtceu.fusion_reactor": "核融合反應爐", + "gtceu.gas_collector": "集氣室", + "gtceu.gas_turbine": "燃氣輪機", + "gtceu.gui.auto_output.name": "自動", + "gtceu.gui.charger_slot.tooltip.0": "§f充電槽§r", + "gtceu.gui.charger_slot.tooltip.1": "§7從%s電池中取電§7", + "gtceu.gui.charger_slot.tooltip.2": "§7也可為%s工具或電池充電", + "gtceu.gui.chunkmode.disabled.0": "區塊模式§c禁用§r:點擊啟用。", + "gtceu.gui.chunkmode.disabled.1": "§7切換需要機器待機。", + "gtceu.gui.chunkmode.enabled.0": "區塊模式§a啟用§r:點擊禁用。", + "gtceu.gui.chunkmode.enabled.1": "§7切換需要機器待機。", + "gtceu.gui.circuit.title": "電路設定", + "gtceu.gui.config_slot": "§f設定槽位§r", + "gtceu.gui.config_slot.auto_pull_managed": "§4停用:§7由ME自動拉取管理", + "gtceu.gui.config_slot.remove": "§7右擊§4清除§7設定槽位。§r", + "gtceu.gui.config_slot.scroll": "§7使用滾輪§a切換§7設定數。§r", + "gtceu.gui.config_slot.set": "§7點選§b設定/選擇§7設定槽位。§r", + "gtceu.gui.config_slot.set_only": "§7點選§b設定§7設定槽位。§r", + "gtceu.gui.configurator_slot.tooltip.0": "§f設定器槽§r", + "gtceu.gui.configurator_slot.tooltip.1": "§7在此插槽放置一個§6程式設計電路§7以", + "gtceu.gui.configurator_slot.tooltip.2": "§7更改其設定值。", + "gtceu.gui.configurator_slot.tooltip.3": "§7按住§6Shift§7時點選按鈕,一次加減§6§75個編號", + "gtceu.gui.configurator_slot.tooltip.4": "§a此插槽中的程式設計電路也視為一個配方輸入。§r", + "gtceu.gui.content.chance_base": "產出機率:%s%%", + "gtceu.gui.content.chance_base_logic": "產出機率:%s%% (%s)", + "gtceu.gui.content.chance_boosted": "當前等級機率:%s%%", + "gtceu.gui.content.chance_boosted_logic": "當前等級機率:%s%%(%s)", + "gtceu.gui.content.chance_nc": "§c不會被消耗§r", + "gtceu.gui.content.chance_nc_short": "§c不消耗§r", + "gtceu.gui.content.chance_tier_boost_minus": "電壓加成:-%s%%/每級", + "gtceu.gui.content.chance_tier_boost_plus": "電壓加成:+%s%%/每級", + "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.per_tick": "§a每刻(tick)消耗/產生§r", + "gtceu.gui.content.tips.per_second_short": "§a/秒§r", + "gtceu.gui.content.tips.per_tick_short": "§a/刻(tick)§r", + "gtceu.gui.content.units.per_second": "/s", + "gtceu.gui.content.units.per_tick": "/t", + "gtceu.gui.cover_setting.title": "覆蓋板設定", + "gtceu.gui.editor.group.recipe_type": "封頂", + "gtceu.gui.editor.tips.citation": "引用次數", + "gtceu.gui.fisher_mode.tooltip.0": "捕捉垃圾物品", + "gtceu.gui.fisher_mode.tooltip.1": "關閉時,每次執行消耗兩根線。", + "gtceu.gui.fluid_amount": "流體總量:", + "gtceu.gui.fluid_auto_input.tooltip.disabled": "流體自動輸入已禁用", + "gtceu.gui.fluid_auto_input.tooltip.enabled": "流體自動輸入已啟用", + "gtceu.gui.fluid_auto_output.allow_input.disabled": "禁止從輸出面輸入流體", + "gtceu.gui.fluid_auto_output.allow_input.enabled": "允許從輸出面輸入流體", + "gtceu.gui.fluid_auto_output.tooltip.disabled": "流體自動輸出已禁用", + "gtceu.gui.fluid_auto_output.tooltip.enabled": "流體自動輸出已啟用", + "gtceu.gui.fluid_lock.tooltip.disabled": "流體鎖定已禁用", + "gtceu.gui.fluid_lock.tooltip.enabled": "流體鎖定已啟用", + "gtceu.gui.fluid_voiding_partial.tooltip.disabled": "過量流體銷毀已禁用", + "gtceu.gui.fluid_voiding_partial.tooltip.enabled": "過量流體銷毀已啟用", + "gtceu.gui.fuel_amount": "燃料總量:", + "gtceu.gui.item_auto_input.tooltip.disabled": "物品自動輸入已禁用", + "gtceu.gui.item_auto_input.tooltip.enabled": "物品自動輸入已啟用", + "gtceu.gui.item_auto_output.allow_input.disabled": "禁止從輸出面輸入物品", + "gtceu.gui.item_auto_output.allow_input.enabled": "允許從輸出面輸入物品", + "gtceu.gui.item_auto_output.tooltip.disabled": "物品自動輸出已禁用", + "gtceu.gui.item_auto_output.tooltip.enabled": "物品自動輸出已啟用", + "gtceu.gui.item_lock.tooltip.disabled": "物品鎖定已禁用", + "gtceu.gui.item_lock.tooltip.enabled": "物品鎖定已啟用", + "gtceu.gui.item_voiding_partial.tooltip.disabled": "物品過量銷毀已禁用", + "gtceu.gui.item_voiding_partial.tooltip.enabled": "物品過量銷毀已開啟", + "gtceu.gui.machinemode": "當前機器模式:%s", + "gtceu.gui.machinemode.title": "當前機器模式", + "gtceu.gui.me_bus.auto_pull_button": "點擊以切換ME自動拉取模式", + "gtceu.gui.me_network.offline": "網路狀態:§4離線§r", + "gtceu.gui.me_network.online": "網路狀態:§2線上§r", + "gtceu.gui.multiblock_fluid_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_fluid_voiding.1": "§7銷毀§9流體", + "gtceu.gui.multiblock_item_fluid_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_item_fluid_voiding.1": "§7銷毀§6物品§7和§9流體", + "gtceu.gui.multiblock_item_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_item_voiding.1": "§7銷毀§6物品", + "gtceu.gui.multiblock_no_voiding.0": "銷毀模式", + "gtceu.gui.multiblock_no_voiding.1": "§7不進行銷毀", + "gtceu.gui.output_setting.title": "輸出設定", + "gtceu.gui.output_setting.tooltips.0": "左擊以自動輸出物品", + "gtceu.gui.output_setting.tooltips.1": "右擊以自動輸出流體", + "gtceu.gui.overclock.description.0": "超頻按鈕", + "gtceu.gui.overclock.description.1": "§7配方可以超頻到設定的電壓等級", + "gtceu.gui.overclock.disabled.0": "超頻已禁用", + "gtceu.gui.overclock.disabled.1": "點擊啟用", + "gtceu.gui.overclock.enabled.0": "超頻已啟用", + "gtceu.gui.overclock.enabled.1": "點擊禁用", + "gtceu.gui.overclock.off": "X", + "gtceu.gui.overclock.range": "可用電壓級 [%s,%s]", + "gtceu.gui.overclock.title": "超頻電壓級", + "gtceu.gui.silktouch.disabled.0": "絲綢之觸已禁用:點擊啟用。", + "gtceu.gui.silktouch.disabled.1": "§7切換需要機器待機。", + "gtceu.gui.silktouch.enabled.0": "絲綢之觸已啟用:點擊禁用。", + "gtceu.gui.silktouch.enabled.1": "§7切換需要機器待機。", + "gtceu.gui.sort": "分類", + "gtceu.gui.title_bar.back": "返回", + "gtceu.gui.title_bar.page_switcher": "頁面", + "gtceu.gui.toggle_view.disabled": "切換檢視(流體)", + "gtceu.gui.toggle_view.enabled": "切換檢視(物品)", + "gtceu.gui.waiting_list": "傳送佇列:", + "gtceu.hazard_trigger.any": "任何方式", + "gtceu.hazard_trigger.description": "肇因:", + "gtceu.hazard_trigger.inhalation": "吸入", + "gtceu.hazard_trigger.none": "無", + "gtceu.hazard_trigger.protection.description": "免受:", + "gtceu.hazard_trigger.skin_contact": "皮膚接觸", + "gtceu.implosion_compressor": "聚爆壓縮機", + "gtceu.io.both": "同時", + "gtceu.io.export": "輸出", + "gtceu.io.import": "輸入", + "gtceu.io.none": "無", + "gtceu.item_filter.empty_item": "空(無物品)", + "gtceu.item_filter.footer": "§e手持物品右鍵取代設定", + "gtceu.item_list.item_stored": "§7儲量:%d", + "gtceu.item_pipe.priority": "§9優先順序:§f%d", + "gtceu.jade.cleaned_this_second": "污染清理速率:%s/s", + "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.progress_computation": "計算進度:%s / %s", + "gtceu.jade.progress_sec": "%s / %s s", + "gtceu.jade.progress_tick": "%s / %s t", + "gtceu.jei.bedrock_fluid.heavy_oil_deposit": "重油礦藏", + "gtceu.jei.bedrock_fluid.lava_deposit": "熔岩礦藏", + "gtceu.jei.bedrock_fluid.light_oil_deposit": "輕油礦藏", + "gtceu.jei.bedrock_fluid.natural_gas_deposit": "天然氣礦藏", + "gtceu.jei.bedrock_fluid.nether_natural_gas_deposit": "地獄天然氣礦藏", + "gtceu.jei.bedrock_fluid.oil_deposit": "石油礦藏", + "gtceu.jei.bedrock_fluid.raw_oil_deposit": "原油礦藏", + "gtceu.jei.bedrock_fluid.salt_water_deposit": "鹽水礦藏", + "gtceu.jei.bedrock_fluid_diagram": "基岩流體生成資訊", + "gtceu.jei.bedrock_ore_diagram": "基岩礦脈生成資訊", + "gtceu.jei.fluid.dep_amount_hover": "消耗後消耗的量", + "gtceu.jei.fluid.dep_chance_hover": "開採流體礦脈時消耗的機率", + "gtceu.jei.fluid.dep_yield_hover": "流體礦脈耗盡後能開採的最大流體量", + "gtceu.jei.fluid.depleted_rate": "耗盡後產量:%d", + "gtceu.jei.fluid.depletion_amount": "消耗量:%d", + "gtceu.jei.fluid.depletion_chance": "消耗機率:%d%%", + "gtceu.jei.fluid.dimension": "維度:", + "gtceu.jei.fluid.max_hover": "流體礦脈所能具有的的最大產量", + "gtceu.jei.fluid.max_yield": "最大產量:%d", + "gtceu.jei.fluid.min_hover": "流體礦脈所能具有的的最小產量", + "gtceu.jei.fluid.min_yield": "最小產量:%d", + "gtceu.jei.fluid.vein_weight": "礦脈權重:%d", + "gtceu.jei.fluid.weight_hover": "流體礦脈的生成權重。滑鼠懸於圖示可檢視該流體在特定生態域中特殊的生成權重", + "gtceu.jei.materials.average_mass": "平均質量:%d", + "gtceu.jei.materials.average_neutrons": "平均中子數:%d", + "gtceu.jei.materials.average_protons": "平均質子數:%d", + "gtceu.jei.multiblock_info": "多方塊結構資訊", + "gtceu.jei.ore.between.0": "中層礦", + "gtceu.jei.ore.between.1": "和其他礦一起生成在礦脈的中間%d層", + "gtceu.jei.ore.biome_weighting": "§d%s的生成權重:§3%d", + "gtceu.jei.ore.biome_weighting_no_spawn": "§d%s的生成權重:§c無法生成", + "gtceu.jei.ore.biome_weighting_title": "§d特定生態域中的例外權重:", + "gtceu.jei.ore.ore_weight": "礦脈內生成權重:%d%%", + "gtceu.jei.ore.primary.0": "頂層礦", + "gtceu.jei.ore.primary.1": "在礦脈的頂部%d層生成", + "gtceu.jei.ore.secondary.0": "底層礦", + "gtceu.jei.ore.secondary.1": "在礦脈的底部%d層生成", + "gtceu.jei.ore.sporadic.0": "散佈礦", + "gtceu.jei.ore.sporadic.1": "生成在礦脈的任何地方", + "gtceu.jei.ore.surface_rock.0": "這種地表岩石標誌著礦脈的生成位置。", + "gtceu.jei.ore.surface_rock.1": "挖掘掉落3小撮粉,受幸運加成", + "gtceu.jei.ore_processing_diagram": "礦物處理流程圖", + "gtceu.jei.ore_vein.apatite_vein": "磷灰石礦脈", + "gtceu.jei.ore_vein.banded_iron_vein": "帶狀鐵礦脈", + "gtceu.jei.ore_vein.bauxite_vein_end": "終界鋁土礦脈", + "gtceu.jei.ore_vein.beryllium_vein": "鈹礦脈", + "gtceu.jei.ore_vein.cassiterite_vein": "錫石礦脈", + "gtceu.jei.ore_vein.certus_quartz": "賽特斯石英", + "gtceu.jei.ore_vein.coal_vein": "煤炭礦脈", + "gtceu.jei.ore_vein.copper_tin_vein": "銅錫礦脈", + "gtceu.jei.ore_vein.copper_vein": "銅礦脈", + "gtceu.jei.ore_vein.diamond_vein": "鑽石礦脈", + "gtceu.jei.ore_vein.galena_vein": "方鉛礦脈", + "gtceu.jei.ore_vein.garnet_tin_vein": "錫石榴石礦脈", + "gtceu.jei.ore_vein.garnet_vein": "石榴石礦脈", + "gtceu.jei.ore_vein.iron_vein": "鐵礦脈", + "gtceu.jei.ore_vein.lapis_vein": "青金石礦脈", + "gtceu.jei.ore_vein.lubricant_vein": "皂滑礦脈", + "gtceu.jei.ore_vein.magnetite_vein_end": "終界磁鐵礦脈", + "gtceu.jei.ore_vein.magnetite_vein_ow": "主世界磁鐵礦脈", + "gtceu.jei.ore_vein.manganese_vein": "錳礦脈", + "gtceu.jei.ore_vein.manganese_vein_ow": "主世界錳礦脈", + "gtceu.jei.ore_vein.mica_vein": "雲母礦脈", + "gtceu.jei.ore_vein.mineral_sand_vein": "礦砂礦脈", + "gtceu.jei.ore_vein.molybdenum_vein": "鉬礦脈", + "gtceu.jei.ore_vein.monazite_vein": "獨居石礦脈", + "gtceu.jei.ore_vein.naquadah_vein": "矽岩礦脈", + "gtceu.jei.ore_vein.nether_quartz_vein": "地獄石英礦脈", + "gtceu.jei.ore_vein.nickel_vein": "鎳礦脈", + "gtceu.jei.ore_vein.oilsands_vein": "油砂礦脈", + "gtceu.jei.ore_vein.olivine_vein": "橄欖石礦脈", + "gtceu.jei.ore_vein.pitchblende_vein_end": "終界瀝青鈾礦脈", + "gtceu.jei.ore_vein.redstone_vein": "紅石礦脈", + "gtceu.jei.ore_vein.redstone_vein_ow": "主世界紅石礦脈", + "gtceu.jei.ore_vein.saltpeter_vein": "硝石礦脈", + "gtceu.jei.ore_vein.salts_vein": "鹽礦脈", + "gtceu.jei.ore_vein.sapphire_vein": "藍寶石礦脈", + "gtceu.jei.ore_vein.scheelite_vein": "白鎢礦脈", + "gtceu.jei.ore_vein.sheldonite_vein": "謝爾頓礦脈", + "gtceu.jei.ore_vein.sulfur_vein": "硫礦脈", + "gtceu.jei.ore_vein.tetrahedrite_vein": "黝銅礦脈", + "gtceu.jei.ore_vein.topaz_vein": "黃玉礦脈", + "gtceu.jei.ore_vein_diagram": "礦脈生成資訊", + "gtceu.jei.ore_vein_diagram.chance": "§e機率:%s§r", + "gtceu.jei.ore_vein_diagram.dimensions": "維度:", + "gtceu.jei.ore_vein_diagram.spawn_range": "生成範圍:", + "gtceu.jei.ore_vein_diagram.weight": "權重:%s", + "gtceu.jei.programmed_circuit": "程式設計電路頁", + "gtceu.journeymap.options.layers": "勘探層", + "gtceu.journeymap.options.layers.bedrock_fluids": "顯示基岩流體礦脈", + "gtceu.journeymap.options.layers.hide_depleted": "隱藏枯竭的礦脈", + "gtceu.journeymap.options.layers.ore_veins": "顯示礦脈", + "gtceu.key.armor_charging": "啟用/禁用盔甲向物品欄充能", + "gtceu.key.armor_hover": "切換盔甲懸浮模式", + "gtceu.key.armor_mode_switch": "切換盔甲模式", + "gtceu.key.enable_boots": "啟用跳躍提升", + "gtceu.key.enable_jetpack": "啟用噴射背包", + "gtceu.key.tool_aoe_change": "切換工具範圍模式", + "gtceu.large_boiler": "大型鍋爐", + "gtceu.large_chemical_reactor": "大型化學反應器", + "gtceu.laser_engraver": "雷射蝕刻機", + "gtceu.lathe": "車床", + "gtceu.macerator": "研磨機", + "gtceu.machine.active_transformer.tooltip.0": "變形金剛:偽裝的雷射", + "gtceu.machine.active_transformer.tooltip.1": "可以將任意數量的能量§f輸入§7整合為任意數量的能量§f輸出§7。", + "gtceu.machine.active_transformer.tooltip.2": "當你使用§d雷射§7進行能量傳輸時,擁有驚人的傳輸距離。", + "gtceu.machine.active_transformer.tooltip.3": "Lasers§7.", + "gtceu.machine.advanced_processing_array.tooltip": "這個世界需要更多平行", + "gtceu.machine.assembly_line.tooltip": "真不是什麼多方塊組裝機!", + "gtceu.machine.available_recipe_map_1.tooltip": "可用配方型別:%s", + "gtceu.machine.available_recipe_map_2.tooltip": "可用配方型別:%s,%s", + "gtceu.machine.available_recipe_map_3.tooltip": "可用配方型別:%s,%s,%s", + "gtceu.machine.available_recipe_map_4.tooltip": "可用配方型別:%s,%s,%s,%s", + "gtceu.machine.basic.input_from_output_side.allow": "允許從輸出面輸入:", + "gtceu.machine.basic.input_from_output_side.disallow": "禁止從輸出面輸入:", + "gtceu.machine.bedrock_ore_miner.depletion": "§b損耗率:§f%s%%", + "gtceu.machine.bedrock_ore_miner.description": "§7從基岩之下的礦脈鑽掘礦", + "gtceu.machine.bedrock_ore_miner.production": "§e產量倍率:§f%dx,超頻後%fx", + "gtceu.machine.block_breaker.speed_bonus": "§e速度獎勵:§f%d%%", + "gtceu.machine.block_breaker.tooltip": "§7採掘正面的方塊並收集掉落物", + "gtceu.machine.boiler.info.cooling.down": "§9冷卻中§r%s", + "gtceu.machine.boiler.info.heating.up": "§c加熱中§r%s", + "gtceu.machine.boiler.info.producing.steam": " §a(沸騰)", + "gtceu.machine.buffer.tooltip": "用於儲存物品和流體的小小緩衝器", + "gtceu.machine.canner.jei_description": "填入或倒空流體容器,例如桶和流體單元", + "gtceu.machine.central_monitor.tooltip": "但它能執行《毀滅戰士》嗎?", + "gtceu.machine.charcoal_pile.tooltip": "不烤麵包烤燃料的地下麵包房", + "gtceu.machine.charcoal_pile.tooltip.0": "§c點火後§7將原木燒製成§a木炭§7。", + "gtceu.machine.charcoal_pile.tooltip.1": "使用可點火的物品右擊即可啟動。", + "gtceu.machine.charcoal_pile.tooltip.2": "熱解發生在下方至多§b9x4x9§7的空間內。", + "gtceu.machine.charcoal_pile.tooltip.3": "原木不可暴露在§e空氣§7中!", + "gtceu.machine.cleanroom.tooltip": "將那些討厭的灰塵拒之門外", + "gtceu.machine.cleanroom.tooltip.0": "將機器放在內部執行無塵室配方。", + "gtceu.machine.cleanroom.tooltip.1": "清理汙染時耗能為§f30EU/t§7,潔淨狀態耗能為§f4EU/t§7。", + "gtceu.machine.cleanroom.tooltip.2": "超頻增加每個週期的清潔度。", + "gtceu.machine.cleanroom.tooltip.3": "§b大小:§f5x5x5到15x15x15", + "gtceu.machine.cleanroom.tooltip.4": "天花板需要§f過濾器機械方塊§7,不包含天花板的邊緣。", + "gtceu.machine.cleanroom.tooltip.5": "接受最多§f四扇門§7!門處於開啟狀態時不會影響潔淨度。", + "gtceu.machine.cleanroom.tooltip.6": "發電機、消音倉、採礦機和原始機器對於無塵室來說太髒了!", + "gtceu.machine.cleanroom.tooltip.7": "透過牆壁上的§f機器外殼§7或§f二極體§7向內部輸入能量。", + "gtceu.machine.cleanroom.tooltip.ae2.channels": "透過牆壁上的§f機器外殼§7傳送最多§f8個AE2頻道§7。", + "gtceu.machine.cleanroom.tooltip.ae2.no_channels": "透過牆壁上的§f機器外殼§7連通§aAE2網路§7。", + "gtceu.machine.cleanroom.tooltip.hold_ctrl": "按住CTRL以顯示完整的結構資訊", + "gtceu.machine.coke_oven.tooltip": "為鍊鋼和發電提供更優質的燃料", + "gtceu.machine.coke_oven_hatch.tooltip": "§7允許焦爐的自動化輸入輸出", + "gtceu.machine.combustion_generator.tooltip": "§7需要液體燃料", + "gtceu.machine.computation_receiver_hatch.tooltip": "為多方塊結構輸入算力資料", + "gtceu.machine.computation_transmitter_hatch.tooltip": "從多方塊結構輸出算力資料", + "gtceu.machine.cracker.tooltip": "有它,石油才有用", + "gtceu.machine.cracker.tooltip.1": "使用§6白銅§7後的每個線圈等級可以減少§f10%%§7的能源消耗。", + "gtceu.machine.data_access_hatch.tooltip.0": "令多方塊結構得以訪問資料", + "gtceu.machine.data_access_hatch.tooltip.1": "新增了§a%s§7個資料容器(快閃記憶體等)插槽", + "gtceu.machine.data_bank.tooltip.0": "你的個人網路儲存器", + "gtceu.machine.data_bank.tooltip.1": "大容量資料儲存,使用光纜傳輸。", + "gtceu.machine.data_bank.tooltip.2": "資料庫間可以相互連線。", + "gtceu.machine.data_bank.tooltip.3": "每個資料/光學倉耗能為§f%s EU/t§7。", + "gtceu.machine.data_bank.tooltip.4": "每個已連線的資料/光學倉耗能為§f%s EU/t§7。", + "gtceu.machine.data_receiver_hatch.tooltip": "為多方塊結構輸入研究資料", + "gtceu.machine.data_transmitter_hatch.tooltip": "從多方塊結構輸出研究資料", + "gtceu.machine.diode.message": "最大電流:%s", + "gtceu.machine.diode.tooltip_general": "將只允許能量向一個方向流動,並限制電流。", + "gtceu.machine.diode.tooltip_starts_at": "預設允許§f1A§r電流通行,使用軟錘切換。", + "gtceu.machine.diode.tooltip_tool_usage": "用軟錘右擊以改變電流。", + "gtceu.machine.distillation_tower.tooltip": "流體精煉廠", + "gtceu.machine.drum.disable_output": "不排出液體", + "gtceu.machine.drum.enable_output": "將液體排到底面相鄰的容器中", + "gtceu.machine.dual_hatch.export.tooltip": "為多方塊結構輸出物品和流體", + "gtceu.machine.dual_hatch.import.tooltip": "為多方塊結構輸入物品和流體", + "gtceu.machine.electric_blast_furnace.tooltip": "電力高爐有了,那電力煙燻爐呢?", + "gtceu.machine.electric_blast_furnace.tooltip.0": "每超過配方溫度§f900K§7,耗能均將乘以§f95%%§7(不計超頻)。", + "gtceu.machine.electric_blast_furnace.tooltip.1": "每超過配方溫度§f1800K§7,將一次超頻的效率變為§f100%%§7(無損超頻)。", + "gtceu.machine.electric_blast_furnace.tooltip.2": "超過§fMV§7後的每一級電壓,都會將溫度提高§f100K§7。", + "gtceu.machine.endpoint.tooltip.0": "使用§f長距離管道§7方塊連線管道介面以建立管路。", + "gtceu.machine.endpoint.tooltip.1": "管路必須有且僅有一個§f1輸入§7介面和一個§f1輸出§7介面。", + "gtceu.machine.endpoint.tooltip.2": "只有管道介面需要被§f區塊載入§7。", + "gtceu.machine.endpoint.tooltip.min_length": "§b最低介面間距:§f%d格方塊", + "gtceu.machine.energy_converter.description": "在EU和FE之間轉換能量形式。", + "gtceu.machine.energy_converter.message_conversion_eu": "EU轉為FE,,輸入:%dA %d EU,輸出:%d FE", + "gtceu.machine.energy_converter.message_conversion_native": "FE轉為EU,輸入:%dFE,輸出:%dA %d EU", + "gtceu.machine.energy_converter.tooltip_conversion_eu": "§aEU轉換:§f%dA %d EU(%s§f)§7 -> %d FE", + "gtceu.machine.energy_converter.tooltip_conversion_native": "§cFE轉換:§f%d FE -> %dA %d EU (%s§f)", + "gtceu.machine.energy_converter.tooltip_tool_usage": "預設§f轉換為FE§r,使用軟錘切換。", + "gtceu.machine.energy_hatch.input.tooltip": "為多方塊結構輸入能量", + "gtceu.machine.energy_hatch.input_hi_amp.tooltip": "為多方塊結構輸入更多電流", + "gtceu.machine.energy_hatch.output.tooltip": "為多方塊結構輸出能量", + "gtceu.machine.energy_hatch.output_hi_amp.tooltip": "為多方塊結構輸出更多電流", + "gtceu.machine.ev_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.ev_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.ev_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.ev_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.ev_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.ev_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.ev_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.ev_centrifuge.tooltip": "§7分子分離機", + "gtceu.machine.ev_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.ev_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.ev_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.ev_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.ev_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.ev_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.ev_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.ev_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.ev_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.ev_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.ev_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.ev_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.ev_fluid_drilling_rig.tooltip": "甚至可以抽空整個油田", + "gtceu.machine.ev_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.ev_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.ev_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.ev_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.ev_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.ev_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.ev_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.ev_macerator.tooltip": "§7粉碎礦並獲得副產物", + "gtceu.machine.ev_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.ev_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.ev_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.ev_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.ev_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.ev_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.ev_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.ev_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.ev_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.ev_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.ev_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.extreme_combustion_engine.tooltip": "極限化學能釋放者", + "gtceu.machine.fisher.requirement": "需要以機器正下方為中心的%dx%d正方形水源。", + "gtceu.machine.fisher.speed": "每%d刻抓到一些東西", + "gtceu.machine.fisher.tooltip": "每次消耗一根線捕魚", + "gtceu.machine.fluid_drilling_rig.depletion": "§b損耗率:§f%s%%", + "gtceu.machine.fluid_drilling_rig.description": "§7從基岩下的礦脈中鑽取流體。", + "gtceu.machine.fluid_drilling_rig.production": "§e產量倍率:§f%dx,超頻後%fx", + "gtceu.machine.fluid_hatch.export.tooltip": "為多方塊結構輸出流體", + "gtceu.machine.fluid_hatch.import.tooltip": "為多方塊結構輸入流體", + "gtceu.machine.fluid_tank.fluid": "含有%smB%s", + "gtceu.machine.fluid_tank.max_multiblock": "多方塊結構最大尺寸:%dx%dx%d", + "gtceu.machine.fusion_reactor.capacity": "§7儲能上限:§e%sM EU", + "gtceu.machine.fusion_reactor.luv.tooltip": "我發動魔法卡,融合!", + "gtceu.machine.fusion_reactor.overclocking": "超頻時消耗兩倍能量,工作時間減半", + "gtceu.machine.fusion_reactor.uv.tooltip": "化 作 白 矮 星 砸 向 你", + "gtceu.machine.fusion_reactor.zpm.tooltip": "一 輪 紅 日 落 大 地", + "gtceu.machine.gas_turbine.tooltip": "§7需要氣體燃料", + "gtceu.machine.high_performance_computation_array.tooltip.0": "只是普通的超級電腦", + "gtceu.machine.high_performance_computation_array.tooltip.1": "用於生產§f算力§7(同時會產生熱量)。", + "gtceu.machine.high_performance_computation_array.tooltip.2": "需要HPCA元件來生產§fCWU/t§7(計算工作單元)。", + "gtceu.machine.hp_steam_alloy_smelter.tooltip": "§7融合冶煉爐", + "gtceu.machine.hp_steam_compressor.tooltip": "§7壓縮物品", + "gtceu.machine.hp_steam_extractor.tooltip": "§7提取你的第一塊橡膠", + "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7鍛造錘", + "gtceu.machine.hp_steam_furnace.tooltip": "§7利用蒸汽冶煉物品", + "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7比小型液體燃料鍋爐更快", + "gtceu.machine.hp_steam_macerator.tooltip": "§7粉碎你的礦", + "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7來自太陽的蒸汽能源", + "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7比小型固體燃料鍋爐更快", + "gtceu.machine.hpca.active_cooler_component.tooltip": "不再免費,但效果更好", + "gtceu.machine.hpca.advanced_computation_component.damaged.name": "損壞的HPCA高階計算元件", + "gtceu.machine.hpca.advanced_computation_component.damaged.tooltip": "只花了一隻胳膊和一條腿", + "gtceu.machine.hpca.advanced_computation_component.tooltip": "計算大聯盟", + "gtceu.machine.hpca.bridge_component.tooltip": "這就是高效能運算陣列中“陣列”一詞的來源", + "gtceu.machine.hpca.component_general.max_eut": "§6最大能量:§f%d EU/t", + "gtceu.machine.hpca.component_general.upkeep_eut": "§e維持耗能:§f%d EU/t", + "gtceu.machine.hpca.component_type.bridge": "允許§fHPCA§7與§f網路交換機§7連線", + "gtceu.machine.hpca.component_type.computation_cooling": "§c最多需要:§f%d 冷卻", + "gtceu.machine.hpca.component_type.computation_cwut": "§9算力:§f%d CWU/t", + "gtceu.machine.hpca.component_type.cooler_active": "§b冷卻型別:§f主動", + "gtceu.machine.hpca.component_type.cooler_active_coolant": "§c最多需要:§f%d mB/t %s", + "gtceu.machine.hpca.component_type.cooler_cooling": "§a提供:§f%d 冷卻", + "gtceu.machine.hpca.component_type.cooler_passive": "§b冷卻型別:§f被動", + "gtceu.machine.hpca.component_type.damaged": "HPCA過熱可能會損壞!", + "gtceu.machine.hpca.computation_component.damaged.name": "損壞的HPCA計算元件", + "gtceu.machine.hpca.computation_component.damaged.tooltip": "免費的可回收材料", + "gtceu.machine.hpca.computation_component.tooltip": "寶寶的第一次計算", + "gtceu.machine.hpca.empty_component.tooltip": "只是為了填充空間", + "gtceu.machine.hpca.heat_sink_component.tooltip": "免費冷卻!有免費的嗎?", + "gtceu.machine.hull.tooltip": "§7你需要§5絕§d對§4天§c馬§e行§a空§b的§3想§9象§1能§5力§7來使用它", + "gtceu.machine.hv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.hv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.hv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.hv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.hv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.hv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.hv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.hv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.hv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.hv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.hv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.hv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.hv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.hv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.hv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.hv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.hv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.hv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.hv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.hv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.hv_fluid_drilling_rig.tooltip": "並不能用來液壓破碎", + "gtceu.machine.hv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.hv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.hv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.hv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.hv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.hv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.hv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.hv_macerator.tooltip": "§7粉碎礦並獲得副產物", + "gtceu.machine.hv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.hv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.hv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.hv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.hv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.hv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.hv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.hv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.hv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.hv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.hv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.implosion_compressor.tooltip": "唯一一臺你想要爆一爆的機器", + "gtceu.machine.item_bus.export.tooltip": "為多方塊結構輸出物品", + "gtceu.machine.item_bus.import.tooltip": "為多方塊結構輸入物品", + "gtceu.machine.item_collector.gui.collect_range": "作用區域:%sx%s格", + "gtceu.machine.item_collector.tooltip": "吸取它周圍的掉落物", + "gtceu.machine.iv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.iv_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.iv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.iv_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.iv_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.iv_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.iv_canner.tooltip": "§7罐作機", + "gtceu.machine.iv_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.iv_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.iv_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.iv_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.iv_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.iv_cutter.tooltip": "§7物質切削器", + "gtceu.machine.iv_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.iv_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.iv_electrolyzer.tooltip": "§7分子崩解機 E-4906", + "gtceu.machine.iv_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.iv_extractor.tooltip": "§7真空提取機", + "gtceu.machine.iv_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.iv_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.iv_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.iv_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.iv_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.iv_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.iv_gas_collector.tooltip": "§7依照維度從大氣層中收集種類各異的氣體", + "gtceu.machine.iv_laser_engraver.tooltip": "§7功率高達兩百零四萬瓦", + "gtceu.machine.iv_lathe.tooltip": "§7全自動旋轉車削機 L-5906", + "gtceu.machine.iv_macerator.tooltip": "§7全自動破壁機 9001", + "gtceu.machine.iv_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.iv_mixer.tooltip": "§7物質組織器", + "gtceu.machine.iv_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-360", + "gtceu.machine.iv_packer.tooltip": "§7裝箱者", + "gtceu.machine.iv_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.iv_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.iv_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-8200", + "gtceu.machine.iv_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.iv_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.iv_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6350", + "gtceu.machine.iv_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.machine.large_boiler.bronze.tooltip": "再多來點蒸汽!", + "gtceu.machine.large_boiler.steel.tooltip": "木炭吞噬者", + "gtceu.machine.large_boiler.titanium.tooltip": "我超級魔法燃料呢?", + "gtceu.machine.large_boiler.tungstensteel.tooltip": "你手上有幾座煤礦也不夠它吃的吧?", + "gtceu.machine.large_chemical_reactor.tooltip": "黑盒反應器", + "gtceu.machine.large_combustion_engine.tooltip": "燃料點火室", + "gtceu.machine.large_combustion_engine.tooltip.boost_extreme": "提供§f80 mB/s§7的液態氧,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_combustion_engine.tooltip.boost_regular": "提供§f20 mB/s§7的氧氣,並消耗§f雙倍§7燃料以產生高達§f%s§7EU/t的功率。", + "gtceu.machine.large_miner.ev.tooltip": "替你挖礦", + "gtceu.machine.large_miner.iv.tooltip": "挖掉整個生態域", + "gtceu.machine.large_miner.luv.tooltip": "掀翻整片大陸", + "gtceu.machine.large_turbine.gas.tooltip": "並不是噴射發動機", + "gtceu.machine.large_turbine.plasma.tooltip": "電漿能量虹吸器", + "gtceu.machine.large_turbine.steam.tooltip": "別把頭伸進去", + "gtceu.machine.laser_hatch.both.tooltip": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.laser_hatch.source.tooltip": "§7遠距離發射能量", + "gtceu.machine.laser_hatch.target.tooltip": "§7遠距離接收能量", + "gtceu.machine.laser_source_hatch.tooltip.0": "遠距離發射能量", + "gtceu.machine.laser_source_hatch.tooltip.1": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.laser_target_hatch.tooltip.0": "遠距離接收能量", + "gtceu.machine.laser_target_hatch.tooltip.1": "§c雷射傳導線纜必須直線擺放!§7", + "gtceu.machine.locked_safe.malfunctioning": "§c故障中!", + "gtceu.machine.locked_safe.requirements": "§7需要更換以下部件:", + "gtceu.machine.lp_steam_alloy_smelter.tooltip": "§7融合冶煉爐", + "gtceu.machine.lp_steam_compressor.tooltip": "§7壓縮物品", + "gtceu.machine.lp_steam_extractor.tooltip": "§7提取你的第一塊橡膠", + "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7鍛造錘", + "gtceu.machine.lp_steam_furnace.tooltip": "§7利用蒸汽冶煉物品", + "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7消耗液體的鍋爐", + "gtceu.machine.lp_steam_macerator.tooltip": "§7粉碎你的礦", + "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7來自太陽的蒸汽能源", + "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7獲取蒸汽能源的早期手段", + "gtceu.machine.luv_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.luv_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.luv_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.luv_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.luv_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.luv_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.luv_canner.tooltip": "§7罐作機", + "gtceu.machine.luv_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.luv_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.luv_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.luv_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.luv_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.luv_cutter.tooltip": "§7物質切削器", + "gtceu.machine.luv_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.luv_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.luv_electrolyzer.tooltip": "§7分子崩解機 E-4907", + "gtceu.machine.luv_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.luv_extractor.tooltip": "§7真空提取機", + "gtceu.machine.luv_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.luv_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.luv_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.luv_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.luv_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.luv_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.luv_gas_collector.tooltip": "§7依照維度從大氣層中收集種類各異的氣體", + "gtceu.machine.luv_laser_engraver.tooltip": "§7功率高達八百一十六萬瓦", + "gtceu.machine.luv_lathe.tooltip": "§7全自動旋轉車削機 L-5907", + "gtceu.machine.luv_macerator.tooltip": "§7全自動破壁機 9002", + "gtceu.machine.luv_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.luv_mixer.tooltip": "§7物質組織器", + "gtceu.machine.luv_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-361", + "gtceu.machine.luv_packer.tooltip": "§7裝箱者", + "gtceu.machine.luv_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.luv_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.luv_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-9200", + "gtceu.machine.luv_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.luv_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.luv_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6351", + "gtceu.machine.luv_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.machine.lv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.lv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.lv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.lv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.lv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.lv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.lv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.lv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.lv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.lv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.lv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.lv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.lv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.lv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.lv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.lv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.lv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.lv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.lv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.lv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.lv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.lv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.lv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.lv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.lv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.lv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.lv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.lv_macerator.tooltip": "§7粉碎礦", + "gtceu.machine.lv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.lv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.lv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.lv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.lv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.lv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.lv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.lv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.lv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.lv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.lv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.machine_hatch.locked": "機器介面已鎖定", + "gtceu.machine.machine_hatch.processing_array": "當在§e處理陣列§7中時,僅可搭載適用於§e處理陣列§7的機器", + "gtceu.machine.machine_hatch.tooltip": "僅可容納有效物品的特型訪問匯流排", + "gtceu.machine.maintenance_hatch.tooltip": "用於給多方塊結構提供維護", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0": "可以自動維修多方塊結構,附帶清潔功能!", + "gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1": "清潔方式:", + "gtceu.machine.maintenance_hatch_configurable.tooltip.0": "更精細的維修多方塊結構", + "gtceu.machine.maintenance_hatch_configurable.tooltip.1": "起手無需維護!", + "gtceu.machine.maintenance_hatch_full_auto.tooltip": "可以自動維修多方塊結構", + "gtceu.machine.maintenance_hatch_tape_slot.tooltip": "放入膠帶以防止出現故障", + "gtceu.machine.maintenance_hatch_tool_slot.tooltip": "所需工具處於物品欄時空手點選該槽位來進行維修", + "gtceu.machine.me.copy_paste.tooltip": "手持快閃記憶體,左擊複製設定,右擊貼上設定", + "gtceu.machine.me.export.tooltip": "在連線到ME網路之前,它具有無限容量。", + "gtceu.machine.me.fluid_export.tooltip": "將流體直接儲存到ME網路中。", + "gtceu.machine.me.fluid_import.data_stick.name": "§oME輸入倉設定資料", + "gtceu.machine.me.fluid_import.tooltip": "自動從ME網路獲取流體。", + "gtceu.machine.me.import_copy_settings": "已將設定儲存到快閃記憶體", + "gtceu.machine.me.import_paste_settings": "已從快閃記憶體應用設定", + "gtceu.machine.me.item_export.tooltip": "將物品直接儲存到ME網路中。", + "gtceu.machine.me.item_import.data_stick.name": "§oME輸入匯流排設定資料", + "gtceu.machine.me.item_import.tooltip": "自動從ME網路獲取物品。", + "gtceu.machine.me.stocking_auto_pull_disabled": "ME自動拉取已停用", + "gtceu.machine.me.stocking_auto_pull_enabled": "ME自動拉取已啟用", + "gtceu.machine.me.stocking_fluid.tooltip.0": "直接從ME網路抽取流體", + "gtceu.machine.me.stocking_fluid.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種流體,每5秒更新一次。", + "gtceu.machine.me.stocking_item.tooltip.0": "直接從ME網路抽取物品", + "gtceu.machine.me.stocking_item.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種物品,每5秒更新一次。", + "gtceu.machine.me_import_fluid_hatch.configs.tooltip": "可標記16種流體", + "gtceu.machine.me_import_item_hatch.configs.tooltip": "可標記16種物品", + "gtceu.machine.miner.chunkradius": "區塊半徑:%d", + "gtceu.machine.miner.fluid_usage": "消耗§f%d mB/t§7的§f%s§7,每次超頻都會使消耗量加倍。", + "gtceu.machine.miner.minex": "mX:%d", + "gtceu.machine.miner.miney": "mY:%d", + "gtceu.machine.miner.minez": "mZ:%d", + "gtceu.machine.miner.multi.description": "一種佔地面積大、產礦量大的多方塊採礦機。", + "gtceu.machine.miner.multi.modes": "具有絲綢之觸和區塊對齊模式。", + "gtceu.machine.miner.multi.production": "產出§f研磨機§7§f3x§7倍的粉碎礦。", + "gtceu.machine.miner.per_block": "§7每個方塊需要§f%d§7秒。", + "gtceu.machine.miner.radius": "半徑:%d", + "gtceu.machine.miner.startx": "sX:%d", + "gtceu.machine.miner.starty": "sY:%d", + "gtceu.machine.miner.startz": "sZ:%d", + "gtceu.machine.miner.tooltip": "§7只採掘機器下方的礦!工作範圍預設為§f%sx%s§7。", + "gtceu.machine.muffle.off": "靜音:已禁用", + "gtceu.machine.muffle.on": "靜音:已啟用", + "gtceu.machine.muffler_hatch.tooltip.0": "從機器中回收廢料", + "gtceu.machine.muffler_hatch.tooltip.1": "§l切 勿 阻 隔 輸 出 口!", + "gtceu.machine.multi_furnace.tooltip": "就像家裡的烤箱一樣", + "gtceu.machine.multiblock.tank.tooltip": "透過控制器或儲罐閥門進行吞吐。", + "gtceu.machine.mv_alloy_smelter.tooltip": "§7高科技融合冶煉爐", + "gtceu.machine.mv_arc_furnace.tooltip": "§7誰需要高爐?", + "gtceu.machine.mv_assembler.tooltip": "§7復仇者,集結!", + "gtceu.machine.mv_autoclave.tooltip": "§7使粉末結晶", + "gtceu.machine.mv_bender.tooltip": "§7吁,他不行!我們要的是BENDER!!!", + "gtceu.machine.mv_brewery.tooltip": "§7緊湊高效的藥劑釀造", + "gtceu.machine.mv_canner.tooltip": "§7為容器填入或從中倒出物品及流體", + "gtceu.machine.mv_centrifuge.tooltip": "§7分離分子", + "gtceu.machine.mv_chemical_bath.tooltip": "§7用化學品浸漬以分離礦物", + "gtceu.machine.mv_chemical_reactor.tooltip": "§7讓化學品相互反應", + "gtceu.machine.mv_circuit_assembler.tooltip": "§7一拿一放,東揀西裝", + "gtceu.machine.mv_compressor.tooltip": "§7全自動壓縮機 C77", + "gtceu.machine.mv_cutter.tooltip": "§7切片,切塊", + "gtceu.machine.mv_distillery.tooltip": "§7提取流體精華", + "gtceu.machine.mv_electric_furnace.tooltip": "§7別把它當成 Commodore 64 了", + "gtceu.machine.mv_electrolyzer.tooltip": "§7電離分子", + "gtceu.machine.mv_electromagnetic_separator.tooltip": "§7分離出磁性礦物", + "gtceu.machine.mv_extractor.tooltip": "§7毀滅級榨汁機 - D123", + "gtceu.machine.mv_extruder.tooltip": "§7通用型金屬加工器", + "gtceu.machine.mv_fermenter.tooltip": "§7發酵流體", + "gtceu.machine.mv_fluid_drilling_rig.tooltip": "我猜你做這個是為了採油", + "gtceu.machine.mv_fluid_heater.tooltip": "§7加熱你的流體", + "gtceu.machine.mv_fluid_solidifier.tooltip": "§7冷卻液體形成固體", + "gtceu.machine.mv_forge_hammer.tooltip": "§7停,掄錘時間到!", + "gtceu.machine.mv_forming_press.tooltip": "§7影象拓印者", + "gtceu.machine.mv_gas_collector.tooltip": "§7依照維度從空氣中收集種類各異的氣體", + "gtceu.machine.mv_laser_engraver.tooltip": "§7請勿直視雷射", + "gtceu.machine.mv_lathe.tooltip": "§7以更高的效率生產桿", + "gtceu.machine.mv_macerator.tooltip": "§7粉碎礦", + "gtceu.machine.mv_mass_fabricator.tooltip": "§7UU物質 = “質量” * “發生”的平方", + "gtceu.machine.mv_mixer.tooltip": "§7它能被攪碎嗎?", + "gtceu.machine.mv_ore_washer.tooltip": "§7清洗礦以獲得更多副產物", + "gtceu.machine.mv_packer.tooltip": "§7取出盒外,放入盒中", + "gtceu.machine.mv_polarizer.tooltip": "§7將你的磁體極化", + "gtceu.machine.mv_replicator.tooltip": "§7生產最純淨的元素", + "gtceu.machine.mv_rock_crusher.tooltip": "§7在水平相鄰處放置熔岩和水", + "gtceu.machine.mv_scanner.tooltip": "§7掃描材料及其它物質", + "gtceu.machine.mv_sifter.tooltip": "§7保持冷靜,繼續篩選", + "gtceu.machine.mv_thermal_centrifuge.tooltip": "§7更精確地分離礦", + "gtceu.machine.mv_wiremill.tooltip": "§7更高效地生產導線", + "gtceu.machine.network_switch.tooltip.0": "乙太網路集線器", + "gtceu.machine.network_switch.tooltip.1": "用於路由與分發§f算力§7。", + "gtceu.machine.network_switch.tooltip.2": "可以將任意數量的算力§f輸入§7整合為為任意數量的算力§f輸出§7。", + "gtceu.machine.network_switch.tooltip.3": "每個算力資料倉使用§f%s EU/t§7。", + "gtceu.machine.object_holder.tooltip": "研究站的先進支撐機構", + "gtceu.machine.opv_gas_collector.tooltip": "§7依照維度從宇宙中收集種類各異的氣體", + "gtceu.machine.opv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.parallel_hatch.display": "調整多方塊的最多平行處理數。", + "gtceu.machine.parallel_hatch_mk5.tooltip": "允許同時處理至多4個配方。", + "gtceu.machine.parallel_hatch_mk6.tooltip": "允許同時處理至多16個配方。", + "gtceu.machine.parallel_hatch_mk7.tooltip": "允許同時處理至多64個配方。", + "gtceu.machine.parallel_hatch_mk8.tooltip": "允許同時處理至多256個配方。", + "gtceu.machine.parallel_limit": "可同時處理至多§b%d§r§7個配方。", + "gtceu.machine.passthrough_hatch_fluid.tooltip": "將流體從一側輸送到另一側", + "gtceu.machine.passthrough_hatch_item.tooltip": "將物品從一側傳送到另一側", + "gtceu.machine.perfect_oc": "超頻不會損失能效。", + "gtceu.machine.power_substation.tooltip.0": "集中電網的核心", + "gtceu.machine.power_substation.tooltip.1": "所有§f電容§r不需要保持同一電壓等級。", + "gtceu.machine.power_substation.tooltip.2": "最多容許§f%d層電容§r。", + "gtceu.machine.power_substation.tooltip.3": "每§f24小時§7損失相當於總容量的§f1%%§r的能量。", + "gtceu.machine.power_substation.tooltip.4": "每個電容的損失上限為§f%d kEU/t§r。", + "gtceu.machine.power_substation.tooltip.5": "可以使用", + "gtceu.machine.power_substation.tooltip.6": "雷射倉§r。", + "gtceu.machine.primitive_blast_furnace.bronze.tooltip": "為你帶來第一塊鋼", + "gtceu.machine.primitive_water_pump.tooltip": "終界介面蓄水庫-家用款", + "gtceu.machine.processing_array.tooltip": "當幾臺機器無法解決問題時", + "gtceu.machine.pump.tooltip": "§7抽乾大海的最佳手段!", + "gtceu.machine.pump.tooltip_buckets": "每桶§f%d§7tick", + "gtceu.machine.pump_hatch.tooltip": "原始水泵專用流體輸出口", + "gtceu.machine.pyrolyse_oven.tooltip": "電力焦爐", + "gtceu.machine.pyrolyse_oven.tooltip.1": "§a白銅§7線圈會使效率降低§f25%%§7,§a坎塔爾合金§7後的每個線圈都會增加§f50%%§7的速度。", + "gtceu.machine.quantum_chest.items_stored": "物品數量:", + "gtceu.machine.quantum_chest.tooltip": "§7比儲物抽屜好", + "gtceu.machine.quantum_tank.tooltip": "§7小小身體,大大肚量", + "gtceu.machine.research_station.researching": "研究中。", + "gtceu.machine.research_station.tooltip.0": "不僅僅是一個多方塊掃描器", + "gtceu.machine.research_station.tooltip.1": "用於掃描§f資料球§7和§f資料模組§7。", + "gtceu.machine.research_station.tooltip.2": "需要§f算力§7來進行工作。", + "gtceu.machine.research_station.tooltip.3": "提供更多的算力可以使研究進展的更快。", + "gtceu.machine.rotor_holder.tooltip.0": "為多方塊結構的轉子", + "gtceu.machine.rotor_holder.tooltip.1": "提供支撐,固定轉子使其不能飛走", + "gtceu.machine.steam.steam_hatch.tooltip": "§e接受流體:§f蒸汽", + "gtceu.machine.steam_boiler.heat_amount": "熱容:%s %%", + "gtceu.machine.steam_bus.tooltip": "無法作用於非蒸汽驅動的多方塊結構", + "gtceu.machine.steam_grinder.tooltip": "多方塊研磨機,但是沒有副產物", + "gtceu.machine.steam_miner.tooltip": "§7只採掘機器下方的礦!", + "gtceu.machine.steam_oven.tooltip": "不要與工業熔爐混淆", + "gtceu.machine.steam_turbine.tooltip": "§7將蒸汽轉化為 EU", + "gtceu.machine.substation_hatch.input.tooltip": "為蓄能變電站輸入能量", + "gtceu.machine.substation_hatch.output.tooltip": "為蓄能變電站輸出能量", + "gtceu.machine.tank_valve.tooltip": "用以吞吐多方塊儲罐中的流體。正面向下時可自動輸出。", + "gtceu.machine.transformer.description": "§7轉換能量的電壓等級", + "gtceu.machine.transformer.message_transform_down": "降壓 輸出:%d EU %dA 輸出:%d EU %dA", + "gtceu.machine.transformer.message_transform_up": "升壓 輸入:%d EU %dA 輸出:% dEU %dA", + "gtceu.machine.transformer.tooltip_tool_usage": "預設§f降壓§r,使用螺絲起子切換。", + "gtceu.machine.transformer.tooltip_transform_down": "§a降壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", + "gtceu.machine.transformer.tooltip_transform_up": "§c升壓:§f%dA %d EU(%s§f)-> %dA %d EU(%s§f)", + "gtceu.machine.uev_gas_collector.tooltip": "§7依照維度從太陽系中收集種類各異的氣體", + "gtceu.machine.uev_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uhv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uhv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uiv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uiv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_alloy_smelter.tooltip": "§7金屬混合調製裝置", + "gtceu.machine.uv_arc_furnace.tooltip": "§7短路加熱器", + "gtceu.machine.uv_assembler.tooltip": "§7裝配構建者", + "gtceu.machine.uv_autoclave.tooltip": "§7重壓單元", + "gtceu.machine.uv_bender.tooltip": "§7物質畸變者", + "gtceu.machine.uv_brewery.tooltip": "§7強勁釀製者", + "gtceu.machine.uv_canner.tooltip": "§7罐子致動器", + "gtceu.machine.uv_centrifuge.tooltip": "§7分子龍捲風", + "gtceu.machine.uv_chemical_bath.tooltip": "§7化學沉浸洗滌者", + "gtceu.machine.uv_chemical_reactor.tooltip": "§7反應催化器", + "gtceu.machine.uv_circuit_assembler.tooltip": "§7電腦工廠", + "gtceu.machine.uv_compressor.tooltip": "§7物質約束器", + "gtceu.machine.uv_cutter.tooltip": "§7物件分割者", + "gtceu.machine.uv_distillery.tooltip": "§7餾分分離器", + "gtceu.machine.uv_electric_furnace.tooltip": "§7原子激發器", + "gtceu.machine.uv_electrolyzer.tooltip": "§7原子離子化裝置", + "gtceu.machine.uv_electromagnetic_separator.tooltip": "§7電磁場驅離裝置", + "gtceu.machine.uv_extractor.tooltip": "§7液化吸取者", + "gtceu.machine.uv_extruder.tooltip": "§7形制驅動者", + "gtceu.machine.uv_fermenter.tooltip": "§7呼吸控制器", + "gtceu.machine.uv_fluid_heater.tooltip": "§7熱量灌輸器", + "gtceu.machine.uv_fluid_solidifier.tooltip": "§7流體硬化器", + "gtceu.machine.uv_forge_hammer.tooltip": "§7衝擊調製器", + "gtceu.machine.uv_forming_press.tooltip": "§7表面移相器", + "gtceu.machine.uv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uv_laser_engraver.tooltip": "§7高精度光子加農炮", + "gtceu.machine.uv_lathe.tooltip": "§7飛旋磨輪", + "gtceu.machine.uv_macerator.tooltip": "§7形態毀滅者", + "gtceu.machine.uv_mass_fabricator.tooltip": "§7存在之源", + "gtceu.machine.uv_mixer.tooltip": "§7材料均質機", + "gtceu.machine.uv_ore_washer.tooltip": "§7微型洗車房", + "gtceu.machine.uv_packer.tooltip": "§7亞馬遜倉庫", + "gtceu.machine.uv_polarizer.tooltip": "§7磁場重置裝置", + "gtceu.machine.uv_replicator.tooltip": "§7元素創制者", + "gtceu.machine.uv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.uv_scanner.tooltip": "§7電子顯微鏡", + "gtceu.machine.uv_sifter.tooltip": "§7脈衝過濾器", + "gtceu.machine.uv_thermal_centrifuge.tooltip": "§7騰焰旋風", + "gtceu.machine.uv_wiremill.tooltip": "§7導線易形者", + "gtceu.machine.uxv_gas_collector.tooltip": "§7根據維度從太陽系中收集氣體", + "gtceu.machine.uxv_rock_crusher.tooltip": "§7火山成型室", + "gtceu.machine.vacuum_freezer.tooltip": "啊哈我的大冰箱!", + "gtceu.machine.workbench.storage_note.0": "(相鄰的物品容器中", + "gtceu.machine.workbench.storage_note.1": "可參與合成的物品)", + "gtceu.machine.workbench.tab.container": "儲存", + "gtceu.machine.workbench.tab.crafting": "合成", + "gtceu.machine.workbench.tab.item_list": "儲存空間", + "gtceu.machine.workbench.tab.workbench": "合成", + "gtceu.machine.workbench.tooltip.0": "比林業的好", + "gtceu.machine.workbench.tooltip.1": "具有物品儲存、工具儲存、從相鄰的儲存容器中讀取物品和儲存配方功能。", + "gtceu.machine.world_accelerator.description": "以兩種模式之一加速周圍方塊的更新刻:§f方塊實體§r或§f隨機刻§7。使用螺絲起子切換模式。", + "gtceu.machine.world_accelerator.mode_entity": "隨機刻模式", + "gtceu.machine.world_accelerator.mode_tile": "方塊實體模式", + "gtceu.machine.world_accelerator.working_area": "§b作用範圍:", + "gtceu.machine.world_accelerator.working_area_random": " 隨機刻模式:§f%dx%d", + "gtceu.machine.world_accelerator.working_area_tile": " 方塊實體模式:§f相鄰方塊", + "gtceu.machine.zpm_alloy_smelter.tooltip": "§7合金集聚器", + "gtceu.machine.zpm_arc_furnace.tooltip": "§7放電加熱器", + "gtceu.machine.zpm_assembler.tooltip": "§l不是§7工作台", + "gtceu.machine.zpm_autoclave.tooltip": "§7高壓鍋", + "gtceu.machine.zpm_bender.tooltip": "§7形態扭曲器", + "gtceu.machine.zpm_brewery.tooltip": "§7釀酒好手", + "gtceu.machine.zpm_canner.tooltip": "§7罐作機", + "gtceu.machine.zpm_centrifuge.tooltip": "§7分子旋風", + "gtceu.machine.zpm_chemical_bath.tooltip": "§7化學品浸潤器", + "gtceu.machine.zpm_chemical_reactor.tooltip": "§7化學表演藝術家", + "gtceu.machine.zpm_circuit_assembler.tooltip": "§7電子廠", + "gtceu.machine.zpm_compressor.tooltip": "§7奇點凝縮機", + "gtceu.machine.zpm_cutter.tooltip": "§7物質切削器", + "gtceu.machine.zpm_distillery.tooltip": "§7凝結物質分離器", + "gtceu.machine.zpm_electric_furnace.tooltip": "§7電子激發處理器", + "gtceu.machine.zpm_electrolyzer.tooltip": "§7分子崩解機 E-4908", + "gtceu.machine.zpm_electromagnetic_separator.tooltip": "§7電磁分類器", + "gtceu.machine.zpm_extractor.tooltip": "§7真空提取機", + "gtceu.machine.zpm_extruder.tooltip": "§7材料壓出器", + "gtceu.machine.zpm_fermenter.tooltip": "§7發酵加速器", + "gtceu.machine.zpm_fluid_heater.tooltip": "§7熱量灌注器", + "gtceu.machine.zpm_fluid_solidifier.tooltip": "§7並不是製冰機", + "gtceu.machine.zpm_forge_hammer.tooltip": "§7鍛板機", + "gtceu.machine.zpm_forming_press.tooltip": "§7物件層化機", + "gtceu.machine.zpm_gas_collector.tooltip": "§7收集不同維度的大氣中種類各異的氣體", + "gtceu.machine.zpm_laser_engraver.tooltip": "§7功率高達三千兩百六十四萬瓦", + "gtceu.machine.zpm_lathe.tooltip": "§7全自動旋轉車削機 L-5908", + "gtceu.machine.zpm_macerator.tooltip": "§7全自動破壁機 9003", + "gtceu.machine.zpm_mass_fabricator.tooltip": "§7創世紀工廠", + "gtceu.machine.zpm_mixer.tooltip": "§7物質組織器", + "gtceu.machine.zpm_ore_washer.tooltip": "§7全新用途滾筒洗衣機 I-362", + "gtceu.machine.zpm_packer.tooltip": "§7裝箱者", + "gtceu.machine.zpm_polarizer.tooltip": "§7磁性引入機", + "gtceu.machine.zpm_replicator.tooltip": "§7物質黏貼機", + "gtceu.machine.zpm_rock_crusher.tooltip": "§7岩漿冷卻固化器 R-10200", + "gtceu.machine.zpm_scanner.tooltip": "§7異常探測儀", + "gtceu.machine.zpm_sifter.tooltip": "§7由群巒傳說贊助提供", + "gtceu.machine.zpm_thermal_centrifuge.tooltip": "§7烈焰血汗工廠 T-6352", + "gtceu.machine.zpm_wiremill.tooltip": "§7錠材拉伸機", + "gtceu.maintenance.configurable_duration": "處理耗時:%fx", + "gtceu.maintenance.configurable_duration.changed_description": "配方處理速度現為正常速度(不計超頻)的%f倍。", + "gtceu.maintenance.configurable_duration.modify": "修改耗時:", + "gtceu.maintenance.configurable_duration.unchanged_description": "配方以正常速度執行。更改設定以更新。", + "gtceu.maintenance.configurable_time": "故障機率:%fx", + "gtceu.maintenance.configurable_time.changed_description": "故障的發生機率現為正常值的%f倍。", + "gtceu.maintenance.configurable_time.unchanged_description": "故障的發生機率為正常值。更改設定以更新。", + "gtceu.medical_condition.antidote.description": "§a解毒劑 §7按住Shift以顯示詳情", + "gtceu.medical_condition.antidote.description.effect_removed": "疾病效果持續時間降低%s%%", + "gtceu.medical_condition.antidote.description.effect_removed.all": "消除所有疾病效果", + "gtceu.medical_condition.antidote.description_shift": "§a治癒以下疾病:", + "gtceu.medical_condition.arsenicosis": "§b砷中毒", + "gtceu.medical_condition.asbestosis": "§d石棉肺", + "gtceu.medical_condition.berylliosis": "§5鈹中毒", + "gtceu.medical_condition.carbon_monoxide_poisoning": "§7一氧化碳汙染", + "gtceu.medical_condition.carcinogen": "§e致癌", + "gtceu.medical_condition.chemical_burns": "§5化學燒傷", + "gtceu.medical_condition.description": "§c§l危險物質 §7按住Shift以顯示詳情", + "gtceu.medical_condition.description_shift": "§c§l危險物質:", + "gtceu.medical_condition.irritant": "§6刺激性", + "gtceu.medical_condition.methanol_poisoning": "§6甲醇中毒", + "gtceu.medical_condition.nausea": "§3噁心", + "gtceu.medical_condition.none": "§2無害", + "gtceu.medical_condition.poison": "§2中毒", + "gtceu.medical_condition.silicosis": "§1矽肺病", + "gtceu.medical_condition.weak_poison": "§a輕度中毒", + "gtceu.minimap.ore_vein.depleted": "已枯竭", + "gtceu.mixer": "攪拌機", + "gtceu.mode.both": "§d全部(流體和物品)§r", + "gtceu.mode.fluid": "§9流體§r", + "gtceu.mode.item": "§6物品§r", + "gtceu.muffler.recovery_tooltip": "§b回收機率:§f%d%%", + "gtceu.multiblock.active_transformer.average_in": "§b平均輸入:§f%s EU/t", + "gtceu.multiblock.active_transformer.average_out": "§b平均輸出:§f%s EU/t", + "gtceu.multiblock.active_transformer.danger_enabled": "§c§b危險:易爆", + "gtceu.multiblock.active_transformer.max_input": "§a最大輸入:§f%s EU/t", + "gtceu.multiblock.active_transformer.max_output": "§c最大輸出:§f%s EU/t", + "gtceu.multiblock.assembly_line.description": "裝配線是由5到16“片”組成的大型多方塊結構。理論上,它是一個大型組裝機,用於生產高階元件。", + "gtceu.multiblock.blast_furnace.max_temperature": "熱容:%s", + "gtceu.multiblock.central_monitor.height": "螢幕高度:%d", + "gtceu.multiblock.central_monitor.height_modify": "調整高度:%d", + "gtceu.multiblock.central_monitor.low_power": "供能不足", + "gtceu.multiblock.central_monitor.tooltip.0": "這臺機器可以監控由數位介面覆蓋板代理的機器。您可以方便地監視能源網路中代理的機器的流體、物品、能量和狀態。", + "gtceu.multiblock.central_monitor.tooltip.1": "監控器螢幕的搭建尺寸為3x2到%dx%d (寬x高)。", + "gtceu.multiblock.central_monitor.tooltip.2": "預設高度為3,在結構形成之前,您可以在GUI中調整螢幕高度。", + "gtceu.multiblock.central_monitor.tooltip.3": "能源消耗:每塊螢幕%d EU/s。", + "gtceu.multiblock.central_monitor.width": "螢幕寬度:%d", + "gtceu.multiblock.charcoal_pile.description.0": "將下方最大9x4x9區域內的原木燒製成脆木炭塊。", + "gtceu.multiblock.charcoal_pile.description.1": "", + "gtceu.multiblock.charcoal_pile.description.2": "木炭堆底部必須由磚塊構成,壁面和頂面則可選用泥土、沙子等任何土地類方塊。堆內必須填滿,不可存在空氣。", + "gtceu.multiblock.charcoal_pile.description.3": "", + "gtceu.multiblock.charcoal_pile.description.4": "木炭堆的尺寸越大,所需的處理時間就越長,但效率更高。", + "gtceu.multiblock.cleanroom.clean_amount": "潔淨度:§a%s%%", + "gtceu.multiblock.cleanroom.clean_state": "狀態:§a潔淨", + "gtceu.multiblock.cleanroom.dirty_state": "狀態:§4汙染", + "gtceu.multiblock.coke_oven.description": "焦爐是一種多方塊結構,用於在早期生產焦煤和雜酚油,無需燃料即可工作,內部至多可容納 32 桶雜酚油。其儲存可透過焦爐倉進行訪問。", + "gtceu.multiblock.computation.max": "最大算力:%s", + "gtceu.multiblock.computation.non_bridging": "發現非橋接連線", + "gtceu.multiblock.computation.non_bridging.detailed": "算力資料倉與一臺無法橋接的機器連線", + "gtceu.multiblock.computation.not_enough_computation": "機器需要更多算力!", + "gtceu.multiblock.computation.usage": "使用:%s", + "gtceu.multiblock.cracker.description": "裂解機是一種用於將輕燃油和重燃油裂解為相應裂解物的多方塊結構。", + "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", + "gtceu.multiblock.data_bank.description": "資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更復雜的研究資料。", + "gtceu.multiblock.data_bank.providing": "提供資料。", + "gtceu.multiblock.distillation_tower.description": "蒸餾塔是一種用於蒸餾不同石油及其副產品的多方塊結構。", + "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸餾%s", + "gtceu.multiblock.electric_blast_furnace.description": "電力高爐是一種用來熔鍊合金、熔化金屬或冶煉礦的多方塊結構。也可用於獲取高階的合金和金屬,例如鋁、不鏽鋼、鈦或矽岩合金。", + "gtceu.multiblock.energy_consumption": "能量消耗:%s EU/t(%s)", + "gtceu.multiblock.exact_hatch_1.tooltip": "§f只允許有且僅有§6一個§f能量輸入倉。", + "gtceu.multiblock.extreme_combustion_engine.description": "極限內燃引擎是一種產出§9IV§r能量的多方塊結構,工作方式與內燃發電機類似。", + "gtceu.multiblock.fluid_rig.drilled_fluid": "流體:%s", + "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", + "gtceu.multiblock.fluid_rig.no_fluid_in_area": "區域內沒有。", + "gtceu.multiblock.fluid_rig.vein_depleted": "礦脈已耗盡", + "gtceu.multiblock.fluid_rig.vein_depletion": "礦脈大小:%s", + "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", + "gtceu.multiblock.fusion_reactor.heat": "熱量:%d", + "gtceu.multiblock.generation_eu": "輸出功率:§a%s EU/t", + "gtceu.multiblock.hpca.computation": "提供:%s", + "gtceu.multiblock.hpca.description": "高效能運算陣列(HPCA)是個多方塊結構,用於為更復雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", + "gtceu.multiblock.hpca.energy": "使用:%s / %s EU/t (%s)", + "gtceu.multiblock.hpca.error_damaged": "計算元件損壞!", + "gtceu.multiblock.hpca.error_temperature": "溫度超過100℃,可能導致計算元件損壞!", + "gtceu.multiblock.hpca.hover_for_info": "懸停以顯示細節", + "gtceu.multiblock.hpca.info_bridging_disabled": "橋接已關閉", + "gtceu.multiblock.hpca.info_bridging_enabled": "橋接已啟動", + "gtceu.multiblock.hpca.info_coolant_name": "多氯聯苯冷卻液", + "gtceu.multiblock.hpca.info_max_computation": "最大算力:%s", + "gtceu.multiblock.hpca.info_max_coolant_required": "冷卻液還需:%s", + "gtceu.multiblock.hpca.info_max_cooling_available": "冷卻液可用:%s", + "gtceu.multiblock.hpca.info_max_cooling_demand": "冷卻液需求:%s", + "gtceu.multiblock.hpca.temperature": "溫度:%s", + "gtceu.multiblock.hpca.warning_low_cooling": "- 冷卻不足", + "gtceu.multiblock.hpca.warning_multiple_bridges": "- 多個橋接元件(沒有額外好處)", + "gtceu.multiblock.hpca.warning_no_computation": "- 沒有計算元件", + "gtceu.multiblock.hpca.warning_structure_header": "結構警告:", + "gtceu.multiblock.hpca.warning_temperature": "溫度超過50℃,超過100℃時可能導致計算元件損壞!", + "gtceu.multiblock.hpca.warning_temperature_active_cool": "充分利用主動冷卻元件", + "gtceu.multiblock.idling": "待機。", + "gtceu.multiblock.implosion_compressor.description": "聚爆壓縮機是一種多方塊結構,能夠藉助炸藥將寶石粉轉化為相應的寶石。", + "gtceu.multiblock.invalid_structure": "結構無效。", + "gtceu.multiblock.invalid_structure.tooltip": "該方塊是多方塊結構的控制器,請檢視該方塊的JEI介面以獲取搭建圖示。", + "gtceu.multiblock.large_boiler.description": "大型鍋爐是一種使用水和能量源產生蒸汽的多方塊結構。這裡說的“能量源”通常是指固體燃料和高密度流體。不同等級的鍋爐僅在蒸汽產量上有所差別。", + "gtceu.multiblock.large_boiler.efficiency": "效率:%s", + "gtceu.multiblock.large_boiler.explosion_tooltip": "無水時提供燃料將爆炸", + "gtceu.multiblock.large_boiler.heat_time_tooltip": "§7需要§f%d秒§7預熱", + "gtceu.multiblock.large_boiler.max_temperature": "最高溫度:%dK,蒸汽產量:%dmB/t", + "gtceu.multiblock.large_boiler.rate_tooltip": "§7每塊§1煤炭§7可以生產§f%dmB§7的蒸汽", + "gtceu.multiblock.large_boiler.steam_output": "蒸汽輸出:%s mB/t", + "gtceu.multiblock.large_boiler.temperature": "溫度:%sK / %sK", + "gtceu.multiblock.large_boiler.throttle": "節流:%d", + "gtceu.multiblock.large_boiler.throttle.tooltip": "鍋爐可以節流,以減少燃料消耗與蒸汽產出,並且不損失效率,不影響加熱時間。", + "gtceu.multiblock.large_boiler.throttle_modify": "修改節流:", + "gtceu.multiblock.large_chemical_reactor.description": "大型化學反應器能夠以 100% 的能效進行化學反應。超頻將使得處理速度與耗能提升 4 倍。該多方塊結構需要在中心位置的聚四氟乙烯管道方塊旁放置 1 個白銅線圈方塊。", + "gtceu.multiblock.large_combustion_engine.boost_disallowed": "§b升級你的能量輸出倉以啟用氧氣促燃", + "gtceu.multiblock.large_combustion_engine.description": "大型內燃引擎是一種產出§5EV§r能量的多方塊結構,工作方式與內燃發電機類似。", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_amount": "液氧存量:%smB", + "gtceu.multiblock.large_combustion_engine.liquid_oxygen_boosted": "§b液氧促燃中", + "gtceu.multiblock.large_combustion_engine.lubricant_amount": "潤滑油存量:%smB", + "gtceu.multiblock.large_combustion_engine.obstructed": "引擎進氣口受阻。", + "gtceu.multiblock.large_combustion_engine.oxygen_amount": "氧氣存量:%smB", + "gtceu.multiblock.large_combustion_engine.oxygen_boosted": "§b氧氣促燃中", + "gtceu.multiblock.large_combustion_engine.supply_liquid_oxygen_to_boost": "提供液氧來促燃", + "gtceu.multiblock.large_combustion_engine.supply_oxygen_to_boost": "提供氧氣來促燃", + "gtceu.multiblock.large_miner.done": "完成!", + "gtceu.multiblock.large_miner.errorradius": "§c工作中不能調整半徑!", + "gtceu.multiblock.large_miner.invfull": "儲存空間已滿!", + "gtceu.multiblock.large_miner.needsfluid": "需要鑽井液", + "gtceu.multiblock.large_miner.needspower": "需要能量!", + "gtceu.multiblock.large_miner.radius": "半徑:§a%d§r格", + "gtceu.multiblock.large_miner.steam": "需要蒸汽!", + "gtceu.multiblock.large_miner.vent": "排氣口受阻!", + "gtceu.multiblock.large_miner.working": "工作中……", + "gtceu.multiblock.large_turbine.description": "大型渦輪是一種使用蒸汽、燃氣或電漿轉動渦輪轉子來發電的多方塊結構。轉子效率和轉子轉速影響能量的輸出。", + "gtceu.multiblock.luv_fusion_reactor.description": "核融合反應爐MK-I是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用LuV,ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加10MEU的能量暫存,最大能量暫存為160MEU。", + "gtceu.multiblock.max_energy_per_tick": "最大功率:§a%s EU/t(%s§r)", + "gtceu.multiblock.max_energy_per_tick_amps": "最大功率:%s(%sA %s)", + "gtceu.multiblock.max_energy_per_tick_hover": "可用於執行配方或超頻的最大EU/t", + "gtceu.multiblock.max_recipe_tier": "最大配方等級:%s", + "gtceu.multiblock.max_recipe_tier_hover": "可執行配方的最大等級", + "gtceu.multiblock.monitor_screen.tooltip.0": "用螺絲起子右擊即可開啟GUI。", + "gtceu.multiblock.monitor_screen.tooltip.1": "數位介面覆蓋板的代理模式可託管機器的功能與介面(是的,你可以在螢幕上直接連線管道)。", + "gtceu.multiblock.monitor_screen.tooltip.2": "該螢幕也支援外掛。", + "gtceu.multiblock.multi_furnace.description": "工業熔爐是一種用於一次性燒製大量物品的多方塊結構。不同級別的線圈會提供速度增幅和能量效率增幅。每次運作的基礎燒製數量為32,且可以使用高等級的線圈增加燒製數量。", + "gtceu.multiblock.multi_furnace.heating_coil_discount": "加熱線圈增幅:%sx", + "gtceu.multiblock.multi_furnace.heating_coil_level": "加熱線圈等級:%s", + "gtceu.multiblock.multiple_recipemaps.header": "機器模式:", + "gtceu.multiblock.multiple_recipemaps.switch_message": "機器必須關閉才能切換模式!", + "gtceu.multiblock.multiple_recipemaps.tooltip": "使用螺絲起子右鍵控制器以更改機器模式。", + "gtceu.multiblock.multiple_recipemaps_recipes.tooltip": "機器模式:§e%s§r", + "gtceu.multiblock.network_switch.description": "網路交換機是個多方塊結構,可以接受任意數量的算力資料靶倉輸入,並從任意數量的算力資料來源倉輸出。對於需要更高算力的研究資料配方,網路交換機的存在是必要的,這是因為研究站只接受一個算力資料靶倉。當與HPCA連線時,HPCA必須具有橋接元件才可以令網路交換機接收其算力。", + "gtceu.multiblock.not_enough_energy": "警告:能量不足。", + "gtceu.multiblock.not_enough_energy_output": "警告:能量輸入/輸出倉等級過低!", + "gtceu.multiblock.ore_rig.drilled_ore_entry": " - %s", + "gtceu.multiblock.ore_rig.drilled_ores_list": "礦:", + "gtceu.multiblock.ore_rig.ore_amount": "鑽進速率:%s", + "gtceu.multiblock.output_line.0": "%s x §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.1": "%s x §e%s§r(%s/s)", + "gtceu.multiblock.output_line.2": "%s ≈ §e%s§r(%ss/ea)", + "gtceu.multiblock.output_line.3": "%s ≈ §e%s§r (%s/s)", + "gtceu.multiblock.page_switcher.io.both": "§5兼顧輸入/輸出", + "gtceu.multiblock.page_switcher.io.export": "§4輸出", + "gtceu.multiblock.page_switcher.io.import": "§2輸入", + "gtceu.multiblock.parallel": "同時處理至多%d個配方", + "gtceu.multiblock.parallel.exact": "同時處理%d個配方", + "gtceu.multiblock.parallelizable.tooltip": "透過平行控制倉讓機器同時處理多個相同配方。", + "gtceu.multiblock.pattern.clear_amount_1": "§6前方必須有1x1x1大小的空間§r", + "gtceu.multiblock.pattern.clear_amount_3": "§6前方必須有3x3x1大小的空間§r", + "gtceu.multiblock.pattern.error": "在%2$s處需要%1$s。", + "gtceu.multiblock.pattern.error.batteries": "§c必須使用同種電池§r", + "gtceu.multiblock.pattern.error.coils": "§c必須使用同種線圈方塊§r", + "gtceu.multiblock.pattern.error.filters": "§c必須使用同種過濾器§r", + "gtceu.multiblock.pattern.error.limited.0": "§c最多:%d個§r", + "gtceu.multiblock.pattern.error.limited.1": "§c最少:%d個§r", + "gtceu.multiblock.pattern.error.limited.2": "§c最多:每層%d個§r", + "gtceu.multiblock.pattern.error.limited.3": "§c最少:每層%d個§r", + "gtceu.multiblock.pattern.error.limited_exact": "§c精確:%d§r", + "gtceu.multiblock.pattern.error.limited_within": "§c最少%d個,最多%d個§r", + "gtceu.multiblock.pattern.location_end": "§c最末端§r", + "gtceu.multiblock.pattern.replaceable_air": "可為空氣", + "gtceu.multiblock.pattern.single": "§6僅可使用該種方塊§r", + "gtceu.multiblock.power_substation.average_in": "§7平均輸入:%s §7EU/t", + "gtceu.multiblock.power_substation.average_in_hover": "蓄能變電站內部的平均功率輸入", + "gtceu.multiblock.power_substation.average_out": "§7平均輸出:%s §7EU/t", + "gtceu.multiblock.power_substation.average_out_hover": "蓄能變電站內部的平均功率輸出", + "gtceu.multiblock.power_substation.capacity": "§7容量:%s §7EU", + "gtceu.multiblock.power_substation.passive_drain": "§7被動損失:%s §7EU/t", + "gtceu.multiblock.power_substation.stored": "§7儲存:%s §7EU", + "gtceu.multiblock.power_substation.time_days": "%s天", + "gtceu.multiblock.power_substation.time_forever": "永遠", + "gtceu.multiblock.power_substation.time_hours": "%s時", + "gtceu.multiblock.power_substation.time_minutes": "%s分", + "gtceu.multiblock.power_substation.time_seconds": "%s秒", + "gtceu.multiblock.power_substation.time_to_drain": "§7預計耗空時間:%s", + "gtceu.multiblock.power_substation.time_to_fill": "§7預計充滿時間:%s", + "gtceu.multiblock.power_substation.time_years": "%s年", + "gtceu.multiblock.power_substation.under_one_hour_left": "不到一小時就會完全耗光!", + "gtceu.multiblock.preview.rotate": "左鍵拖拽以旋轉", + "gtceu.multiblock.preview.select": "右擊方塊以檢視其他可選方塊", + "gtceu.multiblock.preview.zoom": "使用滑鼠滾輪或右鍵拖拽以縮放", + "gtceu.multiblock.primitive_blast_furnace.bronze.description": "土高爐是一種在遊戲前期用來生產鋼的多方塊結構。儘管它不是很快,卻能為你的發展提供鋼材。", + "gtceu.multiblock.primitive_water_pump.description": "原始水泵是一臺前蒸汽時代的多方塊設施,每秒進行一次水資源收集,每秒的收集量取決於其所處的生態域。水泵輸出倉以及 §8ULV§r 和 §7LV§r 的輸出倉均可用於該設施,輸出倉的等級越高,水資源的產出量也越高。產出量遵循的公式為:生態域係數 * 輸出倉倍數。", + "gtceu.multiblock.primitive_water_pump.extra1.0": "生態域係數:", + "gtceu.multiblock.primitive_water_pump.extra1.1": " 海洋,河流:1000 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.2": " 沼澤:800 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.3": " 叢林:350 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.4": " 覆雪生態域:300 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.5": " 平原,森林:250 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.6": " 針葉林:175 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.7": " 沙灘:170 mB/s", + "gtceu.multiblock.primitive_water_pump.extra1.8": " 其他:100 mB/s", + "gtceu.multiblock.primitive_water_pump.extra2.0": "輸出倍率:", + "gtceu.multiblock.primitive_water_pump.extra2.1": " 水泵倉:1x", + "gtceu.multiblock.primitive_water_pump.extra2.2": "§8ULV§r輸出倉:2x", + "gtceu.multiblock.primitive_water_pump.extra2.3": "§7LV§r輸出倉:4x", + "gtceu.multiblock.primitive_water_pump.extra2.4": "", + "gtceu.multiblock.primitive_water_pump.extra2.5": "當水泵所處的生態域下雨時,總產水量將增加50%%。", + "gtceu.multiblock.progress": "進度:%ss / %ss(%s%%)", + "gtceu.multiblock.progress_percent": "進度:%s%%", + "gtceu.multiblock.pyrolyse_oven.description": "熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", + "gtceu.multiblock.pyrolyse_oven.speed": "處理速度:%s%%", + "gtceu.multiblock.require_steam_parts": "需要蒸汽倉與輸入/輸出匯流排(蒸汽)!", + "gtceu.multiblock.research_station.description": "研究站是個多方塊結構,用於研究更復雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", + "gtceu.multiblock.research_station.researching": "§6研究中…", + "gtceu.multiblock.running": "執行正常。", + "gtceu.multiblock.steam.duration_modifier": "處理耗時為基礎的§f1.5§7倍,不受物品數量影響。", + "gtceu.multiblock.steam.low_steam": "蒸汽不足,無法執行!", + "gtceu.multiblock.steam.steam_stored": "蒸汽:%s / %s mB", + "gtceu.multiblock.steam_grinder.description": "蒸汽時代的多方塊研磨機。需要至少14塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。", + "gtceu.multiblock.steam_oven.description": "蒸汽時代的多方塊熔爐。需要至少6塊青銅機械方塊成型。僅可使用輸入/輸出匯流排(蒸汽),並且只能用蒸汽倉供給蒸汽。蒸汽倉必須放置於結構底層,數量至多為一個。", + "gtceu.multiblock.title": "多方塊結構", + "gtceu.multiblock.turbine.efficiency": "渦輪效率:%s%%", + "gtceu.multiblock.turbine.efficiency_tooltip": "轉子支架等級超過%s§r時,每級§7增加§f10%%效率,並翻倍輸出功率§7。", + "gtceu.multiblock.turbine.energy_per_tick": "能量輸出:%s/%s EU/t", + "gtceu.multiblock.turbine.energy_per_tick_maxed": "能量輸出:%s EU/t", + "gtceu.multiblock.turbine.fuel_amount": "燃料量:%smB(%s)", + "gtceu.multiblock.turbine.fuel_needed": "消耗量:%s / %s ticks", + "gtceu.multiblock.turbine.obstructed": "渦輪受阻", + "gtceu.multiblock.turbine.rotor_durability": "轉子耐久度:%s%%", + "gtceu.multiblock.turbine.rotor_speed": "轉子轉速:%s/%sRPM", + "gtceu.multiblock.universal.distinct": "匯流排隔離:", + "gtceu.multiblock.universal.distinct.info": "啟用時,每個物品匯流排將在配方識別中被視為完全獨立。對於消耗材料相同,使用的非消耗材料(模具、透鏡等)不同則產物也不同的配方來說作用顯著。", + "gtceu.multiblock.universal.distinct.no": "否", + "gtceu.multiblock.universal.distinct.yes": "是", + "gtceu.multiblock.universal.has_problems": "存在故障!", + "gtceu.multiblock.universal.has_problems_header": "在維修倉中修復以下問題:", + "gtceu.multiblock.universal.muffler_obstructed": "消音倉受阻!", + "gtceu.multiblock.universal.muffler_obstructed.tooltip": "消音倉口前方必須有一格空氣。", + "gtceu.multiblock.universal.no_problems": "無故障!", + "gtceu.multiblock.universal.problem.crowbar": "§7這東西不屬於這裡。(§a撬棍§7)", + "gtceu.multiblock.universal.problem.hard_hammer": "§7外殼有些凹痕。(§a鍛造錘§7)", + "gtceu.multiblock.universal.problem.screwdriver": "§7螺絲沒擰緊。(§a螺絲起子§7)", + "gtceu.multiblock.universal.problem.soft_mallet": "§7有什麼東西卡住了。(§a軟錘§7)", + "gtceu.multiblock.universal.problem.wire_cutter": "§7有幾根線燒焦了(§a剪線鉗§7)", + "gtceu.multiblock.universal.problem.wrench": "§7管道鬆動了。(§a扳手§7)", + "gtceu.multiblock.universal.rotor_obstructed": "轉子進氣口受阻!", + "gtceu.multiblock.uv_fusion_reactor.description": "核融合反應爐MK-III是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用UV等級的能量輸入倉。每個能量輸入倉可增加40MEU的能量暫存,最大能量暫存為640MEU。", + "gtceu.multiblock.vacuum_freezer.description": "真空冷凍機是一種多方塊結構,主要用於將熱錠冷卻為成品錠。此外,它還可以凍結水等其他物質。", + "gtceu.multiblock.validation_failed": "輸入倉/輸出倉數量無效。", + "gtceu.multiblock.waiting": "警告:機器待機", + "gtceu.multiblock.work_paused": "暫停。", + "gtceu.multiblock.zpm_fusion_reactor.description": "核融合反應爐MK-II是臺大型多方塊結構,用於融合元素形成更重的元素。它僅可使用ZPM或UV等級的能量輸入倉。每個能量輸入倉可增加20MEU的能量暫存,最大能量暫存為320MEU。", + "gtceu.oc.tooltip.0": "最低:%s", + "gtceu.oc.tooltip.1": "左鍵增加超頻等級", + "gtceu.oc.tooltip.2": "右鍵降低超頻等級", + "gtceu.oc.tooltip.3": "中鍵重設超頻等級", + "gtceu.oc.tooltip.4": "按住Shift以無損超頻顯示", + "gtceu.ore_washer": "洗礦廠", + "gtceu.ownership.name.argonauts": "Argonauts公會", + "gtceu.ownership.name.ftb": "FTB團隊", + "gtceu.ownership.name.player": "玩家", + "gtceu.packer": "打包機", + "gtceu.plasma_generator": "電漿燃料", + "gtceu.polarizer": "兩極磁化機", + "gtceu.primitive_blast_furnace": "土高爐", + "gtceu.pyrolyse_oven": "熱解爐", + "gtceu.recipe.amperage": "電流:%s", + "gtceu.recipe.category.arc_furnace_recycling": "電弧爐:電漿回收", + "gtceu.recipe.category.chem_dyes": "化學水浴機:化學染色", + "gtceu.recipe.category.extractor_recycling": "流體提取機:重熔回收", + "gtceu.recipe.category.ingot_molding": "合金爐:金屬成型", + "gtceu.recipe.category.macerator_recycling": "研磨機:粉碎回收", + "gtceu.recipe.category.ore_bathing": "化學水浴機:礦物處理", + "gtceu.recipe.category.ore_crushing": "研磨機:礦物處理", + "gtceu.recipe.category.ore_forging": "鍛造錘:礦物處理", + "gtceu.recipe.chance": "產出機率:%s + %s/電壓等級", + "gtceu.recipe.cleanroom": "需要%s", + "gtceu.recipe.cleanroom.display_name": "無塵室", + "gtceu.recipe.cleanroom_sterile.display_name": "無菌無塵室", + "gtceu.recipe.coil.tier": "線圈:%s", + "gtceu.recipe.computation_per_tick": "最小算力:%s CWU/t", + "gtceu.recipe.dimensions": "維度:%s", + "gtceu.recipe.duration": "耗時:%s 秒", + "gtceu.recipe.environmental_hazard": "§c區域內必須有%s", + "gtceu.recipe.environmental_hazard.reverse": "§c區域內必須沒有%s", + "gtceu.recipe.eu": "耗能功率:%s EU/t", + "gtceu.recipe.eu_inverted": "產能功率:%s EU/t", + "gtceu.recipe.eu_to_start": "啟動耗能:%sEU%s", + "gtceu.recipe.explosive": "爆炸物:%s", + "gtceu.recipe.max_eu": "最大功率:%s EU", + "gtceu.recipe.not_consumed": "不在加工中消耗", + "gtceu.recipe.research": "需要研究", + "gtceu.recipe.scan_for_research": "裝配線配方掃描", + "gtceu.recipe.temperature": "溫度:%sK", + "gtceu.recipe.total": "總計:%s EU", + "gtceu.recipe.total_computation": "算力:%s CWU", + "gtceu.recipe_logic.condition_fails": "條件不足", + "gtceu.recipe_logic.insufficient_fuel": "燃料不足", + "gtceu.recipe_logic.insufficient_in": "需要輸入", + "gtceu.recipe_logic.insufficient_out": "輸出堵塞", + "gtceu.recipe_logic.no_capabilities": "機器無功能", + "gtceu.recipe_logic.no_contents": "配方無內容", + "gtceu.recipe_memory_widget.tooltip.0": "§7左鍵點選自動輸入該配方至合成格", + "gtceu.recipe_memory_widget.tooltip.1": "§7按住Shift並點選以鎖定或解鎖該配方", + "gtceu.recipe_type.show_recipes": "檢視配方", + "gtceu.rei.group.potion_fluids": "藥水流體", + "gtceu.research_station": "研究站", + "gtceu.rock_breaker": "碎岩機", + "gtceu.scanner": "掃描器", + "gtceu.scanner.copy_stick_empty": "§o空快閃記憶體", + "gtceu.scanner.copy_stick_from": "§o要複製的快閃記憶體", + "gtceu.scanner.copy_stick_to": "§o快閃記憶體(已複製)", + "gtceu.sifter": "篩選機", + "gtceu.steam_boiler": "蒸汽鍋爐", + "gtceu.steam_turbine": "蒸汽渦輪", + "gtceu.subtitle.arc": "電弧爐:嗡——", + "gtceu.subtitle.assembler": "組裝機:運行中", + "gtceu.subtitle.bath": "化學水浴機:嘶嘶", + "gtceu.subtitle.boiler": "鍋爐:液體沸騰", + "gtceu.subtitle.centrifuge": "離心機:旋轉", + "gtceu.subtitle.chainsaw": "鏈鋸:拉動油門", + "gtceu.subtitle.chemical": "化學反應器:運行中", + "gtceu.subtitle.combustion": "內燃發電機:燃料燃燒", + "gtceu.subtitle.compressor": "壓縮機:擠壓", + "gtceu.subtitle.computation": "計算機:嗶嗶", + "gtceu.subtitle.cooling": "真空冷凍機:嗡——", + "gtceu.subtitle.cut": "切割機:嘶嘶叫", + "gtceu.subtitle.drill": "電鑽:嗡嗡", + "gtceu.subtitle.electrolyzer": "電解機:爆出火花", + "gtceu.subtitle.file": "銼:磨削", + "gtceu.subtitle.fire": "火:爆裂", + "gtceu.subtitle.forge_hammer": "鍛造錘:DUANG", + "gtceu.subtitle.furnace": "電爐:冶煉", + "gtceu.subtitle.jet_engine": "噴射背包:轟轟", + "gtceu.subtitle.macerator": "研磨機:破碎", + "gtceu.subtitle.metal_pipe": "流體管道:Destruction_Metal_Pole_L_Wave_2_0_0.wav", + "gtceu.subtitle.miner": "採礦機:開採", + "gtceu.subtitle.mixer": "攪拌機:攪動", + "gtceu.subtitle.mortar": "研缽:研磨", + "gtceu.subtitle.motor": "馬達:轉啊轉", + "gtceu.subtitle.plunger": "搋子:清理流體", + "gtceu.subtitle.portable_scanner": "便攜式掃描儀:掃描", + "gtceu.subtitle.portal_closing": "傳送門:關閉", + "gtceu.subtitle.portal_opening": "傳送門:開啟", + "gtceu.subtitle.replicator": "複製機:運行", + "gtceu.subtitle.saw": "鋸:切割", + "gtceu.subtitle.science": "化學反應器:科!學!", + "gtceu.subtitle.screwdriver": "螺絲刀:擰螺絲", + "gtceu.subtitle.soft_hammer": "軟錘:輕敲", + "gtceu.subtitle.spray_can": "噴漆罐:噴塗", + "gtceu.subtitle.sus": "唱片:你有嫌疑", + "gtceu.subtitle.turbine": "渦輪:呼嘯", + "gtceu.subtitle.wirecutter": "剪線鉗:剪斷", + "gtceu.subtitle.wrench": "扳手:嘎啦", + "gtceu.thermal_centrifuge": "熱力離心機", + "gtceu.tool.class.axe": "斧", + "gtceu.tool.class.butchery_knife": "屠刀", + "gtceu.tool.class.crowbar": "撬棍", + "gtceu.tool.class.drill": "電鑽", + "gtceu.tool.class.file": "銼", + "gtceu.tool.class.hammer": "錘", + "gtceu.tool.class.hoe": "鋤", + "gtceu.tool.class.knife": "刀", + "gtceu.tool.class.mallet": "軟錘", + "gtceu.tool.class.mining_hammer": "採礦錘", + "gtceu.tool.class.mortar": "研缽", + "gtceu.tool.class.pickaxe": "鎬", + "gtceu.tool.class.plunger": "搋子", + "gtceu.tool.class.rolling_pin": "擀麵棍", + "gtceu.tool.class.saw": "鋸", + "gtceu.tool.class.screwdriver": "螺絲起子", + "gtceu.tool.class.scythe": "鐮刀", + "gtceu.tool.class.shears": "剪刀", + "gtceu.tool.class.shovel": "鍬", + "gtceu.tool.class.spade": "鏟", + "gtceu.tool.class.sword": "劍", + "gtceu.tool.class.wire_cutter": "剪線鉗", + "gtceu.tool.class.wrench": "扳手", + "gtceu.tool_action.crowbar": "§8使用撬棍卸下覆蓋板", + "gtceu.tool_action.hammer": "§8使用鍛造錘消除聲響", + "gtceu.tool_action.screwdriver.access_covers": "§8使用螺絲起子訪問覆蓋板", + "gtceu.tool_action.screwdriver.auto_collapse": "§8使用螺絲起子開關物品堆疊自動合併", + "gtceu.tool_action.screwdriver.auto_output": "§8使用螺絲起子切換自動輸出", + "gtceu.tool_action.screwdriver.auto_output_covers": "§8使用螺絲起子設定允許從輸出端輸入或訪問覆蓋板", + "gtceu.tool_action.screwdriver.toggle_mode": "§8使用螺絲起子切換模式", + "gtceu.tool_action.screwdriver.toggle_mode_covers": "§8使用螺絲起子切換模式或訪問覆蓋板", + "gtceu.tool_action.show_tooltips": "§7按住§6SHIFT§7顯示工具資訊", + "gtceu.tool_action.soft_mallet.reset": "§8使用軟錘開關機器", + "gtceu.tool_action.soft_mallet.toggle_mode": "§8使用軟錘切換模式", + "gtceu.tool_action.tape": "§8使用膠帶維護機器", + "gtceu.tool_action.wire_cutter.connect": "§8使用剪線鉗連線/斷開電線", + "gtceu.tool_action.wrench.connect": "§8使用扳手連線/斷開管道,潛行可以阻止輸入", + "gtceu.tool_action.wrench.set_facing": "§8使用扳手設定朝向", + "gtceu.tooltip.fluid_pipe_hold_shift": "§7按住§6SHIFT§7以檢視流體容器詳情", + "gtceu.tooltip.hold_ctrl": "§7按住CTRL獲得更多資訊", + "gtceu.tooltip.hold_shift": "§7按住§6SHIFT§7獲得更多資訊", + "gtceu.tooltip.potion.each": "§r%4$s%%§7機率獲得§r%1$s %2$s§7(§r%3$s§7tick)", + "gtceu.tooltip.potion.header": "§6包含效果:", + "gtceu.tooltip.proxy_bind": "§f綁定到%s %s %s處的樣板供應倉", + "gtceu.tooltip.status.trinary.false": "假", + "gtceu.tooltip.status.trinary.true": "真", + "gtceu.tooltip.status.trinary.unknown": "未知", + "gtceu.tooltip.tool_fluid_hold_shift": "§7按住§6SHIFT§7以檢視流體容器及工具詳情", + "gtceu.top.allow_output_input": "允許輸入", + "gtceu.top.auto_output": "自動輸出", + "gtceu.top.buffer_bound_pos": "已綁定至 - X:%s;Y:%s;Z:%s", + "gtceu.top.buffer_not_bound": "尚未綁定至樣板供應倉", + "gtceu.top.cable_amperage": "電流:", + "gtceu.top.cable_voltage": "電壓:", + "gtceu.top.convert_eu": "轉換模式:§eEU§r ->§cFE§r", + "gtceu.top.convert_fe": "轉換模式:§cFE§r ->§eEU§r", + "gtceu.top.energy_consumption": "耗能", + "gtceu.top.energy_production": "產能", + "gtceu.top.energy_stored": " / %d EU", + "gtceu.top.exhaust_vent_blocked": "受阻", + "gtceu.top.exhaust_vent_direction": "排氣口:%s", + "gtceu.top.filter.label": "過濾:", + "gtceu.top.fluid_auto_output": "流體輸出:%s", + "gtceu.top.fuel_min_consume": "需要", + "gtceu.top.fuel_none": "無燃料", + "gtceu.top.invalid_structure": "結構不完整", + "gtceu.top.item_auto_output": "物品輸出:%s", + "gtceu.top.link_cover.color": "顏色:", + "gtceu.top.machine_mode": "機器模式:", + "gtceu.top.maintenance.crowbar": "這東西不屬於這兒", + "gtceu.top.maintenance.hard_hammer": "外殼有些凹痕", + "gtceu.top.maintenance.screwdriver": "螺絲沒擰緊", + "gtceu.top.maintenance.soft_mallet": "有什麼東西卡住了", + "gtceu.top.maintenance.wire_cutter": "有幾根線燒焦了", + "gtceu.top.maintenance.wrench": "管道鬆動了", + "gtceu.top.maintenance_broken": "需要維護", + "gtceu.top.maintenance_fixed": "無需維修", + "gtceu.top.mode.export": "輸出", + "gtceu.top.mode.import": "輸入", + "gtceu.top.obstructed_structure": "結構受阻", + "gtceu.top.primitive_pump_production": "產出:%s mB/s", + "gtceu.top.progress_computation": " / %s CWU", + "gtceu.top.progress_sec": " / %s s", + "gtceu.top.progress_tick": " / %s t", + "gtceu.top.proxies_bound": "遠端樣板供應倉綁定數量:%s", + "gtceu.top.recipe_output": "配方輸出:", + "gtceu.top.stained": "顏色:%s", + "gtceu.top.transform_down": "§a降壓§r %s", + "gtceu.top.transform_input": "§6輸入:§r %s", + "gtceu.top.transform_output": "§9輸出:§r %s", + "gtceu.top.transform_up": "§c升壓§r %s", + "gtceu.top.unit.fluid_buckets": "B", + "gtceu.top.unit.fluid_milibuckets": "mB", + "gtceu.top.unit.items": "物品", + "gtceu.top.valid_structure": "結構已成型", + "gtceu.top.working_disabled": "已暫停工作", + "gtceu.universal.clear_nbt_recipe.tooltip": "§c這將清除所有內容物!", + "gtceu.universal.disabled": "多方塊結構共享:§4禁止", + "gtceu.universal.enabled": "多方塊結構共享:§a允許", + "gtceu.universal.kiloliters": "%s B", + "gtceu.universal.liters": "%s mB", + "gtceu.universal.tooltip.amperage_in": "§e輸入電流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out": "§e輸入/輸出電流:§f%dA", + "gtceu.universal.tooltip.amperage_in_out_till": "§e輸入/輸出電流上限:§f%dA", + "gtceu.universal.tooltip.amperage_in_till": "§e輸入電流上限:§f%dA", + "gtceu.universal.tooltip.amperage_out": "§e輸出電流:§f%dA", + "gtceu.universal.tooltip.amperage_out_till": "§e輸出電流上限:§f%dA", + "gtceu.universal.tooltip.base_production_eut": "§e基礎產能功率:§f%d EU/t", + "gtceu.universal.tooltip.base_production_fluid": "§e基礎產出速率:§f%d mB/t", + "gtceu.universal.tooltip.chunk_mode": "區塊模式:", + "gtceu.universal.tooltip.deprecated": "§4§l警告:§r§4已棄用。將在未來版本中移除。§r", + "gtceu.universal.tooltip.energy_storage_capacity": "§c能量暫存:§r%d EU", + "gtceu.universal.tooltip.energy_tier_range": "§a適配電壓等級:§f%s§f-%s", + "gtceu.universal.tooltip.fluid_storage_capacity": "§9流體容量:§f%d mB", + "gtceu.universal.tooltip.fluid_storage_capacity_mult": "§9流體容量:§r共§f%d§7個流體槽,每個§f%dmB§7", + "gtceu.universal.tooltip.fluid_stored": "§2內部流體:%2$d mB §f%1$s", + "gtceu.universal.tooltip.fluid_transfer_rate": "§b傳輸速率:§f%d mB/t", + "gtceu.universal.tooltip.item_storage_capacity": "§6物品槽位數量:§f%d", + "gtceu.universal.tooltip.item_storage_total": "§6物品容量:§f%d物品", + "gtceu.universal.tooltip.item_stored": "§d內部物品:§f%2$d個%1$s", + "gtceu.universal.tooltip.item_transfer_rate": "§b傳輸速率:§f%d物品/s", + "gtceu.universal.tooltip.item_transfer_rate_stacks": "§b傳輸速率:§f%d組/s", + "gtceu.universal.tooltip.max_voltage_in": "§a最大輸入電壓:§f%d(%s§f)", + "gtceu.universal.tooltip.max_voltage_in_out": "§a最大輸入/輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.max_voltage_out": "§a最大輸出電壓:§f%d(%s§f)", + "gtceu.universal.tooltip.parallel": "§d最大平行:§f%d", + "gtceu.universal.tooltip.produces_fluid": "§e產出速率:§f%d mB/t", + "gtceu.universal.tooltip.requires_redstone": "§4需要紅石訊號", + "gtceu.universal.tooltip.silk_touch": "絲綢之觸:", + "gtceu.universal.tooltip.terrain_resist": "該機器不會在暴露於惡劣天氣時爆炸", + "gtceu.universal.tooltip.uses_per_hour_lubricant": "工作時消耗§f%d mB/hr§7§6潤滑油§7", + "gtceu.universal.tooltip.uses_per_op": "每次工作時消耗§f%d EU§7", + "gtceu.universal.tooltip.uses_per_second": "工作時消耗§f%d EU/s§7", + "gtceu.universal.tooltip.uses_per_tick": "工作時消耗§f%d EU/t§7", + "gtceu.universal.tooltip.uses_per_tick_steam": "工作時消耗§f%dmB/t§7蒸汽", + "gtceu.universal.tooltip.voltage_in": "§a輸入電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_in_out": "§a輸入/輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.voltage_out": "§a輸出電壓:§f%d EU/t(%s§f)", + "gtceu.universal.tooltip.working_area": "§b工作範圍:§f%dx%d", + "gtceu.universal.tooltip.working_area_chunks": "§b工作範圍:§f%dx%d 區塊", + "gtceu.universal.tooltip.working_area_chunks_max": "§b最大工作範圍:§f%dx%d 區塊", + "gtceu.universal.tooltip.working_area_max": "§b最大工作範圍:§f%dx%d", + "gtceu.vacuum_freezer": "真空冷凍機", + "gtceu.wiremill": "線材軋機", + "gui.gtceu.refund_all.desc": "將原料送回ME網路", + "gui.gtceu.rename.desc": "重新命名樣板供應倉", + "gui.gtceu.share_inventory.desc.0": "與樣板供應倉的所有樣板共享物品!", + "gui.gtceu.share_inventory.desc.1": "儲存不消耗的催化劑,實現更高效的自動化", + "gui.gtceu.share_inventory.title": "共享物品庫存", + "gui.gtceu.share_tank.desc.0": "與樣板供應倉的所有樣板共享流體!", + "gui.gtceu.share_tank.title": "共享流體庫存", + "gui.widget.incrementButton.default_tooltip": "按住Shift,Ctrl鍵或同時按住這兩個鍵來改變數量", + "gui.widget.recipeProgressWidget.default_tooltip": "檢視配方", + "item.glass_lens": "玻璃透鏡(白色)", + "item.gtceu.activity_detector_cover": "活躍探測覆蓋板", + "item.gtceu.activity_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f機器活躍狀態§7發出紅石訊號。", + "item.gtceu.advanced_activity_detector_cover": "進階活躍狀態探測器", + "item.gtceu.advanced_activity_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f機器處理進度§7發出紅石訊號。", + "item.gtceu.advanced_electric_jetpack": "進階電力噴射背包", + "item.gtceu.advanced_energy_detector_cover": "進階能量探測覆蓋板", + "item.gtceu.advanced_energy_detector_cover.tooltip": "§7作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f能量狀態§7發出紅石訊號。", + "item.gtceu.advanced_fluid_detector_cover": "進階流體探測器", + "item.gtceu.advanced_fluid_detector_cover.tooltip": "作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f流體儲存狀態§7發出紅石訊號。", + "item.gtceu.advanced_fluid_voiding_cover": "進階流體銷毀覆蓋板", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時允許按數量銷毀§f流體§7。", + "item.gtceu.advanced_fluid_voiding_cover.tooltip.1": "加裝後使用§f軟錘§7啟用", + "item.gtceu.advanced_integrated_circuit": "進階積體電路", + "item.gtceu.advanced_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.advanced_integrated_circuit.tooltip.1": "§6HV級電路", + "item.gtceu.advanced_item_detector_cover": "進階物品探測器", + "item.gtceu.advanced_item_detector_cover.tooltip": "作§f覆蓋板§7時依照由§fRS鎖存器§7控制的§f物品儲存狀態§7發出紅石訊號。", + "item.gtceu.advanced_item_voiding_cover": "進階物品銷毀覆蓋板", + "item.gtceu.advanced_item_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時銷毀物品。", + "item.gtceu.advanced_item_voiding_cover.tooltip.1": "加裝後使用§f軟錘§7啟用", + "item.gtceu.advanced_nanomuscle_chestplate": "奈米肌體™進階套裝胸甲", + "item.gtceu.advanced_power_thruster": "進階電力推進器", + "item.gtceu.advanced_quarktech_chestplate": "夸克科技™進階套裝胸甲", + "item.gtceu.advanced_smd_capacitor": "高階貼片電容", + "item.gtceu.advanced_smd_capacitor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_diode": "高階貼片二極體", + "item.gtceu.advanced_smd_diode.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_inductor": "高階貼片電感", + "item.gtceu.advanced_smd_inductor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_resistor": "高階貼片電阻", + "item.gtceu.advanced_smd_resistor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_smd_transistor": "高階貼片電晶體", + "item.gtceu.advanced_smd_transistor.tooltip": "§7高階電子元件", + "item.gtceu.advanced_soc": "ASoC", + "item.gtceu.advanced_soc.tooltip": "§7先進系統級晶片", + "item.gtceu.advanced_soc_wafer": "ASoC晶圓", + "item.gtceu.advanced_soc_wafer.tooltip": "§7高階電路原料", + "item.gtceu.aluminium_fluid_cell": "鋁單元", + "item.gtceu.anvil_casting_mold": "鑄造模具(砧)", + "item.gtceu.anvil_casting_mold.tooltip": "§7用來製作砧的鑄造模具", + "item.gtceu.ash_dust": "灰燼", + "item.gtceu.axe_extruder_mold.tooltip": "§7用來製作斧的擠壓模具", + "item.gtceu.ball_casting_mold": "鑄造模具(球)", + "item.gtceu.ball_casting_mold.tooltip": "§7用來製作球的鑄造模具", + "item.gtceu.basaltic_mineral_sand_dust": "玄武岩礦砂", + "item.gtceu.basic_electronic_circuit": "基礎電子電路", + "item.gtceu.basic_electronic_circuit.tooltip.0": "§7你的第一塊電路", + "item.gtceu.basic_electronic_circuit.tooltip.1": "§cLV級電路", + "item.gtceu.basic_integrated_circuit": "基礎積體電路", + "item.gtceu.basic_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV級電路", + "item.gtceu.basic_tape": "膠帶", + "item.gtceu.basic_tape.tooltip": "強度不足,無法解決機械故障\\n可以带走板條箱,且不丟失物品", + "item.gtceu.battery.charge_detailed": "%s/%sEU-%s級§7(剩餘供能時長:%s/%s%s§7)", + "item.gtceu.battery.charge_time": "§a最大供能時長:%s%s(%s)", + "item.gtceu.battery.charge_unit.hour": "時", + "item.gtceu.battery.charge_unit.minute": "分", + "item.gtceu.battery.charge_unit.second": "秒", + "item.gtceu.bentonite_dust": "膨潤土", + "item.gtceu.bio_chaff": "生物糠", + "item.gtceu.black_dye_spray_can": "噴漆罐(黑色)", + "item.gtceu.black_glass_lens": "玻璃透鏡(黑色)", + "item.gtceu.blacklight": "黑光燈", + "item.gtceu.blacklight.tooltip": "§7長波§d紫外線§7光源", + "item.gtceu.block_casting_mold": "鑄造模具(方塊)", + "item.gtceu.block_casting_mold.tooltip": "§7用來製作方塊的鑄造模具", + "item.gtceu.block_extruder_mold": "擠壓模具(方塊)", + "item.gtceu.block_extruder_mold.tooltip": "§7用來製作方塊的擠壓模具", + "item.gtceu.blue_dye_spray_can": "噴漆罐(藍色)", + "item.gtceu.blue_glass_lens": "玻璃透鏡(藍色)", + "item.gtceu.bolt_extruder_mold": "擠壓模具(螺栓)", + "item.gtceu.bolt_extruder_mold.tooltip": "§7用來製作螺栓的擠壓模具", + "item.gtceu.bone_dust": "骨粉", + "item.gtceu.borosilicate_glass_ingot": "硼矽玻璃條", + "item.gtceu.bottle.purple.drink.tooltip": "§7來點檸檬汽水,還是冰紅茶?我手裡這瓶可是紫色飲料!", + "item.gtceu.bottle_casting_mold": "鑄造模具(瓶子)", + "item.gtceu.bottle_casting_mold.tooltip": "§7用來製作瓶的鑄造模具", + "item.gtceu.bottle_extruder_mold": "擠壓模具(瓶子)", + "item.gtceu.bottle_extruder_mold.tooltip": "§7用來製作瓶子的擠壓模具", + "item.gtceu.brick_wooden_form": "木製磚模具", + "item.gtceu.brown_dye_spray_can": "噴漆罐(棕色)", + "item.gtceu.brown_glass_lens": "玻璃透鏡(棕色)", + "item.gtceu.bucket": "%s桶", + "item.gtceu.capacitor": "電容", + "item.gtceu.capacitor.tooltip": "§7基礎電子元件", + "item.gtceu.carbon_fiber_mesh": "碳纖維網", + "item.gtceu.carbon_fiber_plate": "碳板", + "item.gtceu.carbon_fibers": "生碳纖維", + "item.gtceu.casing_casting_mold.tooltip": "§7用來製作外殼的鑄造模具", + "item.gtceu.casing_extruder_mold.tooltip": "§7用來製作外殼的擠壓模具", + "item.gtceu.cassiterite_sand_dust": "錫石礦砂", + "item.gtceu.cell_extruder_mold": "擠壓模具(單元)", + "item.gtceu.cell_extruder_mold.tooltip": "§7用來製作單元的擠壓模具", + "item.gtceu.chemical_black_dye": "黑色化學染料", + "item.gtceu.chemical_blue_dye": "藍色化學染料", + "item.gtceu.chemical_brown_dye": "棕色化學染料", + "item.gtceu.chemical_cyan_dye": "青色化學染料", + "item.gtceu.chemical_gray_dye": "灰色化學染料", + "item.gtceu.chemical_green_dye": "綠色化學染料", + "item.gtceu.chemical_light_blue_dye": "淺藍色化學染料", + "item.gtceu.chemical_light_gray_dye": "淺灰色化學染料", + "item.gtceu.chemical_lime_dye": "淺綠色化學染料", + "item.gtceu.chemical_magenta_dye": "洋紅色化學染料", + "item.gtceu.chemical_orange_dye": "橙色化學染料", + "item.gtceu.chemical_pink_dye": "粉紅色化學染料", + "item.gtceu.chemical_purple_dye": "紫色化學染料", + "item.gtceu.chemical_red_dye": "紅色化學染料", + "item.gtceu.chemical_white_dye": "白色化學染料", + "item.gtceu.chemical_yellow_dye": "黃色化學染料", + "item.gtceu.chipped_glass_gem": "破碎的玻璃晶體", + "item.gtceu.chipped_sugar_gem": "小塊方糖", + "item.gtceu.circuit.integrated.gui": "§7程式設計電路設定", + "item.gtceu.coke_oven_brick": "焦爐磚", + "item.gtceu.compressed_clay": "壓縮黏土", + "item.gtceu.compressed_coke_clay": "壓縮焦黏土", + "item.gtceu.compressed_fireclay": "壓縮耐火黏土", + "item.gtceu.computer_monitor_cover": "電腦螢幕覆蓋板", + "item.gtceu.computer_monitor_cover.tooltip": "§7作§f覆蓋板§7時顯示§f資料§7。", + "item.gtceu.conveyor.module.tooltip": "§7作§f覆蓋板§7時以特定速率傳輸§f物品§7。", + "item.gtceu.cpu_chip": "CPU晶片", + "item.gtceu.cpu_chip.tooltip": "§7中央處理器", + "item.gtceu.cpu_wafer": "CPU晶圓", + "item.gtceu.cpu_wafer.tooltip": "§7中央處理器原料", + "item.gtceu.crushed_bentonite_ore": "精研膨潤土", + "item.gtceu.crushed_cassiterite_sand_ore": "粉碎錫石礦砂", + "item.gtceu.crushed_pitchblende_ore": "精研瀝青鈾礦", + "item.gtceu.crushed_talc_ore_ore": "精研滑石", + "item.gtceu.crystal_cpu": "晶體CPU", + "item.gtceu.crystal_cpu.tooltip": "§7晶體處理器", + "item.gtceu.crystal_processor": "晶體處理器", + "item.gtceu.crystal_processor.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor.tooltip.1": "§9IV級電路", + "item.gtceu.crystal_processor_assembly": "晶體處理器叢集", + "item.gtceu.crystal_processor_assembly.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_assembly.tooltip.1": "§9LuV級電路", + "item.gtceu.crystal_processor_computer": "晶體處理器超級電腦", + "item.gtceu.crystal_processor_computer.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_computer.tooltip.1": "§9ZPM級電路", + "item.gtceu.crystal_processor_mainframe": "晶體處理器主機", + "item.gtceu.crystal_processor_mainframe.tooltip.0": "§7得益於晶體蝕刻技術", + "item.gtceu.crystal_processor_mainframe.tooltip.1": "§9UV級電路", + "item.gtceu.crystal_soc": "晶體SoC", + "item.gtceu.crystal_soc.tooltip": "§7晶體系統級晶片", + "item.gtceu.cyan_dye_spray_can": "噴漆罐(青色)", + "item.gtceu.cyan_glass_lens": "玻璃透鏡(青色)", + "item.gtceu.cylinder_casting_mold": "鑄造模具(圓柱)", + "item.gtceu.cylinder_casting_mold.tooltip": "§7用來製作圓柱的鑄造模具", + "item.gtceu.dark_ash_dust": "黑色灰燼", + "item.gtceu.data_module": "資料模組", + "item.gtceu.data_orb": "資料球", + "item.gtceu.data_orb.tooltip": " §7大容量的資料儲存器", + "item.gtceu.data_stick": "快閃記憶體", + "item.gtceu.data_stick.tooltip": "§7小容量的資料儲存器", + "item.gtceu.diamond_grinding_head": "鑽石研磨頭", + "item.gtceu.diode": "二極體", + "item.gtceu.diode.tooltip": "§7基礎電子元件", + "item.gtceu.dough": "麵團", + "item.gtceu.duct_tape": "布萊恩科技航空專用強化膠帶FAL-84型", + "item.gtceu.duct_tape.tooltip": "§7如果一卷修不好,那就再來一卷!", + "item.gtceu.dynamite": "炸藥", + "item.gtceu.electric.pump.tooltip": "§7作§f覆蓋板§7時以特定速率傳輸§f流體§7。", + "item.gtceu.electric_jetpack": "電力噴射背包", + "item.gtceu.empty_mold": "空模板", + "item.gtceu.empty_mold.tooltip": "§7用以製作鑄造模具與擠壓模具", + "item.gtceu.empty_spray_can": "空噴漆罐", + "item.gtceu.empty_spray_can.tooltip": "§7可充入各種顏色的噴劑", + "item.gtceu.empty_wooden_form": "空木製模具", + "item.gtceu.ender_fluid_link_cover": "終界流體連線", + "item.gtceu.ender_fluid_link_cover.tooltip": "§7作§f覆蓋板§7時利用§f無線§7§d終界§f連線§7傳輸§f流體§7。", + "item.gtceu.energium_dust": "能量粉", + "item.gtceu.energy_cluster": "能量簇", + "item.gtceu.energy_cluster.tooltip": "§7可充電電池", + "item.gtceu.energy_crystal": "能量水晶", + "item.gtceu.energy_crystal.tooltip": "§7可充電電池", + "item.gtceu.energy_detector_cover": "能量探測覆蓋板", + "item.gtceu.energy_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f能量儲量§7發出紅石訊號。", + "item.gtceu.energy_module": "能量模組", + "item.gtceu.energy_module.tooltip": "§7可充電電池", + "item.gtceu.engraved_crystal_chip": "蝕刻水晶晶片", + "item.gtceu.engraved_crystal_chip.tooltip": "§7晶體電路所需", + "item.gtceu.engraved_lapotron_crystal_chip": "蝕刻蘭波頓晶片", + "item.gtceu.epoxy_circuit_board": "環氧樹脂基板", + "item.gtceu.epoxy_circuit_board.tooltip": "§7進階電路基板", + "item.gtceu.epoxy_printed_circuit_board": "環氧樹脂印刷電路基板", + "item.gtceu.epoxy_printed_circuit_board.tooltip": "§7更高階的電路基板", + "item.gtceu.ev_battery_hull": "小型釩電池外殼", + "item.gtceu.ev_battery_hull.tooltip": "§7一個空的§5EV§7電池外殼", + "item.gtceu.ev_conveyor_module": "§5EV§r傳送帶", + "item.gtceu.ev_electric_motor": "§5EV§r電動馬達", + "item.gtceu.ev_electric_piston": "§5EV§r電力活塞", + "item.gtceu.ev_electric_pump": "§5EV§r電動泵", + "item.gtceu.ev_emitter": "§5EV§r發射器", + "item.gtceu.ev_field_generator": "§5EV§r力場發生器", + "item.gtceu.ev_fluid_regulator": "§5EV§r流體調節器", + "item.gtceu.ev_power_unit": "§5EV§r能量單元", + "item.gtceu.ev_robot_arm": "§5EV§r機械臂", + "item.gtceu.ev_sensor": "§5EV§r感測器", + "item.gtceu.ev_solar_panel": "超高壓太陽能板(§5EV§r)", + "item.gtceu.ev_vanadium_battery": "小型釩電池", + "item.gtceu.ev_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.ev_voltage_coil": "超高壓線圈(§5EV§r)", + "item.gtceu.ev_voltage_coil.tooltip": "極限線圈", + "item.gtceu.exquisite_glass_gem": "精緻的玻璃晶體", + "item.gtceu.facade_cover": "覆蓋偽裝板", + "item.gtceu.facade_cover.tooltip.0": "§7可作為§f覆蓋板§7加裝的裝飾性外殼。", + "item.gtceu.facade_cover.tooltip.1": "§7使用三個鐵板與任意方塊合成", + "item.gtceu.face_mask": "面罩", + "item.gtceu.fertilizer": "肥料", + "item.gtceu.fiber_reinforced_circuit_board": "纖維強化電路基板", + "item.gtceu.fiber_reinforced_circuit_board.tooltip": "§7超級電路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board": "纖維強化印刷電路基板", + "item.gtceu.fiber_reinforced_printed_circuit_board.tooltip": "§7更高階的電路基板", + "item.gtceu.file_extruder_mold.tooltip": "§7用來製作銼的擠壓模具", + "item.gtceu.fine_borosilicate_glass_wire": "硼矽玻璃纖維", + "item.gtceu.firebrick": "耐火磚", + "item.gtceu.firebrick.tooltip": "§7耐熱", + "item.gtceu.flawed_glass_gem": "有瑕的玻璃晶體", + "item.gtceu.flawed_sugar_gem": "小顆方糖", + "item.gtceu.flawless_glass_gem": "無瑕的玻璃晶體", + "item.gtceu.fluid.regulator.tooltip": "§7作§f覆蓋板§7時§7限制§f§f流體§7的流量。", + "item.gtceu.fluid_cell": "流體單元", + "item.gtceu.fluid_detector_cover": "流體探測覆蓋板", + "item.gtceu.fluid_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f流體儲量§7發出紅石訊號。", + "item.gtceu.fluid_filter": "流體過濾卡", + "item.gtceu.fluid_filter.tooltip.0": "§7作§f覆蓋板§7時過濾§流體§7的輸入/輸出。", + "item.gtceu.fluid_filter.tooltip.1": "§7亦可用於§f電動泵§7與§f流體調節器§7。", + "item.gtceu.fluid_tag_filter": "流體標籤過濾卡", + "item.gtceu.fluid_tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f流體標籤§7過濾§f流體§7的輸入/輸出。", + "item.gtceu.fluid_tag_filter.tooltip.1": "§7亦可用於§f電動泵§7與§f流體調節器§7。", + "item.gtceu.fluid_voiding_cover": "流體銷毀覆蓋板", + "item.gtceu.fluid_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時允許銷毀§f流體§7。", + "item.gtceu.fluid_voiding_cover.tooltip.1": "§7加裝後使用§f軟錘§7啟用", + "item.gtceu.foam_sprayer.tooltip.0": "§7噴射建築泡沫", + "item.gtceu.foam_sprayer.tooltip.1": "右擊框架來給框架噴塗泡沫", + "item.gtceu.foam_sprayer.tooltip.2": "泡沫可以染色", + "item.gtceu.foil_extruder_mold": "擠壓模具(箔)", + "item.gtceu.foil_extruder_mold.tooltip": "§7用來製作箔的擠壓模具", + "item.gtceu.fullers_earth_dust": "漂白土", + "item.gtceu.garnet_sand_dust": "石榴石砂", + "item.gtceu.gear_casting_mold": "鑄造模具(齒輪)", + "item.gtceu.gear_casting_mold.small.tooltip": "§7用來製作小型齒輪的鑄造模具", + "item.gtceu.gear_casting_mold.tooltip": "§7用來製作齒輪的鑄造模具", + "item.gtceu.gear_extruder_mold": "擠壓模具(齒輪)", + "item.gtceu.gear_extruder_mold.tooltip": "§7用來製作齒輪的擠壓模具", + "item.gtceu.gear_small_extruder_mold.tooltip": "§7用來製作小型齒輪的擠壓模具", + "item.gtceu.gelled_toluene": "膠凝甲苯", + "item.gtceu.gelled_toluene.tooltip": "§7炸藥原料", + "item.gtceu.glass_gem": "玻璃晶體", + "item.gtceu.glass_plate": "玻璃板", + "item.gtceu.glass_tube": "玻璃管", + "item.gtceu.glass_vial": "玻璃試管", + "item.gtceu.glauconite_sand_dust": "海綠石砂", + "item.gtceu.good_electronic_circuit": "優質電子電路", + "item.gtceu.good_electronic_circuit.tooltip.0": "§7你的第二塊電路", + "item.gtceu.good_electronic_circuit.tooltip.1": "§cMV級電路", + "item.gtceu.good_integrated_circuit": "優質積體電路", + "item.gtceu.good_integrated_circuit.tooltip.0": "§7更小也更強", + "item.gtceu.good_integrated_circuit.tooltip.1": "§6MV級電路", + "item.gtceu.granitic_mineral_sand_dust": "花崗岩礦砂", + "item.gtceu.gravi_star": "重力之星", + "item.gtceu.gravi_star.tooltip": "§7終極地獄之星", + "item.gtceu.gravitation_engine_unit": "重力引擎單元", + "item.gtceu.gray_dye_spray_can": "噴漆罐(灰色)", + "item.gtceu.gray_glass_lens": "玻璃透鏡(灰色)", + "item.gtceu.green_dye_spray_can": "噴漆罐(綠色)", + "item.gtceu.green_glass_lens": "玻璃透鏡(綠色)", + "item.gtceu.hammer_extruder_mold.tooltip": "§7用來製作錘的擠壓模具", + "item.gtceu.hazmat_boots": "防護衣靴子", + "item.gtceu.hazmat_chestpiece": "防護衣胸甲", + "item.gtceu.hazmat_headpiece": "防護衣頭盔", + "item.gtceu.hazmat_leggings": "防護衣護腿", + "item.gtceu.highly_advanced_soc": "HASoC", + "item.gtceu.highly_advanced_soc.tooltip": "§7高度先進的系統級晶片", + "item.gtceu.highly_advanced_soc_wafer": "HASoC晶圓", + "item.gtceu.highly_advanced_soc_wafer.tooltip": "§7高度先進的電路原料", + "item.gtceu.hoe_extruder_mold.tooltip": "§7用來製作鋤的擠壓模具", + "item.gtceu.hpic_chip": "HPIC晶片", + "item.gtceu.hpic_chip.tooltip": "§7高功率積體電路", + "item.gtceu.hpic_wafer": "HPIC晶圓", + "item.gtceu.hpic_wafer.tooltip": "§7高功率積體電路原料", + "item.gtceu.huge_pipe_extruder_mold": "擠壓模具(巨型管道)", + "item.gtceu.hv_battery_hull": "大型電池外殼", + "item.gtceu.hv_battery_hull.tooltip": "§7一個空的§6HV§7電池外殼", + "item.gtceu.hv_cadmium_battery": "大型鎘電池", + "item.gtceu.hv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_conveyor_module": "§6HV§r傳送帶", + "item.gtceu.hv_electric_motor": "§6HV§r電動馬達", + "item.gtceu.hv_electric_piston": "§6HV§r電力活塞", + "item.gtceu.hv_electric_pump": "§6HV§r電動泵", + "item.gtceu.hv_emitter": "§6HV§r發射器", + "item.gtceu.hv_field_generator": "§6HV§r力場發生器", + "item.gtceu.hv_fluid_regulator": "§6HV§r流體調節器", + "item.gtceu.hv_item_magnet": "§6HV§r物品磁鐵", + "item.gtceu.hv_lithium_battery": "大型鋰電池", + "item.gtceu.hv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_power_unit": "§6HV§r能量單元", + "item.gtceu.hv_robot_arm": "§6HV§r機械臂", + "item.gtceu.hv_sensor": "§6HV§r感測器", + "item.gtceu.hv_sodium_battery": "大型鈉電池", + "item.gtceu.hv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.hv_solar_panel": "高壓太陽能板(§6HV§r)", + "item.gtceu.hv_voltage_coil": "高壓線圈(§6HV§r)", + "item.gtceu.hv_voltage_coil.tooltip": "高階線圈", + "item.gtceu.ice_dust": "碎冰", + "item.gtceu.ilc_chip": "IC晶片", + "item.gtceu.ilc_chip.tooltip": "§7整合邏輯電路", + "item.gtceu.ilc_wafer": "ILC晶圓", + "item.gtceu.ilc_wafer.tooltip": "§7積體電路原料", + "item.gtceu.impure_bentonite_dust": "含雜膨潤土", + "item.gtceu.impure_cassiterite_sand_dust": "含雜錫石礦砂", + "item.gtceu.impure_pitchblende_dust": "含雜瀝青鈾礦", + "item.gtceu.impure_rock_salt_dust": "含雜岩鹽", + "item.gtceu.impure_salt_dust": "含雜鹽", + "item.gtceu.impure_talc_dust": "含雜滑石", + "item.gtceu.inductor": "電感", + "item.gtceu.inductor.tooltip": "§7一個小線圈", + "item.gtceu.inert_metal_mixture_dust": "惰性金屬混合物", + "item.gtceu.infinite_water_cover": "無限水覆蓋板", + "item.gtceu.infinite_water_cover.tooltip": "§7作§f覆蓋板§7時為所附著的容器供§9水§7。", + "item.gtceu.ingot_casting_mold": "鑄造模具(錠)", + "item.gtceu.ingot_casting_mold.tooltip": "§7用來製作錠的鑄造模具", + "item.gtceu.ingot_extruder_mold": "擠壓模具(錠)", + "item.gtceu.ingot_extruder_mold.tooltip": "§7用來……等會,用熔爐不好嗎?", + "item.gtceu.invar_lighter": "殷鋼打火機", + "item.gtceu.iridium_metal_residue_dust": "銥金屬渣", + "item.gtceu.iron_minecart_wheels": "鐵礦車車輪", + "item.gtceu.item_detector_cover": "物品探測覆蓋板", + "item.gtceu.item_detector_cover.tooltip": "§7作§f覆蓋板§7時依照§f物品儲量§7發出紅石訊號。", + "item.gtceu.item_filter": "物品過濾卡", + "item.gtceu.item_filter.tooltip.0": "§7作§f覆蓋板§7時過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_smart_filter": "智慧物品過濾卡", + "item.gtceu.item_smart_filter.tooltip.0": "§7作§f覆蓋板§7時以§f機器的配方§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_smart_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_tag_filter": "物品標籤過濾卡", + "item.gtceu.item_tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f物品標籤§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.item_tag_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.item_voiding_cover": "物品銷毀覆蓋板", + "item.gtceu.item_voiding_cover.tooltip.0": "§7作§f覆蓋板§7時銷毀物品。", + "item.gtceu.item_voiding_cover.tooltip.1": "§7加裝後使用§f軟錘§7啟用", + "item.gtceu.iv_battery_hull": "中型釩電池外殼", + "item.gtceu.iv_battery_hull.tooltip": "§7一個空的§1IV§7電池外殼", + "item.gtceu.iv_conveyor_module": "§9IV§r傳送帶", + "item.gtceu.iv_electric_motor": "§9IV§r電動馬達", + "item.gtceu.iv_electric_piston": "§9IV§r電力活塞", + "item.gtceu.iv_electric_pump": "§9IV§r電動泵", + "item.gtceu.iv_emitter": "§9IV§r發射器", + "item.gtceu.iv_field_generator": "§9IV§r力場發生器", + "item.gtceu.iv_fluid_regulator": "§9IV§r流體調節器", + "item.gtceu.iv_power_unit": "§9IV§r能量單元", + "item.gtceu.iv_robot_arm": "§9IV§r機械臂", + "item.gtceu.iv_sensor": "§9IV§r感測器", + "item.gtceu.iv_solar_panel": "強導壓太陽能板(§9IV§r)", + "item.gtceu.iv_vanadium_battery": "中型釩電池", + "item.gtceu.iv_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.iv_voltage_coil": "強導壓線圈(§9IV§r)", + "item.gtceu.iv_voltage_coil.tooltip": "精英線圈", + "item.gtceu.lapotron_crystal": "蘭波頓水晶", + "item.gtceu.lapotron_crystal.tooltip": "§7可充電電池", + "item.gtceu.lapotronic_energy_orb": "蘭波頓能量球", + "item.gtceu.lapotronic_energy_orb.tooltip": "§7可充電電池", + "item.gtceu.lapotronic_energy_orb_cluster": "蘭波頓能量球簇", + "item.gtceu.lapotronic_energy_orb_cluster.tooltip": "§7可充電電池", + "item.gtceu.large_pipe_extruder_mold": "擠壓模具(大型管道)", + "item.gtceu.light_blue_dye_spray_can": "噴漆罐(淺藍色)", + "item.gtceu.light_blue_glass_lens": "玻璃透鏡(淺藍色)", + "item.gtceu.light_gray_dye_spray_can": "噴漆罐(淺灰色)", + "item.gtceu.light_gray_glass_lens": "玻璃透鏡(淺灰色)", + "item.gtceu.lime_dye_spray_can": "噴漆罐(淺綠色)", + "item.gtceu.lime_glass_lens": "玻璃透鏡(淺綠色)", + "item.gtceu.liquid_fuel_jetpack": "液體燃料噴射背包", + "item.gtceu.long_rod_extruder_mold": "擠壓模具(長桿)", + "item.gtceu.long_treated_wood_rod": "長防腐木棍", + "item.gtceu.long_wood_rod": "長木棍", + "item.gtceu.lpic_chip": "LPIC晶片", + "item.gtceu.lpic_chip.tooltip": "§7低功率積體電路", + "item.gtceu.lpic_wafer": "LPIC晶圓", + "item.gtceu.lpic_wafer.tooltip": "§7低功率積體電路原料", + "item.gtceu.luv_battery_hull": "大型釩電池外殼", + "item.gtceu.luv_battery_hull.tooltip": "§7一個空的§dLuV§r電池外殼", + "item.gtceu.luv_conveyor_module": "§dLuV§r傳送帶", + "item.gtceu.luv_electric_motor": "§dLuV§r電動馬達", + "item.gtceu.luv_electric_piston": "§dLuV§r電力活塞", + "item.gtceu.luv_electric_pump": "§dLuV§r電動泵", + "item.gtceu.luv_emitter": "§dLuV§r發射器", + "item.gtceu.luv_field_generator": "§dLuV§r力場發生器", + "item.gtceu.luv_fluid_regulator": "§dLuV§r流體調節器", + "item.gtceu.luv_robot_arm": "§dLuV§r機械臂", + "item.gtceu.luv_sensor": "§dLuV§r感測器", + "item.gtceu.luv_solar_panel": "劇差壓太陽能板(§dLuV§r)", + "item.gtceu.luv_vanadium_battery": "大型釩電池", + "item.gtceu.luv_vanadium_battery.tooltip": "§7可充電電池", + "item.gtceu.luv_voltage_coil": "劇差壓線圈(§dLuV§r)", + "item.gtceu.luv_voltage_coil.tooltip": "大師線圈", + "item.gtceu.lv_battery_hull": "小型電池外殼", + "item.gtceu.lv_battery_hull.tooltip": "§7一個空的§7LV§7電池外殼", + "item.gtceu.lv_cadmium_battery": "小型鎘電池", + "item.gtceu.lv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_conveyor_module": "§7LV§r傳送帶", + "item.gtceu.lv_electric_motor": "§7LV§r電動馬達", + "item.gtceu.lv_electric_piston": "§7LV§r電力活塞", + "item.gtceu.lv_electric_pump": "§7LV§r電動泵", + "item.gtceu.lv_emitter": "§7LV§r發射器", + "item.gtceu.lv_field_generator": "§7LV§r力場發生器", + "item.gtceu.lv_fluid_regulator": "§7LV§r流體調節器", + "item.gtceu.lv_item_magnet": "§7LV§r物品磁鐵", + "item.gtceu.lv_lithium_battery": "小型鋰電池", + "item.gtceu.lv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_power_unit": "§7LV§r能量單元", + "item.gtceu.lv_robot_arm": "§7LV§r機械臂", + "item.gtceu.lv_sensor": "§7LV§r感測器", + "item.gtceu.lv_sodium_battery": "小型鈉電池", + "item.gtceu.lv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.lv_solar_panel": "低壓太陽能板(§7LV§r)", + "item.gtceu.lv_voltage_coil": "低壓線圈(§7LV§r)", + "item.gtceu.lv_voltage_coil.tooltip": "基礎線圈", + "item.gtceu.machine_controller.tooltip": "§7作§f覆蓋板§7時可以§f開/關§7機器。", + "item.gtceu.machine_controller_cover": "機器控制覆蓋板", + "item.gtceu.machine_memory_card": "機器記憶卡", + "item.gtceu.magenta_dye_spray_can": "噴漆罐(洋紅色)", + "item.gtceu.magenta_glass_lens": "玻璃透鏡(洋紅色)", + "item.gtceu.maintenance_detector_cover": "維護探測覆蓋板", + "item.gtceu.mask_filter": "防毒面具過濾罐", + "item.gtceu.matchbox": "火柴盒", + "item.gtceu.matches": "火柴", + "item.gtceu.max_battery": "終極電池", + "item.gtceu.max_battery.tooltip": "§7填滿就能通關Minecraft", + "item.gtceu.max_voltage_coil.tooltip": "至高線圈", + "item.gtceu.meat_dust": "肉末", + "item.gtceu.micro_processor": "微型處理器", + "item.gtceu.micro_processor.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor.tooltip.1": "§eMV級電路", + "item.gtceu.micro_processor_assembly": "微型處理器叢集", + "item.gtceu.micro_processor_assembly.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_assembly.tooltip.1": "§eHV級電路", + "item.gtceu.micro_processor_computer": "微型處理器超級電腦", + "item.gtceu.micro_processor_computer.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_computer.tooltip.1": "§eEV級電路", + "item.gtceu.micro_processor_mainframe": "微型處理器主機", + "item.gtceu.micro_processor_mainframe.tooltip.0": "§7運算速度驚人!", + "item.gtceu.micro_processor_mainframe.tooltip.1": "§eIV級電路", + "item.gtceu.microchip_processor": "微晶片處理器", + "item.gtceu.microchip_processor.tooltip.0": "§7卓越的基礎電路", + "item.gtceu.microchip_processor.tooltip.1": "§eLV級電路", + "item.gtceu.mpic_chip": "MPIC晶片", + "item.gtceu.mpic_chip.tooltip": "§7功率積體電路", + "item.gtceu.mpic_wafer": "MPIC晶圓", + "item.gtceu.mpic_wafer.tooltip": "§7功率積體電路原料", + "item.gtceu.multilayer_fiber_reinforced_circuit_board": "多層纖維強化電路基板", + "item.gtceu.multilayer_fiber_reinforced_circuit_board.tooltip": "§7精英電路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board": "多層纖維強化印刷電路基板", + "item.gtceu.multilayer_fiber_reinforced_printed_circuit_board.tooltip": "§7精英級電路基板", + "item.gtceu.mv_battery_hull": "中型電池外殼", + "item.gtceu.mv_battery_hull.tooltip": "§7一個空的§bMV§7電池外殼", + "item.gtceu.mv_cadmium_battery": "中型鎘電池", + "item.gtceu.mv_cadmium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_conveyor_module": "§bMV§r傳送帶", + "item.gtceu.mv_electric_motor": "§bMV§r電動馬達", + "item.gtceu.mv_electric_piston": "§bMV§r電力活塞", + "item.gtceu.mv_electric_pump": "§bMV§r電動泵", + "item.gtceu.mv_emitter": "§bMV§r發射器", + "item.gtceu.mv_field_generator": "§bMV§r力場發生器", + "item.gtceu.mv_fluid_regulator": "§bMV§r流體調節器", + "item.gtceu.mv_lithium_battery": "中型鋰電池", + "item.gtceu.mv_lithium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_power_unit": "§bMV§r能量單元", + "item.gtceu.mv_robot_arm": "§bMV§r機械臂", + "item.gtceu.mv_sensor": "§bMV§r感測器", + "item.gtceu.mv_sodium_battery": "中型鈉電池", + "item.gtceu.mv_sodium_battery.tooltip": "§7可充電電池", + "item.gtceu.mv_solar_panel": "中壓太陽能板(§bMV§r)", + "item.gtceu.mv_voltage_coil": "中壓線圈(§bMV§r)", + "item.gtceu.mv_voltage_coil.tooltip": "優質線圈", + "item.gtceu.name_casting_mold": "鑄造模具(命名)", + "item.gtceu.name_casting_mold.tooltip": "§7用來在衝壓機床中為物品命名的鑄造模具(用鐵砧重新命名鑄造模具)", + "item.gtceu.nan_certificate": "不再是菜鳥的證明", + "item.gtceu.nan_certificate.tooltip": "已接受挑戰!", + "item.gtceu.nand_chip": "NAND晶片", + "item.gtceu.nand_chip.tooltip.0": "§7卓越的簡單電路", + "item.gtceu.nand_chip.tooltip.1": "§6ULV級電路", + "item.gtceu.nand_memory_chip": "NAND儲存器晶片", + "item.gtceu.nand_memory_chip.tooltip": "§7與非邏輯閘", + "item.gtceu.nand_memory_wafer": "NAND儲存器晶圓", + "item.gtceu.nand_memory_wafer.tooltip": "§7邏輯閘原料", + "item.gtceu.nano_cpu_chip": "奈米CPU晶片", + "item.gtceu.nano_cpu_chip.tooltip": "§7奈米中央處理器", + "item.gtceu.nano_cpu_wafer": "奈米CPU晶圓", + "item.gtceu.nano_cpu_wafer.tooltip": "§7奈米電路原料", + "item.gtceu.nano_processor": "奈米處理器", + "item.gtceu.nano_processor.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor.tooltip.1": "§bHV級電路", + "item.gtceu.nano_processor_assembly": "奈米處理器叢集", + "item.gtceu.nano_processor_assembly.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_assembly.tooltip.1": "§bEV級電路", + "item.gtceu.nano_processor_computer": "奈米處理器超級電腦", + "item.gtceu.nano_processor_computer.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_computer.tooltip.1": "§bIV級電路", + "item.gtceu.nano_processor_mainframe": "奈米處理器主機", + "item.gtceu.nano_processor_mainframe.tooltip.0": "§7比小更小", + "item.gtceu.nano_processor_mainframe.tooltip.1": "§bLuV級電路", + "item.gtceu.nano_saber": "奈米劍", + "item.gtceu.nano_saber.tooltip": "§7嚐嚐龍神之劍!", + "item.gtceu.nanomuscle_boots": "奈米肌體™套裝靴子", + "item.gtceu.nanomuscle_chestplate": "奈米肌體™套裝胸甲", + "item.gtceu.nanomuscle_helmet": "奈米肌體™套裝頭盔", + "item.gtceu.nanomuscle_leggings": "奈米肌體™套裝護腿", + "item.gtceu.naquadah_boule": "矽岩摻雜的單晶矽", + "item.gtceu.naquadah_boule.tooltip": "§7電路原料", + "item.gtceu.naquadah_wafer": "矽岩摻雜的晶圓", + "item.gtceu.naquadah_wafer.tooltip": "§7電路原料", + "item.gtceu.neuro_processing_unit": "神經處理單元", + "item.gtceu.neuro_processing_unit.tooltip": "§7神經CPU", + "item.gtceu.neutron_reflector": "銥中子反射板", + "item.gtceu.neutron_reflector.tooltip": "§7堅不可摧", + "item.gtceu.neutronium_boule": "中子素摻雜的單晶矽", + "item.gtceu.neutronium_boule.tooltip": "§7電路原料", + "item.gtceu.neutronium_wafer": "中子素摻雜的晶圓", + "item.gtceu.neutronium_wafer.tooltip": "§7電路原料", + "item.gtceu.nightvision_goggles": "夜視鏡", + "item.gtceu.nor_memory_chip": "NOR儲存器晶片", + "item.gtceu.nor_memory_chip.tooltip": "§7或非邏輯閘", + "item.gtceu.nor_memory_wafer": "NOR儲存器晶圓", + "item.gtceu.nor_memory_wafer.tooltip": "§7邏輯閘原料", + "item.gtceu.normal_pipe_extruder_mold": "擠壓模具(普通管道)", + "item.gtceu.nugget_casting_mold": "鑄造模具(粒)", + "item.gtceu.nugget_casting_mold.tooltip": "§7用來製作粒的鑄造模具", + "item.gtceu.opv_conveyor_module": "§9§lOpV§r傳送帶", + "item.gtceu.opv_electric_motor": "§9§lOpV§r電動馬達", + "item.gtceu.opv_electric_piston": "§9§lOpV§r電力活塞", + "item.gtceu.opv_electric_pump": "§9§lOpV§r電動泵", + "item.gtceu.opv_emitter": "§9OpV§r發射器", + "item.gtceu.opv_field_generator": "§9§lOpV§r力場發生器", + "item.gtceu.opv_fluid_regulator": "§9§lOpV§r流體調節器", + "item.gtceu.opv_robot_arm": "§9§lOpV§r機械臂", + "item.gtceu.opv_sensor": "§9§lOpV§r感測器", + "item.gtceu.opv_voltage_coil.tooltip": "傳奇線圈", + "item.gtceu.orange_dye_spray_can": "噴漆罐(橙色)", + "item.gtceu.orange_glass_lens": "玻璃透鏡(橙色)", + "item.gtceu.palladium_raw_dust": "粗鈀粉", + "item.gtceu.paper_dust": "紙屑", + "item.gtceu.paracetamol_pill": "對乙醯氨基酚藥片", + "item.gtceu.petri_dish": "培養皿", + "item.gtceu.petri_dish.tooltip": "§7用來培育細胞", + "item.gtceu.phenolic_circuit_board": "酚醛樹脂電路基板", + "item.gtceu.phenolic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.phenolic_printed_circuit_board": "酚醛樹脂印刷電路基板", + "item.gtceu.phenolic_printed_circuit_board.tooltip": "§7優質電路基板", + "item.gtceu.phosphorus_boule": "磷摻雜的單晶矽", + "item.gtceu.phosphorus_boule.tooltip": "§7電路原料", + "item.gtceu.phosphorus_wafer": "磷摻雜的晶圓", + "item.gtceu.phosphorus_wafer.tooltip": "§7電路原料", + "item.gtceu.pickaxe_extruder_mold.tooltip": "§7用來製作鎬的擠壓模具", + "item.gtceu.pill_casting_mold": "鑄造模具(藥片)", + "item.gtceu.pink_dye_spray_can": "噴漆罐(粉紅色)", + "item.gtceu.pink_glass_lens": "玻璃透鏡(粉紅色)", + "item.gtceu.pipe.huge_extruder_mold.tooltip": "§7用來製作佔據整個方塊的管道的擠壓模具", + "item.gtceu.pipe.large_extruder_mold.tooltip": "§7用來製作大型管道的擠壓模具", + "item.gtceu.pipe.normal_extruder_mold.tooltip": "§7用來製作管道的擠壓模具", + "item.gtceu.pipe.small_extruder_mold.tooltip": "§7用來製作小型管道的擠壓模具", + "item.gtceu.pipe.tiny_extruder_mold.tooltip": "§7用來製作微型管道的擠壓模具", + "item.gtceu.pitchblende_dust": "瀝青鈾礦", + "item.gtceu.plant_ball": "植物球", + "item.gtceu.plastic_circuit_board": "塑膠電路基板", + "item.gtceu.plastic_circuit_board.tooltip": "§7更好的基板", + "item.gtceu.plastic_printed_circuit_board": "塑膠印刷電路基板", + "item.gtceu.plastic_printed_circuit_board.tooltip": "§7優質電路基板", + "item.gtceu.plate_casting_mold": "鑄造模具(板)", + "item.gtceu.plate_casting_mold.tooltip": "§7用來製作板的鑄造模具", + "item.gtceu.plate_extruder_mold": "擠壓模具(板)", + "item.gtceu.plate_extruder_mold.tooltip": "§7用來製作板的擠壓模具", + "item.gtceu.platinum_group_sludge_dust": "鉑系礦泥", + "item.gtceu.platinum_lighter": "鉑打火機", + "item.gtceu.platinum_raw_dust": "粗鉑粉", + "item.gtceu.platinum_sludge_residue_dust": "鉑泥渣", + "item.gtceu.portable_debug_scanner": "行動式掃描器", + "item.gtceu.portable_scanner": "行動式掃描器", + "item.gtceu.power_thruster": "電力推進器", + "item.gtceu.programmed_circuit": "程式設計電路", + "item.gtceu.programmed_circuit.tooltip.0": "右擊開啟設定頁面", + "item.gtceu.programmed_circuit.tooltip.1": "潛行右擊有虛擬電路槽的", + "item.gtceu.programmed_circuit.tooltip.2": "機器,將其設定為本電路", + "item.gtceu.programmed_circuit.tooltip.3": "的值。", + "item.gtceu.prospector.hv": "進階探礦儀(§6HV§r)", + "item.gtceu.prospector.luv": "超級探礦儀(§dLuV§r)", + "item.gtceu.prospector.lv": "探礦儀(§7LV§r)", + "item.gtceu.pure_bentonite_dust": "純淨膨潤土", + "item.gtceu.pure_cassiterite_sand_dust": "純淨錫石礦砂", + "item.gtceu.pure_pitchblende_dust": "純淨瀝青鈾礦", + "item.gtceu.pure_rock_salt_dust": "純淨岩鹽", + "item.gtceu.pure_salt_dust": "純淨鹽", + "item.gtceu.pure_talc_dust": "純淨滑石", + "item.gtceu.purified_bentonite_ore": "純淨膨潤土", + "item.gtceu.purified_cassiterite_sand_ore": "純淨錫石礦砂", + "item.gtceu.purified_pitchblende_ore": "純淨瀝青鈾礦", + "item.gtceu.purified_talc_ore": "純淨滑石", + "item.gtceu.purple_drink": "紫色飲料", + "item.gtceu.purple_dye_spray_can": "噴漆罐(紫色)", + "item.gtceu.purple_glass_lens": "玻璃透鏡(紫色)", + "item.gtceu.qbit_cpu_chip": "量子位CPU晶片", + "item.gtceu.qbit_cpu_chip.tooltip": "§7量子位中央處理器", + "item.gtceu.qbit_cpu_wafer": "量子位CPU晶圓", + "item.gtceu.qbit_cpu_wafer.tooltip": "§7量子位電路原料", + "item.gtceu.quantum_eye": "量子之眼", + "item.gtceu.quantum_eye.tooltip": "§7改良的終界之眼", + "item.gtceu.quantum_processor": "量子處理器", + "item.gtceu.quantum_processor.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor.tooltip.1": "§aEV級電路", + "item.gtceu.quantum_processor_assembly": "量子處理器叢集", + "item.gtceu.quantum_processor_assembly.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_assembly.tooltip.1": "§aIV級電路", + "item.gtceu.quantum_processor_computer": "量子處理器超級電腦", + "item.gtceu.quantum_processor_computer.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_computer.tooltip.1": "§aLuV級電路", + "item.gtceu.quantum_processor_mainframe": "量子處理器主機", + "item.gtceu.quantum_processor_mainframe.tooltip.0": "§7量子計算終成現實!", + "item.gtceu.quantum_processor_mainframe.tooltip.1": "§aZPM級電路", + "item.gtceu.quantum_star": "量子之星", + "item.gtceu.quantum_star.tooltip": "§7改良的地獄之星", + "item.gtceu.quarktech_boots": "夸克科技™套裝靴子", + "item.gtceu.quarktech_chestplate": "夸克科技™套裝胸甲", + "item.gtceu.quarktech_helmet": "夸克科技™套裝頭盔", + "item.gtceu.quarktech_leggings": "夸克科技™套裝護腿", + "item.gtceu.quartz_sand_dust": "石英砂", + "item.gtceu.rad_away_pill": "消輻寧™藥片", + "item.gtceu.ram_chip": "RAM晶片", + "item.gtceu.ram_chip.tooltip": "§7隨機存取儲存器", + "item.gtceu.ram_wafer": "RAM晶圓", + "item.gtceu.ram_wafer.tooltip": "§7記憶體原料", + "item.gtceu.rare_earth_dust": "稀土", + "item.gtceu.rarest_metal_mixture_dust": "稀有金屬混合物", + "item.gtceu.raw_crystal_chip": "晶體晶片原料", + "item.gtceu.raw_crystal_chip.tooltip": "§7晶體處理器原料", + "item.gtceu.raw_crystal_chip_parts": "晶體晶片部件原料", + "item.gtceu.raw_crystal_chip_parts.tooltip": "§7晶體處理器部件原料", + "item.gtceu.red_dye_spray_can": "噴漆罐(紅色)", + "item.gtceu.red_glass_lens": "玻璃透鏡(紅色)", + "item.gtceu.refined_bentonite_ore": "精煉膨潤土", + "item.gtceu.refined_cassiterite_sand_ore": "精煉錫石礦砂", + "item.gtceu.refined_pitchblende_ore": "精煉瀝青鈾礦", + "item.gtceu.refined_talc_ore": "精煉滑石", + "item.gtceu.resin_circuit_board": "覆膜電路基板", + "item.gtceu.resin_circuit_board.tooltip": "§7電路的基底", + "item.gtceu.resin_printed_circuit_board": "覆膜印刷電路基板", + "item.gtceu.resin_printed_circuit_board.tooltip": "§7基礎電路基板", + "item.gtceu.resistor": "電阻", + "item.gtceu.resistor.tooltip": "§7基礎電子元件", + "item.gtceu.ring_extruder_mold": "擠壓模具(環)", + "item.gtceu.ring_extruder_mold.tooltip": "§7用來製作環的擠壓模具", + "item.gtceu.robot.arm.tooltip": "作§f覆蓋板§7時限制§f物品§7到特定數量。", + "item.gtceu.rock_salt_dust": "岩鹽", + "item.gtceu.rod_extruder_mold": "擠壓模具(桿)", + "item.gtceu.rod_extruder_mold.tooltip": "§7用來製作桿的擠壓模具", + "item.gtceu.rod_long_extruder_mold.tooltip": "§7用來製作長桿的擠壓模具", + "item.gtceu.rotor_casting_mold": "鑄造模具(轉子)", + "item.gtceu.rotor_casting_mold.tooltip": "§7用來製作轉子的鑄造模具", + "item.gtceu.rotor_extruder_mold": "擠壓模具(轉子)", + "item.gtceu.rotor_extruder_mold.tooltip": "§7用來製作轉子的擠壓模具", + "item.gtceu.rubber_boat": "橡膠木船", + "item.gtceu.rubber_chest_boat": "儲物箱橡膠木船", + "item.gtceu.rubber_gloves": "橡膠手套", + "item.gtceu.salt_dust": "鹽", + "item.gtceu.saw_extruder_mold.tooltip": "§7用來製作鋸的擠壓模具", + "item.gtceu.shovel_extruder_mold.tooltip": "§7用來製作鍬的擠壓模具", + "item.gtceu.shutter_module_cover": "扇板", + "item.gtceu.shutter_module_cover.tooltip": "§7作§f覆蓋板§7時§f阻止§7機器側面的任何§f傳輸§7行為。", + "item.gtceu.silicon_boule": "單晶矽", + "item.gtceu.silicon_boule.tooltip": "§7電路原料", + "item.gtceu.silicon_wafer": "矽晶圓", + "item.gtceu.silicon_wafer.tooltip": "§7電路原料", + "item.gtceu.simple_soc": "簡易SoC", + "item.gtceu.simple_soc.tooltip": "§7簡易系統級晶片", + "item.gtceu.simple_soc_wafer": "簡易SoC晶圓", + "item.gtceu.simple_soc_wafer.tooltip": "§7簡易電路原料", + "item.gtceu.small_ash_dust": "小堆灰燼", + "item.gtceu.small_basaltic_mineral_sand_dust": "小堆玄武岩礦砂", + "item.gtceu.small_bentonite_dust": "小堆膨潤土", + "item.gtceu.small_blaze_dust": "小堆烈焰粉", + "item.gtceu.small_bone_dust": "小堆骨粉", + "item.gtceu.small_cassiterite_sand_dust": "小堆錫石礦砂", + "item.gtceu.small_dark_ash_dust": "小堆黑色灰燼", + "item.gtceu.small_fullers_earth_dust": "小堆漂白土", + "item.gtceu.small_garnet_sand_dust": "小堆石榴石砂", + "item.gtceu.small_gear_casting_mold": "鑄造模具(小型齒輪)", + "item.gtceu.small_gear_extruder_mold": "擠壓模具(小型齒輪)", + "item.gtceu.small_glauconite_sand_dust": "小堆海綠石砂", + "item.gtceu.small_granitic_mineral_sand_dust": "小堆花崗岩礦砂", + "item.gtceu.small_gunpowder_dust": "小堆火藥", + "item.gtceu.small_ice_dust": "小堆碎冰", + "item.gtceu.small_inert_metal_mixture_dust": "小堆惰性金屬混合物", + "item.gtceu.small_iridium_metal_residue_dust": "小堆銥金屬渣", + "item.gtceu.small_meat_dust": "小堆肉末", + "item.gtceu.small_palladium_raw_dust": "小堆粗鈀粉", + "item.gtceu.small_paper_dust": "小堆紙屑", + "item.gtceu.small_pipe_extruder_mold": "擠壓模具(小型管道)", + "item.gtceu.small_pitchblende_dust": "小堆瀝青鈾礦", + "item.gtceu.small_platinum_group_sludge_dust": "小堆鉑系礦泥", + "item.gtceu.small_platinum_raw_dust": "小堆粗鉑粉", + "item.gtceu.small_platinum_sludge_residue_dust": "小堆鉑泥渣", + "item.gtceu.small_quartz_sand_dust": "小堆石英砂", + "item.gtceu.small_rare_earth_dust": "小堆稀土", + "item.gtceu.small_rarest_metal_mixture_dust": "小堆稀有金屬混合物", + "item.gtceu.small_rock_salt_dust": "小堆岩鹽", + "item.gtceu.small_salt_dust": "小堆鹽", + "item.gtceu.small_sugar_dust": "小堆糖", + "item.gtceu.small_talc_dust": "小堆滑石", + "item.gtceu.small_treated_wood_dust": "小堆防腐木漿", + "item.gtceu.small_wheat_dust": "小堆麵粉", + "item.gtceu.small_wood_dust": "小堆木漿", + "item.gtceu.smd_capacitor": "貼片電容", + "item.gtceu.smd_capacitor.tooltip": "§7電子元件", + "item.gtceu.smd_diode": "貼片二極體", + "item.gtceu.smd_diode.tooltip": "§7電子元件", + "item.gtceu.smd_inductor": "貼片電感", + "item.gtceu.smd_inductor.tooltip": "§7電子元件", + "item.gtceu.smd_resistor": "貼片電阻", + "item.gtceu.smd_resistor.tooltip": "§7電子元件", + "item.gtceu.smd_transistor": "貼片電晶體", + "item.gtceu.smd_transistor.tooltip": "§7電子元件", + "item.gtceu.soc": "SoC", + "item.gtceu.soc.tooltip": "§7系統級晶片", + "item.gtceu.soc_wafer": "SoC晶圓", + "item.gtceu.soc_wafer.tooltip": "§7基礎電路原料", + "item.gtceu.solar_panel": "太陽能板", + "item.gtceu.solar_panel.tooltip.0": "§7願太陽與你同在。", + "item.gtceu.solar_panel.tooltip.1": "§7作§f覆蓋板§7時利用§e太陽§7生產§f能量§7。", + "item.gtceu.solvent_spray_can": "噴漆罐(溶劑)", + "item.gtceu.stainless_steel_fluid_cell": "不鏽鋼單元", + "item.gtceu.steel_fluid_cell": "鋼單元", + "item.gtceu.steel_minecart_wheels": "鋼礦車車輪", + "item.gtceu.stem_cells": "幹細胞", + "item.gtceu.stem_cells.tooltip": "§7智慧原料", + "item.gtceu.sticky_resin": "黏性樹脂", + "item.gtceu.storage_cover": "儲存覆蓋板", + "item.gtceu.sugar_gem": "方糖", + "item.gtceu.sus_record": "音樂唱片", + "item.gtceu.sus_record.desc": "可疑!", + "item.gtceu.sword_extruder_mold.tooltip": "§7用來製作劍刃的擠壓模具", + "item.gtceu.tag_filter.tooltip.0": "§7作§f覆蓋板§7時以§f礦物詞典§7過濾§f物品§7的輸入/輸出。", + "item.gtceu.tag_filter.tooltip.1": "§7亦可用於§f傳送帶§7與§f機械臂§7。", + "item.gtceu.talc_dust": "滑石", + "item.gtceu.tantalum_capacitor": "鉭電容", + "item.gtceu.terminal": "終端", + "item.gtceu.terminal.tooltip": "潛行右擊多方塊控制器以自動搭建此多方塊結構", + "item.gtceu.tiny_ash_dust": "小撮灰燼", + "item.gtceu.tiny_basaltic_mineral_sand_dust": "小撮玄武岩礦砂", + "item.gtceu.tiny_bentonite_dust": "小撮膨潤土", + "item.gtceu.tiny_blaze_dust": "小撮烈焰粉", + "item.gtceu.tiny_bone_dust": "小撮骨粉", + "item.gtceu.tiny_cassiterite_sand_dust": "小撮錫石礦砂", + "item.gtceu.tiny_dark_ash_dust": "小撮黑色灰燼", + "item.gtceu.tiny_fullers_earth_dust": "小撮漂白土", + "item.gtceu.tiny_garnet_sand_dust": "小撮石榴石砂", + "item.gtceu.tiny_glauconite_sand_dust": "小撮海綠石砂", + "item.gtceu.tiny_granitic_mineral_sand_dust": "小撮花崗岩礦砂", + "item.gtceu.tiny_gunpowder_dust": "小撮火藥", + "item.gtceu.tiny_ice_dust": "小撮碎冰", + "item.gtceu.tiny_inert_metal_mixture_dust": "小撮惰性金屬混合物", + "item.gtceu.tiny_iridium_metal_residue_dust": "小撮銥金屬渣", + "item.gtceu.tiny_meat_dust": "小撮肉末", + "item.gtceu.tiny_palladium_raw_dust": "小撮粗鈀粉", + "item.gtceu.tiny_paper_dust": "小撮紙屑", + "item.gtceu.tiny_pipe_extruder_mold": "擠壓模具(微型管道)", + "item.gtceu.tiny_pitchblende_dust": "小撮瀝青鈾礦", + "item.gtceu.tiny_platinum_group_sludge_dust": "小撮鉑系礦泥", + "item.gtceu.tiny_platinum_raw_dust": "小撮粗鉑粉", + "item.gtceu.tiny_platinum_sludge_residue_dust": "小撮鉑泥渣", + "item.gtceu.tiny_quartz_sand_dust": "小撮石英砂", + "item.gtceu.tiny_rare_earth_dust": "小撮稀土", + "item.gtceu.tiny_rarest_metal_mixture_dust": "小撮稀有金屬混合物", + "item.gtceu.tiny_rock_salt_dust": "小撮岩鹽", + "item.gtceu.tiny_salt_dust": "小撮鹽", + "item.gtceu.tiny_sugar_dust": "小撮糖", + "item.gtceu.tiny_talc_dust": "小撮滑石", + "item.gtceu.tiny_treated_wood_dust": "小撮防腐木漿", + "item.gtceu.tiny_wheat_dust": "小撮麵粉", + "item.gtceu.tiny_wood_dust": "小撮木漿", + "item.gtceu.titanium_fluid_cell": "鈦單元", + "item.gtceu.tool.aoe.columns": "行", + "item.gtceu.tool.aoe.layers": "層", + "item.gtceu.tool.aoe.rows": "列", + "item.gtceu.tool.axe": "%s斧", + "item.gtceu.tool.behavior.aoe_mining": "§5作用範圍:§f%sx%sx%s", + "item.gtceu.tool.behavior.block_rotation": "§2精械師傅:§f旋轉方塊", + "item.gtceu.tool.behavior.crop_harvesting": "§a莊稼收割:§f收穫成熟的作物", + "item.gtceu.tool.behavior.damage_boost": "§4傷害增益:§f對%s造成額外傷害", + "item.gtceu.tool.behavior.grass_path": "§e園林策劃:§f製造草徑", + "item.gtceu.tool.behavior.ground_tilling": "§e耕地農夫:§f耕耘土地", + "item.gtceu.tool.behavior.plunger": "§9水管工人:§f清除流體", + "item.gtceu.tool.behavior.rail_rotation": "§e鐵路技工:§f旋轉軌道", + "item.gtceu.tool.behavior.relocate_mining": "§2磁力吸引:§f採掘的方塊進入物品欄", + "item.gtceu.tool.behavior.remove_wax": "§6清潔試劑:§f脫蠟", + "item.gtceu.tool.behavior.scrape": "§b拋光工藝:§f除鏽", + "item.gtceu.tool.behavior.shield_disable": "§c野獸蠻攻:§f無視盾牌", + "item.gtceu.tool.behavior.silk_ice": "§b切冰利刃:§f絲綢之觸採集冰塊", + "item.gtceu.tool.behavior.strip_log": "§5林業工匠:§f剝去原木的表皮", + "item.gtceu.tool.behavior.torch_place": "§e洞窟探客:§f右擊放置火把", + "item.gtceu.tool.behavior.tree_felling": "§4伐木好手:§f連鎖砍樹", + "item.gtceu.tool.butchery_knife": "%s屠刀", + "item.gtceu.tool.butchery_knife.tooltip": "§8攻擊速度較慢", + "item.gtceu.tool.buzzsaw": "%s圓鋸(§7LV§r)", + "item.gtceu.tool.buzzsaw.tooltip": "§8並不適合用來採掘方塊", + "item.gtceu.tool.crowbar": "%s撬棍", + "item.gtceu.tool.crowbar.tooltip": "§8卸下覆蓋板", + "item.gtceu.tool.ev_drill": "%s電鑽(§5EV§r)", + "item.gtceu.tool.file": "%s銼", + "item.gtceu.tool.hammer": "%s鍛造錘", + "item.gtceu.tool.hammer.tooltip": "§8錘碎而非採掘方塊", + "item.gtceu.tool.harvest_level.0": "§8木", + "item.gtceu.tool.harvest_level.1": "§7石頭", + "item.gtceu.tool.harvest_level.2": "§a鐵", + "item.gtceu.tool.harvest_level.3": "§b鑽石", + "item.gtceu.tool.harvest_level.4": "§d獄髓", + "item.gtceu.tool.harvest_level.5": "§9鏗鈾", + "item.gtceu.tool.harvest_level.6": "§c中子素", + "item.gtceu.tool.hoe": "%s鋤", + "item.gtceu.tool.hv_chainsaw": "%s鏈鋸(§6HV§r)", + "item.gtceu.tool.hv_drill": "%s電鑽(§6HV§r)", + "item.gtceu.tool.hv_wirecutter": "%s剪線鉗(§6HV§r)", + "item.gtceu.tool.hv_wrench": "%s扳手(§6HV§r)", + "item.gtceu.tool.hv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.iv_drill": "%s電鑽(§9IV§r)", + "item.gtceu.tool.iv_wirecutter": "%s剪線鉗(§9IV§r)", + "item.gtceu.tool.iv_wrench": "%s扳手(§9IV§r)", + "item.gtceu.tool.iv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.knife": "%s刀", + "item.gtceu.tool.lighter.platinum.tooltip": "§7上面刻著一位知名的惡作劇大師", + "item.gtceu.tool.lv_chainsaw": "%s鏈鋸(§7LV§r)", + "item.gtceu.tool.lv_drill": "%s電鑽(§7LV§r)", + "item.gtceu.tool.lv_screwdriver": "%s螺絲起子(§7LV§r)", + "item.gtceu.tool.lv_screwdriver.tooltip": "§8調整覆蓋板和機器", + "item.gtceu.tool.lv_wirecutter": "%s剪線鉗(§7LV§r)", + "item.gtceu.tool.lv_wrench": "%s扳手(§7LV§r)", + "item.gtceu.tool.lv_wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.tool.mallet": "%s軟錘", + "item.gtceu.tool.mallet.tooltip.0": "§8潛行以在當前配方完成後暫停機器。", + "item.gtceu.tool.mallet.tooltip.1": "§8關/開機", + "item.gtceu.tool.matchbox.tooltip": "§7別把它當成玩具車了", + "item.gtceu.tool.mining_hammer": "%s採礦錘", + "item.gtceu.tool.mining_hammer.tooltip": "§8一次性開採大片區域(除非你蹲下)", + "item.gtceu.tool.mortar": "%s研缽", + "item.gtceu.tool.mv_chainsaw": "%s鏈鋸(§bMV§r)", + "item.gtceu.tool.mv_drill": "%s電鑽(§bMV§r)", + "item.gtceu.tool.pickaxe": "%s鎬", + "item.gtceu.tool.plunger": "%s搋子", + "item.gtceu.tool.plunger.tooltip": "§8從機器中抽除流體", + "item.gtceu.tool.replace_tool_head": "在合成欄用新的工具頭替換", + "item.gtceu.tool.rolling_pin": "%s擀麵棍", + "item.gtceu.tool.saw": "%s鋸", + "item.gtceu.tool.screwdriver": "%s螺絲起子", + "item.gtceu.tool.screwdriver.tooltip": "§8調整覆蓋板和機器", + "item.gtceu.tool.scythe": "%s鐮刀", + "item.gtceu.tool.scythe.tooltip": "§8因為鐮刀(scythe)沒有意義(sense)", + "item.gtceu.tool.shears": "%s剪刀", + "item.gtceu.tool.shovel": "%s鍬", + "item.gtceu.tool.spade": "%s鏟", + "item.gtceu.tool.spade.tooltip": "§8一次性開採大片區域(除非你蹲下)", + "item.gtceu.tool.sword": "%s劍", + "item.gtceu.tool.tooltip.attack_damage": "§c攻擊傷害§r:%s", + "item.gtceu.tool.tooltip.attack_speed": "§9攻擊速度§r:%s", + "item.gtceu.tool.tooltip.crafting_uses": "§a合成耐久度§r:%s", + "item.gtceu.tool.tooltip.general_uses": "§b耐久度§r:%s", + "item.gtceu.tool.tooltip.harvest_level": "§e採掘等級:%s", + "item.gtceu.tool.tooltip.harvest_level_extra": "§e採掘等級:%s§f(%s§f)", + "item.gtceu.tool.tooltip.max_uses": "§e最大耐久度§r:%s", + "item.gtceu.tool.tooltip.mining_speed": "§d採掘速度§r:%s", + "item.gtceu.tool.tooltip.repair_info": "§8按住SHIFT顯示修復詳情", + "item.gtceu.tool.tooltip.repair_material": "§8修復材料§r:§f§a%s", + "item.gtceu.tool.usable_as": "§8可用作§r:§f%s", + "item.gtceu.tool.wire_cutter": "%s剪線鉗", + "item.gtceu.tool.wrench": "%s扳手", + "item.gtceu.tool.wrench.tooltip": "§8按住左鍵以拆卸機器", + "item.gtceu.transistor": "電晶體", + "item.gtceu.transistor.tooltip": "§7基礎電子元件", + "item.gtceu.treated_wood_boat": "防腐木船", + "item.gtceu.treated_wood_bolt": "短防腐木棍", + "item.gtceu.treated_wood_chest_boat": "儲物箱防腐木船", + "item.gtceu.treated_wood_dust": "防腐木漿", + "item.gtceu.treated_wood_plate": "防腐木材", + "item.gtceu.treated_wood_rod": "防腐木棍", + "item.gtceu.tungsten_grinding_head": "鎢研磨頭", + "item.gtceu.tungsten_steel_fluid_cell": "鎢鋼單元", + "item.gtceu.turbine_rotor": "渦輪轉子", + "item.gtceu.turbine_rotor.tooltip": "供渦輪機使用的渦輪轉子", + "item.gtceu.uev_conveyor_module": "§aUEV§r傳送帶", + "item.gtceu.uev_electric_motor": "§aUEV§r電動馬達", + "item.gtceu.uev_electric_piston": "§aUEV§r電力活塞", + "item.gtceu.uev_electric_pump": "§aUEV§r電動泵", + "item.gtceu.uev_emitter": "§aUEV§r發射器", + "item.gtceu.uev_field_generator": "§aUEV§r力場發生器", + "item.gtceu.uev_fluid_regulator": "§aUEV§r流體調節器", + "item.gtceu.uev_robot_arm": "§aUEV§r機械臂", + "item.gtceu.uev_sensor": "§aUEV§r感測器", + "item.gtceu.uev_voltage_coil.tooltip": "超凡線圈", + "item.gtceu.uhpic_chip": "UHPIC晶片", + "item.gtceu.uhpic_chip.tooltip": "§7超高功率積體電路", + "item.gtceu.uhpic_wafer": "UHPIC晶圓", + "item.gtceu.uhpic_wafer.tooltip": "§7超高功率積體電路原料", + "item.gtceu.uhv_conveyor_module": "§4UHV§r傳送帶", + "item.gtceu.uhv_electric_motor": "§4UHV§r電動馬達", + "item.gtceu.uhv_electric_piston": "§4UHV§r電力活塞", + "item.gtceu.uhv_electric_pump": "§4UHV§r電動泵", + "item.gtceu.uhv_emitter": "§4UHV§r發射器", + "item.gtceu.uhv_field_generator": "§4UHV§r力場發生器", + "item.gtceu.uhv_fluid_regulator": "§4UHV§r流體調節器", + "item.gtceu.uhv_robot_arm": "§4UHV§r機械臂", + "item.gtceu.uhv_sensor": "§4UHV§r感測器", + "item.gtceu.uhv_voltage_coil.tooltip": "極致線圈", + "item.gtceu.uiv_conveyor_module": "§2UIV§r傳送帶", + "item.gtceu.uiv_electric_motor": "§2UIV§r電動馬達", + "item.gtceu.uiv_electric_piston": "§2UIV§r電力活塞", + "item.gtceu.uiv_electric_pump": "§2UIV§r電動泵", + "item.gtceu.uiv_emitter": "§2UIV§r發射器", + "item.gtceu.uiv_field_generator": "§2UIV§r力場發生器", + "item.gtceu.uiv_fluid_regulator": "§2UIV§r流體調節器", + "item.gtceu.uiv_robot_arm": "§2UIV§r機械臂", + "item.gtceu.uiv_sensor": "§2UIV§r感測器", + "item.gtceu.uiv_voltage_coil.tooltip": "瘋狂線圈", + "item.gtceu.ulpic_chip": "ULPIC晶片", + "item.gtceu.ulpic_chip.tooltip": "§7超低功率積體電路", + "item.gtceu.ulpic_wafer": "ULPIC晶圓", + "item.gtceu.ulpic_wafer.tooltip": "§7超低功率積體電路原料", + "item.gtceu.ulv_solar_panel": "超低壓太陽能板(§8ULV§r)", + "item.gtceu.ulv_tantalum_battery.tooltip": "§7可充電電池", + "item.gtceu.ulv_voltage_coil": "超低壓線圈(§8ULV§r)", + "item.gtceu.ulv_voltage_coil.tooltip": "初級線圈", + "item.gtceu.universal_fluid_cell": "通用單元", + "item.gtceu.uv_battery_hull": "大型超能矽岩電池外殼", + "item.gtceu.uv_battery_hull.tooltip": "§7一個空的§3UV§7電池外殼", + "item.gtceu.uv_conveyor_module": "§3UV§r傳送帶", + "item.gtceu.uv_electric_motor": "§3UV§r電動馬達", + "item.gtceu.uv_electric_piston": "§3UV§r電力活塞", + "item.gtceu.uv_electric_pump": "§3UV§r電動泵", + "item.gtceu.uv_emitter": "§3UV§r發射器", + "item.gtceu.uv_field_generator": "§3UV§r力場發生器", + "item.gtceu.uv_fluid_regulator": "§3UV§r流體調節器", + "item.gtceu.uv_naquadria_battery": "大型超能矽岩電池", + "item.gtceu.uv_naquadria_battery.tooltip": "§7可充電電池", + "item.gtceu.uv_robot_arm": "§3UV§r機械臂", + "item.gtceu.uv_sensor": "§3UV§r感測器", + "item.gtceu.uv_solar_panel": "極限壓太陽能板(§3UV§r)", + "item.gtceu.uv_voltage_coil": "極限壓線圈(§3UV§r)", + "item.gtceu.uv_voltage_coil.tooltip": "終極線圈", + "item.gtceu.uxv_conveyor_module": "§eUXV§r傳送帶", + "item.gtceu.uxv_electric_motor": "§eUXV§r電動馬達", + "item.gtceu.uxv_electric_piston": "§eUXV§r電力活塞", + "item.gtceu.uxv_electric_pump": "§eUXV§r§r電動泵", + "item.gtceu.uxv_emitter": "§eUXV§r發射器", + "item.gtceu.uxv_field_generator": "§eUXV§r力場發生器", + "item.gtceu.uxv_fluid_regulator": "§eUXV§r流體調節器", + "item.gtceu.uxv_robot_arm": "§eUXV§r機械臂", + "item.gtceu.uxv_sensor": "§eUXV§r感測器", + "item.gtceu.uxv_voltage_coil.tooltip": "史詩線圈", + "item.gtceu.vacuum_tube": "真空管", + "item.gtceu.vacuum_tube.tooltip.0": "§7技術上是二極體", + "item.gtceu.vacuum_tube.tooltip.1": "§cULV等級", + "item.gtceu.wetware_circuit_board": "溼件電路基板", + "item.gtceu.wetware_circuit_board.tooltip": "§7維生之板", + "item.gtceu.wetware_printed_circuit_board": "溼件印刷電路基板", + "item.gtceu.wetware_printed_circuit_board.tooltip": "§7維生之板", + "item.gtceu.wetware_processor": "溼件處理器", + "item.gtceu.wetware_processor.tooltip.0": "§7祂在看我嗎?", + "item.gtceu.wetware_processor.tooltip.1": "§4LuV級電路", + "item.gtceu.wetware_processor_assembly": "溼件處理器叢集", + "item.gtceu.wetware_processor_assembly.tooltip.0": "§7可以玩Minecraft", + "item.gtceu.wetware_processor_assembly.tooltip.1": "§4ZPM級電路", + "item.gtceu.wetware_processor_computer": "溼件處理器超級電腦", + "item.gtceu.wetware_processor_computer.tooltip.0": "§7肉體與機器的終極結合", + "item.gtceu.wetware_processor_computer.tooltip.1": "§4UV級電路", + "item.gtceu.wetware_processor_mainframe": "溼件處理器主機", + "item.gtceu.wetware_processor_mainframe.tooltip.0": "§7千載獨步,惟公一人", + "item.gtceu.wetware_processor_mainframe.tooltip.1": "§4UHV級電路", + "item.gtceu.wheat_dust": "麵粉", + "item.gtceu.white_dye_spray_can": "噴漆罐(白色)", + "item.gtceu.wire_extruder_mold": "擠壓模具(導線)", + "item.gtceu.wire_extruder_mold.tooltip": "§7用來製作導線的擠壓模具", + "item.gtceu.wood_bolt": "短木棍", + "item.gtceu.wood_dust": "木漿", + "item.gtceu.wood_plate": "木板", + "item.gtceu.yellow_dye_spray_can": "噴漆罐(黃色)", + "item.gtceu.yellow_glass_lens": "玻璃透鏡(黃色)", + "item.gtceu.zero_point_module": "零點模組", + "item.gtceu.zpm_battery_hull": "中型超能矽岩電池外殼", + "item.gtceu.zpm_battery_hull.tooltip": "§7一個空的§fZPM§7電池外殼", + "item.gtceu.zpm_conveyor_module": "§cZPM§r傳送帶", + "item.gtceu.zpm_electric_motor": "§cZPM§r電動馬達", + "item.gtceu.zpm_electric_piston": "§cZPM§r電力活塞", + "item.gtceu.zpm_electric_pump": "§cZPM§r電動泵", + "item.gtceu.zpm_emitter": "§cZPM§r發射器", + "item.gtceu.zpm_field_generator": "§cZPM§r力場發生器", + "item.gtceu.zpm_fluid_regulator": "§cZPM§r流體調節器", + "item.gtceu.zpm_naquadria_battery": "中型超能矽岩電池", + "item.gtceu.zpm_naquadria_battery.tooltip": "§7可充電電池", + "item.gtceu.zpm_robot_arm": "§cZPM§r機械臂", + "item.gtceu.zpm_sensor": "§cZPM§r感測器", + "item.gtceu.zpm_solar_panel": "零點壓太陽能板(§cZPM§r)", + "item.gtceu.zpm_voltage_coil": "零點壓線圈(§cZPM§r)", + "item.gtceu.zpm_voltage_coil.tooltip": "超級線圈", + "item.invalid.name": "無效物品", + "item.netherrack_nether_quartz": "地獄石英礦", + "item.toggle.advanced.info.tooltip": "§8<按住Shift查閱已儲存設定資訊>", + "itemGroup.gtceu.decoration": "格雷科技 | 裝飾方塊", + "itemGroup.gtceu.item": "格雷科技 | 物品", + "itemGroup.gtceu.machine": "格雷科技 | 機器", + "itemGroup.gtceu.material_block": "格雷科技 | 材料-方塊", + "itemGroup.gtceu.material_fluid": "格雷科技 | 材料-流體容器", + "itemGroup.gtceu.material_item": "格雷科技 | 材料-物品", + "itemGroup.gtceu.material_pipe": "格雷科技 | 材料-管道", + "itemGroup.gtceu.tool": "格雷科技 | 工具", + "ldlib.gui.editor.group.widget.gtm_container": "GTM容器小部件", + "ldlib.gui.editor.register.editor.gtceu.mui": "機器UI專案", + "ldlib.gui.editor.register.editor.gtceu.rtui": "配方型別UI專案", + "ldlib.gui.editor.register.editor.gtceu.template_tab": "模板", + "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "GTM流體槽位", + "ldlib.gui.editor.register.widget.container.gtm_item_slot": "GTM物品槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "GTM幻影流體槽位", + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "GTM幻影物品槽位", + "mataarmor.hud.supply_mode": "供能模式:%s", + "material.gtceu.acetic_acid": "乙酸", + "material.gtceu.acetic_anhydride": "乙酸酐", + "material.gtceu.acetone": "丙酮", + "material.gtceu.acidic_enriched_naquadah_solution": "酸性富集矽岩溶液", + "material.gtceu.acidic_naquadria_solution": "酸性超能矽岩溶液", + "material.gtceu.acidic_osmium_solution": "酸性鋨溶液", + "material.gtceu.actinium": "錒", + "material.gtceu.activated_carbon": "活性炭", + "material.gtceu.agar": "瓊脂", + "material.gtceu.air": "空氣", + "material.gtceu.allyl_chloride": "烯丙基氯", + "material.gtceu.almandine": "鐵鋁榴石", + "material.gtceu.aluminium": "鋁", + "material.gtceu.aluminium_sulfite": "亞硫酸鋁", + "material.gtceu.alunite": "明礬石", + "material.gtceu.americium": "鋂", + "material.gtceu.amethyst": "紫水晶", + "material.gtceu.aminophenol": "氨基苯酚", + "material.gtceu.ammonia": "氨", + "material.gtceu.ammonium_chloride": "氯化銨", + "material.gtceu.ammonium_formate": "甲酸銨", + "material.gtceu.andesite": "安山岩", + "material.gtceu.andradite": "鈣鐵榴石", + "material.gtceu.annealed_copper": "退火銅", + "material.gtceu.antimony": "銻", + "material.gtceu.antimony_trifluoride": "三氟化銻", + "material.gtceu.antimony_trioxide": "三氧化二銻", + "material.gtceu.apatite": "磷灰石", + "material.gtceu.aqua_regia": "王水", + "material.gtceu.argon": "氬", + "material.gtceu.arsenic": "砷", + "material.gtceu.arsenic_trioxide": "三氧化二砷", + "material.gtceu.asbestos": "石棉", + "material.gtceu.ash": "灰燼", + "material.gtceu.astatine": "砈", + "material.gtceu.bacteria": "細菌", + "material.gtceu.bacterial_sludge": "細菌漿液", + "material.gtceu.barite": "重晶石", + "material.gtceu.barium": "鋇", + "material.gtceu.barium_sulfide": "硫化鋇", + "material.gtceu.basalt": "玄武岩", + "material.gtceu.basaltic_mineral_sand": "玄武岩礦砂", + "material.gtceu.bastnasite": "氟碳鑭鈰", + "material.gtceu.battery_alloy": "電池合金", + "material.gtceu.bauxite": "鋁土", + "material.gtceu.bentonite": "膨潤土", + "material.gtceu.benzene": "苯", + "material.gtceu.berkelium": "鉳", + "material.gtceu.beryllium": "鈹", + "material.gtceu.bio_diesel": "生物柴油", + "material.gtceu.biomass": "生物質", + "material.gtceu.biotite": "黑雲母", + "material.gtceu.biphenyl": "聯苯", + "material.gtceu.bismuth": "鉍", + "material.gtceu.bismuth_bronze": "鉍青銅", + "material.gtceu.bisphenol_a": "雙酚A", + "material.gtceu.black_bronze": "黑青銅", + "material.gtceu.black_dye": "黑色染料", + "material.gtceu.black_steel": "黑鋼", + "material.gtceu.blackstone": "黑石", + "material.gtceu.blaze": "烈焰", + "material.gtceu.blue_alloy": "藍色合金", + "material.gtceu.blue_dye": "藍色染料", + "material.gtceu.blue_steel": "藍鋼", + "material.gtceu.blue_topaz": "藍黃玉", + "material.gtceu.bohrium": "釒波", + "material.gtceu.bone": "骨頭", + "material.gtceu.borax": "硼砂", + "material.gtceu.bornite": "斑銅", + "material.gtceu.boron": "硼", + "material.gtceu.borosilicate_glass": "硼矽玻璃", + "material.gtceu.brass": "黃銅", + "material.gtceu.brick": "磚", + "material.gtceu.bromine": "溴", + "material.gtceu.bronze": "青銅", + "material.gtceu.brown_dye": "棕色染料", + "material.gtceu.butadiene": "丁二烯", + "material.gtceu.butane": "丁烷", + "material.gtceu.butene": "丁烯", + "material.gtceu.butyraldehyde": "丁醛", + "material.gtceu.cadmium": "鎘", + "material.gtceu.caesium": "銫", + "material.gtceu.calcite": "方解石", + "material.gtceu.calcium": "鈣", + "material.gtceu.calcium_carbonate": "碳酸鈣", + "material.gtceu.calcium_chloride": "氯化鈣", + "material.gtceu.calcium_ferrocyanide": "亞鐵氰化鈣", + "material.gtceu.calcium_hydroxide": "氫氧化鈣", + "material.gtceu.calcium_phosphide": "磷化鈣", + "material.gtceu.californium": "鉲", + "material.gtceu.caprolactam": "己內醯胺", + "material.gtceu.carbon": "碳", + "material.gtceu.carbon_dioxide": "二氧化碳", + "material.gtceu.carbon_monoxide": "一氧化碳", + "material.gtceu.cassiterite": "錫石", + "material.gtceu.cassiterite_sand": "錫石礦砂", + "material.gtceu.cerium": "鈰", + "material.gtceu.certus_quartz": "賽特斯石英", + "material.gtceu.cetane_boosted_diesel": "高十六烷值柴油", + "material.gtceu.chalcocite": "輝銅", + "material.gtceu.chalcopyrite": "黃銅", + "material.gtceu.charcoal": "木炭", + "material.gtceu.charcoal_byproducts": "木炭副產物", + "material.gtceu.chlorine": "氯", + "material.gtceu.chlorobenzene": "氯苯", + "material.gtceu.chloroform": "氯仿", + "material.gtceu.chloromethane": "氯甲烷", + "material.gtceu.chromite": "鉻鐵", + "material.gtceu.chromium": "鉻", + "material.gtceu.chromium_trioxide": "三氧化鉻", + "material.gtceu.cinnabar": "硃砂", + "material.gtceu.clay": "黏土", + "material.gtceu.coal": "煤炭", + "material.gtceu.coal_gas": "煤氣", + "material.gtceu.coal_tar": "煤焦油", + "material.gtceu.cobalt": "鈷", + "material.gtceu.cobalt_brass": "鈷黃銅", + "material.gtceu.cobalt_oxide": "氧化鈷", + "material.gtceu.cobaltite": "輝鈷", + "material.gtceu.cocoa": "可可", + "material.gtceu.coke": "焦煤", + "material.gtceu.collagen": "膠原", + "material.gtceu.concrete": "混凝土", + "material.gtceu.construction_foam": "建築泡沫", + "material.gtceu.cooperite": "謝爾頓", + "material.gtceu.copernicium": "鎶", + "material.gtceu.copper": "銅", + "material.gtceu.creosote": "雜酚油", + "material.gtceu.cumene": "異丙苯", + "material.gtceu.cupric_oxide": "氧化銅", + "material.gtceu.cupronickel": "白銅", + "material.gtceu.curium": "鋦", + "material.gtceu.cyan_dye": "青色染料", + "material.gtceu.cyclohexane": "環己烷", + "material.gtceu.cyclohexanone_oxime": "環己酮肟", + "material.gtceu.damascus_steel": "大馬士革鋼", + "material.gtceu.dark_ash": "黑色灰燼", + "material.gtceu.darmstadtium": "鐽", + "material.gtceu.deepslate": "深板岩", + "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化鈾", + "material.gtceu.deuterium": "氘", + "material.gtceu.diaminobenzidine": "二氨基聯苯胺", + "material.gtceu.diamond": "鑽石", + "material.gtceu.diatomite": "矽藻土", + "material.gtceu.dichlorobenzene": "二氯苯", + "material.gtceu.dichlorobenzidine": "二氯聯苯胺", + "material.gtceu.dichloroethane": "二氯乙烷", + "material.gtceu.diesel": "柴油", + "material.gtceu.diethylenetriamine": "二乙烯三胺", + "material.gtceu.diethylenetriamine_pentaacetonitrile": "二乙烯三胺五乙腈", + "material.gtceu.diethylenetriaminepentaacetic_acid": "二乙烯三胺五乙酸", + "material.gtceu.diluted_hydrochloric_acid": "稀鹽酸", + "material.gtceu.diluted_sulfuric_acid": "稀硫酸", + "material.gtceu.dimethylamine": "二甲胺", + "material.gtceu.dimethylbenzene": "二甲苯", + "material.gtceu.dimethyldichlorosilane": "二甲基二氯矽烷", + "material.gtceu.dimethylhydrazine": "二甲基肼", + "material.gtceu.dinitrogen_tetroxide": "四氧化二氮", + "material.gtceu.diorite": "閃長岩", + "material.gtceu.diphenyl_isophthalate": "間苯二甲酸二苯酯", + "material.gtceu.dissolved_calcium_acetate": "乙酸鈣溶液", + "material.gtceu.distilled_water": "蒸餾水", + "material.gtceu.drilling_fluid": "鑽井液", + "material.gtceu.dubnium": "釒杜", + "material.gtceu.duranium": "鏗鈾", + "material.gtceu.dysprosium": "鏑", + "material.gtceu.echo_shard": "回聲碎片", + "material.gtceu.einsteinium": "鑀", + "material.gtceu.electrotine": "藍石", + "material.gtceu.electrum": "琥珀金", + "material.gtceu.emerald": "綠寶石", + "material.gtceu.ender_air": "終界空氣", + "material.gtceu.ender_eye": "終界之眼", + "material.gtceu.ender_pearl": "終界珍珠", + "material.gtceu.endstone": "終界石", + "material.gtceu.enriched_bacterial_sludge": "富集細菌漿液", + "material.gtceu.enriched_naquadah": "富集矽岩", + "material.gtceu.enriched_naquadah_solution": "富集矽岩溶液", + "material.gtceu.enriched_naquadah_sulfate": "硫酸富集矽岩", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "富集矽岩凱金銪鏗鈾合金", + "material.gtceu.enriched_naquadah_waste": "富集矽岩廢液", + "material.gtceu.enriched_uranium_hexafluoride": "富集六氟化鈾", + "material.gtceu.epichlorohydrin": "環氧氯丙烷", + "material.gtceu.epoxy": "環氧樹脂", + "material.gtceu.erbium": "鉺", + "material.gtceu.ethane": "乙烷", + "material.gtceu.ethanol": "乙醇", + "material.gtceu.ethenone": "乙烯酮", + "material.gtceu.ethyl_tertbutyl_ether": "乙基叔丁基醚", + "material.gtceu.ethylbenzene": "乙苯", + "material.gtceu.ethylene": "乙烯", + "material.gtceu.europium": "銪", + "material.gtceu.fermented_biomass": "發酵生物質", + "material.gtceu.fermium": "鐨", + "material.gtceu.ferrite_mixture": "鐵氧體混合物", + "material.gtceu.ferrosilite": "鐵輝石", + "material.gtceu.fireclay": "耐火黏土", + "material.gtceu.fish_oil": "魚油", + "material.gtceu.flerovium": "鈇", + "material.gtceu.flint": "燧石", + "material.gtceu.fluorine": "氟", + "material.gtceu.fluoroantimonic_acid": "氟銻酸", + "material.gtceu.formaldehyde": "甲醛", + "material.gtceu.formamide": "甲醯胺", + "material.gtceu.formic_acid": "甲酸", + "material.gtceu.francium": "鍅", + "material.gtceu.fullers_earth": "漂白土", + "material.gtceu.gadolinium": "釓", + "material.gtceu.galena": "方鉛", + "material.gtceu.gallium": "鎵", + "material.gtceu.gallium_arsenide": "砷化鎵", + "material.gtceu.gallium_sulfide": "硫化鎵", + "material.gtceu.garnet_sand": "石榴石砂", + "material.gtceu.garnierite": "矽鎂鎳", + "material.gtceu.gasoline": "汽油", + "material.gtceu.gelatin": "明膠", + "material.gtceu.gelatin_mixture": "明膠混合物", + "material.gtceu.germanium": "鍺", + "material.gtceu.glass": "玻璃", + "material.gtceu.glauconite_sand": "海綠石砂", + "material.gtceu.glowstone": "螢石", + "material.gtceu.glue": "膠水", + "material.gtceu.glycerol": "甘油", + "material.gtceu.glyceryl_trinitrate": "硝酸甘油", + "material.gtceu.glycolonitrile": "乙腈", + "material.gtceu.goethite": "針鐵", + "material.gtceu.gold": "金", + "material.gtceu.granite": "花崗岩", + "material.gtceu.granite_red": "紅花崗岩", + "material.gtceu.granitic_mineral_sand": "花崗岩礦砂", + "material.gtceu.graphene": "石墨烯", + "material.gtceu.graphite": "石墨", + "material.gtceu.gray_dye": "灰色染料", + "material.gtceu.green_dye": "綠色染料", + "material.gtceu.green_sapphire": "綠色藍寶石", + "material.gtceu.green_sapphire_slurry": "綠色藍寶石漿液", + "material.gtceu.grossular": "鈣鋁榴石", + "material.gtceu.gunpowder": "火藥", + "material.gtceu.gypsum": "石膏", + "material.gtceu.hafnium": "鉿", + "material.gtceu.hassium": "釒黑", + "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", + "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", + "material.gtceu.heavy_fuel": "重燃油", + "material.gtceu.helium": "氦", + "material.gtceu.helium_3": "氦-3", + "material.gtceu.hematite": "赤鐵", + "material.gtceu.high_octane_gasoline": "高辛烷值汽油", + "material.gtceu.holmium": "鈥", + "material.gtceu.hsla_steel": "HSLA鋼", + "material.gtceu.hsse": "高速鋼-E", + "material.gtceu.hssg": "高速鋼-G", + "material.gtceu.hsss": "高速鋼-S", + "material.gtceu.hydro_cracked_butadiene": "加氫裂解丁二烯", + "material.gtceu.hydro_cracked_butane": "加氫裂解丁烷", + "material.gtceu.hydro_cracked_butene": "加氫裂解丁烯", + "material.gtceu.hydro_cracked_ethane": "加氫裂解乙烷", + "material.gtceu.hydro_cracked_ethylene": "加氫裂解乙烯", + "material.gtceu.hydro_cracked_propane": "加氫裂解丙烷", + "material.gtceu.hydro_cracked_propene": "加氫裂解丙烯", + "material.gtceu.hydrochloric_acid": "鹽酸", + "material.gtceu.hydrofluoric_acid": "氫氟酸", + "material.gtceu.hydrogen": "氫", + "material.gtceu.hydrogen_cyanide": "氰化氫", + "material.gtceu.hydrogen_peroxide": "過氧化氫", + "material.gtceu.hydrogen_sulfide": "硫化氫", + "material.gtceu.hypochlorous_acid": "次氯酸", + "material.gtceu.ice": "冰", + "material.gtceu.ilmenite": "鈦鐵", + "material.gtceu.impure_enriched_naquadah_solution": "含雜富集矽岩溶液", + "material.gtceu.impure_naquadria_solution": "含雜超能矽岩溶液", + "material.gtceu.incoloy_ma_956": "耐熱鉻鐵合金 MA-956", + "material.gtceu.indium": "銦", + "material.gtceu.indium_concentrate": "銦富集溶液", + "material.gtceu.indium_gallium_phosphide": "磷化銦鎵", + "material.gtceu.indium_phosphide": "磷化銦", + "material.gtceu.indium_tin_barium_titanium_cuprate": "銦錫鋇鈦銅氧合金", + "material.gtceu.inert_metal_mixture": "惰性金屬混合物", + "material.gtceu.invar": "殷鋼", + "material.gtceu.iodine": "碘", + "material.gtceu.iridium": "銥", + "material.gtceu.iridium_chloride": "氯化銥", + "material.gtceu.iridium_metal_residue": "銥金屬渣", + "material.gtceu.iron": "鐵", + "material.gtceu.iron_ii_chloride": "氯化亞鐵", + "material.gtceu.iron_iii_chloride": "氯化鐵", + "material.gtceu.isoprene": "異戊二烯", + "material.gtceu.kanthal": "坎塔爾合金", + "material.gtceu.krypton": "氪", + "material.gtceu.kyanite": "藍晶石", + "material.gtceu.lanthanum": "鑭", + "material.gtceu.lapis": "青金石", + "material.gtceu.lapotron": "蘭波頓", + "material.gtceu.lava": "熔岩", + "material.gtceu.lawrencium": "鐒", + "material.gtceu.lazurite": "藍金石", + "material.gtceu.lead": "鉛", + "material.gtceu.lead_zinc_solution": "鉛鋅溶液", + "material.gtceu.lepidolite": "鋰雲母", + "material.gtceu.light_blue_dye": "淺藍色染料", + "material.gtceu.light_fuel": "輕燃油", + "material.gtceu.light_gray_dye": "淺灰色染料", + "material.gtceu.lightly_hydro_cracked_gas": "輕度加氫裂解煉油氣", + "material.gtceu.lightly_hydro_cracked_heavy_fuel": "輕度加氫裂解重燃油", + "material.gtceu.lightly_hydro_cracked_light_fuel": "輕度加氫裂解輕燃油", + "material.gtceu.lightly_hydro_cracked_naphtha": "輕度加氫裂解石腦油", + "material.gtceu.lightly_steam_cracked_gas": "輕度蒸汽裂解煉油氣", + "material.gtceu.lightly_steam_cracked_heavy_fuel": "輕度蒸汽裂解重燃油", + "material.gtceu.lightly_steam_cracked_light_fuel": "輕度蒸汽裂解輕燃油", + "material.gtceu.lightly_steam_cracked_naphtha": "輕度蒸汽裂解石腦油", + "material.gtceu.lime_dye": "淺綠色染料", + "material.gtceu.liquid_air": "液態空氣", + "material.gtceu.liquid_ender_air": "液態終界空氣", + "material.gtceu.liquid_nether_air": "液態地獄空氣", + "material.gtceu.lithium": "鋰", + "material.gtceu.lithium_chloride": "氯化鋰", + "material.gtceu.livermorium": "鉝", + "material.gtceu.lpg": "液化石油氣", + "material.gtceu.lubricant": "潤滑油", + "material.gtceu.lutetium": "鎦", + "material.gtceu.magenta_dye": "洋紅色染料", + "material.gtceu.magnalium": "鎂鋁合金", + "material.gtceu.magnesia": "氧化鎂", + "material.gtceu.magnesite": "菱鎂", + "material.gtceu.magnesium": "鎂", + "material.gtceu.magnesium_chloride": "氯化鎂", + "material.gtceu.magnesium_diboride": "二硼化鎂", + "material.gtceu.magnetic_iron": "磁化鐵", + "material.gtceu.magnetic_neodymium": "磁化釹", + "material.gtceu.magnetic_samarium": "磁化釤", + "material.gtceu.magnetic_steel": "磁化鋼", + "material.gtceu.magnetite": "磁鐵", + "material.gtceu.malachite": "孔雀石", + "material.gtceu.manganese": "錳", + "material.gtceu.manganese_phosphide": "磷化錳", + "material.gtceu.maraging_steel_300": "麻時效鋼-300", + "material.gtceu.marble": "大理石", + "material.gtceu.massicot": "鉛黃", + "material.gtceu.mc_guffium_239": "麥高芬-239", + "material.gtceu.meat": "肉", + "material.gtceu.meitnerium": "䥑", + "material.gtceu.mendelevium": "鍆", + "material.gtceu.mercury": "汞", + "material.gtceu.mercury_barium_calcium_cuprate": "汞鋇鈣銅氧化物", + "material.gtceu.metal_mixture": "金屬混合物", + "material.gtceu.methane": "甲烷", + "material.gtceu.methanol": "甲醇", + "material.gtceu.methyl_acetate": "乙酸甲酯", + "material.gtceu.mica": "雲母", + "material.gtceu.milk": "牛奶", + "material.gtceu.mirabilite": "芒硝", + "material.gtceu.molybdenite": "輝鉬", + "material.gtceu.molybdenum": "鉬", + "material.gtceu.molybdenum_disilicide": "二矽化鉬", + "material.gtceu.monazite": "獨居石", + "material.gtceu.monochloramine": "氯胺", + "material.gtceu.moscovium": "鏌", + "material.gtceu.mutagen": "誘變劑", + "material.gtceu.naphtha": "石腦油", + "material.gtceu.naphthalene": "萘", + "material.gtceu.naquadah": "矽岩", + "material.gtceu.naquadah_alloy": "矽岩合金", + "material.gtceu.naquadria": "超能矽岩", + "material.gtceu.naquadria_solution": "超能矽岩溶液", + "material.gtceu.naquadria_sulfate": "硫酸超能矽岩", + "material.gtceu.naquadria_waste": "超能矽岩廢液", + "material.gtceu.natural_gas": "天然氣", + "material.gtceu.neodymium": "釹", + "material.gtceu.neon": "氖", + "material.gtceu.neptunium": "錼", + "material.gtceu.nether_air": "地獄空氣", + "material.gtceu.nether_quartz": "地獄石英", + "material.gtceu.nether_star": "地獄之星", + "material.gtceu.netherite": "獄髓", + "material.gtceu.netherrack": "地獄岩", + "material.gtceu.neutronium": "中子素", + "material.gtceu.nichrome": "鎳鉻合金", + "material.gtceu.nickel": "鎳", + "material.gtceu.nickel_zinc_ferrite": "鎳鋅鐵氧體", + "material.gtceu.nihonium": "鉨", + "material.gtceu.niobium": "鈮", + "material.gtceu.niobium_nitride": "氮化鈮", + "material.gtceu.niobium_titanium": "鈮鈦合金", + "material.gtceu.nitration_mixture": "硝酸混酸", + "material.gtceu.nitric_acid": "硝酸", + "material.gtceu.nitric_oxide": "一氧化氮", + "material.gtceu.nitrobenzene": "硝基苯", + "material.gtceu.nitrochlorobenzene": "硝基氯苯", + "material.gtceu.nitrogen": "氮", + "material.gtceu.nitrogen_dioxide": "二氧化氮", + "material.gtceu.nitrosyl_chloride": "亞硝醯氯", + "material.gtceu.nitrous_oxide": "一氧化二氮", + "material.gtceu.nobelium": "鍩", + "material.gtceu.obsidian": "黑曜石", + "material.gtceu.octane": "辛烷", + "material.gtceu.oganesson": "氣奧", + "material.gtceu.oil": "石油", + "material.gtceu.oil_heavy": "重油", + "material.gtceu.oil_light": "輕油", + "material.gtceu.oil_medium": "原油", + "material.gtceu.oilsands": "油砂", + "material.gtceu.olivine": "橄欖石", + "material.gtceu.opal": "貓眼石", + "material.gtceu.orange_dye": "橙色染料", + "material.gtceu.osmiridium": "銥鋨合金", + "material.gtceu.osmium": "鋨", + "material.gtceu.osmium_tetroxide": "四氧化鋨", + "material.gtceu.oxygen": "氧", + "material.gtceu.palladium": "鈀", + "material.gtceu.palladium_raw": "粗鈀", + "material.gtceu.paper": "紙", + "material.gtceu.paracetamol": "對乙醯氨基酚", + "material.gtceu.pcb_coolant": "多氯聯苯冷卻液 ", + "material.gtceu.pentlandite": "鎳黃鐵", + "material.gtceu.perlite": "珍珠岩", + "material.gtceu.phenol": "苯酚", + "material.gtceu.phosphate": "磷酸鹽", + "material.gtceu.phosphoric_acid": "磷酸", + "material.gtceu.phosphorus": "磷", + "material.gtceu.phosphorus_pentoxide": "五氧化二磷", + "material.gtceu.phthalic_acid": "鄰苯二甲酸", + "material.gtceu.pink_dye": "粉紅色染料", + "material.gtceu.pitchblende": "瀝青鈾", + "material.gtceu.platinum": "鉑", + "material.gtceu.platinum_group_sludge": "鉑系礦泥", + "material.gtceu.platinum_raw": "粗鉑", + "material.gtceu.platinum_sludge_residue": "鉑泥渣", + "material.gtceu.plutonium": "鈽", + "material.gtceu.plutonium_241": "鈽-241", + "material.gtceu.pollucite": "銫榴石", + "material.gtceu.polonium": "釙", + "material.gtceu.polybenzimidazole": "聚苯並咪唑", + "material.gtceu.polycaprolactam": "聚己內醯胺", + "material.gtceu.polychlorinated_biphenyl": "多氯聯苯", + "material.gtceu.polydimethylsiloxane": "聚二甲基矽氧烷", + "material.gtceu.polyethylene": "聚乙烯", + "material.gtceu.polyphenylene_sulfide": "聚苯硫醚", + "material.gtceu.polytetrafluoroethylene": "聚四氟乙烯", + "material.gtceu.polyvinyl_acetate": "聚乙酸乙烯酯", + "material.gtceu.polyvinyl_butyral": "聚乙烯醇縮丁醛", + "material.gtceu.polyvinyl_chloride": "聚氯乙烯", + "material.gtceu.potash": "鉀鹼", + "material.gtceu.potassium": "鉀", + "material.gtceu.potassium_carbonate": "碳酸鉀", + "material.gtceu.potassium_cyanide": "氰化鉀", + "material.gtceu.potassium_dichromate": "重鉻酸鉀", + "material.gtceu.potassium_feldspar": "鉀長石", + "material.gtceu.potassium_ferrocyanide": "亞鐵氰化鉀", + "material.gtceu.potassium_hydroxide": "氫氧化鉀", + "material.gtceu.potassium_iodide": "碘化鉀", + "material.gtceu.potassium_sulfate": "硫酸鉀", + "material.gtceu.potin": "粗青銅合金", + "material.gtceu.powellite": "鉬鈣", + "material.gtceu.praseodymium": "鐠", + "material.gtceu.promethium": "鉕", + "material.gtceu.propane": "丙烷", + "material.gtceu.propene": "丙烯", + "material.gtceu.protactinium": "鏷", + "material.gtceu.prussian_blue": "普魯士藍", + "material.gtceu.purple_dye": "紫色染料", + "material.gtceu.pyrite": "黃鐵", + "material.gtceu.pyrochlore": "燒綠石", + "material.gtceu.pyrolusite": "軟錳", + "material.gtceu.pyrope": "鎂鋁榴石", + "material.gtceu.quartz_sand": "石英砂", + "material.gtceu.quartzite": "石英岩", + "material.gtceu.quicklime": "生石灰", + "material.gtceu.rad_away": "消輻寧", + "material.gtceu.radium": "鐳", + "material.gtceu.radon": "氡", + "material.gtceu.rare_earth": "稀土", + "material.gtceu.rarest_metal_mixture": "稀有金屬混合物", + "material.gtceu.raw_gasoline": "粗汽油", + "material.gtceu.raw_growth_medium": "培養基原液", + "material.gtceu.raw_rubber": "生橡膠", + "material.gtceu.raw_styrene_butadiene_rubber": "生丁苯橡膠", + "material.gtceu.realgar": "雄黃", + "material.gtceu.red_alloy": "紅色合金", + "material.gtceu.red_dye": "紅色染料", + "material.gtceu.red_garnet": "紅石榴石", + "material.gtceu.red_steel": "紅鋼", + "material.gtceu.redrock": "紅岩", + "material.gtceu.redstone": "紅石", + "material.gtceu.refinery_gas": "煉油氣", + "material.gtceu.reinforced_epoxy_resin": "強化環氧樹脂", + "material.gtceu.rhenium": "錸", + "material.gtceu.rhodium": "銠", + "material.gtceu.rhodium_plated_palladium": "鍍銠鈀", + "material.gtceu.rhodium_sulfate": "硫酸銠", + "material.gtceu.rock_salt": "岩鹽", + "material.gtceu.rocket_fuel": "火箭燃料", + "material.gtceu.roentgenium": "錀", + "material.gtceu.rose_gold": "玫瑰金", + "material.gtceu.rtm_alloy": "釕鎢鉬合金", + "material.gtceu.rubber": "橡膠", + "material.gtceu.rubidium": "銣", + "material.gtceu.ruby": "紅寶石", + "material.gtceu.ruby_slurry": "紅寶石漿液", + "material.gtceu.ruridit": "釕銥合金", + "material.gtceu.ruthenium": "釕", + "material.gtceu.ruthenium_tetroxide": "四氧化釕", + "material.gtceu.ruthenium_trinium_americium_neutronate": "釕凱金鋂中子素氧化物", + "material.gtceu.rutherfordium": "鑪", + "material.gtceu.rutile": "金紅石", + "material.gtceu.salt": "鹽", + "material.gtceu.salt_water": "鹽水", + "material.gtceu.saltpeter": "硝石", + "material.gtceu.samarium": "釤", + "material.gtceu.samarium_iron_arsenic_oxide": "釤鐵砷氧化物", + "material.gtceu.sapphire": "藍寶石", + "material.gtceu.sapphire_slurry": "藍寶石漿液", + "material.gtceu.scandium": "鈧", + "material.gtceu.scheelite": "白鎢", + "material.gtceu.sculk": "伏聆", + "material.gtceu.seaborgium": "釒喜", + "material.gtceu.seed_oil": "種子油", + "material.gtceu.selenium": "硒", + "material.gtceu.severely_hydro_cracked_gas": "重度加氫裂解煉油氣", + "material.gtceu.severely_hydro_cracked_heavy_fuel": "重度加氫裂解重燃油", + "material.gtceu.severely_hydro_cracked_light_fuel": "重度加氫裂解輕燃油", + "material.gtceu.severely_hydro_cracked_naphtha": "重度加氫裂解石腦油", + "material.gtceu.severely_steam_cracked_gas": "重度蒸汽裂解煉油氣", + "material.gtceu.severely_steam_cracked_heavy_fuel": "重度蒸汽裂解重燃油", + "material.gtceu.severely_steam_cracked_light_fuel": "重度蒸汽裂解輕燃油", + "material.gtceu.severely_steam_cracked_naphtha": "重度蒸汽裂解石腦油", + "material.gtceu.silicon": "矽", + "material.gtceu.silicon_dioxide": "二氧化矽", + "material.gtceu.silicone_rubber": "矽橡膠", + "material.gtceu.silver": "銀", + "material.gtceu.soapstone": "皂石", + "material.gtceu.soda_ash": "純鹼", + "material.gtceu.sodalite": "方鈉石", + "material.gtceu.sodium": "鈉", + "material.gtceu.sodium_bicarbonate": "碳酸氫鈉", + "material.gtceu.sodium_bisulfate": "硫酸氫鈉", + "material.gtceu.sodium_hydroxide": "氫氧化鈉", + "material.gtceu.sodium_nitrite": "亞硝酸鈉", + "material.gtceu.sodium_persulfate": "過硫酸鈉", + "material.gtceu.sodium_potassium": "鈉鉀合金", + "material.gtceu.sodium_sulfide": "硫化鈉", + "material.gtceu.soldering_alloy": "焊錫", + "material.gtceu.spessartine": "錳鋁榴石", + "material.gtceu.sphalerite": "閃鋅", + "material.gtceu.spodumene": "鋰輝石", + "material.gtceu.stainless_steel": "不鏽鋼", + "material.gtceu.steam": "蒸汽", + "material.gtceu.steam_cracked_butadiene": "蒸汽裂解丁二烯", + "material.gtceu.steam_cracked_butane": "蒸汽裂解丁烷", + "material.gtceu.steam_cracked_butene": "蒸汽裂解丁烯", + "material.gtceu.steam_cracked_ethane": "蒸汽裂解乙烷", + "material.gtceu.steam_cracked_ethylene": "蒸汽裂解乙烯", + "material.gtceu.steam_cracked_propane": "蒸汽裂解丙烷", + "material.gtceu.steam_cracked_propene": "蒸汽裂解丙烯", + "material.gtceu.steel": "鋼", + "material.gtceu.stellite_100": "司太立-100", + "material.gtceu.sterilized_growth_medium": "無菌培養基", + "material.gtceu.sterling_silver": "標準純銀", + "material.gtceu.stibnite": "輝銻", + "material.gtceu.stone": "石頭", + "material.gtceu.strontium": "鍶", + "material.gtceu.styrene": "苯乙烯", + "material.gtceu.styrene_butadiene_rubber": "丁苯橡膠", + "material.gtceu.sugar": "糖", + "material.gtceu.sulfur": "硫", + "material.gtceu.sulfur_dioxide": "二氧化硫", + "material.gtceu.sulfur_trioxide": "三氧化硫", + "material.gtceu.sulfuric_acid": "硫酸", + "material.gtceu.sulfuric_copper_solution": "硫酸銅溶液", + "material.gtceu.sulfuric_gas": "含硫煉油氣", + "material.gtceu.sulfuric_heavy_fuel": "含硫重燃油", + "material.gtceu.sulfuric_light_fuel": "含硫輕燃油", + "material.gtceu.sulfuric_naphtha": "含硫石腦油", + "material.gtceu.sulfuric_nickel_solution": "硫酸鎳溶液", + "material.gtceu.talc": "滑石", + "material.gtceu.tantalite": "鉭鐵", + "material.gtceu.tantalum": "鉭", + "material.gtceu.tantalum_carbide": "碳化鉭", + "material.gtceu.technetium": "鎝", + "material.gtceu.tellurium": "碲", + "material.gtceu.tennessine": "石田", + "material.gtceu.terbium": "鋱", + "material.gtceu.tetrafluoroethylene": "四氟乙烯", + "material.gtceu.tetrahedrite": "黝銅", + "material.gtceu.tetranitromethane": "四硝基甲烷", + "material.gtceu.thallium": "鉈", + "material.gtceu.thorium": "釷", + "material.gtceu.thulium": "銩", + "material.gtceu.tin": "錫", + "material.gtceu.tin_alloy": "錫鐵合金", + "material.gtceu.titanium": "鈦", + "material.gtceu.titanium_carbide": "碳化鈦", + "material.gtceu.titanium_tetrachloride": "四氯化鈦", + "material.gtceu.titanium_trifluoride": "三氟化鈦", + "material.gtceu.titanium_tungsten_carbide": "碳化鈦鎢", + "material.gtceu.toluene": "甲苯", + "material.gtceu.topaz": "黃玉", + "material.gtceu.treated_wood": "防腐木", + "material.gtceu.tricalcium_phosphate": "磷酸三鈣", + "material.gtceu.trinium": "凱金", + "material.gtceu.trinium_sulfide": "硫化凱金", + "material.gtceu.tritanium": "三鈦", + "material.gtceu.tritium": "氚", + "material.gtceu.trona": "天然鹼", + "material.gtceu.tungstate": "鎢酸鋰", + "material.gtceu.tungsten": "鎢", + "material.gtceu.tungsten_carbide": "碳化鎢", + "material.gtceu.tungsten_steel": "鎢鋼", + "material.gtceu.tungstic_acid": "鎢酸", + "material.gtceu.ultimet": "哈氏合金", + "material.gtceu.uraninite": "晶質鈾", + "material.gtceu.uranium": "鈾", + "material.gtceu.uranium_235": "鈾-235", + "material.gtceu.uranium_hexafluoride": "六氟化鈾", + "material.gtceu.uranium_rhodium_dinaquadide": "鈾銠矽岩合金", + "material.gtceu.uranium_triplatinum": "三鉑化鈾", + "material.gtceu.uu_matter": "UU物質", + "material.gtceu.uvarovite": "鈣鉻榴石", + "material.gtceu.vanadium": "釩", + "material.gtceu.vanadium_gallium": "釩鎵合金", + "material.gtceu.vanadium_magnetite": "釩磁鐵", + "material.gtceu.vanadium_steel": "釩鋼", + "material.gtceu.vinyl_acetate": "乙酸乙烯酯", + "material.gtceu.vinyl_chloride": "氯乙烯", + "material.gtceu.water": "水", + "material.gtceu.watertight_steel": "防水鋼", + "material.gtceu.wax": "蠟", + "material.gtceu.wheat": "小麥", + "material.gtceu.white_dye": "白色染料", + "material.gtceu.wood": "木", + "material.gtceu.wood_gas": "木煤氣", + "material.gtceu.wood_tar": "木焦油", + "material.gtceu.wood_vinegar": "木醋酸", + "material.gtceu.wrought_iron": "鍛鐵", + "material.gtceu.wulfenite": "鉬鉛", + "material.gtceu.xenon": "氙", + "material.gtceu.yellow_dye": "黃色染料", + "material.gtceu.yellow_garnet": "黃石榴石", + "material.gtceu.yellow_limonite": "黃褐鐵", + "material.gtceu.ytterbium": "鐿", + "material.gtceu.yttrium": "釔", + "material.gtceu.yttrium_barium_cuprate": "釔鋇銅氧化物", + "material.gtceu.zeolite": "沸石", + "material.gtceu.zeron_100": "賽龍-100", + "material.gtceu.zinc": "鋅", + "material.gtceu.zinc_sulfide": "硫化鋅", + "material.gtceu.zincite": "紅鋅", + "material.gtceu.zirconium": "鋯", + "message.gtceu.new_veins.amount": "勘探到%d條新礦脈!", + "message.gtceu.new_veins.name": "勘探到%s!", + "metaarmor.energy_share.disable": "能量供給:工具充能已禁用", + "metaarmor.energy_share.enable": "能量供給:工具充能已啟用", + "metaarmor.energy_share.error": "能量供給:§c能量不足,無法為工具充能!", + "metaarmor.energy_share.tooltip": "供能模式:%s", + "metaarmor.energy_share.tooltip.guide": "手持物品並潛行右擊以更換模式", + "metaarmor.hud.energy_lvl": "能量儲存:%s", + "metaarmor.hud.engine_enabled": "引擎已啟用:%s", + "metaarmor.hud.fuel_lvl": "燃料儲存:%s", + "metaarmor.hud.gravi_engine": "重力引擎:%s", + "metaarmor.hud.hover_mode": "懸浮模式:%s", + "metaarmor.hud.status.disabled": "§c關", + "metaarmor.hud.status.enabled": "§a開", + "metaarmor.jetpack.emergency_hover_mode": "緊急懸浮模式已啟用!", + "metaarmor.jetpack.flight.disable": "噴射背包:飛行已停用", + "metaarmor.jetpack.flight.enable": "噴射背包:飛行已啟用", + "metaarmor.jetpack.hover.disable": "噴射背包:懸浮模式已禁用", + "metaarmor.jetpack.hover.enable": "噴射背包:懸浮模式已啟用", + "metaarmor.message.nightvision.disabled": "§b夜視:§c關閉", + "metaarmor.message.nightvision.enabled": "§b夜視:§a開啟", + "metaarmor.message.nightvision.error": "§c能量不足!", + "metaarmor.nms.boosted_jump.disabled": "奈米肌體™套裝:跳躍提升已停用", + "metaarmor.nms.boosted_jump.enabled": "奈米肌體™套裝:跳躍提升已啟用", + "metaarmor.nms.nightvision.disabled": "奈米肌體™套裝:夜視已禁用", + "metaarmor.nms.nightvision.enabled": "奈米肌體™套裝:夜視已啟用", + "metaarmor.nms.nightvision.error": "奈米肌體™套裝:§c能量不足!", + "metaarmor.nms.share.disable": "奈米肌體™套裝:供能模式已禁用", + "metaarmor.nms.share.enable": "奈米肌體™套裝:供能模式已啟用", + "metaarmor.nms.share.error": "奈米肌體™套裝:§c能量不足,無法供能!", + "metaarmor.qts.nightvision.disabled": "夸克科技™套裝:夜視已禁用", + "metaarmor.qts.nightvision.enabled": "夸克科技™套裝:夜視已啟用", + "metaarmor.qts.nightvision.error": "夸克科技™套裝:§c能量不足!", + "metaarmor.qts.share.disable": "夸克科技™套裝:供能模式已禁用", + "metaarmor.qts.share.enable": "夸克科技™套裝:供能模式已啟用", + "metaarmor.qts.share.error": "夸克科技™套裝:§c能量不足,無法供能!", + "metaarmor.tooltip.autoeat": "使用物品欄中的食物補充飽食度", + "metaarmor.tooltip.breath": "補充氧氣條", + "metaarmor.tooltip.burning": "消除燃燒傷害", + "metaarmor.tooltip.falldamage": "消除摔落傷害", + "metaarmor.tooltip.freezing": "防止寒冷侵襲", + "metaarmor.tooltip.jump": "提升跳躍高度與距離", + "metaarmor.tooltip.potions": "消除負面效果", + "metaarmor.tooltip.speed": "提升奔跑速度", + "metaarmor.tooltip.stepassist": "提供步行輔助", + "metaitem.behavior.mode_switch.current_mode": "模式:%s", + "metaitem.behavior.mode_switch.mode_switched": "§e模式設定為:%s", + "metaitem.behavior.mode_switch.tooltip": "潛行右擊以切換模式", + "metaitem.clipboard.tooltip": "可以在上面書寫(無需任何書寫工具)。手持右鍵在牆面上放置,潛行右擊取下。", + "metaitem.cover.digital.mode.energy.disabled": "點選以啟用能量模式", + "metaitem.cover.digital.mode.energy.enabled": "已啟用能量模式", + "metaitem.cover.digital.mode.fluid.disabled": "點選以啟用流體模式", + "metaitem.cover.digital.mode.fluid.enabled": "已啟用流體模式", + "metaitem.cover.digital.mode.item.disabled": "點選以啟用物品模式", + "metaitem.cover.digital.mode.item.enabled": "已啟用物品模式", + "metaitem.cover.digital.mode.machine.disabled": "點選以啟用機器模式", + "metaitem.cover.digital.mode.machine.enabled": "已啟用機器模式", + "metaitem.cover.digital.mode.proxy.disabled": "點選以啟用代理模式", + "metaitem.cover.digital.mode.proxy.enabled": "已啟用代理模式", + "metaitem.cover.digital.tooltip": "§7作§f覆蓋板§7時透過§f能量線纜f7將機器連線到§f中央監視器§7。", + "metaitem.cover.digital.wireless.tooltip.0": "§7作§f覆蓋板§7時§f將機器§f無線§7接入§f中央監控器§7。", + "metaitem.cover.digital.wireless.tooltip.1": "§f手持右擊中央監控器§7來進行遠端綁定。", + "metaitem.cover.digital.wireless.tooltip.2": "§f手持並潛行右擊§7則可移除現有綁定。", + "metaitem.cover.digital.wireless.tooltip.3": "§a綁定至:§f%s", + "metaitem.crushed.tooltip.purify": "右擊盛有水的鍋釜以清洗", + "metaitem.debug_scanner.tooltip": "三錄儀", + "metaitem.dust.tooltip.purify": "右擊盛有水的鍋釜以清洗", + "metaitem.electric.discharge_mode.disabled": "§e釋能模式已禁用", + "metaitem.electric.discharge_mode.enabled": "§e釋能模式已啟用", + "metaitem.electric.discharge_mode.tooltip": "潛行右擊以開關釋能模式", + "metaitem.generic.electric_item.stored": "%d/%d EU(%s)", + "metaitem.generic.electric_item.tooltip": "%d/%d EU - %s電壓", + "metaitem.generic.fluid_container.tooltip": "%d/%dmB %s", + "metaitem.int_circuit.configuration": "設定:%d", + "metaitem.liquid_fuel_jetpack.tooltip": "利用內燃發電機的燃料來提供推進動力", + "metaitem.machine_configuration.mode": "§a設定模式:§r%s", + "metaitem.plugin.proxy.tooltips.1": "(請將螢幕調整為代理模式)", + "metaitem.plugin.tooltips.1": "可為螢幕安裝外掛以實現更多功能。", + "metaitem.prospector.mode.bedrock_ore": "§b基岩礦勘探模式§r", + "metaitem.prospector.mode.fluid": "§b流體勘探模式§r", + "metaitem.prospector.mode.ores": "§a礦探勘模式§r", + "metaitem.prospector.tooltip.modes": "可用模式:", + "metaitem.prospector.tooltip.radius": "掃描半徑:%s", + "metaitem.record.sus.tooltip": "§7Leonz - Among Us Drip", + "metaitem.terminal.tooltip": "工欲善其事,必先利其器。", + "metaitem.terminal.tooltip.creative": "§b創造模式", + "metaitem.terminal.tooltip.hardware": "§a硬體:%d", + "metaitem.tool.tooltip.durability": "§f耐久度:§a%d / %d", + "metaitem.tool.tooltip.primary_material": "§f材料:§e%s", + "metaitem.tool.tooltip.rotor.efficiency": "渦輪效率:§9%d%%", + "metaitem.tool.tooltip.rotor.power": "渦輪產能:§9%d%%", + "metaitem.tricorder_scanner.tooltip": "三錄儀", + "monitor.gui.title.argb": "ARGB:", + "monitor.gui.title.back": "返回", + "monitor.gui.title.config": "設定", + "monitor.gui.title.plugin": "外掛:", + "monitor.gui.title.scale": "尺寸:", + "monitor.gui.title.slot": "槽位:", + "ore.spawnlocation.name": "礦物生成資訊", + "recipe.capability.eu.name": "GTCEu能量", + "recipe.capability.fluid.name": "流體", + "recipe.capability.item.name": "物品", + "recipe.condition.adjacent_block.tooltip": "水平相鄰方塊應為", + "recipe.condition.biome.tooltip": "生態域:%s", + "recipe.condition.daytime.day.tooltip": "白天才能運作", + "recipe.condition.daytime.night.tooltip": "夜晚才能運作", + "recipe.condition.dimension.tooltip": "維度:%s", + "recipe.condition.dimension_marker.tooltip": "維度:", + "recipe.condition.eu_to_start.tooltip": "啟動耗能:%d%s", + "recipe.condition.gamestage.locked_stage": "鎖定階段:%s", + "recipe.condition.gamestage.unlocked_stage": "解鎖階段:%s", + "recipe.condition.pos_y.tooltip": "Y軸高度:%d <= Y <= %d", + "recipe.condition.quest.completed.tooltip": "完成任務:%s", + "recipe.condition.quest.not_completed.tooltip": "未完成任務:%s", + "recipe.condition.rain.tooltip": "雨量:%d", + "recipe.condition.rock_breaker.tooltip": "水平相鄰方塊需要為流體源", + "recipe.condition.steam_vent.tooltip": "清潔蒸汽排氣口", + "recipe.condition.thunder.tooltip": "雷級:%d", + "tagprefix.andesite": "安山岩%s礦", + "tagprefix.basalt": "玄武岩%s礦", + "tagprefix.blackstone": "黑石%s礦", + "tagprefix.block": "%s方塊", + "tagprefix.bolt": "%s螺栓", + "tagprefix.buzz_saw_blade": "%s圓鋸鋸片", + "tagprefix.cable_gt_double": "2x%s線纜", + "tagprefix.cable_gt_hex": "16x%s線纜", + "tagprefix.cable_gt_octal": "8x%s線纜", + "tagprefix.cable_gt_quadruple": "4x%s線纜", + "tagprefix.cable_gt_single": "1x%s線纜", + "tagprefix.chainsaw_head": "%s鏈鋸頭", + "tagprefix.chipped_gem": "破碎的%s", + "tagprefix.crushed_ore": "粉碎%s礦", + "tagprefix.deepslate": "深板岩%s礦", + "tagprefix.dense_plate": "緻密%s板", + "tagprefix.diorite": "閃長岩%s礦", + "tagprefix.door": "%s門", + "tagprefix.double_plate": "雙層%s板", + "tagprefix.drill_head": "%s鑽頭", + "tagprefix.dust": "%s粉", + "tagprefix.dye": "%s染料", + "tagprefix.endstone": "終界石%s礦", + "tagprefix.exquisite_gem": "精緻的%s", + "tagprefix.fence": "%s柵欄", + "tagprefix.fence_gate": "%s柵欄門", + "tagprefix.fine_wire": "細%s導線", + "tagprefix.flawed_gem": "有瑕的%s", + "tagprefix.flawless_gem": "無瑕的%s", + "tagprefix.foil": "%s箔", + "tagprefix.frame": "%s框架", + "tagprefix.gear": "%s齒輪", + "tagprefix.gem": "%s", + "tagprefix.granite": "花崗岩%s礦", + "tagprefix.gravel": "沙礫%s礦", + "tagprefix.hot_ingot": "熱%s錠", + "tagprefix.impure_dust": "含雜%s粉", + "tagprefix.ingot": "%s錠", + "tagprefix.lens": "%s透鏡", + "tagprefix.log": "%s原木", + "tagprefix.long_rod": "長%s桿", + "tagprefix.marble": "大理岩%s礦", + "tagprefix.netherrack": "地獄岩%s礦", + "tagprefix.nugget": "%s粒", + "tagprefix.null": "%s Null", + "tagprefix.pipe_huge_fluid": "巨型%s流體管道", + "tagprefix.pipe_huge_item": "巨型%s物品管道", + "tagprefix.pipe_huge_restrictive": "巨型加固%s物品管道", + "tagprefix.pipe_large_fluid": "大型%s流體管道", + "tagprefix.pipe_large_item": "大型%s物品管道", + "tagprefix.pipe_large_restrictive": "大型加固%s物品管道", + "tagprefix.pipe_nonuple_fluid": "九重%s流體管道", + "tagprefix.pipe_normal_fluid": "普通%s流體管道", + "tagprefix.pipe_normal_item": "普通%s物品管道", + "tagprefix.pipe_normal_restrictive": "普通加固%s物品管道", + "tagprefix.pipe_quadruple_fluid": "四重%s流體管道", + "tagprefix.pipe_small_fluid": "小型%s流體管道", + "tagprefix.pipe_small_item": "小型%s物品管道", + "tagprefix.pipe_small_restrictive": "小型加固%s物品管道", + "tagprefix.pipe_tiny_fluid": "微型%s流體管道", + "tagprefix.planks": "%s木材", + "tagprefix.plate": "%s板", + "tagprefix.polymer.dense_plate": "緻密%s片", + "tagprefix.polymer.double_plate": "雙層%s片", + "tagprefix.polymer.dust": "%s末", + "tagprefix.polymer.foil": "薄%s片", + "tagprefix.polymer.ingot": "%s條", + "tagprefix.polymer.nugget": "%s顆粒", + "tagprefix.polymer.plate": "%s片", + "tagprefix.polymer.small_dust": "小堆%s末", + "tagprefix.polymer.tiny_dust": "小撮%s末", + "tagprefix.pure_dust": "潔淨%s粉", + "tagprefix.purified_ore": "純淨%s礦", + "tagprefix.raw": "%s原礦", + "tagprefix.raw_ore_block": "%s原礦方塊", + "tagprefix.red_granite": "紅花崗岩%s礦", + "tagprefix.red_sand": "紅沙%s礦", + "tagprefix.refined_ore": "精煉%s礦", + "tagprefix.ring": "%s環", + "tagprefix.rock": "%s", + "tagprefix.rod": "%s桿", + "tagprefix.rotor": "%s轉子", + "tagprefix.round": "%s滾珠", + "tagprefix.sand": "沙子%s礦", + "tagprefix.screw": "%s螺絲", + "tagprefix.screwdriver_tip": "%s螺絲起子頭", + "tagprefix.slab": "%s半磚", + "tagprefix.small_dust": "小堆%s粉", + "tagprefix.small_gear": "小型%s齒輪", + "tagprefix.small_spring": "小型%s彈簧", + "tagprefix.spring": "%s彈簧", + "tagprefix.stairs": "%s階梯", + "tagprefix.stone": "%s礦", + "tagprefix.tiny_dust": "小撮%s粉", + "tagprefix.tuff": "凝灰岩%s礦", + "tagprefix.turbine_blade": "%s渦輪扇葉", + "tagprefix.wire_cutter_head": "%s剪線鉗鉗頭", + "tagprefix.wire_gt_double": "2x%s導線", + "tagprefix.wire_gt_hex": "16x%s導線", + "tagprefix.wire_gt_octal": "8x%s導線", + "tagprefix.wire_gt_quadruple": "4x%s導線", + "tagprefix.wire_gt_single": "1x%s導線", + "tagprefix.wrench_tip": "%s扳手頂", + "tile.gtceu.brittle_charcoal.name": "脆木炭塊", + "tile.gtceu.brittle_charcoal.tooltip.0": "產自木炭堆點火器。", + "tile.gtceu.brittle_charcoal.tooltip.1": "採掘以獲得木炭。", + "tile.gtceu.foam.name": "建築泡沫", + "tile.gtceu.petrified_foam.name": "石化建築泡沫", + "tile.gtceu.reinforced_foam.name": "強化建築泡沫", + "tile.gtceu.reinforced_stone.name": "防爆石", + "tile.gtceu.seal.name": "密封方塊" } \ No newline at end of file From a66f4cb068686b14c9d0517479a9e1faa25dac93 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 18 May 2025 15:00:41 -0400 Subject: [PATCH 021/270] Memoize biome holderset supplier to work around vanilla concurrency bug (#3162) --- .../gtceu/api/data/worldgen/ores/OreVeinUtil.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java index db2e3d492b4..cb461179df4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreVeinUtil.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import com.google.common.base.Suppliers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; @@ -119,9 +120,9 @@ public static Supplier> resolveBiomes(List biomes) { RegistryOps registryOps = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); JsonElement codecInput = resolveBiomeCodecInput(biomes); - return () -> RegistryCodecs.homogeneousList(Registries.BIOME) + return Suppliers.memoize(() -> RegistryCodecs.homogeneousList(Registries.BIOME) .parse(registryOps, codecInput) - .getOrThrow(false, GTCEu.LOGGER::error); + .getOrThrow(false, GTCEu.LOGGER::error)); } private static JsonElement resolveBiomeCodecInput(List biomes) { From 4c3a64a7de1dab0263ed9c5eb84117f2d8d95775 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 18 May 2025 13:01:41 -0600 Subject: [PATCH 022/270] Remove redundant headers (#3156) --- .../gtceu/api/addon/events/KJSRecipeKeyEvent.java | 5 ----- .../gregtechceu/gtceu/api/block/AppearanceBlock.java | 5 ----- .../com/gregtechceu/gtceu/api/block/IAppearance.java | 5 ----- .../com/gregtechceu/gtceu/api/block/IMachineBlock.java | 5 ----- .../com/gregtechceu/gtceu/api/block/MaterialBlock.java | 5 ----- .../gregtechceu/gtceu/api/block/MaterialPipeBlock.java | 5 ----- .../com/gregtechceu/gtceu/api/block/PipeBlock.java | 5 ----- .../gregtechceu/gtceu/api/blockentity/IPaintable.java | 5 ----- .../gtceu/api/blockentity/ITickSubscription.java | 5 ----- .../gtceu/api/blockentity/MetaMachineBlockEntity.java | 5 ----- .../gtceu/api/blockentity/PipeBlockEntity.java | 5 ----- .../gtceu/api/capability/GTCapabilityHelper.java | 5 ----- .../gregtechceu/gtceu/api/capability/IToolable.java | 5 ----- .../gtceu/api/capability/forge/GTCapability.java | 5 ----- .../api/capability/recipe/CWURecipeCapability.java | 5 ----- .../api/capability/recipe/EURecipeCapability.java | 5 ----- .../api/capability/recipe/FluidRecipeCapability.java | 5 ----- .../gtceu/api/capability/recipe/IRecipeHandler.java | 5 ----- .../api/capability/recipe/ItemRecipeCapability.java | 5 ----- .../java/com/gregtechceu/gtceu/api/cover/IUICover.java | 5 ----- .../com/gregtechceu/gtceu/api/cover/filter/Filter.java | 5 ----- .../gtceu/api/cover/filter/FluidFilter.java | 5 ----- .../gregtechceu/gtceu/api/cover/filter/ItemFilter.java | 5 ----- .../gtceu/api/cover/filter/SimpleFluidFilter.java | 5 ----- .../gtceu/api/cover/filter/SimpleItemFilter.java | 5 ----- .../gregtechceu/gtceu/api/cover/filter/TagFilter.java | 5 ----- .../gtceu/api/cover/filter/TagFluidFilter.java | 5 ----- .../gtceu/api/cover/filter/TagItemFilter.java | 5 ----- .../gtceu/api/data/chemical/ChemicalHelper.java | 5 ----- .../chemical/material/properties/HazardProperty.java | 5 ----- .../com/gregtechceu/gtceu/api/data/tag/TagUtil.java | 5 ----- .../gtceu/api/data/worldgen/GTOreDefinition.java | 5 ----- .../gtceu/api/data/worldgen/IWorldGenLayer.java | 5 ----- .../gregtechceu/gtceu/api/data/worldgen/RTTTree.java | 5 ----- .../gtceu/api/data/worldgen/WorldGenLayers.java | 5 ----- .../bedrockfluid/BedrockFluidVeinSavedData.java | 5 ----- .../worldgen/bedrockfluid/FluidVeinWorldEntry.java | 5 ----- .../worldgen/bedrockore/BedrockOreVeinSavedData.java | 5 ----- .../data/worldgen/bedrockore/OreVeinWorldEntry.java | 5 ----- .../api/data/worldgen/modifier/FrequencyModifier.java | 5 ----- .../com/gregtechceu/gtceu/api/gui/GuiTextures.java | 5 ----- .../com/gregtechceu/gtceu/api/gui/SteamTexture.java | 5 ----- .../java/com/gregtechceu/gtceu/api/gui/UITemplate.java | 5 ----- .../com/gregtechceu/gtceu/api/gui/WidgetUtils.java | 5 ----- .../gtceu/api/gui/editor/EditableMachineUI.java | 5 ----- .../gregtechceu/gtceu/api/gui/editor/EditableUI.java | 5 ----- .../gregtechceu/gtceu/api/gui/editor/GTUIEditor.java | 5 ----- .../gregtechceu/gtceu/api/gui/editor/IEditableUI.java | 5 ----- .../gtceu/api/gui/editor/MachineUIProject.java | 5 ----- .../gtceu/api/gui/editor/RecipeTypeUIProject.java | 5 ----- .../gregtechceu/gtceu/api/gui/editor/TemplateTab.java | 5 ----- .../gregtechceu/gtceu/api/gui/editor/UIMainPanel.java | 5 ----- .../gtceu/api/gui/factory/CoverUIFactory.java | 5 ----- .../gtceu/api/gui/factory/MachineUIFactory.java | 5 ----- .../gtceu/api/gui/fancy/ConfiguratorPanel.java | 5 ----- .../gtceu/api/gui/fancy/FancyMachineUIWidget.java | 5 ----- .../gtceu/api/gui/fancy/IFancyConfigurator.java | 5 ----- .../gtceu/api/gui/fancy/IFancyConfiguratorButton.java | 5 ----- .../gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java | 5 ----- .../gtceu/api/gui/fancy/IFancyUIProvider.java | 5 ----- .../gregtechceu/gtceu/api/gui/fancy/TabsWidget.java | 5 ----- .../gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java | 5 ----- .../gregtechceu/gtceu/api/gui/misc/ProspectorMode.java | 5 ----- .../gtceu/api/gui/widget/PatternPreviewWidget.java | 5 ----- .../gtceu/api/gui/widget/PredicatedButtonWidget.java | 5 ----- .../gtceu/api/gui/widget/PredicatedImageWidget.java | 5 ----- .../gtceu/api/gui/widget/ToggleButtonWidget.java | 5 ----- .../com/gregtechceu/gtceu/api/item/ComponentItem.java | 5 ----- .../gregtechceu/gtceu/api/item/DrumMachineItem.java | 5 ----- .../com/gregtechceu/gtceu/api/item/GTBucketItem.java | 5 ----- .../gregtechceu/gtceu/api/item/MaterialBlockItem.java | 4 ---- .../gtceu/api/item/MaterialPipeBlockItem.java | 4 ---- .../gregtechceu/gtceu/api/item/MetaMachineItem.java | 5 ----- .../com/gregtechceu/gtceu/api/item/PipeBlockItem.java | 5 ----- .../com/gregtechceu/gtceu/api/item/TagPrefixItem.java | 5 ----- .../gtceu/api/item/component/FoodStats.java | 3 --- .../gtceu/api/item/component/IAddInformation.java | 5 ----- .../gtceu/api/item/component/ICustomDescriptionId.java | 5 ----- .../gtceu/api/item/component/ICustomRenderer.java | 5 ----- .../gtceu/api/item/component/IDurabilityBar.java | 5 ----- .../gtceu/api/item/component/IInteractionItem.java | 5 ----- .../gtceu/api/item/component/IItemComponent.java | 9 ++------- .../gtceu/api/item/component/IItemLifeCycle.java | 5 ----- .../gtceu/api/item/component/IItemUIFactory.java | 5 ----- .../gtceu/api/item/component/IMaterialPartItem.java | 5 ----- .../gtceu/api/item/component/IRecipeRemainder.java | 5 ----- .../gtceu/api/item/component/ISubItemHandler.java | 5 ----- .../gtceu/api/item/component/ThermalFluidStats.java | 5 ----- .../api/item/component/forge/IComponentCapability.java | 5 ----- .../gregtechceu/gtceu/api/item/tool/GTToolItem.java | 5 ----- .../gregtechceu/gtceu/api/item/tool/GTToolType.java | 5 ----- .../gtceu/api/item/tool/IToolGridHighlight.java | 4 ---- .../gtceu/api/item/tool/MaterialToolTier.java | 5 ----- .../gregtechceu/gtceu/api/item/tool/ToolHelper.java | 5 ----- .../gtceu/api/machine/MachineCoverContainer.java | 5 ----- .../gtceu/api/machine/MachineDefinition.java | 5 +---- .../com/gregtechceu/gtceu/api/machine/MetaMachine.java | 10 ++++------ .../gtceu/api/machine/MultiblockMachineDefinition.java | 5 ----- .../gtceu/api/machine/SimpleGeneratorMachine.java | 5 ----- .../gtceu/api/machine/SimpleTieredMachine.java | 5 +---- .../gtceu/api/machine/TickableSubscription.java | 5 ----- .../gtceu/api/machine/TieredEnergyMachine.java | 5 ----- .../gregtechceu/gtceu/api/machine/TieredMachine.java | 5 ----- .../gtceu/api/machine/WorkableTieredMachine.java | 5 ----- .../fancyconfigurator/CircuitFancyConfigurator.java | 5 ----- .../MachineModeFancyConfigurator.java | 4 ---- .../fancyconfigurator/OverclockFancyConfigurator.java | 5 ----- .../gtceu/api/machine/feature/IAutoOutputBoth.java | 5 ----- .../gtceu/api/machine/feature/IAutoOutputFluid.java | 5 ----- .../gtceu/api/machine/feature/IAutoOutputItem.java | 5 ----- .../machine/feature/IEnvironmentalHazardEmitter.java | 4 +--- .../gtceu/api/machine/feature/IExplosionMachine.java | 5 +---- .../gtceu/api/machine/feature/IFancyUIMachine.java | 5 ----- .../gtceu/api/machine/feature/IInteractedMachine.java | 4 +--- .../api/machine/feature/ILocalizedHazardEmitter.java | 4 +--- .../gtceu/api/machine/feature/IMachineFeature.java | 5 ----- .../gtceu/api/machine/feature/IMachineLife.java | 5 ----- .../gtceu/api/machine/feature/IMachineModifyDrops.java | 5 ----- .../gtceu/api/machine/feature/IMufflableMachine.java | 5 ----- .../gtceu/api/machine/feature/IOverclockMachine.java | 5 ----- .../gtceu/api/machine/feature/IRecipeLogicMachine.java | 5 +---- .../api/machine/feature/IRedstoneSignalMachine.java | 5 ----- .../gtceu/api/machine/feature/ITieredMachine.java | 5 ----- .../gtceu/api/machine/feature/IUIMachine.java | 4 +--- .../machine/feature/multiblock/IDisplayUIMachine.java | 5 ----- .../api/machine/feature/multiblock/IDistinctPart.java | 5 ----- .../machine/feature/multiblock/IMultiController.java | 5 ----- .../api/machine/feature/multiblock/IMultiPart.java | 5 ----- .../feature/multiblock/IRotorHolderMachine.java | 5 ----- .../feature/multiblock/IWorkableMultiController.java | 5 ----- .../CoilWorkableElectricMultiblockMachine.java | 5 ----- .../multiblock/MultiblockControllerMachine.java | 5 ----- .../gtceu/api/machine/multiblock/PartAbility.java | 7 ------- .../TieredWorkableElectricMultiblockMachine.java | 5 ----- .../multiblock/WorkableElectricMultiblockMachine.java | 5 ----- .../machine/multiblock/WorkableMultiblockMachine.java | 5 ----- .../machine/multiblock/part/MultiblockPartMachine.java | 5 ----- .../machine/multiblock/part/TieredIOPartMachine.java | 5 ----- .../api/machine/multiblock/part/TieredPartMachine.java | 5 ----- .../gtceu/api/machine/steam/SteamBoilerMachine.java | 5 ----- .../api/machine/steam/SteamEnergyRecipeHandler.java | 5 ----- .../gtceu/api/machine/steam/SteamMachine.java | 5 ----- .../gtceu/api/machine/steam/SteamWorkableMachine.java | 5 ----- .../gtceu/api/machine/trait/FluidTankProxyTrait.java | 5 ----- .../gtceu/api/machine/trait/ICapabilityTrait.java | 5 ----- .../gtceu/api/machine/trait/IRecipeHandlerTrait.java | 5 ----- .../gtceu/api/machine/trait/ItemHandlerProxyTrait.java | 5 ----- .../gtceu/api/machine/trait/MachineTrait.java | 6 ++---- .../gtceu/api/machine/trait/NotifiableFluidTank.java | 5 ----- .../api/machine/trait/NotifiableItemStackHandler.java | 5 ----- .../machine/trait/NotifiableRecipeHandlerTrait.java | 5 ----- .../gregtechceu/gtceu/api/misc/IOFluidHandlerList.java | 5 ----- .../gregtechceu/gtceu/api/misc/ItemRecipeHandler.java | 5 ----- .../misc/forge/SimpleThermalFluidHandlerItemStack.java | 5 ----- .../com/gregtechceu/gtceu/api/pipenet/IAttachData.java | 5 ----- .../gtceu/api/pipenet/ITickablePipeNet.java | 5 ----- .../gtceu/api/pipenet/PipeCoverContainer.java | 6 ------ .../gtceu/api/recipe/FacadeCoverRecipe.java | 5 ----- .../com/gregtechceu/gtceu/api/recipe/GTRecipe.java | 5 ----- .../gtceu/api/recipe/GTRecipeSerializer.java | 5 ----- .../com/gregtechceu/gtceu/api/recipe/GTRecipeType.java | 5 ----- .../gregtechceu/gtceu/api/recipe/RecipeCondition.java | 5 ----- .../com/gregtechceu/gtceu/api/recipe/RecipeHelper.java | 5 ----- .../com/gregtechceu/gtceu/api/recipe/RecipeRunner.java | 3 --- .../gtceu/api/recipe/ShapedEnergyTransferRecipe.java | 5 ----- .../gtceu/api/recipe/StrictShapedRecipe.java | 5 ----- .../gtceu/api/recipe/content/SerializerBigInteger.java | 5 ----- .../gtceu/api/recipe/content/SerializerLong.java | 5 ----- .../gtceu/api/recipe/ingredient/NBTIngredient.java | 5 ----- .../gregtechceu/gtceu/api/registry/GTRegistries.java | 5 ----- .../com/gregtechceu/gtceu/api/registry/GTRegistry.java | 5 ----- .../gtceu/api/registry/registrate/GTRegistrate.java | 5 ----- .../gtceu/api/registry/registrate/IGTFluidBuilder.java | 5 ----- .../gtceu/api/registry/registrate/MachineBuilder.java | 5 ----- .../registry/registrate/MultiblockMachineBuilder.java | 5 ----- .../api/registry/registrate/SoundEntryBuilder.java | 5 ----- .../api/registry/registrate/forge/GTFluidBuilder.java | 5 ----- .../gregtechceu/gtceu/api/sound/AutoReleasedSound.java | 5 ----- .../gtceu/api/sound/ConfiguredSoundEvent.java | 5 ----- .../gregtechceu/gtceu/api/sound/CustomSoundEntry.java | 5 ----- .../gtceu/api/sound/ExistingSoundEntry.java | 5 ----- .../com/gregtechceu/gtceu/api/sound/SoundEntry.java | 5 ----- .../gregtechceu/gtceu/api/sound/WrappedSoundEntry.java | 5 ----- .../java/com/gregtechceu/gtceu/client/ClientProxy.java | 5 ----- .../com/gregtechceu/gtceu/client/TooltipsHandler.java | 5 ----- .../gtceu/client/forge/ForgeClientEventListener.java | 5 ----- .../gregtechceu/gtceu/client/model/ItemBakedModel.java | 5 ----- .../com/gregtechceu/gtceu/client/model/ModelUtil.java | 5 ----- .../com/gregtechceu/gtceu/client/model/PipeModel.java | 5 ----- .../gtceu/client/model/SpriteOverrider.java | 5 ----- .../gtceu/client/model/WorkableOverlayModel.java | 5 ----- .../gtceu/client/renderer/BlockHighlightRenderer.java | 5 ----- .../gtceu/client/renderer/BlockStateModelRenderer.java | 5 ----- .../gtceu/client/renderer/GTRendererProvider.java | 5 ----- .../gtceu/client/renderer/block/CTMModelRenderer.java | 5 ----- .../client/renderer/block/MaterialBlockRenderer.java | 5 ----- .../gtceu/client/renderer/block/OreBlockRenderer.java | 5 ----- .../gtceu/client/renderer/block/PipeBlockRenderer.java | 5 ----- .../client/renderer/cover/ConveyorCoverRenderer.java | 5 ----- .../client/renderer/cover/FacadeCoverRenderer.java | 7 ++----- .../renderer/cover/FluidRegulatorCoverRenderer.java | 5 ----- .../gtceu/client/renderer/cover/ICoverRenderer.java | 5 +---- .../client/renderer/cover/ICoverableRenderer.java | 5 ----- .../gtceu/client/renderer/cover/PumpCoverRenderer.java | 5 ----- .../client/renderer/cover/SimpleCoverRenderer.java | 5 ----- .../client/renderer/item/TagPrefixItemRenderer.java | 5 ----- .../gtceu/client/renderer/item/ToolItemRenderer.java | 5 ----- .../client/renderer/machine/BatteryBufferRenderer.java | 5 ----- .../client/renderer/machine/IControllerRenderer.java | 5 ----- .../gtceu/client/renderer/machine/IPartRenderer.java | 5 ----- .../renderer/machine/OverlaySteamMachineRenderer.java | 5 ----- .../client/renderer/machine/PumpHatchPartRenderer.java | 5 ----- .../client/renderer/machine/QuantumChestRenderer.java | 5 ----- .../client/renderer/machine/QuantumTankRenderer.java | 5 ----- .../machine/SimpleGeneratorMachineRenderer.java | 5 ----- .../renderer/machine/SteamHullMachineRenderer.java | 5 ----- .../renderer/machine/TieredHullMachineRenderer.java | 5 ----- .../client/renderer/machine/TransformerRenderer.java | 5 ----- .../machine/WorkableCasingMachineRenderer.java | 5 ----- .../renderer/machine/WorkableSteamMachineRenderer.java | 5 ----- .../machine/WorkableTieredHullMachineRenderer.java | 5 ----- .../gtceu/common/block/BoilerFireboxType.java | 5 ----- .../com/gregtechceu/gtceu/common/block/CableBlock.java | 5 ----- .../com/gregtechceu/gtceu/common/block/CoilBlock.java | 5 ----- .../gregtechceu/gtceu/common/block/FluidPipeBlock.java | 5 ----- .../gregtechceu/gtceu/common/block/MinerPipeBlock.java | 5 ----- .../gtceu/common/blockentity/CableBlockEntity.java | 5 ----- .../gregtechceu/gtceu/common/commands/GTCommands.java | 5 ----- .../gregtechceu/gtceu/common/cover/ConveyorCover.java | 5 ----- .../gtceu/common/cover/FluidFilterCover.java | 5 ----- .../gtceu/common/cover/InfiniteWaterCover.java | 5 ----- .../gtceu/common/cover/ItemFilterCover.java | 5 ----- .../com/gregtechceu/gtceu/common/cover/PumpCover.java | 5 ----- .../gregtechceu/gtceu/common/data/GCYMRecipeTypes.java | 4 ---- .../gregtechceu/gtceu/common/data/GTBedrockFluids.java | 5 ----- .../gregtechceu/gtceu/common/data/GTBlockEntities.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTBlocks.java | 5 ----- .../gtceu/common/data/GTConfiguredFeatures.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTCovers.java | 5 ----- .../gtceu/common/data/GTCreativeModeTabs.java | 5 ----- .../gregtechceu/gtceu/common/data/GTDamageTypes.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTFeatures.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTFluids.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTItems.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTMachines.java | 5 ----- .../com/gregtechceu/gtceu/common/data/GTModels.java | 5 ----- .../java/com/gregtechceu/gtceu/common/data/GTOres.java | 5 ----- .../gregtechceu/gtceu/common/data/GTPlacements.java | 5 ----- .../gregtechceu/gtceu/common/data/GTPlacerTypes.java | 5 ----- .../gtceu/common/data/GTRecipeCapabilities.java | 5 ----- .../gtceu/common/data/GTRecipeConditions.java | 5 ----- .../gtceu/common/data/GTRecipeModifiers.java | 5 ----- .../gregtechceu/gtceu/common/data/GTRecipeTypes.java | 5 ----- .../gregtechceu/gtceu/common/data/GTSoundEntries.java | 5 ----- .../gtceu/common/data/GTSyncedFieldAccessors.java | 5 ----- .../gtceu/common/data/machines/GCYMMachines.java | 4 ---- .../gtceu/common/data/materials/GTFoods.java | 5 ----- .../gtceu/common/item/ColorSprayBehaviour.java | 5 ----- .../gtceu/common/item/ConsumedBehaviour.java | 5 ----- .../gtceu/common/item/CoverPlaceBehavior.java | 5 ----- .../gtceu/common/item/FacadeItemBehaviour.java | 5 ----- .../gtceu/common/item/FluidFilterBehaviour.java | 5 ----- .../gtceu/common/item/IntCircuitBehaviour.java | 5 ----- .../gtceu/common/item/ItemFilterBehaviour.java | 5 ----- .../gtceu/common/item/ItemFluidContainer.java | 5 ----- .../gtceu/common/item/ProspectorScannerBehavior.java | 5 ----- .../gregtechceu/gtceu/common/item/TooltipBehavior.java | 5 ----- .../gtceu/common/item/TurbineRotorBehaviour.java | 5 ----- .../common/machine/electric/BatteryBufferMachine.java | 5 ----- .../common/machine/electric/BlockBreakerMachine.java | 5 ----- .../gtceu/common/machine/electric/ChargerMachine.java | 5 ----- .../gtceu/common/machine/electric/FisherMachine.java | 5 ----- .../common/machine/electric/ItemCollectorMachine.java | 5 ----- .../gtceu/common/machine/electric/PumpMachine.java | 5 ----- .../common/machine/electric/TransformerMachine.java | 5 ----- .../machine/electric/WorldAcceleratorMachine.java | 6 ------ .../multiblock/electric/BedrockOreMinerMachine.java | 5 ----- .../machine/multiblock/electric/FluidDrillMachine.java | 5 ----- .../generator/LargeCombustionEngineMachine.java | 5 ----- .../multiblock/generator/LargeTurbineMachine.java | 5 ----- .../common/machine/multiblock/part/CokeOvenHatch.java | 5 ----- .../multiblock/part/EnergyHatchPartMachine.java | 5 ----- .../machine/multiblock/part/FluidHatchPartMachine.java | 5 ----- .../machine/multiblock/part/ItemBusPartMachine.java | 5 ----- .../machine/multiblock/part/MufflerPartMachine.java | 5 ----- .../machine/multiblock/part/SteamHatchPartMachine.java | 5 ----- .../machine/multiblock/primitive/CokeOvenMachine.java | 5 ----- .../primitive/PrimitiveBlastFurnaceMachine.java | 5 ----- .../multiblock/primitive/PrimitiveWorkableMachine.java | 5 ----- .../machine/multiblock/steam/LargeBoilerMachine.java | 5 ----- .../common/machine/steam/SteamLiquidBoilerMachine.java | 5 ----- .../common/machine/steam/SteamSolidBoilerMachine.java | 5 ----- .../gtceu/common/machine/storage/CrateMachine.java | 5 ----- .../common/machine/trait/BedrockOreMinerLogic.java | 5 ----- .../gtceu/common/machine/trait/FluidDrillLogic.java | 5 ----- .../gtceu/common/pipelike/cable/CableData.java | 5 ----- .../gtceu/common/pipelike/fluidpipe/FluidPipeData.java | 5 ----- .../gtceu/common/pipelike/fluidpipe/FluidPipeNet.java | 5 ----- .../gtceu/common/recipe/condition/BiomeCondition.java | 5 ----- .../common/recipe/condition/DimensionCondition.java | 5 ----- .../common/recipe/condition/EUToStartCondition.java | 5 ----- .../common/recipe/condition/PositionYCondition.java | 5 ----- .../common/recipe/condition/RainingCondition.java | 5 ----- .../common/recipe/condition/RockBreakerCondition.java | 5 ----- .../common/recipe/condition/ThunderCondition.java | 5 ----- .../gtceu/common/recipe/condition/VentCondition.java | 5 ----- .../com/gregtechceu/gtceu/config/ConfigHolder.java | 5 ----- .../gregtechceu/gtceu/core/mixins/BlockModelMixin.java | 5 ----- .../gtceu/core/mixins/GuiGraphicsAccessor.java | 5 ----- .../gtceu/core/mixins/IngredientAccessor.java | 5 ----- .../gtceu/core/mixins/MultiPlayerGameModeMixin.java | 5 ----- .../gtceu/core/mixins/RecipeManagerAccessor.java | 5 ----- .../gtceu/core/mixins/ShapedRecipeAccessor.java | 5 ----- .../com/gregtechceu/gtceu/data/lang/LangHandler.java | 5 ----- .../gtceu/data/recipe/VanillaRecipeHelper.java | 5 ----- .../data/recipe/builder/BlastingRecipeBuilder.java | 5 ----- .../data/recipe/builder/CampfireRecipeBuilder.java | 5 ----- .../builder/ShapedEnergyTransferRecipeBuilder.java | 5 ----- .../gtceu/data/recipe/builder/ShapedRecipeBuilder.java | 5 ----- .../data/recipe/builder/ShapelessRecipeBuilder.java | 5 ----- .../data/recipe/builder/SmeltingRecipeBuilder.java | 5 ----- .../data/recipe/builder/SmokingRecipeBuilder.java | 5 ----- .../gtceu/data/recipe/misc/RecyclingRecipes.java | 3 --- .../gtceu/forge/ForgeCommonEventListener.java | 5 ----- .../ae2/gui/widget/AEFluidConfigWidget.java | 5 ----- .../integration/ae2/gui/widget/AEItemConfigWidget.java | 5 ----- .../integration/ae2/gui/widget/AmountSetWidget.java | 5 ----- .../ae2/gui/widget/list/AEFluidDisplayWidget.java | 4 +--- .../ae2/gui/widget/list/AEItemDisplayWidget.java | 4 +--- .../ae2/gui/widget/list/AEListGridWidget.java | 4 +--- .../ae2/gui/widget/slot/AEConfigSlotWidget.java | 5 ----- .../ae2/gui/widget/slot/AEFluidConfigSlotWidget.java | 5 ----- .../ae2/gui/widget/slot/AEItemConfigSlotWidget.java | 5 ----- .../ae2/machine/MEOutputBusPartMachine.java | 4 +--- .../ae2/machine/feature/IGridConnectedMachine.java | 3 --- .../integration/ae2/machine/trait/GridNodeHolder.java | 3 --- .../gtceu/integration/ae2/slot/ExportOnlyAESlot.java | 4 +--- .../gtceu/integration/ae2/slot/IConfigurableSlot.java | 4 +--- .../gtceu/integration/ae2/utils/KeyStorage.java | 3 --- .../gregtechceu/gtceu/integration/emi/GTEMIPlugin.java | 5 ----- .../gregtechceu/gtceu/integration/jei/GTJEIPlugin.java | 5 ----- .../gtceu/integration/kjs/GregTechKubeJSPlugin.java | 5 ----- .../gregtechceu/gtceu/integration/rei/GTREIPlugin.java | 5 ----- .../integration/top/forge/TheOneProbePluginImpl.java | 5 ----- .../gtceu/integration/xei/widgets/GTOreVeinWidget.java | 4 ---- .../gtceu/integration/xei/widgets/GTRecipeWidget.java | 5 ----- .../gregtechceu/gtceu/syncdata/GTRecipePayload.java | 5 ----- .../gtceu/syncdata/GTRecipeTypeAccessor.java | 4 ---- .../com/gregtechceu/gtceu/utils/FormattingUtil.java | 5 ----- src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java | 5 ----- .../com/gregtechceu/gtceu/utils/TagExprFilter.java | 3 --- 351 files changed, 25 insertions(+), 1714 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java b/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java index 8612db525af..3ada60b9a6a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/addon/events/KJSRecipeKeyEvent.java @@ -10,11 +10,6 @@ import java.util.HashMap; import java.util.Map; -/** - * @author screret - * @date 2023/7/5 - * @implNote An event for adding KJS recipe keys - */ @SuppressWarnings("unused") public class KJSRecipeKeyEvent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/AppearanceBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/AppearanceBlock.java index 3f2ea26e194..0e944446d26 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/AppearanceBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/AppearanceBlock.java @@ -8,11 +8,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/27 - * @implNote AppearanceBlock - */ public class AppearanceBlock extends Block implements IAppearance { public AppearanceBlock(Properties properties) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IAppearance.java b/src/main/java/com/gregtechceu/gtceu/api/block/IAppearance.java index 5224d78f020..f257ec83ad8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IAppearance.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/IAppearance.java @@ -7,11 +7,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/27 - * @implNote IAppearanceBlock - */ public interface IAppearance { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java index 79cd53ceb6f..235146dc0b7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java @@ -21,11 +21,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/31 - * @implNote IMachineBlock - */ public interface IMachineBlock extends IBlockRendererProvider, EntityBlock { DirectionProperty UPWARDS_FACING_PROPERTY = DirectionProperty.create("upwards_facing", Direction.Plane.HORIZONTAL); diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java index 27c220e364c..cbce68d1dd5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialBlock.java @@ -55,11 +55,6 @@ import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote MaterialBlock - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class MaterialBlock extends AppearanceBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java index 912ea2b9b12..4a27b188d90 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java @@ -20,11 +20,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote MaterialPipeBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class MaterialPipeBlock< diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index 95d56d27afb..235c3ebeeea 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -69,11 +69,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote PipeBlock - */ @SuppressWarnings("deprecation") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java index 4513aed1524..56e5221a750 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.blockentity; -/** - * @author screret - * @date 6/28/2023 - * @implNote Implement on paintable block entities - */ public interface IPaintable { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java index 2b0c15991af..3f235559f22 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/ITickSubscription.java @@ -6,11 +6,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ITickSubscription - */ public interface ITickSubscription { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 8c1642a6667..83dcc385ae2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -44,11 +44,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote MetaMachineBlockEntity - */ public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlockEntity { public final MultiManagedStorage managedStorage = new MultiManagedStorage(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index 53aa3612810..c660044b5e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -57,11 +57,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote PipeBlockEntity - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class PipeBlockEntity & IPipeType, NodeDataType> diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index 4cea0f02cb7..37a2038fced 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -16,11 +16,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote EnergyContainerHelper - */ public class GTCapabilityHelper { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java index 0abb344c13e..338ea1b2164 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IToolable.java @@ -12,11 +12,6 @@ import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote IToolable - */ public interface IToolable { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java index 89535cd5ca2..7ac496f11a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java @@ -9,11 +9,6 @@ import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote GTCapabilities - */ public class GTCapability { public static final Capability CAPABILITY_ENERGY_CONTAINER = CapabilityManager diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java index 669f7f5a4bd..50214932fb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/CWURecipeCapability.java @@ -13,11 +13,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ public class CWURecipeCapability extends RecipeCapability { public final static CWURecipeCapability CAP = new CWURecipeCapability(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java index 69ae5f1a923..bf8b9ee60fa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java @@ -14,11 +14,6 @@ import java.util.List; import java.util.Map; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ public class EURecipeCapability extends RecipeCapability { public final static EURecipeCapability CAP = new EURecipeCapability(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index de0732af41a..e923b8ed0e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -45,11 +45,6 @@ import java.util.*; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote FluidRecipeCapability - */ public class FluidRecipeCapability extends RecipeCapability { public final static FluidRecipeCapability CAP = new FluidRecipeCapability(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java index 3cb35600443..46323ef360f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java @@ -8,11 +8,6 @@ import java.util.Comparator; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote IRecipeHandler - */ public interface IRecipeHandler extends IFilteredHandler { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 2e3fdd79676..d44bf258e0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -59,11 +59,6 @@ import java.util.function.UnaryOperator; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemRecipeCapability - */ public class ItemRecipeCapability extends RecipeCapability { public final static ItemRecipeCapability CAP = new ItemRecipeCapability(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java index 5c4e3168639..b9fef5c7eb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java @@ -10,11 +10,6 @@ import net.minecraft.world.entity.player.Player; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote IUICover - */ public interface IUICover extends IUIHolder { default CoverBehavior self() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java index 9c19862f44f..304aef62395 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/Filter.java @@ -7,11 +7,6 @@ import java.util.function.Consumer; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote Filter - */ public interface Filter> extends Predicate { WidgetGroup openConfigurator(int x, int y); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java index bfa7de498e2..9a8a09fb68e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FluidFilter.java @@ -14,11 +14,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote FluidFilter - */ public interface FluidFilter extends Filter { Map> FILTERS = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java index 8c593077240..73e24344dc7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/ItemFilter.java @@ -13,11 +13,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilter - */ public interface ItemFilter extends Filter { Map> FILTERS = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java index 764ed6949d6..16ea87e030a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleFluidFilter.java @@ -21,11 +21,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterHandler - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SimpleFluidFilter implements FluidFilter { diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java index 77447a1d721..5fdf8d697e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SimpleItemFilter.java @@ -20,11 +20,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterHandler - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SimpleItemFilter implements ItemFilter { diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java index 40f7719173f..712f8be4a57 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFilter.java @@ -16,11 +16,6 @@ import java.util.function.Consumer; import java.util.regex.Pattern; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote TagFilter - */ public abstract class TagFilter> implements Filter { private static final Pattern DOUBLE_WILDCARD = Pattern.compile("\\*{2,}"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java index c35e74f4def..ff54bd91eb0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagFluidFilter.java @@ -13,11 +13,6 @@ import java.util.Objects; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote TagFluidFilter - */ public class TagFluidFilter extends TagFilter implements FluidFilter { private final Object2BooleanMap cache = new Object2BooleanOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java index 06fff4d3843..5018590726a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/TagItemFilter.java @@ -12,11 +12,6 @@ import java.util.Objects; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote TagItemFilter - */ public class TagItemFilter extends TagFilter implements ItemFilter { private final Object2BooleanMap cache = new Object2BooleanOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 65e1a217436..1eae80ee58b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -39,11 +39,6 @@ import static com.gregtechceu.gtceu.api.GTValues.M; import static com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData.*; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ChemicalHelper - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ChemicalHelper { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java index bce780f2d08..64ce68c8eba 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java @@ -28,11 +28,6 @@ import java.util.*; -/** - * @author h3tR - * @date 2024/2/12 - * @implNote HazardProperty - */ public class HazardProperty implements IMaterialProperty { public final MedicalCondition condition; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java index 7523df6d8b4..efe1d1c77b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java @@ -11,11 +11,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote TagUtil - */ public class TagUtil { public static TagKey optionalTag(Registry registry, ResourceLocation id) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index 0369b4baf66..956ed2d5e9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -41,11 +41,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author Screret - * @date 2023/6/14 - * @implNote GTOreDefinition - */ @SuppressWarnings("unused") @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java index 645e0155e09..2d5e90ef064 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/IWorldGenLayer.java @@ -10,11 +10,6 @@ import java.util.Set; -/** - * @author Screret - * @date 2023/6/9 - * @implNote IWorldGenLayer - */ public interface IWorldGenLayer extends StringRepresentable { Codec CODEC = ExtraCodecs.stringResolverCodec(StringRepresentable::getSerializedName, diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java index 2017bc664cf..818adaea0b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/RTTTree.java @@ -7,11 +7,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/3/21 - * @implNote RTTTree - */ public class RTTTree { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index 723d2e1eab6..796f84f9859 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -18,11 +18,6 @@ import java.util.Set; -/** - * @author Screret - * @date 2023/6/9 - * @implNote WorldGenLayers - */ public enum WorldGenLayers implements IWorldGenLayer, StringRepresentable { STONE( diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java index f303f0e6da9..9295d11d12b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java @@ -24,11 +24,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote BedrockFluidVeinSavedData - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockFluidVeinSavedData extends SavedData { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java index b95b18b359b..71e7a198d51 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java @@ -10,11 +10,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote FluidVeinWorldEntry - */ public class FluidVeinWorldEntry { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java index 549901bb082..ecdebed7631 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java @@ -28,11 +28,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote BedrockFluidVeinSavedData - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockOreVeinSavedData extends SavedData { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java index 12c82450d6d..285cf3f4047 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java @@ -10,11 +10,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author Screret - * @date 2023/12/20 - * @implNote OreVeinWorldEntry - */ public class OreVeinWorldEntry { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java index b8240ac8a24..f659cb34b01 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java @@ -19,11 +19,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTOrePlacementModifier - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FrequencyModifier extends PlacementModifier { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index 2fbc44aa184..a364ea40d07 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -3,11 +3,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote GuiTextures - */ @SuppressWarnings("unused") public class GuiTextures { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java b/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java index 7b3e89070fd..fa3743bcf94 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/SteamTexture.java @@ -2,11 +2,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote SteamTexture - */ public class SteamTexture { private static final String BRONZE = "bronze"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java b/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java index 98a9cb0348e..46bb179cbeb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/UITemplate.java @@ -7,11 +7,6 @@ import net.minecraft.world.entity.player.Inventory; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote UITemplate - */ public class UITemplate { public static WidgetGroup bindPlayerInventory(Inventory inventoryPlayer, IGuiTexture imageLocation, int x, int y, diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java b/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java index 07259f0db76..ed996599973 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/WidgetUtils.java @@ -9,11 +9,6 @@ import java.util.function.Consumer; import java.util.regex.Pattern; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote WidgetUtils - */ public class WidgetUtils { public static List getWidgetsById(WidgetGroup group, String regex) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java index 6134c419e2d..56798f4bace 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableMachineUI.java @@ -23,11 +23,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote EditableMachineUI - */ public class EditableMachineUI implements IEditableUI { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java index d3004e686c0..3020d5f7676 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/EditableUI.java @@ -10,11 +10,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote EditableUI - */ public class EditableUI implements IEditableUI { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java index 7f608003d10..9f372444007 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/GTUIEditor.java @@ -8,11 +8,6 @@ import static com.lowdragmc.lowdraglib.gui.editor.ui.tool.WidgetToolBox.Default.registerTab; -/** - * @author KilaBash - * @date 2023/7/5 - * @implNote GTUIEditor - */ @LDLRegister(name = "editor.gtceu", group = "editor") public class GTUIEditor extends UIEditor { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java index 3b264950e11..9af8c25799c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/IEditableUI.java @@ -6,11 +6,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/7/4 - * @implNote IEditableUI - */ public interface IEditableUI { W createDefault(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java index 0c2c73ed88b..ef0cf9410a0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/MachineUIProject.java @@ -30,11 +30,6 @@ import java.io.IOException; import java.util.*; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeUIProject - */ @LDLRegister(name = "mui", group = "editor.gtceu") public class MachineUIProject extends UIProject { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java index 284882b8a7b..5927dedaea1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/RecipeTypeUIProject.java @@ -32,11 +32,6 @@ import java.util.List; import java.util.Map; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeUIProject - */ @LDLRegister(name = "rtui", group = "editor.gtceu") public class RecipeTypeUIProject extends UIProject { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java index e879fd44616..717d9e662b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/TemplateTab.java @@ -4,11 +4,6 @@ import com.lowdragmc.lowdraglib.gui.editor.ui.menu.MenuTab; import com.lowdragmc.lowdraglib.gui.util.TreeBuilder; -/** - * @author KilaBash - * @date 2023/3/29 - * @implNote RecipeTypeMenu - */ @LDLRegister(name = "template_tab", group = "editor.gtceu") public class TemplateTab extends MenuTab { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java index 45edd4c8ef0..430266b226a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/editor/UIMainPanel.java @@ -12,11 +12,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/7/5 - * @implNote UIMainPanel - */ public class UIMainPanel extends MainPanel { final String description; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java index ce23b1c7f6b..45b15bb3335 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/CoverUIFactory.java @@ -16,11 +16,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote CoverUIFactory - */ public class CoverUIFactory extends UIFactory { public static final CoverUIFactory INSTANCE = new CoverUIFactory(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java index 8215be8b0d1..0a71e7c5454 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/factory/MachineUIFactory.java @@ -15,11 +15,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote MachineUIFactory - */ public class MachineUIFactory extends UIFactory { public static final MachineUIFactory INSTANCE = new MachineUIFactory(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java index 31543417142..6ab93be46bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java @@ -32,11 +32,6 @@ import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote ConfiguratorPanel - */ public class ConfiguratorPanel extends WidgetGroup { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java index fd68a5135bb..ed934ed888d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/FancyMachineUIWidget.java @@ -20,11 +20,6 @@ import java.util.List; import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote FancyMachineUIWidget - */ @Getter public class FancyMachineUIWidget extends WidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java index 8519d5f8b0b..c60ff187844 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfigurator.java @@ -10,11 +10,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyConfigurator - */ public interface IFancyConfigurator { Component getTitle(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java index 4cf7299a51d..0708b49eccc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyConfiguratorButton.java @@ -18,11 +18,6 @@ import java.util.function.Consumer; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote IFancyConfiguratorButton - */ public interface IFancyConfiguratorButton extends IFancyConfigurator { void onClick(ClickData clickData); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java index 3cc1b71be73..df64e950f24 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java @@ -10,11 +10,6 @@ import java.util.List; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyConfigurator - */ public interface IFancyTooltip { IGuiTexture getFancyTooltipIcon(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java index a2b6ec89184..b5d878fcdc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyUIProvider.java @@ -11,11 +11,6 @@ import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote IFancyUIProvider - */ public interface IFancyUIProvider { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java index a15f7c18fa0..e30d94a8280 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TabsWidget.java @@ -25,11 +25,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote TabsWidget - */ @Getter public class TabsWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java index 5e56a1d8762..5e5e01d7975 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/TooltipsPanel.java @@ -15,11 +15,6 @@ import java.util.Arrays; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/27 - * @implNote TooltipsPanel - */ public class TooltipsPanel extends Widget { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index f565186cf81..95a2acb2e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -47,11 +47,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote ProspectorMode - */ public abstract class ProspectorMode { public static ProspectorMode ORE = new ProspectorMode<>("metaitem.prospector.mode.ores", 16) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 00377e338b7..89b8db9cef6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -57,11 +57,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/3/5 - * @implNote PatterShapeInfoWidget - */ @OnlyIn(Dist.CLIENT) public class PatternPreviewWidget extends WidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java index 19fbb69a7e2..11b8e95e682 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java @@ -11,11 +11,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote DisplayButtonWidget - */ public class PredicatedButtonWidget extends ButtonWidget { private final BooleanSupplier predicate; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java index 8f92e3844ad..be26db6e526 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedImageWidget.java @@ -14,11 +14,6 @@ import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote PredicatedImageWidget - */ @Accessors(chain = true) public class PredicatedImageWidget extends ImageWidget { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java index 674975f9f7c..716725601e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ToggleButtonWidget.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ToggleButtonWidget - */ public class ToggleButtonWidget extends SwitchWidget { private final IGuiTexture texture; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java index a8ff0de3989..2b42d8dbf36 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java @@ -50,11 +50,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ComponentItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ComponentItem extends Item diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java index 448b9eafa9f..29d3b52c335 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java @@ -15,11 +15,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote DrumMachineItem - */ public class DrumMachineItem extends MetaMachineItem { @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java index 7f6406bc3a1..84702cd7d8a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/GTBucketItem.java @@ -35,11 +35,6 @@ import javax.annotation.Nullable; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote GTBucketItem - */ public class GTBucketItem extends BucketItem { final Material material; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java index 19251e5d898..df34a8b4e92 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java @@ -21,10 +21,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @implNote MaterialBlockItem - */ public class MaterialBlockItem extends BlockItem implements IItemRendererProvider { protected MaterialBlockItem(MaterialBlock block, Properties properties) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java index 52ca3f5ecb4..97851db6697 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialPipeBlockItem.java @@ -17,10 +17,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @implNote MaterialBlockItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class MaterialPipeBlockItem extends PipeBlockItem implements IItemRendererProvider { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java index 6e83030b51b..c0e6ecd84b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java @@ -22,11 +22,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MetaMachineItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MetaMachineItem extends BlockItem implements IItemRendererProvider { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java index c03cfb6a6a2..72bf1949d89 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/PipeBlockItem.java @@ -25,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/6/23 - * @implNote PipeBlockItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class PipeBlockItem extends BlockItem { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java index cacd62fdb91..bfabe2f56ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java @@ -30,11 +30,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote MaterialItem - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TagPrefixItem extends Item { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java index 0bedb592ba2..1accd68cc4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/FoodStats.java @@ -19,9 +19,6 @@ /** * Simple {@link IEdibleItem} implementation. - * - * @author GateGuardian - * @date : 2024/7/22 */ public class FoodStats implements IEdibleItem, IInteractionItem, IAddInformation { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java index a51e8d9f6af..24ae38b7004 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IAddInformation.java @@ -9,11 +9,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IAddInformation - */ public interface IAddInformation extends IItemComponent { void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java index 469387f2211..93146985a38 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomDescriptionId.java @@ -5,11 +5,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ICustomDescriptionId - */ public interface ICustomDescriptionId extends IItemComponent { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java index ac2372e7c6f..9a295f6e91f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ICustomRenderer.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote ICustomRenderer - */ public interface ICustomRenderer extends IItemComponent { @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java index ff23fbdad19..5d03859f9a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java @@ -10,11 +10,6 @@ import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IDurabilityBar - */ public interface IDurabilityBar extends IItemDecoratorComponent { default int getBarWidth(ItemStack stack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java index 39a477ec3a3..442e424c40f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IInteractionItem.java @@ -13,11 +13,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IInteractionItem - */ public interface IInteractionItem extends IItemComponent { default InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java index 110ce70d44b..fc72345c0b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemComponent.java @@ -5,13 +5,8 @@ import net.minecraft.world.item.Item; /** - * @author KilaBash - * @date 2023/2/22 - * @implNote IItemComponent - * - * Describes generic component attachable to {@link ComponentItem} - * Multiple components can be attached to one item - * + * Describes generic component attachable to {@link ComponentItem} + * Multiple components can be attached to one item */ public interface IItemComponent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java index 52d40f9addb..c7285c49feb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemLifeCycle.java @@ -4,11 +4,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote IItemLifeCycle - */ public interface IItemLifeCycle extends IItemComponent { void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java index 62353b29daf..33da6b1e1f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IItemUIFactory.java @@ -11,11 +11,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote IItemUIFactory - */ public interface IItemUIFactory extends IInteractionItem { ModularUI createUI(HeldItemUIFactory.HeldItemHolder holder, Player entityPlayer); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java index 389ef5b3a95..505cec2888c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMaterialPartItem.java @@ -20,11 +20,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote IMaterialPartItem - */ public interface IMaterialPartItem extends IItemComponent, IDurabilityBar, IAddInformation, ICustomDescriptionId { int getPartMaxDurability(ItemStack itemStack); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java index e1d09d9c511..28ad807eb42 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IRecipeRemainder.java @@ -2,11 +2,6 @@ import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote IRecipeRemainder - */ @FunctionalInterface public interface IRecipeRemainder extends IItemComponent { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java index bc2053730bb..cb83d825586 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ISubItemHandler.java @@ -5,11 +5,6 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ISubItemHandler - */ public interface ISubItemHandler extends IItemComponent { default void fillItemCategory(Item item, CreativeModeTab category, NonNullList items) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java index 8f756aa869a..8b997683bfc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ThermalFluidStats.java @@ -22,11 +22,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ThermalFluidStats - */ public class ThermalFluidStats implements IItemComponent, IComponentCapability, IAddInformation { public final int capacity; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java index 2cbcb927c69..51f9033d40e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/forge/IComponentCapability.java @@ -6,11 +6,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote IComponentCapability - */ public interface IComponentCapability { @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java index 552ff5ebc18..2c875ae0a8a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote GTToolItem - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GTToolItem extends DiggerItem implements IGTTool { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java index 0df003a3ccb..ff2e232c144 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java @@ -33,11 +33,6 @@ import java.util.*; import java.util.function.UnaryOperator; -/** - * @author Screret - * @date 2023/2/23 - * @implNote GTToolType - */ public class GTToolType { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java index ff480f05515..25c0f03077a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java @@ -12,10 +12,6 @@ import java.util.Set; -/** - * @author KilaBash - * @date 2023/3/2 - */ public interface IToolGridHighlight { default boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held, diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java index a25c0b3aa92..87a5531a673 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/MaterialToolTier.java @@ -13,11 +13,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote MaterialTier - */ public class MaterialToolTier implements Tier { public final Material material; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index d5350d5f96b..c09a93b36ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -75,11 +75,6 @@ import java.util.*; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ToolHelper - */ public class ToolHelper { public static final String TOOL_TAG_KEY = "GT.Tool"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index 12d216c0ef8..1741bab070b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -30,11 +30,6 @@ import java.util.ArrayList; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineCoverContainer - */ public class MachineCoverContainer implements ICoverable, IEnhancedManaged { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(MachineCoverContainer.class); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index aa8472236dc..af582a118cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -36,10 +36,7 @@ import java.util.function.*; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineDefinition - * Representing basic information of a machine. + * Representing basic information of a machine. */ public class MachineDefinition implements Supplier { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index c092a85f3d3..8e24776dd14 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -80,12 +80,10 @@ import static com.gregtechceu.gtceu.api.item.tool.ToolHelper.getBehaviorsTag; /** - * @author KilaBash - * @date 2023/2/17 - * @implNote MetaMachine, an abstract layer of gregtech machine. - * Because I have to implement BlockEntities for both fabric and forge platform. - * All fundamental features will be implemented here. - * To add additional features, you can see {@link IMachineFeature} + * an abstract layer of gregtech machine. + * Because I have to implement BlockEntities for both fabric and forge platform. + * All fundamental features will be implemented here. + * To add additional features, you can see {@link IMachineFeature} */ @SuppressWarnings("removal") @ParametersAreNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index efaaf6ead67..914b09ba922 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -21,11 +21,6 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockMachineDefinition - */ public class MultiblockMachineDefinition extends MachineDefinition { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index 0213008fb79..8e893084da0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/17 - * @implNote SimpleGeneratorMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SimpleGeneratorMachine extends WorkableTieredMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index ca70e0e54e6..8039a8f4b75 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -58,10 +58,7 @@ import javax.annotation.ParametersAreNonnullByDefault; /** - * @author KilaBash - * @date 2023/2/19 - * @implNote SimpleMachine - * All simple single machines are implemented here. + * All simple single machines are implemented here. */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java index a0632a2a51f..a284979f333 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TickableSubscription.java @@ -2,11 +2,6 @@ import lombok.Getter; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote TickableSubscription - */ public class TickableSubscription { private final Runnable runnable; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java index 59b75cbc8a9..4777129e9f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredEnergyMachine.java @@ -21,11 +21,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote TieredMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredEnergyMachine extends TieredMachine implements ITieredMachine, IExplosionMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java index 802f23655ae..40fe9099ac3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/TieredMachine.java @@ -4,11 +4,6 @@ import lombok.Getter; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote TieredMachine - */ public class TieredMachine extends MetaMachine implements ITieredMachine { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 20101b077bb..f419875a5ac 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -23,11 +23,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote WorkableTieredMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class WorkableTieredMachine extends TieredEnergyMachine implements IRecipeLogicMachine, diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java index 16df5e81037..522673f4fc7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/CircuitFancyConfigurator.java @@ -30,11 +30,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/6/30 - * @implNote CircuitFancyConfigurator - */ public class CircuitFancyConfigurator implements IFancyConfigurator, IFancyCustomMouseWheelAction, IFancyCustomMiddleClickAction { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java index 0e23cf36950..ead597bd7ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java @@ -19,10 +19,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author Rundas/Screret - * @implNote MachineModeFancyConfigurator - */ public class MachineModeFancyConfigurator implements IFancyUIProvider { protected IRecipeLogicMachine machine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java index 15b69fe97a1..f796f58bc69 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java @@ -24,11 +24,6 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/7/1 - * @implNote OverclockFancyConfigurator - */ public class OverclockFancyConfigurator implements IFancyConfigurator { protected IOverclockMachine overclockMachine; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java index 715db1981d7..ce21d151ee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputBoth.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.machine.feature; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote IAutoOutputMachine - */ public interface IAutoOutputBoth extends IAutoOutputItem, IAutoOutputFluid, IMachineFeature { } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java index 9a00ff2c6c6..9a47c81243e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputFluid.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IAutoOutputItem - */ public interface IAutoOutputFluid extends IMachineFeature { boolean isAutoOutputFluids(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java index c8c834a8be4..fb8ad43fd47 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IAutoOutputItem.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IAutoOutputItem - */ public interface IAutoOutputItem extends IMachineFeature { boolean isAutoOutputItems(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java index 6bcf6a76c5f..86bb8b68348 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IEnvironmentalHazardEmitter.java @@ -11,9 +11,7 @@ import net.minecraft.server.level.ServerLevel; /** - * @author screret - * @date 2024/6/8 - * @apiNote common interface for environmental hazard (e.g. pollution) emitters like mufflers. + * common interface for environmental hazard (e.g. pollution) emitters like mufflers. */ public interface IEnvironmentalHazardEmitter extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java index a7054b955e8..bf1c40a6b88 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExplosionMachine.java @@ -10,10 +10,7 @@ import net.minecraft.world.level.block.Blocks; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote IExplosionMachine - * A machine which may cause explosion. e.g. whether, water around + * A machine which may cause explosion. e.g. whether, water around */ public interface IExplosionMachine extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java index 5f8b568fecf..ae54a92b14b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java @@ -31,11 +31,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/6/28 - * @implNote IFancyUIMachine - */ public interface IFancyUIMachine extends IUIMachine, IFancyUIProvider { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java index c278cad1f9f..ca28205513d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IInteractedMachine.java @@ -10,9 +10,7 @@ import net.minecraft.world.phys.BlockHitResult; /** - * @author KilaBash - * @date 2022/11/6 - * @implNote A machine which hooks right click events. + * A machine which hooks right click events. */ public interface IInteractedMachine extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java index 72ab936914a..41144c5946c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ILocalizedHazardEmitter.java @@ -11,9 +11,7 @@ import net.minecraft.server.level.ServerLevel; /** - * @author screret - * @date 2024/6/9 - * @apiNote common interface for localized hazard (e.g. radiation) emitters like nuclear reactors. + * common interface for localized hazard (e.g. radiation) emitters like nuclear reactors. */ public interface ILocalizedHazardEmitter extends IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java index f40f4aab86c..518cd573cfb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineFeature.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote IMachine - */ public interface IMachineFeature { default MetaMachine self() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java index b99210226d5..b41e7044297 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineLife.java @@ -10,11 +10,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote events are fired for machine - */ public interface IMachineLife extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java index d29fa107cfc..e7b57207514 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMachineModifyDrops.java @@ -4,11 +4,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2022/9/23 - * @implNote IBlockEntityModifyDrops - */ public interface IMachineModifyDrops extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java index cc0e49b2e31..d80b5f915b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IMufflableMachine.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.machine.feature; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote IMufflableMachine - */ public interface IMufflableMachine extends IMachineFeature { boolean isMuffled(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java index fe05b3d22e0..00e3ef66fe2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IOverclockMachine.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote IOverclockMachine - */ public interface IOverclockMachine extends IMachineFeature { int getOverclockTier(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index f1a728f4aa0..83a53f754ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -13,10 +13,7 @@ import org.jetbrains.annotations.Nullable; /** - * @author KilaBash - * @date 2023/2/20 - * @implNote IRecipeMachine - * A machine can handle recipes. + * A machine can handle recipes. */ public interface IRecipeLogicMachine extends IRecipeCapabilityHolder, IMachineFeature, IWorkable, ICleanroomReceiver, IVoidable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java index 0142664af73..145eefb84b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRedstoneSignalMachine.java @@ -4,11 +4,6 @@ import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote IRedstoneSignalMachine - */ public interface IRedstoneSignalMachine extends IMachineFeature { default int getOutputSignal(@Nullable Direction side) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java index 0c4f19aa609..feef8458d96 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/ITieredMachine.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.GTValues; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote ITieredMachine - */ public interface ITieredMachine extends IMachineFeature { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java index 81bb408d6fc..55db2a80cf5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IUIMachine.java @@ -12,9 +12,7 @@ import net.minecraft.world.phys.BlockHitResult; /** - * @author KilaBash - * @date 2023/2/17 - * @implNote A machine that has gui. can be opened via right click. + * A machine that has gui. can be opened via right click. */ public interface IUIMachine extends IUIHolder, IMachineFeature { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java index 4ea74e60c9a..11efe7775c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDisplayUIMachine.java @@ -16,11 +16,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IDisplayUIMachine - */ public interface IDisplayUIMachine extends IUIMachine, IMultiController { default void addDisplayText(List textList) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java index a1b45691fa8..1c1947d7ed3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IDistinctPart.java @@ -10,11 +10,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote IDistinctPart - */ public interface IDistinctPart extends IMultiPart { boolean isDistinct(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 9cfd428aec1..4ebf14c363a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -25,11 +25,6 @@ import java.util.Optional; import java.util.concurrent.locks.Lock; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote IControllerComponent - */ public interface IMultiController extends IMachineFeature, IInteractedMachine { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java index 76e0c1d2d5a..0ab6861e6b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiPart.java @@ -19,11 +19,6 @@ import java.util.List; import java.util.SortedSet; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote IMultiPart - */ public interface IMultiPart extends IMachineFeature, IFancyUIMachine { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java index d2c8a39e316..6de3eccfa3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java @@ -18,11 +18,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote IRotorHolderMachine - */ public interface IRotorHolderMachine extends IMultiPart { int SPEED_INCREMENT = 1; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java index 705d2745a5b..1f5ce9feb5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IWorkableMultiController.java @@ -2,9 +2,4 @@ import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -/** - * @author KilaBash - * @date 2023/7/2 - * @implNote IWorkableMultiController - */ public interface IWorkableMultiController extends IMultiController, IRecipeLogicMachine {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java index f6f4be279b2..112c5566288 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/CoilWorkableElectricMultiblockMachine.java @@ -10,11 +10,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote PyrolyseOvenMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CoilWorkableElectricMultiblockMachine extends WorkableElectricMultiblockMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 58d2c485c14..a00f0ea4175 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -43,11 +43,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote MultiblockControllerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MultiblockControllerMachine extends MetaMachine implements IMultiController { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java index 12282f5d0e3..7a5e705678b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java @@ -12,13 +12,6 @@ import java.util.*; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockAbility - * Fine, It's not really needed。It used to specify which blocks are available. - * Only registered blocks can be used as part of gtceu's multiblock. - */ public class PartAbility { public static final PartAbility EXPORT_ITEMS = new PartAbility("export_items"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java index a05f44afede..b3fa9310bee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/TieredWorkableElectricMultiblockMachine.java @@ -14,11 +14,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author screret - * @date 2023/7/11 - * @implNote TieredWorkableElectricMultiblockMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredWorkableElectricMultiblockMachine extends WorkableElectricMultiblockMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 3d076c7153e..763ba6c6c35 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -34,11 +34,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/6 - * @implNote WorkableElectricMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine implements IFancyUIMachine, diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 6bbda577e51..f25c7f140a6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote WorkableMultiblockMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class WorkableMultiblockMachine extends MultiblockControllerMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index 9736e3d9be6..9e24b5fdb54 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -31,11 +31,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote MultiblockPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MultiblockPartMachine extends MetaMachine implements IMultiPart { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java index 05f243b1fed..d0bc262c0f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredIOPartMachine.java @@ -17,11 +17,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote TieredIOPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredIOPartMachine extends TieredPartMachine implements IControllable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java index cedaafbdbf5..becbaf3bd68 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/TieredPartMachine.java @@ -9,11 +9,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote TieredPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TieredPartMachine extends MultiblockPartMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 9174999b711..6a73cd0bf3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -60,11 +60,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamBoilerMachine extends SteamWorkableMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java index 03c5f25d8c6..50f090447b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java @@ -18,11 +18,6 @@ import java.util.Collections; import java.util.List; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamEnergyRecipeHandler - */ public class SteamEnergyRecipeHandler implements IRecipeHandler { private final NotifiableFluidTank steamTank; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 28bde9c8fb6..9c89ba20eff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -15,11 +15,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamMachine extends MetaMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index a4335a700e3..773e911c718 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -42,11 +42,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote SteamWorkableMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public abstract class SteamWorkableMachine extends SteamMachine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java index e64af182ba9..19fa260639b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/FluidTankProxyTrait.java @@ -15,11 +15,6 @@ import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote FluidTankProxyTrait - */ @Accessors(chain = true) public class FluidTankProxyTrait extends MachineTrait implements IFluidHandlerModifiable, ICapabilityTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java index 7b9a1fc1782..538fb298be4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java @@ -2,11 +2,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote ICapabilityTrait - */ public interface ICapabilityTrait { IO getCapabilityIO(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java index 8d46d747168..29e39511ad2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/IRecipeHandlerTrait.java @@ -5,11 +5,6 @@ import com.lowdragmc.lowdraglib.syncdata.ISubscription; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote IRecipeHandlerTrait - */ public interface IRecipeHandlerTrait extends IRecipeHandler { IO getHandlerIO(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java index a398a816b48..169ef746b3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ItemHandlerProxyTrait.java @@ -16,11 +16,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote ItemHandlerProxyTrait - */ @Accessors(chain = true) public class ItemHandlerProxyTrait extends MachineTrait implements IItemHandlerModifiable, ICapabilityTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java index f178e128c58..fb783e96adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java @@ -16,10 +16,8 @@ import java.util.function.Predicate; /** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineTrait represents an abstract capability held by machine. Such as item, fluid, energy, etc. - * All trait should be added while MetaMachine is creating. you cannot modify it on the fly。 + * represents an abstract capability held by machine. Such as item, fluid, energy, etc. + * All trait should be added while MetaMachine is creating. you cannot modify it on the fly。 */ public abstract class MachineTrait implements IEnhancedManaged { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 41136327398..52d83e7a53b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -24,11 +24,6 @@ import java.util.*; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote NotifiableFluidTank - */ public class NotifiableFluidTank extends NotifiableRecipeHandlerTrait implements ICapabilityTrait, IFluidHandlerModifiable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index ad90200e286..c0fa942ef3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -33,11 +33,6 @@ import java.util.function.IntFunction; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote NotifiableItemStackHandler - */ public class NotifiableItemStackHandler extends NotifiableRecipeHandlerTrait implements ICapabilityTrait, IItemHandlerModifiable { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java index c916120b306..476a92cccc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableRecipeHandlerTrait.java @@ -13,11 +13,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote NotifiableTrait - */ public abstract class NotifiableRecipeHandlerTrait extends MachineTrait implements IRecipeHandlerTrait { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java index f5dc08904cc..5cd23c9039e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/IOFluidHandlerList.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/3/14 - * @implNote IOFluidTransferList - */ public class IOFluidHandlerList extends FluidHandlerList implements IFluidHandlerModifiable { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java index 47dc77e0f8e..64bc1a0f32a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/ItemRecipeHandler.java @@ -17,11 +17,6 @@ import java.util.ArrayList; import java.util.List; -/** - * @author KilaBash - * @date 2023/7/13 - * @implNote ItemRecipeHandler - */ public class ItemRecipeHandler implements IRecipeHandler { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java index a256aede09b..d6913d03a8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java @@ -8,11 +8,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote FluidHandlerHelperImpl - */ public class SimpleThermalFluidHandlerItemStack extends FluidHandlerItemStackSimple implements IThermalFluidHandlerItemStack { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java index 59ca6377ae7..9430665659b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/IAttachData.java @@ -2,11 +2,6 @@ import net.minecraft.core.Direction; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote IAttachData - */ public interface IAttachData { /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java index c84dedb39ef..d3752d20eca 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/ITickablePipeNet.java @@ -1,10 +1,5 @@ package com.gregtechceu.gtceu.api.pipenet; -/** - * @author KilaBash - * @date 2023/2/28 - * @implNote ITickablePipeNet - */ public interface ITickablePipeNet { void update(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java index 4dfec360223..5f97235a781 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeCoverContainer.java @@ -31,12 +31,6 @@ import lombok.Getter; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote PipeCoverContainer - */ - public class PipeCoverContainer implements ICoverable, IEnhancedManaged { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(PipeCoverContainer.class); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java index 75f6f4931e4..7e8f7061435 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java @@ -25,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/28 - * @implNote FacadeCoverRecipe - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class FacadeCoverRecipe implements CraftingRecipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index cbb0fbbc34e..a4bda6b7538 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -24,11 +24,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipe - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GTRecipe implements net.minecraft.world.item.crafting.Recipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index 3007c787056..4f46dedf6b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -29,11 +29,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeSerializer - */ public class GTRecipeSerializer implements RecipeSerializer { public static final Codec CODEC = makeCodec(GTCEu.Mods.isKubeJSLoaded()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index c77e11bdc65..8517e33cd1e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -42,11 +42,6 @@ import java.util.*; import java.util.function.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeType - */ @Accessors(chain = true) public class GTRecipeType implements RecipeType { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java index 2baeb80ad9c..576a635f457 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java @@ -20,11 +20,6 @@ import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote RecipeCondition, global conditions - */ @Accessors(chain = true) public abstract class RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index 55e7c93604e..b9795d2f9db 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -22,11 +22,6 @@ import java.util.*; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote RecipeHelper - */ public class RecipeHelper { public static long getInputEUt(GTRecipe recipe) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 3ddedef79a2..570b28f36ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -17,9 +17,6 @@ import java.util.List; import java.util.Map; -/** - * Used to handle recipes, only valid for a single RecipeCapability's entries - */ class RecipeRunner { record RecipeHandlingResult(ActionResult result, @Nullable RecipeCapability capability) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java index 951d2e8ae95..9308ae0107c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedEnergyTransferRecipe.java @@ -23,11 +23,6 @@ import java.util.Map; -/** - * @author Irgendwer01 - * @date 2023/11/4 - * @implNote ShapedEnergyTransferRecipe - */ @MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault public class ShapedEnergyTransferRecipe extends ShapedRecipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java index 84168104b50..529e54e4fce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/StrictShapedRecipe.java @@ -22,11 +22,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote StrictShapedRecipe - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class StrictShapedRecipe extends ShapedRecipe { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java index acda029381c..37f4db3fd80 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java @@ -10,11 +10,6 @@ import java.math.BigInteger; -/** - * @author KilaBash - * @date 2022/06/22 - * @implNote SerializerBigInteger - */ public class SerializerBigInteger implements IContentSerializer { public static final Codec CODEC = Codec.STRING.comapFlatMap(str -> { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java index 3336e22a7e5..47188d07aae 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java @@ -7,11 +7,6 @@ import com.mojang.serialization.Codec; import org.apache.commons.lang3.math.NumberUtils; -/** - * @author KilaBash - * @date 2022/06/22 - * @implNote SerializerLong - */ public class SerializerLong implements IContentSerializer { public static SerializerLong INSTANCE = new SerializerLong(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java index 9ef4b93e2cf..d4ee09bbbbc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java @@ -4,11 +4,6 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.StrictNBTIngredient; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote NBTIngredient - */ public class NBTIngredient { public static Ingredient createNBTIngredient(ItemStack itemStack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index e8abf3052eb..0ed58043442 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -36,11 +36,6 @@ import com.mojang.serialization.Codec; import org.jetbrains.annotations.ApiStatus; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote ElementRegistry - */ public final class GTRegistries { // GT Registry diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java index 2b00d1fe954..abb843e8f37 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistry.java @@ -20,11 +20,6 @@ import java.util.*; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTRegistry - */ public abstract class GTRegistry implements Iterable { public static final Map> REGISTERED = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 7311642ab79..064f9063918 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -59,11 +59,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTRegistrate - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class GTRegistrate extends Registrate { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java index 0746cd56143..4e60ac0b0b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/IGTFluidBuilder.java @@ -9,11 +9,6 @@ import java.util.function.Consumer; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTFluidBuilder - */ public interface IGTFluidBuilder { IGTFluidBuilder temperature(int temperature); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index c01bba9774a..7a347372f96 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -69,11 +69,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineBuilder - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @Accessors(chain = true, fluent = true) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 303899229b6..66800de6868 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -57,11 +57,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote MachineBuilder - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @Accessors(chain = true, fluent = true) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java index 7a7f82f4bb8..26cb40fb445 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java @@ -24,11 +24,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote SoundEntryBuilder - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SoundEntryBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java index aad6b326f13..d9a6c810e70 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/forge/GTFluidBuilder.java @@ -56,11 +56,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTFluidBuilderImpl - */ @Accessors(chain = true, fluent = true) @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java b/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java index e736953be24..04df39bdd6e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/AutoReleasedSound.java @@ -8,11 +8,6 @@ import java.util.function.BooleanSupplier; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote AutoReleasedSound - */ @OnlyIn(Dist.CLIENT) public class AutoReleasedSound extends AbstractTickableSoundInstance { diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java b/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java index 3fd3f41febe..f317f20bc82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/ConfiguredSoundEvent.java @@ -4,9 +4,4 @@ import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote ConfiguredSoundEvent - */ public record ConfiguredSoundEvent(Supplier event, float volume, float pitch) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java index 4ba6dd6abb9..a20251fe312 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/CustomSoundEntry.java @@ -12,11 +12,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote CustomSoundEntry - */ public class CustomSoundEntry extends SoundEntry { protected List variants; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java index 11f57621b5d..922dfbf10d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/ExistingSoundEntry.java @@ -11,11 +11,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote CustomSoundEntry - */ public class ExistingSoundEntry extends SoundEntry { protected List variants; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java index 0a0bf968a18..31a1dcd0fda 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java @@ -18,11 +18,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote SoundEntry, copied from create - */ public abstract class SoundEntry { protected ResourceLocation id; diff --git a/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java index aec7f708c9a..5a9ac641761 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/WrappedSoundEntry.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote WrappedSoundEntry - */ public class WrappedSoundEntry extends SoundEntry { private final List wrappedEvents; diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index 8ce2dd6d655..7ad00828d4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -46,11 +46,6 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; -/** - * @author KilaBash - * @date 2023/7/30 - * @implNote ClientProxy - */ public class ClientProxy extends CommonProxy { public static final BiMap CLIENT_ORE_VEINS = HashBiMap.create(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java index afd872b4c5e..3ebbd5cd886 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java @@ -34,11 +34,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/11 - * @implNote TooltipsHandler - */ @OnlyIn(Dist.CLIENT) public class TooltipsHandler { diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index ca0cc1da457..b2206cb88f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -19,11 +19,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -/** - * @author KilaBash - * @date 2022/8/27 - * @implNote ForgeCommonEventListener - */ @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) @OnlyIn(Dist.CLIENT) public class ForgeClientEventListener { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java index 545b3920df4..254706cf370 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/ItemBakedModel.java @@ -10,11 +10,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote ItemBakedModel - */ @OnlyIn(Dist.CLIENT) public interface ItemBakedModel extends BakedModel { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java b/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java index 47c11ec0c0b..7669fafb22d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java @@ -13,11 +13,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/27 - * @implNote ModelUtil - */ @OnlyIn(Dist.CLIENT) public class ModelUtil { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java index 986711b5966..0ccc902d6d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java @@ -38,11 +38,6 @@ import java.util.function.Function; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote PipeModel - */ public class PipeModel { public static final ResourceLocation PIPE_BLOCKED_OVERLAY = GTCEu.id("block/pipe/blocked/pipe_blocked"); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java index 2986d611297..b31fed17bff 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java @@ -9,11 +9,6 @@ import java.util.Map; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/6/26 - * @implNote SpriteOverrider - */ @OnlyIn(Dist.CLIENT) public record SpriteOverrider(Map override) implements Function { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java index 3832a533b19..b55177244f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java @@ -36,11 +36,6 @@ import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote WorkableOverlayModel - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class WorkableOverlayModel { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java index 52acef82540..69f48e2e5f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java @@ -43,11 +43,6 @@ import java.util.Set; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote BlockHighlightRenderer - */ @OnlyIn(Dist.CLIENT) public class BlockHighlightRenderer { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java index 314af058a88..1f7e7f00087 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java @@ -18,11 +18,6 @@ import java.util.Map; import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/24 - * @implNote BlockStateModelRenderer - */ public class BlockStateModelRenderer implements IRenderer { private final Map models; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java index c70126ff93c..8bcc4e8219a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java @@ -12,11 +12,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2022/11/3 - * @implNote TCRendererProvider - */ @OnlyIn(Dist.CLIENT) @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java index f0cf324225d..4bbfa9f6072 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java @@ -6,11 +6,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -/** - * @author KilaBash - * @date 2019/12/7 - * @implNote CTMModelRenderer - */ public class CTMModelRenderer extends IModelRenderer { public CTMModelRenderer(ResourceLocation modelLocation) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java index 49504dcea63..afe287e5b0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java @@ -13,11 +13,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote MaterialBlockRenderer - */ public class MaterialBlockRenderer { public static final String LAYER_2_SUFFIX = "_layer2"; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java index bb552ee6c00..50aee4338b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java @@ -24,11 +24,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/27 - * @implNote OreBlockRenderer - */ @MethodsReturnNonnullByDefault public class OreBlockRenderer { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java index f7f50f15bd5..7ca30cc8a84 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java @@ -37,11 +37,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote PipeBlockRenderer - */ public class PipeBlockRenderer implements IRenderer, ICoverableRenderer { @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java index 611d268076c..c498c9b7c91 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java @@ -25,11 +25,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ public class ConveyorCoverRenderer implements ICoverRenderer { public final static ConveyorCoverRenderer INSTANCE = new ConveyorCoverRenderer(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 71ac14e596e..1944bf76499 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -40,11 +40,8 @@ import java.util.List; /** - * @author KilaBash - * @date 2023/2/24 - * @implNote FacadeRenderer - * It can only be used for item. - * call it in other renderer to render a facade cover. + * It can only be used for item. + * call it in other renderer to render a facade cover. */ public class FacadeCoverRenderer implements ICoverRenderer { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java index 9ca4807998f..7b7fbfb6e4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java @@ -24,11 +24,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ public class FluidRegulatorCoverRenderer implements ICoverRenderer { public final static FluidRegulatorCoverRenderer INSTANCE = new FluidRegulatorCoverRenderer(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java index bf67108162c..10a9f3cf77c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java @@ -20,10 +20,7 @@ import java.util.List; /** - * @author KilaBash - * @date 2023/2/24 - * @implNote ICoverRenderer - * Do not use it as a block renderer alone. It should be called from {@link ICoverableRenderer} + * Do not use it as a block renderer alone. It should be called from {@link ICoverableRenderer} */ public interface ICoverRenderer extends IRenderer { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index f2986b5d81e..bed0f7296f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -26,11 +26,6 @@ import java.util.LinkedList; import java.util.List; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote IMachineRenderer - */ public interface ICoverableRenderer extends IRenderer { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java index 30b92cff692..545ca844f04 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java @@ -24,11 +24,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCoverRenderer - */ public class PumpCoverRenderer implements ICoverRenderer { public final static PumpCoverRenderer INSTANCE = new PumpCoverRenderer(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java index b761f531ac5..959c4ff06d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java @@ -23,11 +23,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote SimpleCoverRenderer - */ public class SimpleCoverRenderer implements ICoverRenderer { ResourceLocation texture; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java index 701b5a17f94..0537d125a26 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/TagPrefixItemRenderer.java @@ -12,11 +12,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/16 - * @implNote TagPrefixItemRenderer - */ public class TagPrefixItemRenderer { private static final Set MODELS = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java index 4fd47be00ff..9858c4daad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolItemRenderer.java @@ -10,11 +10,6 @@ import java.util.HashSet; import java.util.Set; -/** - * @author KilaBash - * @date 2023/2/16 - * @implNote TagPrefixItemRenderer - */ public class ToolItemRenderer { private static final Set MODELS = new HashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java index afb24303135..a62b87b1ed2 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java @@ -17,11 +17,6 @@ import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerRenderer - */ public class BatteryBufferRenderer extends TieredHullMachineRenderer { private final int inventorySize; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java index b8d2c4b0c64..d33e0e27c59 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java @@ -14,11 +14,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IControllerRenderer - */ public interface IControllerRenderer { /** diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java index 6b75cd3f0f4..d820d45802c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java @@ -15,11 +15,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote IPartRenderer - */ public interface IPartRenderer { /** diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java index 986127bce73..624d094dc3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java @@ -19,11 +19,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote PartSteamMachineRenderer - */ @SuppressWarnings("removal") public class OverlaySteamMachineRenderer extends SteamHullMachineRenderer implements IPartRenderer { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java index 8abbf7fdbdc..4ee7adc27a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java @@ -23,11 +23,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/5/25 - * @implNote PumpHatchPartRenderer - */ public class PumpHatchPartRenderer extends CTMModelRenderer { public static final ResourceLocation PIPE_OUT = GTCEu.id("block/overlay/machine/overlay_pipe_out"); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java index b2b47d7ddbb..aef8bce2bd1 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java @@ -41,11 +41,6 @@ import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote QuantumChestRenderer - */ public class QuantumChestRenderer extends TieredHullMachineRenderer { private static Item CREATIVE_CHEST_ITEM = null; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java index 5f83620fc81..b0105f62b3b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java @@ -45,11 +45,6 @@ import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote QuantumChestRenderer - */ public class QuantumTankRenderer extends TieredHullMachineRenderer { private static final float MIN = 0.16f; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java index 5aa8e0ed400..3a3d471b7da 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java @@ -15,11 +15,6 @@ import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.ENERGY_OUT_1A; -/** - * @author KilaBash - * @date 2023/3/17 - * @implNote SimpleGeneratorMachineRenderer - */ public class SimpleGeneratorMachineRenderer extends WorkableTieredHullMachineRenderer { public SimpleGeneratorMachineRenderer(int tier, ResourceLocation workableModel) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java index d042c203907..79d7a683f69 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java @@ -13,11 +13,6 @@ import java.util.Map; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamHullMachineRenderer - */ public class SteamHullMachineRenderer extends MachineRenderer { public SteamHullMachineRenderer(boolean isHighTier, ResourceLocation modelLocation) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java index 3700fb9890a..aa07f08004e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java @@ -15,11 +15,6 @@ import java.util.Locale; import java.util.Map; -/** - * @author KilaBash - * @date 2023/3/2 - * @implNote TieredHullMachineRenderer - */ public class TieredHullMachineRenderer extends MachineRenderer { public TieredHullMachineRenderer(int tier, ResourceLocation modelLocation) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java index 1974df920fd..54de382f695 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java @@ -18,11 +18,6 @@ import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerRenderer - */ public class TransformerRenderer extends TieredHullMachineRenderer { private final int baseAmp; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java index 6a28b12d11b..7daa4db4d4b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java @@ -23,11 +23,6 @@ import java.util.Map; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote WorkableCasingMachineRenderer - */ public class WorkableCasingMachineRenderer extends MachineRenderer { protected final WorkableOverlayModel overlayModel; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java index cc8d6703a16..672e8f9357f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java @@ -24,11 +24,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamBoilerRenderer - */ public class WorkableSteamMachineRenderer extends SteamHullMachineRenderer { public static final ResourceLocation VENT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_steam_vent"); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java index a88442e2c4b..53a6baa0129 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java @@ -22,11 +22,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote WorkableTieredHullMachineRenderer - */ public class WorkableTieredHullMachineRenderer extends TieredHullMachineRenderer { protected final WorkableOverlayModel overlayModel; diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java index e46dedae6f4..404fe9a3a94 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java @@ -6,11 +6,6 @@ import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/9 - * @implNote BoilerFireBoxCasingBlock - */ public record BoilerFireboxType(String name, ResourceLocation bottom, ResourceLocation top, ResourceLocation side) { public static BoilerFireboxType BRONZE_FIREBOX = new BoilerFireboxType("bronze_firebox", diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java index 584a10ddae1..4bbdcd9f334 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java @@ -43,11 +43,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CableBlock extends MaterialPipeBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java index 9a518f2cd2f..6b38fb4bba1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/CoilBlock.java @@ -22,11 +22,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote CoilBlock - */ @ParametersAreNonnullByDefault public class CoilBlock extends ActiveBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java index 7df277a3bfb..56bf336e3ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/FluidPipeBlock.java @@ -40,11 +40,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote FluidPipeBlock - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidPipeBlock extends MaterialPipeBlock { diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java index 18419d6c72d..1eae2d72c33 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/MinerPipeBlock.java @@ -7,11 +7,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -/** - * @author KilaBash - * @date 2023/7/13 - * @implNote MinerPipeBlock - */ public class MinerPipeBlock extends Block { public static VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/CableBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/CableBlockEntity.java index 4af5ac9de18..bdad968b985 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/CableBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/CableBlockEntity.java @@ -47,11 +47,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableBlockEntity - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CableBlockEntity extends PipeBlockEntity implements IDataInfoProvider { diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index 619bda89e79..c0d518b5790 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -40,11 +40,6 @@ import static net.minecraft.commands.Commands.*; -/** - * @author KilaBash - * @date 2023/2/9 - * @implNote GTCommands - */ public class GTCommands { public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java index 27114314e47..2c7ff6f7259 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java @@ -56,11 +56,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote ConveyorCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ConveyorCover extends CoverBehavior implements IUICover, IControllable { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java index 4c196f74fbb..0d03683cba3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java @@ -28,11 +28,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidFilterCover extends CoverBehavior implements IUICover { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java index ca09deade6b..6c8db9886cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/InfiniteWaterCover.java @@ -15,11 +15,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote InfiniteWaterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class InfiniteWaterCover extends CoverBehavior { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java index a4d9b39b210..ae1aeccfe66 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java @@ -33,11 +33,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemFilterCover extends CoverBehavior implements IUICover { diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index 2989cff0a2c..836d046e320 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -51,11 +51,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/12 - * @implNote PumpCover - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PumpCover extends CoverBehavior implements IUICover, IControllable { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index 3c09bacf470..cba81582187 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -21,10 +21,6 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.register; import static com.lowdragmc.lowdraglib.gui.texture.ProgressTexture.FillDirection.LEFT_TO_RIGHT; -/** - * @author Rundas - * @implNote Gregicality Multiblocks Recipe Types - */ public class GCYMRecipeTypes { ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java index 6ed969bb590..8db838f9479 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java @@ -16,11 +16,6 @@ import java.util.Set; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/7/11 - * @implNote GTBedrockFluids - */ @SuppressWarnings("unused") public class GTBedrockFluids { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java index 78c2f759bfb..4355206d72f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlockEntities.java @@ -9,11 +9,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTBlockEntities - */ public class GTBlockEntities { @SuppressWarnings("unchecked") diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index f80325d84b5..07ed413e08c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -83,11 +83,6 @@ import static com.gregtechceu.gtceu.common.data.GTModels.createModelBlockState; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTBlocks - */ @SuppressWarnings("removal") public class GTBlocks { ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java index 463e1f6c288..d56a13fd2b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTConfiguredFeatures.java @@ -21,11 +21,6 @@ import net.minecraft.world.level.levelgen.feature.trunkplacers.ForkingTrunkPlacer; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GTConfiguredFeatures - */ public class GTConfiguredFeatures { public static final ResourceKey> RUBBER = ResourceKey.create(Registries.CONFIGURED_FEATURE, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index d57b61af098..95931a8a939 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -22,11 +22,6 @@ import java.util.Arrays; import java.util.Locale; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote GTCovers - */ public class GTCovers { public static final int[] ALL_TIERS = GTValues.tiersBetween(GTValues.LV, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java index b81a2bcedb5..a024f476db8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java @@ -21,11 +21,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTCreativeModeTabs - */ @SuppressWarnings("Convert2MethodRef") public class GTCreativeModeTabs { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java index 19fb26763d7..6484a50bc08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTDamageTypes.java @@ -7,11 +7,6 @@ import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.damagesource.DamageType; -/** - * @author KilaBash - * @date 2023/7/19 - * @implNote GTDamageTypes - */ public class GTDamageTypes { public static final DamageTypeData EXPLOSION = new DamageTypeData.Builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java index 4168436d816..e888a9636f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java @@ -15,11 +15,6 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.RegistryObject; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTFeatures - */ public class GTFeatures { public static final ResourceLocation NEW_ORE_VEIN_TOGGLE = GTCEu.id("vein_toggle"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index 11ea09c6394..db7b5d1a282 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -21,11 +21,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote GTFluids - */ public class GTFluids { public static final FluidEntry POTION = REGISTRATE diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index a81c85b54ff..e1cdab67374 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -84,11 +84,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote GTItems - */ public class GTItems { ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index ff724ec3f97..44bbd3d611f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -55,11 +55,6 @@ import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.ALL_TIERS; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote GTMachines - */ public class GTMachines { static { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java index 49cd4899488..0c88c92222c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java @@ -40,11 +40,6 @@ import java.io.BufferedReader; import java.io.IOException; -/** - * @author KilaBash - * @date 2023/7/20 - * @implNote GTModels - */ public class GTModels { public static void createModelBlockState(DataGenContext ctx, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java index 35fa653d46f..709ec79ca59 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java @@ -34,11 +34,6 @@ import static com.gregtechceu.gtceu.api.data.worldgen.generator.veins.VeinedVeinGenerator.VeinBlockDefinition; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; -/** - * @author KilaBash - * @date 2023/3/20 - * @implNote GTOres - */ @SuppressWarnings("unused") public class GTOres { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java index b6de314bb6e..cc8ca11818a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacements.java @@ -18,11 +18,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GTPlacements - */ public class GTPlacements { public static final ResourceKey RUBBER_CHECKED = ResourceKey.create(Registries.PLACED_FEATURE, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java index c367185a952..27556226c05 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java @@ -15,11 +15,6 @@ import com.mojang.serialization.Codec; -/** - * @author KilaBash - * @date 2023/3/25 - * @implNote GTPlacerTypes - */ public class GTPlacerTypes { public static final TrunkPlacerType RUBBER_TRUNK = registerTruckPlacer("rubber", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java index 9a054413a42..6ba7d4fe279 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java @@ -11,11 +11,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fml.ModLoader; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeCapabilities - */ public class GTRecipeCapabilities { public final static RecipeCapability ITEM = ItemRecipeCapability.CAP; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java index 17f7059d3d5..9efd06b268e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java @@ -8,11 +8,6 @@ import net.minecraftforge.fml.ModLoader; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote GTRecipeConditions - */ public final class GTRecipeConditions { static { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index c1ba1406f62..7a5509c8b4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -28,11 +28,6 @@ import static com.gregtechceu.gtceu.api.recipe.OverclockingLogic.*; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote GTRecipeModifiers - */ public class GTRecipeModifiers { /** diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 30cb5582462..cf3ac9ffc86 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -45,11 +45,6 @@ import static com.lowdragmc.lowdraglib.gui.texture.ProgressTexture.FillDirection.*; -/** - * @author KilaBash - * @date 2023/2/20 - * @implNote GTRecipeTypes - */ public class GTRecipeTypes { public static final String STEAM = "steam"; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java index 58e2efa6cb4..86a63120f08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java @@ -11,11 +11,6 @@ import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author KilaBash - * @date 2023/3/3 - * @implNote GTSounds - */ public class GTSoundEntries { static { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index 62b0d9c2805..dcfc7e35117 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -11,11 +11,6 @@ import static com.lowdragmc.lowdraglib.syncdata.TypedPayloadRegistries.*; -/** - * @author KilaBash - * @date 2023/2/26 - * @implNote GTSyncedFieldAccessors - */ public class GTSyncedFieldAccessors { public static final IAccessor GT_RECIPE_TYPE_ACCESSOR = new GTRecipeTypeAccessor(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 8a76ad6f9c0..ca5401c2ace 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -51,10 +51,6 @@ import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.registerTieredMachines; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -/** - * @author Rundas - * @implNote Gregicality Multiblocks - */ public class GCYMMachines { public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java index 12c370772be..2149b466219 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GTFoods.java @@ -4,11 +4,6 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.food.FoodProperties; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote GTFoods - */ public class GTFoods { public final static FoodProperties CHOCOLATE = new FoodProperties.Builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index c0ffbc0b2a8..9e03712f22c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -55,11 +55,6 @@ import java.util.function.BiPredicate; import java.util.function.Supplier; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ColorSprayBehaviour - */ public class ColorSprayBehaviour implements IDurabilityBar, IInteractionItem, IAddInformation { // vanilla diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java index 8c9affd49d1..feca36f1270 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ConsumedBehaviour.java @@ -6,11 +6,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -/** - * @author KilaBash - * @date 2023/2/22 - * @implNote ConsumedBehaviour - */ public abstract class ConsumedBehaviour { public final int totalUses; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java index dc67b2d6a0e..af77e5db840 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/CoverPlaceBehavior.java @@ -19,11 +19,6 @@ import java.util.function.BooleanSupplier; import java.util.function.Predicate; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote CoverBehavior - */ public record CoverPlaceBehavior(CoverDefinition coverDefinition) implements IInteractionItem { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java index 91250c341a0..667d87326ac 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java @@ -26,11 +26,6 @@ import java.util.List; import java.util.Objects; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote FacadeItem - */ public class FacadeItemBehaviour implements ISubItemHandler, ICustomDescriptionId, ICustomRenderer { @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java index 8a786bbe9f8..e816afb4ccf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/FluidFilterBehaviour.java @@ -15,11 +15,6 @@ import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote FluidFilterBehaviour - */ public record FluidFilterBehaviour(Function filterCreator) implements IItemUIFactory { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java index e49e65d5e75..5e2a1566377 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/IntCircuitBehaviour.java @@ -33,11 +33,6 @@ import java.util.List; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote IntCircuitBehaviour - */ public class IntCircuitBehaviour implements IItemUIFactory, IAddInformation { public static final int CIRCUIT_MAX = 32; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java index 5e5f738abd4..aac74875106 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFilterBehaviour.java @@ -15,11 +15,6 @@ import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/3/13 - * @implNote ItemFilterBehaviour - */ public record ItemFilterBehaviour(Function filterCreator) implements IItemUIFactory { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java index 44da6f5fe39..160ea28515b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java @@ -7,11 +7,6 @@ import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote ItemFluidContainer - */ public class ItemFluidContainer implements IRecipeRemainder { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java index 76f94969e9a..f0a393bd457 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ProspectorScannerBehavior.java @@ -33,11 +33,6 @@ import java.util.List; import java.util.Objects; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote ProspectorScannerBehavior - */ public class ProspectorScannerBehavior implements IItemUIFactory, IInteractionItem, IAddInformation { private final int radius; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java index 2224b110a77..df6d1faec04 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/TooltipBehavior.java @@ -13,11 +13,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/23 - * @implNote TooltipBehavior - */ public class TooltipBehavior implements IAddInformation { private final Consumer> tooltips; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java index 71eab6401d4..482519ee168 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/TurbineRotorBehaviour.java @@ -22,11 +22,6 @@ import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.turbineBlade; -/** - * @author KilaBash - * @date 2023/7/10 - * @implNote TurbineRotorBehaviour - */ public class TurbineRotorBehaviour implements IMaterialPartItem, ISubItemHandler { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 81a0033b9e8..2d7d8e2d2f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote BatteryBufferMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BatteryBufferMachine extends TieredEnergyMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index 36e153d15cb..d048880b85f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -59,11 +59,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/15 - * @implNote BlockBreakerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BlockBreakerMachine extends TieredEnergyMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index d8a52218e2e..ffa566368cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -36,11 +36,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author lucifer_ll - * @date 2023/7/12 - * @implNote ChargerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ChargerMachine extends TieredEnergyMachine implements IControllable, IFancyUIMachine, IMachineLife { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 0b7213b429e..0fb1f98b09e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -69,11 +69,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/13 - * @implNote FisherMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FisherMachine extends TieredEnergyMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index f09baefe92d..134c62c0592 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -65,11 +65,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tr - * @date 2023/7/13 - * @implNote FisherMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemCollectorMachine extends TieredEnergyMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 06a40d0d372..792f0b5d771 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -58,11 +58,6 @@ import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/22 - * @implNote PumpMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PumpMachine extends TieredEnergyMachine implements IAutoOutputFluid, IUIMachine, IMachineLife { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 789f3b70188..236581da258 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -24,11 +24,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/10 - * @implNote TransformerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class TransformerMachine extends TieredEnergyMachine implements IControllable { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 24d2d80d8c1..9b09d62bf1a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -45,12 +45,6 @@ import java.util.Map; import java.util.Set; -/** - * @author h3tr - * @date 2024/2/08 - * @implNote WorldAcceleratorMachine - */ - public class WorldAcceleratorMachine extends TieredEnergyMachine implements IControllable { private static final Map> blacklistedClasses = new Object2ObjectOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index fe4b1b77a49..90baca31852 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -34,11 +34,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author Screret - * @date 2023/7/12 - * @implNote BedrockOreMinerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BedrockOreMinerMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java index 5b657b84b7e..647f0faa3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FluidDrillMachine.java @@ -34,11 +34,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidDrillMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 9da18e95222..2d2d24c2960 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -42,11 +42,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote LargeCombustionEngineMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class LargeCombustionEngineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index 7c2eb209295..716503e2ed7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -31,11 +31,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/7/9 - * @implNote LargeCombustionEngineMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class LargeTurbineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java index a68a59a4f72..e4946d9a585 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CokeOvenHatch.java @@ -25,11 +25,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote CokeOvenHatch - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CokeOvenHatch extends MultiblockPartMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java index b1d953cb6bc..ec969c0d0b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/EnergyHatchPartMachine.java @@ -23,11 +23,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote EnergyHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class EnergyHatchPartMachine extends TieredIOPartMachine implements IExplosionMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 44d6d96796d..16f8fa1e140 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -45,11 +45,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote FluidHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 6c26b6d0cef..d98a5419d31 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -41,11 +41,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote ItemBusPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinctPart, IMachineLife, IHasCircuitSlot { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java index 9951a230785..a1cf1864790 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java @@ -31,11 +31,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/8 - * @implNote MufflerPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MufflerPartMachine extends TieredPartMachine implements IMufflerMachine, IUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index fb1718e85f5..edec624e40c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -19,11 +19,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/4 - * @implNote SteamHatchPartMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamHatchPartMachine extends FluidHatchPartMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index 2975b1e5a21..f4fccd52e15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -26,11 +26,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote CokeOvenMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CokeOvenMachine extends PrimitiveWorkableMachine implements IUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 60abf7c5cdc..477e7c944a0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -32,11 +32,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/17 - * @implNote PrimitiveBlastFurnaceMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine implements IUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java index dd9d4b83f4c..e9ce4022838 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveWorkableMachine.java @@ -18,11 +18,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote PrimitiveWorkableMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class PrimitiveWorkableMachine extends WorkableMultiblockMachine diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index c14bd64fb82..e11e2b8aa4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -44,11 +44,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/16 - * @implNote LargeBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class LargeBoilerMachine extends WorkableMultiblockMachine implements IExplosionMachine, IDisplayUIMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java index 2f94299bc14..cbbe5dd31f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamLiquidBoilerMachine.java @@ -29,11 +29,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamLiquidBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamLiquidBoilerMachine extends SteamBoilerMachine { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java index 34586a0406d..9e637bfd3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolidBoilerMachine.java @@ -35,11 +35,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamSolidBoilerMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class SteamSolidBoilerMachine extends SteamBoilerMachine implements IMachineLife { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index 7e546e3ee49..2a196ff6dfd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -35,11 +35,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author h3tR - * @date 2023/3/27 - * @implNote CrateMachine - */ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLife, diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index bf4c4e90989..e3d270564ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -25,11 +25,6 @@ import java.util.List; import java.util.Map; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillLogic - */ public class BedrockOreMinerLogic extends RecipeLogic { public static final int MAX_PROGRESS = 20; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java index bb3a7fd07a4..1dbd4d84d85 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java @@ -18,11 +18,6 @@ import lombok.Getter; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/7/12 - * @implNote FluidDrillLogic - */ public class FluidDrillLogic extends RecipeLogic { public static final int MAX_PROGRESS = 20; diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java index e45ef0c9b78..e588d1f41ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java @@ -10,11 +10,6 @@ import java.util.Objects; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableData - */ @Accessors(fluent = true) public class CableData implements IAttachData { diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java index faa0980a9b7..6e1ab2c9cc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java @@ -10,11 +10,6 @@ import java.util.Objects; -/** - * @author KilaBash - * @date 2023/3/1 - * @implNote CableData - */ @Accessors(fluent = true) public class FluidPipeData implements IAttachData { diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java index 6402827d306..1bb6ddef095 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeNet.java @@ -6,11 +6,6 @@ import net.minecraft.nbt.CompoundTag; -/** - * @author KilaBash - * @date 2023/3/11 - * @implNote FluidPipeNet - */ public class FluidPipeNet extends PipeNet { public FluidPipeNet(LevelPipeNet world) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java index 2bcafb0f13b..ba4b9844236 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java @@ -22,11 +22,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote DimensionCondition, specific dimension - */ @NoArgsConstructor public class BiomeCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java index 12423e23c34..7efa0551d5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java @@ -28,11 +28,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote DimensionCondition, specific dimension - */ @NoArgsConstructor public class DimensionCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java index f522b5d1a6e..bf7b82c107c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author Screret - * @date 2023/6/16 - * @implNote EUToStartCondition - */ @NoArgsConstructor public class EUToStartCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java index 2acc8a40a92..0be0b219d5c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java @@ -16,11 +16,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class PositionYCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java index 2ba69f3bfae..27335f0a0c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class RainingCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java index eae1e449dd4..18cba3f654a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RockBreakerCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote RockBreakerCondition - */ @NoArgsConstructor public class RockBreakerCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java index 9950ef59123..f1548fb65f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java @@ -17,11 +17,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2022/05/27 - * @implNote WhetherCondition, specific whether - */ @NoArgsConstructor public class ThunderCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java index 869a3a880c7..4b65c364ca0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java @@ -14,11 +14,6 @@ import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote SteamVentCondition - */ @NoArgsConstructor public class VentCondition extends RecipeCondition { diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 58dd473f2fa..cda55315805 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -8,11 +8,6 @@ import dev.toma.configuration.config.Configurable; import dev.toma.configuration.config.format.ConfigFormats; -/** - * @author KilaBash - * @date 2023/2/14 - * @implNote ConfigHolder - */ @Config(id = GTCEu.MOD_ID) public class ConfigHolder { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java index 5bbec40df0e..61ebfacba4e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java @@ -18,11 +18,6 @@ import java.util.function.Function; -/** - * @author KilaBash - * @date 2023/2/19 - * @implNote BlockModelMixin - */ @Mixin(BlockModel.class) public class BlockModelMixin { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java index 329f56e4928..01feb5aad89 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java @@ -8,11 +8,6 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -/** - * @author KilaBash - * @date 2023/7/19 - * @implNote GuiGraphicsAccessor - */ @Mixin(GuiGraphics.class) public interface GuiGraphicsAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java index 62624edba02..e495afff604 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/IngredientAccessor.java @@ -8,11 +8,6 @@ import java.util.stream.Stream; -/** - * @author KilaBash - * @date 2023/7/26 - * @implNote IngredientAccessor - */ @Mixin(Ingredient.class) public interface IngredientAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java index 7d5aae874a3..3e5ba62f0a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java @@ -18,11 +18,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -/** - * @author KilaBash - * @date 2023/2/24 - * @implNote MultiPlayerGameModeMixin - */ @Mixin(MultiPlayerGameMode.class) public class MultiPlayerGameModeMixin { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java index 29d13c1a762..e6b3ebe78be 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java @@ -11,11 +11,6 @@ import java.util.Map; -/** - * @author KilaBash - * @date 2023/3/15 - * @implNote RecipeManagerAccessor - */ @Mixin(RecipeManager.class) public interface RecipeManagerAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java index 474fcf0c079..fc45f91bccb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ShapedRecipeAccessor.java @@ -13,11 +13,6 @@ import java.util.Map; -/** - * @author KilaBash - * @date 2023/7/24 - * @implNote ShapedRecipeAccessor - */ @Mixin(ShapedRecipe.class) public interface ShapedRecipeAccessor { diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index acf8e864003..fb05fe6ec12 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -20,11 +20,6 @@ import java.util.Map; import java.util.stream.Collectors; -/** - * @author KilaBash - * @date 2023/3/19 - * @implNote LangHandler - */ public class LangHandler { public static void init(RegistrateLangProvider provider) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java index b688edb7627..7d42e21dbc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java @@ -28,11 +28,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote VanillaRecipeHelper - */ public class VanillaRecipeHelper { public static void addSmeltingRecipe(Consumer provider, @NotNull String regName, TagKey input, diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java index 99ae06bf228..e94d6667575 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class BlastingRecipeBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java index f6a670d3a08..02e768d46ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author JuiceyBeans - * @date 2024/10/12 - * @implNote CampfireRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class CampfireRecipeBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java index 55bebdd2303..b77512d8f79 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java @@ -24,11 +24,6 @@ import java.util.function.Consumer; -/** - * @author Irgendwer01 - * @date 2023/11/4 - * @implNote ShapedEnergyTransferRecipeBuilder - */ public class ShapedEnergyTransferRecipeBuilder extends Builder { protected ItemStack output = ItemStack.EMPTY; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java index 2c08e5c57a7..9dee815b40d 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java @@ -24,11 +24,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote ShapedRecipeBuilder - */ public class ShapedRecipeBuilder extends Builder { protected ItemStack output = ItemStack.EMPTY; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java index e53e5dda97e..6e7416273be 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java @@ -26,11 +26,6 @@ import java.util.List; import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class ShapelessRecipeBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java index 5deb55832ae..5d2542bdb47 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class SmeltingRecipeBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java index 607332899f7..cb7c932fe1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java @@ -23,11 +23,6 @@ import java.util.function.Consumer; -/** - * @author KilaBash - * @date 2023/2/21 - * @implNote SmeltingRecipeBuilder - */ @Accessors(chain = true, fluent = true) public class SmokingRecipeBuilder { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java index 81d0dd057b8..fa65fd28f43 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java @@ -38,9 +38,6 @@ public class RecyclingRecipes { - // TODO - Fix recipe order with some things (noticed Hermetic Casings) - // TODO - Figure out solution to LuV+ components - // TODO - (to remember) Do NOT calculate any material component lists for circuits, they are simply totally lost // TODO - Work on durations and EUt's public static void init(Consumer provider) { diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index f30851df3da..5855db09b56 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -110,11 +110,6 @@ import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnder; -/** - * @author KilaBash - * @date 2022/8/27 - * @implNote ForgeCommonEventListener - */ @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class ForgeCommonEventListener { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java index a97ff4eeca2..2ebe1b3164e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java @@ -7,11 +7,6 @@ import appeng.api.stacks.GenericStack; -/** - * @Author GlodBlock - * @Description Display {@link net.minecraftforge.fluids.FluidStack} config - * @Date 2023/4/21-1:45 - */ public class AEFluidConfigWidget extends ConfigWidget { private final ExportOnlyAEFluidList fluidList; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java index 8ffe8140eba..167afbb34a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java @@ -7,11 +7,6 @@ import appeng.api.stacks.GenericStack; -/** - * @Author GlodBlock - * @Description Display {@link net.minecraft.world.item.ItemStack} config - * @Date 2023/4/22-1:02 - */ public class AEItemConfigWidget extends ConfigWidget { private final ExportOnlyAEItemList itemList; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java index c27bc5babd2..1139bd36c2f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java @@ -18,11 +18,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringSized; -/** - * @Author GlodBlock - * @Description The amount set widget for config slot - * @Date 2023/4/21-21:20 - */ public class AmountSetWidget extends Widget { private int index = -1; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java index cc1e11d916e..08dd66ce998 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java @@ -28,9 +28,7 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; /** - * @author GlodBlock - * @ Display a certain {@link FluidStack} element. - * @date 2023/4/19-0:30 + * Display a certain {@link FluidStack} element. */ public class AEFluidDisplayWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java index 17109ab8e1f..3c28a821248 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java @@ -19,9 +19,7 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; /** - * @Author GlodBlock - * @Description Display a certain {@link appeng.api.stacks.GenericStack} element. - * @Date 2023/4/19-21:23 + * Display a certain {@link appeng.api.stacks.GenericStack} element. */ public class AEItemDisplayWidget extends Widget { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java index 496e1d3d29a..fe52076fd63 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java @@ -20,9 +20,7 @@ import java.util.List; /** - * @Author GlodBlock - * @Description A display only widget for {@link KeyStorage} - * @Date 2023/4/19-0:18 + * A display only widget for {@link KeyStorage} */ public abstract class AEListGridWidget extends DraggableScrollableWidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java index 71c10c62e2b..b6d04d492ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java @@ -23,11 +23,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawGradientRect; -/** - * @Author GlodBlock - * @Description A configurable slot - * @Date 2023/4/22-0:30 - */ public class AEConfigSlotWidget extends Widget { protected ConfigWidget parentWidget; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java index 21db46113c4..bbf171ffbe9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java @@ -38,11 +38,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; -/** - * @Author GlodBlock - * @Description A configurable slot for {@link FluidStack} - * @Date 2023/4/21-0:50 - */ public class AEFluidConfigSlotWidget extends AEConfigSlotWidget implements IGhostFluidTarget { public AEFluidConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java index a08c822f0b2..574b4fdf276 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java @@ -24,11 +24,6 @@ import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawItemStack; import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; -/** - * @Author GlodBlock - * @Description A configurable slot for {@link ItemStack} - * @Date 2023/4/22-0:48 - */ public class AEItemConfigSlotWidget extends AEConfigSlotWidget implements IGhostItemTarget { public AEItemConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index 572813512cd..6914f7782a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -30,9 +30,7 @@ import javax.annotation.ParametersAreNonnullByDefault; /** - * @Author GlodBlock - * @Description The Output Bus that can directly send its contents to ME storage network. - * @Date 2023/4/19-20:37 + * The Output Bus that can directly send its contents to ME storage network. */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java index 8285d766637..8dcbca56391 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java @@ -11,9 +11,6 @@ /** * A machine that can connect to ME network. - * - * @author GateGuardian - * @date : 2024/7/14 */ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBlockEntity { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java index d9c05f589e8..50933b53c0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/GridNodeHolder.java @@ -24,9 +24,6 @@ /** * A MachineTrait that is only used for hosting grid node and does not provide grid node capability. * Because IGridConnectedMachine has already extended IInWorldGridNodeHost. - * - * @author GateGuardian - * @date : 2024/7/14 */ public class GridNodeHolder extends MachineTrait { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java index 230dbd85f81..b98fe200f5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/ExportOnlyAESlot.java @@ -11,9 +11,7 @@ import org.jetbrains.annotations.Nullable; /** - * @author GlodBlock - * @Description An export only slot to hold {@link appeng.api.stacks.GenericStack} - * @date 2023/4/22-13:42 + * An export only slot to hold {@link appeng.api.stacks.GenericStack} */ public abstract class ExportOnlyAESlot implements IConfigurableSlot, ITagSerializable, IContentChangeAware { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java index 970779a41ab..98451f68a42 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/slot/IConfigurableSlot.java @@ -3,9 +3,7 @@ import appeng.api.stacks.GenericStack; /** - * @Author GlodBlock - * @Description A slot that can be set to keep requesting. - * @Date 2023/4/21-0:34 + * A slot that can be set to keep requesting. */ public interface IConfigurableSlot { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java index c002cbae861..81bb00f1216 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/utils/KeyStorage.java @@ -22,9 +22,6 @@ /** * Used to store {@link appeng.api.stacks.GenericStack } in a way that associates key and amount. * Provides methods for serialization and deserialization. - * - * @author GateGuardian - * @date : 2024/7/18 */ @MethodsReturnNonnullByDefault public class KeyStorage implements ITagSerializable, IContentChangeAware, diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java index f6847ef23b4..187e873feac 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/GTEMIPlugin.java @@ -37,11 +37,6 @@ import dev.emi.emi.api.stack.Comparison; import dev.emi.emi.api.stack.EmiStack; -/** - * @author KilaBash - * @date 2023/4/4 - * @implNote EMIPlugin - */ @EmiEntrypoint public class GTEMIPlugin implements EmiPlugin { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java index 56b86a2b21a..43e6a704253 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/GTJEIPlugin.java @@ -39,11 +39,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote JEIPlugin - */ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @JeiPlugin diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 4da5a15f562..368e5c3d559 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -125,11 +125,6 @@ import static dev.latvian.mods.kubejs.recipe.schema.minecraft.ShapedRecipeSchema.PATTERN; import static dev.latvian.mods.kubejs.recipe.schema.minecraft.ShapedRecipeSchema.RESULT; -/** - * @author KilaBash - * @date 2023/3/26 - * @implNote GregTechKubeJSPlugin - */ public class GregTechKubeJSPlugin extends KubeJSPlugin { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java index b74443746ad..6d3db3661eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/GTREIPlugin.java @@ -40,11 +40,6 @@ import java.util.List; import java.util.Locale; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote REIPlugin - */ @REIPluginClient public class GTREIPlugin implements REIClientPlugin { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java b/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java index 2790fa9cbfd..2adbda701ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/forge/TheOneProbePluginImpl.java @@ -4,11 +4,6 @@ import mcjty.theoneprobe.TheOneProbe; -/** - * @author KilaBash - * @date 2023/3/18 - * @implNote TheOneProbePluginImpl - */ public class TheOneProbePluginImpl { public static void init() { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java index c3a8dc5e426..2fd4547d96e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java @@ -42,10 +42,6 @@ import java.util.Set; import java.util.stream.Stream; -/** - * @author Arbor - * @implNote GTOreVeinWidget - */ @Getter public class GTOreVeinWidget extends WidgetGroup { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 1908def8e55..51195c18a20 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -45,11 +45,6 @@ import static com.gregtechceu.gtceu.api.GTValues.*; -/** - * @author KilaBash - * @date 2023/2/25 - * @implNote GTRecipeWidget - */ public class GTRecipeWidget extends WidgetGroup { public static final String RECIPE_CONTENT_GROUP_ID = "recipeContentGroup"; diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java index b944caae2a5..14c8f98b06c 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipePayload.java @@ -19,11 +19,6 @@ import io.netty.buffer.Unpooled; import org.jetbrains.annotations.Nullable; -/** - * @author KilaBash - * @date 2023/2/18 - * @implNote GTRecipePayload - */ public class GTRecipePayload extends ObjectTypedPayload { private static RecipeManager getRecipeManager() { diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java index c97eb050d1d..75decc31a3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java @@ -12,10 +12,6 @@ import io.netty.buffer.Unpooled; -/** - * @author Screret - * @implNote GTRecipeTypeAccessor - */ public class GTRecipeTypeAccessor extends CustomObjectAccessor { public GTRecipeTypeAccessor() { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java index 316b1125b83..d2d8f30602a 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java @@ -18,11 +18,6 @@ import static net.minecraft.ChatFormatting.YELLOW; -/** - * @author KilaBash - * @date 2023/2/13 - * @implNote FormattingUtil - */ @SuppressWarnings("UnnecessaryUnicodeEscape") public class FormattingUtil { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 68e20549509..e99fc29fb19 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -58,11 +58,6 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey.HAZARD; -/** - * @author KilaBash - * @date 2023/2/17 - * @implNote GTUtil - */ public class GTUtil { public static final Direction[] DIRECTIONS = Direction.values(); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java b/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java index c6e185ce42d..8897801b1e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/TagExprFilter.java @@ -11,9 +11,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -/** - * @author brachy84 - */ public class TagExprFilter { public static class TagExprParser { From ffca5bcf33420f8afe6cf3fa7aa217c0874d515e Mon Sep 17 00:00:00 2001 From: Georgy <32033856+stivosha@users.noreply.github.com> Date: Mon, 19 May 2025 02:35:10 +0500 Subject: [PATCH 023/270] Make all electric items show the charge tooltip (#3137) --- .../gtceu/api/item/component/ElectricStats.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index afed3c52915..52cd85dc7be 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -184,9 +184,10 @@ private static void setInDischargeMode(ItemStack itemStack, boolean isDischargeM public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { IElectricItem electricItem = GTCapabilityHelper.getElectricItem(stack); - if (electricItem != null && electricItem.canProvideChargeExternally()) { - addCurrentChargeTooltip(tooltipComponents, electricItem.getCharge(), electricItem.getMaxCharge(), - electricItem.getTier(), true); + if (electricItem == null) return; + addCurrentChargeTooltip(tooltipComponents, electricItem.getCharge(), electricItem.getMaxCharge(), + electricItem.getTier(), electricItem.canProvideChargeExternally()); + if (electricItem.canProvideChargeExternally()) { tooltipComponents.add(Component.translatable("metaitem.electric.discharge_mode.tooltip")); } } From a9545565b95888d6c387af435edda7db54d5f64e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Mon, 19 May 2025 20:15:39 +0200 Subject: [PATCH 024/270] Port Bauxite Processing from 1.12 (#3126) Co-authored-by: GirixK --- .../resources/assets/gtceu/lang/en_ud.json | 6 + .../resources/assets/gtceu/lang/en_us.json | 6 + .../gtceu/common/data/GTMaterials.java | 6 + .../data/materials/FirstDegreeMaterials.java | 7 + .../data/materials/MaterialFlagAddition.java | 3 +- .../UnknownCompositionMaterials.java | 26 +++ .../data/recipe/misc/MachineRecipeLoader.java | 13 -- .../chemistry/ChemistryRecipes.java | 1 + .../serialized/chemistry/ReactorRecipes.java | 15 -- .../serialized/chemistry/TitaniumRecipes.java | 175 ++++++++++++++++++ 10 files changed, 229 insertions(+), 29 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index e61904f3e48..5b2919299ba 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -4698,6 +4698,9 @@ "material.gtceu.bastnasite": "ǝʇısɐuʇsɐᗺ", "material.gtceu.battery_alloy": "ʎoןןⱯ ʎɹǝʇʇɐᗺ", "material.gtceu.bauxite": "ǝʇıxnɐᗺ", + "material.gtceu.bauxite_slag": "bɐןS ǝʇıxnɐᗺ", + "material.gtceu.bauxite_sludge": "ǝbpnןS ǝʇıxnɐᗺ", + "material.gtceu.bauxite_slurry": "ʎɹɹnןS ǝʇıxnɐᗺ", "material.gtceu.bentonite": "ǝʇıuoʇuǝᗺ", "material.gtceu.benzene": "ǝuǝzuǝᗺ", "material.gtceu.berkelium": "ɯnıןǝʞɹǝᗺ", @@ -4780,6 +4783,7 @@ "material.gtceu.cooperite": "ǝʇıuopןǝɥS", "material.gtceu.copernicium": "ɯnıɔıuɹǝdoƆ", "material.gtceu.copper": "ɹǝddoƆ", + "material.gtceu.cracked_bauxite_slurry": "ʎɹɹnןS ǝʇıxnɐᗺ pǝʞɔɐɹƆ", "material.gtceu.creosote": "ǝʇosoǝɹƆ", "material.gtceu.cumene": "ǝuǝɯnƆ", "material.gtceu.cupric_oxide": "ǝpıxO ɔıɹdnƆ", @@ -4791,6 +4795,7 @@ "material.gtceu.damascus_steel": "ןǝǝʇS snɔsɐɯɐᗡ", "material.gtceu.dark_ash": "ɥsⱯ ʞɹɐᗡ", "material.gtceu.darmstadtium": "ɯnıʇpɐʇsɯɹɐᗡ", + "material.gtceu.decalcified_bauxite_sludge": "ǝbpnןS ǝʇıxnɐᗺ pǝıɟıɔןɐɔǝᗡ", "material.gtceu.deepslate": "ǝʇɐןsdǝǝᗡ", "material.gtceu.depleted_uranium_hexafluoride": "ǝpıɹonןɟɐxǝH ɯnıuɐɹ∩ pǝʇǝןdǝᗡ", "material.gtceu.deuterium": "ɯnıɹǝʇnǝᗡ", @@ -4922,6 +4927,7 @@ "material.gtceu.hypochlorous_acid": "pıɔⱯ snoɹoןɥɔodʎH", "material.gtceu.ice": "ǝɔI", "material.gtceu.ilmenite": "ǝʇıuǝɯןI", + "material.gtceu.ilmenite_slag": "bɐןS ǝʇıuǝɯןI", "material.gtceu.impure_enriched_naquadah_solution": "uoıʇnןoS ɥɐpɐnbɐN pǝɥɔıɹuƎ ǝɹndɯI", "material.gtceu.impure_naquadria_solution": "uoıʇnןoS ɐıɹpɐnbɐN ǝɹndɯI", "material.gtceu.incoloy_ma_956": "9ϛ6-ⱯW ʎoןoɔuI", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 2e09d84d93d..f019a6d6478 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -4698,6 +4698,9 @@ "material.gtceu.bastnasite": "Bastnasite", "material.gtceu.battery_alloy": "Battery Alloy", "material.gtceu.bauxite": "Bauxite", + "material.gtceu.bauxite_slag": "Bauxite Slag", + "material.gtceu.bauxite_sludge": "Bauxite Sludge", + "material.gtceu.bauxite_slurry": "Bauxite Slurry", "material.gtceu.bentonite": "Bentonite", "material.gtceu.benzene": "Benzene", "material.gtceu.berkelium": "Berkelium", @@ -4780,6 +4783,7 @@ "material.gtceu.cooperite": "Sheldonite", "material.gtceu.copernicium": "Copernicium", "material.gtceu.copper": "Copper", + "material.gtceu.cracked_bauxite_slurry": "Cracked Bauxite Slurry", "material.gtceu.creosote": "Creosote", "material.gtceu.cumene": "Cumene", "material.gtceu.cupric_oxide": "Cupric Oxide", @@ -4791,6 +4795,7 @@ "material.gtceu.damascus_steel": "Damascus Steel", "material.gtceu.dark_ash": "Dark Ash", "material.gtceu.darmstadtium": "Darmstadtium", + "material.gtceu.decalcified_bauxite_sludge": "Decalcified Bauxite Sludge", "material.gtceu.deepslate": "Deepslate", "material.gtceu.depleted_uranium_hexafluoride": "Depleted Uranium Hexafluoride", "material.gtceu.deuterium": "Deuterium", @@ -4922,6 +4927,7 @@ "material.gtceu.hypochlorous_acid": "Hypochlorous Acid", "material.gtceu.ice": "Ice", "material.gtceu.ilmenite": "Ilmenite", + "material.gtceu.ilmenite_slag": "Ilmenite Slag", "material.gtceu.impure_enriched_naquadah_solution": "Impure Enriched Naquadah Solution", "material.gtceu.impure_naquadria_solution": "Impure Naquadria Solution", "material.gtceu.incoloy_ma_956": "Incoloy MA-956", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index fde94a012ba..a708beac5e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -667,6 +667,7 @@ private static void excludeAllGemsButNormal(Material material) { public static Material DiethylenetriaminepentaaceticAcid; public static Material SodiumNitrite; public static Material HydrogenPeroxide; + public static Material IlmeniteSlag; /** * Organic chemistry @@ -889,6 +890,11 @@ private static void excludeAllGemsButNormal(Material material) { public static Material PCBCoolant; public static Material Sculk; public static Material Wax; + public static Material BauxiteSlurry; + public static Material CrackedBauxiteSlurry; + public static Material BauxiteSludge; + public static Material DecalcifiedBauxiteSludge; + public static Material BauxiteSlag; /** * Second Degree Compounds diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 234a34527e8..b7183f1262b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -884,6 +884,7 @@ public static void register() { MagnesiumChloride = new Material.Builder(GTCEu.id("magnesium_chloride")) .dust(1) .color(0xeee4e9).secondaryColor(0xD40D5C) + .flags(DISABLE_DECOMPOSITION) .components(Magnesium, 1, Chlorine, 2) .buildAndRegister(); @@ -943,6 +944,7 @@ public static void register() { SodiumBicarbonate = new Material.Builder(GTCEu.id("sodium_bicarbonate")) .dust(1) .color(0xFFFFFF).secondaryColor(0xa7d2df).iconSet(ROUGH) + .flags(DISABLE_DECOMPOSITION) .components(Sodium, 1, Hydrogen, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); @@ -1666,5 +1668,10 @@ public static void register() { .components(Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS, true) .buildAndRegister(); + + IlmeniteSlag = new Material.Builder(GTCEu.id("ilmenite_slag")) + .dust() + .color(0x8B0000).iconSet(SAND) + .buildAndRegister(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java index 733f32db739..9af9bdcaf91 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java @@ -164,8 +164,9 @@ public static void register() { oreProp.setOreByProducts(GarnetYellow, Calcium); oreProp = Ilmenite.getProperty(PropertyKey.ORE); - oreProp.setOreByProducts(Iron, Rutile); + oreProp.setOreByProducts(Iron, Rutile, Rutile, IlmeniteSlag); oreProp.setSeparatedInto(Iron); + oreProp.setWashedIn(SodiumPersulfate); oreProp = Bauxite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Grossular, Rutile, Gallium); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index f3bdc21fdc6..29e17eec943 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -573,5 +573,31 @@ public static void register() { .color(0xfabf29) .flags(NO_SMELTING) .buildAndRegister(); + + BauxiteSlurry = new Material.Builder(GTCEu.id("bauxite_slurry")) + .fluid() + .color(0x051650) + .buildAndRegister(); + + CrackedBauxiteSlurry = new Material.Builder(GTCEu.id("cracked_bauxite_slurry")) + .liquid(new FluidBuilder() + .temperature(775)) + .color(0x052C50) + .buildAndRegister(); + + BauxiteSludge = new Material.Builder(GTCEu.id("bauxite_sludge")) + .fluid() + .color(0x563D2D) + .buildAndRegister(); + + DecalcifiedBauxiteSludge = new Material.Builder(GTCEu.id("decalcified_bauxite_sludge")) + .fluid() + .color(0x6F2DA8) + .buildAndRegister(); + + BauxiteSlag = new Material.Builder(GTCEu.id("bauxite_slag")) + .dust() + .color(0x6F2DA8).iconSet(SAND) + .buildAndRegister(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index c08c2575517..6656affc784 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -1071,10 +1071,6 @@ private static void registerBlastFurnaceRecipes(Consumer provide .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_gem").duration(320).EUt(100).inputItems(gem, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); - BLAST_RECIPES.recipeBuilder("titanium_from_tetrachloride").duration(800).EUt(VA[HV]) - .inputItems(dust, Magnesium, 2).inputFluids(TitaniumTetrachloride.getFluid(1000)) - .outputItems(ingotHot, Titanium).outputItems(dust, MagnesiumChloride, 6) - .blastFurnaceTemp(Titanium.getBlastTemperature() + 200).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_iron").duration(500).EUt(VA[MV]).inputItems(ingot, Iron) .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); @@ -1082,15 +1078,6 @@ private static void registerBlastFurnaceRecipes(Consumer provide .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); - BLAST_RECIPES.recipeBuilder("rutile_from_ilmenite") - .inputItems(dust, Ilmenite, 10) - .inputItems(dust, Carbon, 4) - .outputItems(ingot, WroughtIron, 2) - .outputItems(dust, Rutile, 4) - .outputFluids(CarbonDioxide.getFluid(2000)) - .blastFurnaceTemp(1700) - .duration(1600).EUt(VA[HV]).save(provider); - BLAST_RECIPES.recipeBuilder("tempered_glass_blasting") .inputItems(block, Glass) .inputFluids(Oxygen.getFluid(100)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java index adbb7dcd595..4a19e622c0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ChemistryRecipes.java @@ -34,6 +34,7 @@ public static void init(Consumer provider) { ReactorRecipes.init(provider); SeparationRecipes.init(provider); AntidoteRecipes.init(provider); + TitaniumRecipes.init(provider); // A Few Random Recipes FLUID_HEATER_RECIPES.recipeBuilder("ethenone") diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java index 6adfd79ae5f..66bb796dd48 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java @@ -84,14 +84,6 @@ public static void init(Consumer provider) { .outputFluids(SiliconeRubber.getFluid(1296)) .duration(600).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("titanium_tetrachloride") - .inputItems(dust, Carbon, 2) - .inputItems(dust, Rutile) - .inputFluids(Chlorine.getFluid(4000)) - .outputFluids(CarbonMonoxide.getFluid(2000)) - .outputFluids(TitaniumTetrachloride.getFluid(1000)) - .duration(400).EUt(VA[HV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("polydimethylsiloxane_from_dimethyldichlorosilane") .inputFluids(Dimethyldichlorosilane.getFluid(1000)) .inputFluids(Water.getFluid(1000)) @@ -553,13 +545,6 @@ public static void init(Consumer provider) { .outputItems(dust, Magnesite, 5) .duration(80).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("quicklime_from_calcite") - .circuitMeta(1) - .inputItems(dust, Calcite, 5) - .outputItems(dust, Quicklime, 2) - .outputFluids(CarbonDioxide.getFluid(1000)) - .duration(240).EUt(VA[LV]).save(provider); - CHEMICAL_RECIPES.recipeBuilder("magnesia_from_magnesite") .inputItems(dust, Magnesite, 5) .outputItems(dust, Magnesia, 2) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java new file mode 100644 index 00000000000..7c7cc348dc4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java @@ -0,0 +1,175 @@ +package com.gregtechceu.gtceu.data.recipe.serialized.chemistry; + +import net.minecraft.data.recipes.FinishedRecipe; + +import java.util.function.Consumer; + +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; + +public class TitaniumRecipes { + + private TitaniumRecipes() {} + + public static void init(Consumer provider) { + titaniumProcess(provider); + solvayProcess(provider); + bauxiteProcess(provider); + ilmeniteProcess(provider); + } + + private static void titaniumProcess(Consumer provider) { + // Rutile extraction from Ilmenite + // FeTiO3 + C -> Fe + TiO2 + CO + BLAST_RECIPES.recipeBuilder("rutile_from_ilmenite") + .inputItems(dust, Ilmenite, 5) + .inputItems(dust, Carbon) + .outputItems(ingot, WroughtIron) + .outputItems(dust, Rutile, 3) + .outputFluids(CarbonDioxide.getFluid(1000)) + .blastFurnaceTemp(1700) + .duration(1600).EUt(VA[HV]).save(provider); + + // Chloride Process + // TiO2 + 2C + 4Cl -> TiCl4 + 2CO + CHEMICAL_RECIPES.recipeBuilder("titanium_tetrachloride") + .inputItems(dust, Carbon, 2) + .inputItems(dust, Rutile) + .inputFluids(Chlorine.getFluid(4000)) + .outputFluids(CarbonMonoxide.getFluid(2000)) + .outputFluids(TitaniumTetrachloride.getFluid(1000)) + .duration(400).EUt(VA[HV]).save(provider); + + // Kroll Process + // TiCl4 + 2Mg -> Ti + 2MgCl2 + BLAST_RECIPES.recipeBuilder("titanium_from_tetrachloride") + .inputItems(dust, Magnesium, 2) + .inputFluids(TitaniumTetrachloride.getFluid(1000)) + .outputItems(ingotHot, Titanium) + .outputItems(dust, MagnesiumChloride, 6) + .blastFurnaceTemp(Titanium.getBlastTemperature() + 200) + .duration(800).EUt(VA[HV]).save(provider); + + CHEMICAL_RECIPES.recipeBuilder("salt_from_magnesium_chloride") + .inputItems(dust, MagnesiumChloride, 3) + .inputItems(dust, Sodium, 2) + .outputItems(dust, Magnesium, 1) + .outputItems(dust, Salt, 4) + .duration(200).EUt(VA[HV]).save(provider); + } + + private static void solvayProcess(Consumer provider) { + // CaCO3 -> CaO + CO2 + CHEMICAL_RECIPES.recipeBuilder("quicklime_from_calcite") + .circuitMeta(1) + .inputItems(dust, Calcite, 5) + .outputItems(dust, Quicklime, 2) + .outputFluids(CarbonDioxide.getFluid(1000)) + .duration(200).EUt(VA[LV]).save(provider); + + // NaCl(H2O) + CO2 + NH3 -> NH4Cl + NaHCO3 + CHEMICAL_RECIPES.recipeBuilder("sodium_bicarbonate_from_salt") + .inputItems(dust, Salt, 4) + .inputFluids(CarbonDioxide.getFluid(1000)) + .inputFluids(Ammonia.getFluid(1000)) + .inputFluids(Water.getFluid(1000)) + .outputItems(dust, AmmoniumChloride, 2) + .outputItems(dust, SodiumBicarbonate, 6) + .duration(400).EUt(VA[MV]).save(provider); + + // 2NaHCO3 -> Na2CO3 + CO2 + H2O + ELECTROLYZER_RECIPES.recipeBuilder("soda_ash_from_bicarbonate") + .inputItems(dust, SodiumBicarbonate, 12) + .outputItems(dust, SodaAsh, 6) + .outputFluids(CarbonDioxide.getFluid(1000)) + .outputFluids(Water.getFluid(1000)) + .duration(200).EUt(VA[MV]).save(provider); + + // 2NH4Cl + CaO -> CaCl2 + 2NH3 + H2O + CHEMICAL_RECIPES.recipeBuilder("calcium_chloride_from_quicklime") + .inputItems(dust, AmmoniumChloride, 4) + .inputItems(dust, Quicklime, 2) + .outputItems(dust, CalciumChloride, 3) + .outputFluids(Ammonia.getFluid(2000)) + .outputFluids(Water.getFluid(1000)) + .duration(200).EUt(VA[MV]).save(provider); + } + + private static void bauxiteProcess(Consumer provider) { + // Bauxite (crushed) + Soda Ash + Calcium Chloride -> Bauxite Slurry + MIXER_RECIPES.recipeBuilder("bauxite_slurry_from_crushed_bauxite") + .inputItems(crushed, Bauxite, 32) + .inputItems(dust, SodaAsh, 12) + .inputItems(dust, CalciumChloride, 6) + .inputFluids(Water.getFluid(1000)) + .outputFluids(BauxiteSlurry.getFluid(4000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite (washed) + Soda Ash + Calcium Chloride -> Bauxite Slurry + MIXER_RECIPES.recipeBuilder("bauxite_slurry_from_washed_bauxite") + .inputItems(crushedPurified, Bauxite, 32) + .inputItems(dust, SodaAsh, 12) + .inputItems(dust, CalciumChloride, 6) + .inputFluids(Water.getFluid(1000)) + .outputFluids(BauxiteSlurry.getFluid(4000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slurry -> Cracked Bauxite Slurry + CRACKING_RECIPES.recipeBuilder("cracked_bauxite_slurry") + .circuitMeta(1) + .inputFluids(BauxiteSlurry.getFluid(16000)) + .inputFluids(Steam.getFluid(1000)) + .outputFluids(CrackedBauxiteSlurry.getFluid(16000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slurry + Sulfuric -> Aluminium, Slag, Sludge, and SO3 (for looping back to Sulfuric Acid) + LARGE_CHEMICAL_RECIPES.recipeBuilder("bauxite_sludge_from_slurry") + .inputFluids(CrackedBauxiteSlurry.getFluid(4000)) + .inputFluids(SulfuricAcid.getFluid(1000)) + .outputItems(dust, Aluminium, 24) + .outputItems(dust, BauxiteSlag, 8) + .outputFluids(BauxiteSludge.getFluid(2500)) + .outputFluids(SulfurTrioxide.getFluid(1000)) + .duration(500).EUt(VA[HV]).save(provider); + + // Bauxite Slag -> Salt (looped) + Nd + Cr (byproducts) + ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("bauxite_slag_separation") + .inputItems(dust, BauxiteSlag) + .outputItems(dust, Salt) + .chancedOutput(dust, Neodymium, 2000, 250) + .chancedOutput(dust, Chromium, 1000, 250) + .duration(50).EUt(VA[MV]).save(provider); + + // Bauxite Sludge -> Calcite (looped) + Decalcified Bauxite Sludge + DISTILLERY_RECIPES.recipeBuilder("bauxite_sludge_decalcification") + .circuitMeta(1) + .inputFluids(BauxiteSludge.getFluid(500)) + .outputItems(dust, Calcite, 2) + .outputFluids(DecalcifiedBauxiteSludge.getFluid(500)) + .duration(100).EUt(VA[MV]).save(provider); + + // Decalcified Bauxite Sludge -> Rutile, Gallium, SiO2, Iron, Water + CENTRIFUGE_RECIPES.recipeBuilder("bauxite_sludge_centrifuge") + .inputFluids(DecalcifiedBauxiteSludge.getFluid(250)) + .outputItems(dust, Rutile, 2) + .chancedOutput(dust, Gallium, 5000, 550) + .chancedOutput(dust, Gallium, 3000, 800) + .chancedOutput(dust, Gallium, 1000, 1000) + .chancedOutput(dust, SiliconDioxide, 9000, 250) + .chancedOutput(dust, Iron, 8000, 250) + .outputFluids(Water.getFluid(250)) + .duration(100).EUt(VA[MV]).save(provider); + } + + private static void ilmeniteProcess(Consumer provider) { + // Byproduct separation for Ilmenite + ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("ilmenite_separation") + .inputItems(dust, IlmeniteSlag) + .chancedOutput(dust, Iron, 8000, 0) + .chancedOutput(dust, Tantalum, 2000, 0) + .chancedOutput(dust, Niobium, 500, 0) + .duration(50).EUt(VA[MV]).save(provider); + } +} From 24bc818384d3ce2cf7aa86e70ac2b30884060b3c Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Mon, 19 May 2025 17:45:19 -0400 Subject: [PATCH 025/270] Cleanup workflows (#3172) --- .github/actions/build_setup/action.yml | 17 ++------- .github/advanced-issue-labeler.yml | 13 ------- .github/json/config-1.21.json | 2 +- .github/json/config-latest-1.21.json | 3 +- .github/json/config-latest.json | 3 +- .github/json/config.json | 2 +- .github/labeler.yml | 5 +++ .github/workflows/auto-build.yml | 4 +-- .github/workflows/build-on-push.yml | 2 +- .github/workflows/clean.yml | 2 +- .github/workflows/format-java.yml | 2 +- .github/workflows/manage-issue-labels.yml | 29 ++++------------ .github/workflows/manual-autolabel.yml | 42 ----------------------- .github/workflows/publish.yml | 4 +-- .github/workflows/update-gradle-cache.yml | 2 +- 15 files changed, 28 insertions(+), 104 deletions(-) delete mode 100644 .github/advanced-issue-labeler.yml create mode 100644 .github/labeler.yml delete mode 100644 .github/workflows/manual-autolabel.yml diff --git a/.github/actions/build_setup/action.yml b/.github/actions/build_setup/action.yml index a19adcdf6a3..dcdbe4a170e 100644 --- a/.github/actions/build_setup/action.yml +++ b/.github/actions/build_setup/action.yml @@ -24,20 +24,9 @@ runs: distribution: temurin java-version: ${{ contains(env.REF, '1.20.1') && '17' || '21' }} - - name: Validate Gradle wrapper - uses: gradle/actions/wrapper-validation@v3 - - - name: Grant execute permission for gradlew - shell: bash - run: chmod +x gradlew - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 with: cache-write-only: ${{ inputs.update-cache }} - generate-job-summary: false - gradle-home-cache-includes: | - caches - notifications - jdks - wrapper + cache-read-only: ${{ github.ref != 'refs/heads/1.20.1' && github.ref != 'refs/heads/1.21' }} + add-job-summary: 'on-failure' diff --git a/.github/advanced-issue-labeler.yml b/.github/advanced-issue-labeler.yml deleted file mode 100644 index 4d25808206c..00000000000 --- a/.github/advanced-issue-labeler.yml +++ /dev/null @@ -1,13 +0,0 @@ -# syntax - https://github.com/redhat-plumbers-in-action/advanced-issue-labeler#policy - -policy: - - template: [000-bug-report.yml, 001-feature-request.yml] - section: - - id: [mc-version] - block-list: ['Both', 'Any'] - label: - - name: '1.20' - keys: ['1.20.1 Forge'] - - - name: '1.21' - keys: ['1.21.1 NeoForge'] diff --git a/.github/json/config-1.21.json b/.github/json/config-1.21.json index 1162d06b543..a726d5da9a5 100644 --- a/.github/json/config-1.21.json +++ b/.github/json/config-1.21.json @@ -40,6 +40,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 90, + "max_back_track_time_days": 365, "base_branches": ["1.21"] } diff --git a/.github/json/config-latest-1.21.json b/.github/json/config-latest-1.21.json index 7ba17eeadaa..3ebbf9f0313 100644 --- a/.github/json/config-latest-1.21.json +++ b/.github/json/config-latest-1.21.json @@ -30,5 +30,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 60 + "max_back_track_time_days": 365, + "base_branches": ["1.21"] } diff --git a/.github/json/config-latest.json b/.github/json/config-latest.json index c4229675864..50d7b05aa59 100644 --- a/.github/json/config-latest.json +++ b/.github/json/config-latest.json @@ -30,5 +30,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 60 + "max_back_track_time_days": 365, + "base_branches": ["1.20.1"] } diff --git a/.github/json/config.json b/.github/json/config.json index 2737ea278fa..96eb4907cfd 100644 --- a/.github/json/config.json +++ b/.github/json/config.json @@ -40,6 +40,6 @@ } }, "max_pull_requests": 1000, - "max_back_track_time_days": 90, + "max_back_track_time_days": 365, "base_branches": ["1.20.1"] } diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 00000000000..35e4f04262c --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,5 @@ +# https://github.com/github/issue-labeler#usage +1.20.1: + - '/^1\.20\.1 Forge$/m' +1.21: + - '/^1\.21\.1 NeoForge$/m' \ No newline at end of file diff --git a/.github/workflows/auto-build.yml b/.github/workflows/auto-build.yml index 2b5414e28d0..e297a3dfe7f 100644 --- a/.github/workflows/auto-build.yml +++ b/.github/workflows/auto-build.yml @@ -33,10 +33,10 @@ jobs: run: echo "VERSION_SUFFIX=$(echo "${{ github.sha }}" | cut -c 1-7)" >> $GITHUB_ENV - run: git fetch origin 1.20.1 - name: Build - run: ./gradlew build --build-cache + run: ./gradlew build - name: Publish to Maven if: ${{ github.repository_owner == 'GregTechCEu' && env.PUBLISH == 'true' }} - run: ./gradlew publish --build-cache + run: ./gradlew publish - name: Rename Jars if: ${{ env.PUBLISH == 'true' }} run: for file in build/libs/*; do mv "$file" "${file/SHOT/SHOT+$(date --utc '+%Y%m%d-%H%M%S')-${{ env.VERSION_SUFFIX }}}"; done; diff --git a/.github/workflows/build-on-push.yml b/.github/workflows/build-on-push.yml index 5eb2d5ec38a..0a4dce7b0aa 100644 --- a/.github/workflows/build-on-push.yml +++ b/.github/workflows/build-on-push.yml @@ -32,7 +32,7 @@ jobs: uses: ./.github/actions/build_setup - name: Build if: steps.filter.outputs.code == 'true' - run: ./gradlew assemble --build-cache + run: ./gradlew assemble - name: Rename Jars if: steps.filter.outputs.code == 'true' run: for file in build/libs/*; do mv "$file" "${file/.jar/-${{ env.VERSION_SUFFIX }}.jar}"; done; diff --git a/.github/workflows/clean.yml b/.github/workflows/clean.yml index 14745c05e74..e537d4d3292 100644 --- a/.github/workflows/clean.yml +++ b/.github/workflows/clean.yml @@ -15,4 +15,4 @@ jobs: with: update-cache: true - name: Clean - run: ./gradlew clean --build-cache + run: ./gradlew clean diff --git a/.github/workflows/format-java.yml b/.github/workflows/format-java.yml index 262e441d770..705327a97e6 100644 --- a/.github/workflows/format-java.yml +++ b/.github/workflows/format-java.yml @@ -36,4 +36,4 @@ jobs: uses: ./.github/actions/build_setup - name: Run Spotless Formatting Check with Gradle if: steps.filter.outputs.code == 'true' - run: ./gradlew spotlessCheck --warning-mode all --build-cache + run: ./gradlew spotlessCheck --warning-mode all diff --git a/.github/workflows/manage-issue-labels.yml b/.github/workflows/manage-issue-labels.yml index ac282724e33..6b6edfedfc8 100644 --- a/.github/workflows/manage-issue-labels.yml +++ b/.github/workflows/manage-issue-labels.yml @@ -2,39 +2,22 @@ name: Issue Labels on: - workflow_dispatch: - inputs: - issue_body: - description: "The issue body" - required: false - type: string issues: types: [opened] permissions: + issues: write contents: read jobs: labels: runs-on: ubuntu-latest - permissions: - issues: write # needed to utilize advanced-issue-labeler - strategy: - matrix: - template: [ 000-bug-report.yml, 001-feature-request.yml ] steps: - uses: actions/checkout@v4 - - - name: Parse issue form - uses: stefanbuck/github-issue-parser@v3 - id: issue-parser with: - issue-body: ${{ github.event.issue?.body ?? inputs.issue_body }} - template-path: .github/ISSUE_TEMPLATE/${{ matrix.template }} - - - name: Set labels based on mc-version field - uses: redhat-plumbers-in-action/advanced-issue-labeler@v3 + ref: '1.20.1' + sparse-checkout: '.github/labeler.yml' + - uses: github/issue-labeler@v3.3 with: - issue-form: ${{ steps.issue-parser.outputs.jsonString }} - template: ${{ matrix.template }} - token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/labeler.yml + enable-versioned-regex: 0 diff --git a/.github/workflows/manual-autolabel.yml b/.github/workflows/manual-autolabel.yml deleted file mode 100644 index 5c3b9b74b23..00000000000 --- a/.github/workflows/manual-autolabel.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Manages labels on new issues -name: Retroactively apply Issue Labels - -on: - workflow_dispatch: - -permissions: - contents: read - -jobs: - label-all: - runs-on: ubuntu-latest - permissions: - issues: write # IDK if this is needed to run manage-issue-labels, but it doesn't hurt so - actions: write - steps: - - name: Labelifier - uses: actions/github-script@v7 - id: label-em - with: - script: | - github.paginate(github.rest.issues.listForRepo, { - owner: "GregTechCEu", - repo: "GregTech-Modern", - }).then((issues) => { - // issues is an array of all issue objects - issues.forEach((issue) => { - if (issue.pull_request != undefined) { - // if it's a pull request, skip it. - return; - } - octokit.rest.actions.createWorkflowDispatch({ - owner: "GregTechCEu", - repo: "GregTech-Modern", - workflow_id: "manage-issue-labels", - ref: ${{ github.ref }}, - inputs: { - issue_number: issue.body - } - }); - }); - }); diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 032be550165..d0845f67289 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -45,7 +45,7 @@ jobs: id: ver run: echo "version=$(./gradlew -q printVersion)" >> $GITHUB_OUTPUT - name: Build - run: ./gradlew assemble --build-cache + run: ./gradlew assemble - name: Upload Build Artifacts uses: actions/upload-artifact@v4 with: @@ -58,7 +58,7 @@ jobs: env: MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} - run: ./gradlew publish --build-cache + run: ./gradlew publish upload-release-artifacts: name: Upload Artifacts diff --git a/.github/workflows/update-gradle-cache.yml b/.github/workflows/update-gradle-cache.yml index 103920ce146..ac02fc0a504 100644 --- a/.github/workflows/update-gradle-cache.yml +++ b/.github/workflows/update-gradle-cache.yml @@ -23,4 +23,4 @@ jobs: with: update-cache: true - name: Build Project with Gradle - run: ./gradlew assemble --warning-mode all --build-cache + run: ./gradlew assemble --warning-mode all From 0db3c90be4c46464b32e94f5413bf1dde3e5a595 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Tue, 20 May 2025 04:51:39 -0400 Subject: [PATCH 026/270] Reduce auto boxing/unboxing (#3124) --- .../com/gregtechceu/gtceu/api/GTValues.java | 15 +- .../gtceu/api/block/ICoilType.java | 2 +- .../recipe/ItemRecipeCapability.java | 2 +- .../api/data/chemical/material/Material.java | 4 +- .../properties/FluidPipeProperties.java | 4 +- .../properties/ItemPipeProperties.java | 4 +- .../material/properties/OreProperty.java | 6 +- .../material/properties/WireProperties.java | 5 +- .../data/worldgen/BiomeWeightModifier.java | 6 +- .../api/data/worldgen/GTLayerPattern.java | 7 + .../api/data/worldgen/GTOreDefinition.java | 35 +++-- .../data/worldgen/WorldGeneratorUtils.java | 38 ++--- .../bedrockfluid/BedrockFluidDefinition.java | 8 +- .../BedrockFluidVeinSavedData.java | 12 +- .../bedrockore/BedrockOreDefinition.java | 34 ++-- .../bedrockore/BedrockOreVeinSavedData.java | 20 ++- .../worldgen/bedrockore/WeightedMaterial.java | 17 ++ .../worldgen/generator/VeinGenerator.java | 75 ++++++--- .../generator/veins/ClassicVeinGenerator.java | 31 ++-- .../generator/veins/CuboidVeinGenerator.java | 26 +--- .../generator/veins/DikeVeinGenerator.java | 29 ++-- .../generator/veins/GeodeVeinGenerator.java | 39 +++-- .../generator/veins/LayeredVeinGenerator.java | 25 +-- .../generator/veins/NoopVeinGenerator.java | 10 +- .../veins/StandardVeinGenerator.java | 25 +-- .../generator/veins/VeinedVeinGenerator.java | 62 ++++---- .../api/data/worldgen/ores/OreGenCache.java | 4 +- .../api/data/worldgen/ores/OreGenerator.java | 8 +- .../gtceu/api/gui/fancy/IFancyTooltip.java | 5 +- .../gtceu/api/gui/misc/ProspectorMode.java | 7 +- .../gtceu/api/item/DrumMachineItem.java | 2 +- .../gregtechceu/gtceu/api/item/IGTTool.java | 8 +- .../gtceu/api/item/armor/ArmorUtils.java | 24 +-- .../api/item/component/IDurabilityBar.java | 3 +- .../gtceu/api/item/tool/GTToolType.java | 8 +- .../gtceu/api/item/tool/ToolHelper.java | 16 +- .../ConditionalSubscriptionHandler.java | 8 +- .../machine/MultiblockMachineDefinition.java | 9 +- .../api/machine/WorkableTieredMachine.java | 4 +- .../OverclockFancyConfigurator.java | 7 +- .../multiblock/WorkableMultiblockMachine.java | 4 +- .../trait/NotifiableItemStackHandler.java | 2 +- .../gtceu/api/pattern/BlockPattern.java | 145 +++++++----------- .../api/pattern/FactoryBlockPattern.java | 17 +- .../gtceu/api/pattern/MultiblockState.java | 11 +- .../pattern/predicates/SimplePredicate.java | 11 +- .../api/pattern/util/RelativeDirection.java | 3 +- .../gtceu/api/pipenet/PipeNet.java | 12 +- .../gtceu/api/recipe/GTRecipeType.java | 6 +- .../recipe/ShapedFluidContainerRecipe.java | 20 +-- .../ingredient/IntProviderIngredient.java | 17 +- .../recipe/ingredient/SizedIngredient.java | 4 +- .../gtceu/api/recipe/ui/GTRecipeTypeUI.java | 17 +- .../registry/registrate/MachineBuilder.java | 4 +- .../registrate/MultiblockMachineBuilder.java | 4 +- .../renderer/item/ToolChargeBarRenderer.java | 8 +- .../common/cover/FluidRegulatorCover.java | 23 +-- .../gtceu/common/cover/PumpCover.java | 25 ++- .../voiding/AdvancedFluidVoidingCover.java | 29 ++-- .../cover/voiding/FluidVoidingCover.java | 20 +-- .../gtceu/common/data/GTBlocks.java | 2 +- .../gtceu/common/data/GTItems.java | 9 +- .../gtceu/common/data/GTMachines.java | 6 +- .../gtceu/common/data/GTMaterials.java | 2 +- .../gtceu/common/data/GTRecipeTypes.java | 6 +- .../common/data/machines/GTMachineUtils.java | 11 +- .../common/item/ColorSprayBehaviour.java | 8 +- .../item/armor/AdvancedNanoMuscleSuite.java | 10 +- .../item/armor/AdvancedQuarkTechSuite.java | 10 +- .../common/item/armor/PowerlessJetpack.java | 6 +- .../common/item/armor/QuarkTechSuite.java | 10 +- .../tool/behavior/EntityDamageBehavior.java | 41 +++-- .../item/tool/behavior/LighterBehavior.java | 6 +- .../electric/ActiveTransformerMachine.java | 7 +- .../electric/AssemblyLineMachine.java | 7 +- .../electric/BedrockOreMinerMachine.java | 7 +- .../multiblock/electric/CleanroomMachine.java | 4 +- .../electric/FusionReactorMachine.java | 31 ++-- .../electric/LargeMinerMachine.java | 5 +- .../electric/PowerSubstationMachine.java | 4 +- .../electric/research/DataBankMachine.java | 5 +- .../electric/research/HPCAMachine.java | 4 +- .../part/MaintenanceHatchPartMachine.java | 10 +- .../multiblock/part/TankValvePartMachine.java | 2 +- .../machine/trait/BedrockOreMinerLogic.java | 9 +- .../network/packets/CPacketKeysPressed.java | 15 +- .../common/pipelike/cable/CableData.java | 5 +- .../pipelike/duct/DuctPipeProperties.java | 4 +- .../pipelike/fluidpipe/FluidPipeData.java | 5 +- .../common/pipelike/item/ItemNetHandler.java | 34 ++-- .../common/pipelike/item/ItemPipeData.java | 5 +- .../worldgen/feature/FluidSproutFeature.java | 2 +- .../gtceu/core/mixins/top/ConfigMixin.java | 6 +- .../gtceu/data/loot/ChestGenHooks.java | 3 +- .../data/recipe/VanillaRecipeHelper.java | 11 +- .../data/recipe/builder/GTRecipeBuilder.java | 4 +- .../generated/DecompositionRecipeHandler.java | 8 +- .../recipe/generated/OreRecipeHandler.java | 8 +- .../data/recipe/misc/RecyclingRecipes.java | 13 +- .../gtceu/forge/ForgeCommonEventListener.java | 4 +- .../machine/KJSTieredMachineBuilder.java | 2 +- .../kjs/recipe/GTRecipeSchema.java | 2 +- .../recipe/components/ExtendedOutputItem.java | 6 +- .../integration/map/WaypointManager.java | 4 +- .../gtceu/integration/map/cache/GridPos.java | 5 +- .../map/cache/server/ServerCache.java | 21 +-- .../map/layer/builtin/OreRenderLayer.java | 2 +- .../xei/widgets/GTOreByProduct.java | 8 +- .../xei/widgets/GTOreByProductWidget.java | 36 +++-- .../xei/widgets/GTOreVeinWidget.java | 12 +- .../com/gregtechceu/gtceu/utils/GTMath.java | 9 ++ .../com/gregtechceu/gtceu/utils/GTUtil.java | 37 ++--- .../gregtechceu/gtceu/utils/GradientUtil.java | 6 +- .../gtceu/utils/WeightedEntry.java | 6 + .../gtceu/utils/input/KeyBind.java | 20 +-- 115 files changed, 805 insertions(+), 756 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index 8cfad269469..f8fb218bec9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -3,8 +3,9 @@ import net.minecraft.util.RandomSource; import java.time.LocalDate; +import java.time.Month; import java.util.Arrays; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; import static net.minecraft.ChatFormatting.*; @@ -279,14 +280,14 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { */ public static boolean HT = false; - public static Supplier FOOLS = () -> { - String[] yearMonthDay = LocalDate.now().toString().split("-"); - return yearMonthDay[1].equals("04") && yearMonthDay[2].equals("01"); + public static BooleanSupplier FOOLS = () -> { + var now = LocalDate.now(); + return now.getMonth() == Month.APRIL && now.getDayOfMonth() == 1; }; - public static Supplier XMAS = () -> { - String[] yearMonthDay = LocalDate.now().toString().split("-"); - return yearMonthDay[1].equals("12") && (yearMonthDay[2].equals("24") || yearMonthDay[2].equals("25")); + public static BooleanSupplier XMAS = () -> { + var now = LocalDate.now(); + return now.getMonth() == Month.DECEMBER && (now.getDayOfMonth() == 24 || now.getDayOfMonth() == 25); }; public static final String CUSTOM_TAG_SOURCE = "GTCEu Custom Tags"; diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/ICoilType.java b/src/main/java/com/gregtechceu/gtceu/api/block/ICoilType.java index cb906408e0d..47feaa5704e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/ICoilType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/ICoilType.java @@ -57,7 +57,7 @@ public interface ICoilType { ResourceLocation getTexture(); Lazy ALL_COILS_TEMPERATURE_SORTED = Lazy.of(() -> GTCEuAPI.HEATING_COILS.keySet().stream() - .sorted(Comparator.comparing(ICoilType::getCoilTemperature)) + .sorted(Comparator.comparingInt(ICoilType::getCoilTemperature)) .toArray(ICoilType[]::new)); @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index d44bf258e0d..2f5f0cced2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -78,7 +78,7 @@ public Ingredient copyWithModifier(Ingredient content, ContentModifier modifier) return SizedIngredient.create(sizedIngredient.getInner(), modifier.apply(sizedIngredient.getAmount())); } else if (content instanceof IntProviderIngredient intProviderIngredient) { - return new IntProviderIngredient(intProviderIngredient.getInner(), + return IntProviderIngredient.of(intProviderIngredient.getInner(), new FlooredInt( new AddedFloat( new MultipliedFloat( diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index e801e808ff8..7b1947a8799 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -503,7 +503,7 @@ public String toString() { return materialInfo.resourceLocation.toString(); } - // must be named multiply for GroovyScript to allow `mat * quantity -> MaterialStack` + // must be named multiply for GroovyScript to allow `material * quantity -> MaterialStack` public MaterialStack multiply(long amount) { return new MaterialStack(this, amount); } @@ -1313,7 +1313,7 @@ private static class MaterialInfo { */ @Getter @Setter - private IntList colors = new IntArrayList(List.of(-1, -1)); + private IntList colors = IntArrayList.of(-1, -1); /** * The color of this Material. diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java index 47ddab6c2b1..5f0f3979a75 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/FluidPipeProperties.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttribute; import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes; +import com.gregtechceu.gtceu.utils.GTMath; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; @@ -13,7 +14,6 @@ import org.jetbrains.annotations.UnmodifiableView; import java.util.Collection; -import java.util.Objects; public class FluidPipeProperties implements IMaterialProperty, IPropertyFluidFilter { @@ -85,7 +85,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(maxFluidTemperature, throughput, gasProof, channels); + return GTMath.hashInts(maxFluidTemperature, throughput, Boolean.hashCode(gasProof), channels); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java index acfb7a57d18..022ee3acd24 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ItemPipeProperties.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; -import java.util.Objects; +import com.gregtechceu.gtceu.utils.GTMath; public class ItemPipeProperties implements IMaterialProperty { @@ -83,7 +83,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(priority, transferRate); + return GTMath.hashInts(priority, Float.hashCode(transferRate)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java index fd32fc0cea9..c4bbf596f55 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/OreProperty.java @@ -5,7 +5,7 @@ import net.minecraft.util.Mth; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -116,8 +116,8 @@ public void setWashedIn(Material m, int washedAmount) { this.washedAmount = washedAmount; } - public Pair getWashedIn() { - return Pair.of(this.washedIn, this.washedAmount); + public @NotNull ObjectIntPair getWashedIn() { + return ObjectIntPair.of(this.washedIn, this.washedAmount); } public void setSeparatedInto(Material... materials) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java index 23f62be8105..053a5f9c05f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/WireProperties.java @@ -2,8 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; - -import java.util.Objects; +import com.gregtechceu.gtceu.utils.GTMath; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.GENERATE_FOIL; @@ -159,6 +158,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(voltage, amperage, lossPerBlock); + return GTMath.hashLongs(voltage, amperage, lossPerBlock); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java index 4d6f5691ec2..cc276e718eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/BiomeWeightModifier.java @@ -9,10 +9,10 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import java.util.function.Function; import java.util.function.Supplier; +import java.util.function.ToIntFunction; -public class BiomeWeightModifier implements Function, Integer> { +public class BiomeWeightModifier implements ToIntFunction> { public static final BiomeWeightModifier EMPTY = new BiomeWeightModifier(HolderSet::direct, 0); @@ -30,7 +30,7 @@ public BiomeWeightModifier(Supplier> biomes, int addedWeight) { } @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { return biomes.get().contains(biome) ? addedWeight : 0; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java index 8a108a967c9..730617b34bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; @@ -20,6 +21,7 @@ import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; +import java.util.stream.Stream; public class GTLayerPattern { @@ -103,6 +105,11 @@ public Layer(List, Material>> targets, int minSize this.weight = weight; } + public Stream asVeinEntries() { + return targets.stream() + .flatMap(target -> VeinGenerator.mapTarget(target, weight)); + } + public Either, Material> rollBlock(RandomSource random) { if (targets.size() == 1) return targets.get(0); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index 956ed2d5e9b..be7c8395c80 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; import net.minecraft.core.registries.Registries; @@ -21,11 +22,11 @@ import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntIntPair; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -99,7 +100,7 @@ public class GTOreDefinition { @Setter private float discardChanceOnAirExposure; @Getter - private Supplier> biomes; + private @Nullable Supplier> biomes; @Getter @Setter private BiomeWeightModifier biomeWeightModifier = BiomeWeightModifier.EMPTY; @@ -137,6 +138,18 @@ public GTOreDefinition(IntProvider clusterSize, float density, int weight, IWorl this.indicatorGenerators = Objects.requireNonNullElseGet(indicatorGenerators, ArrayList::new); } + public boolean isForBiome(Holder biome) { + if (biomes == null) return true; + var set = biomes.get(); + return set.size() == 0 || set.contains(biome); + } + + public int weightForBiome(Holder biome) { + int w = weight; + if (biomeWeightModifier != null) w += biomeWeightModifier.applyAsInt(biome); + return w; + } + @HideFromJS public void register(ResourceLocation id) { GTRegistries.ORE_VEINS.registerOrOverride(id, this); @@ -199,13 +212,13 @@ public GTOreDefinition biomes(Supplier> biomes) { public GTOreDefinition heightRangeUniform(int min, int max) { heightRange(HeightRangePlacement.uniform(VerticalAnchor.absolute(min), VerticalAnchor.absolute(max))); - inferredProperties.heightRange = Pair.of(min, max); + inferredProperties.heightRange = IntIntPair.of(min, max); return this; } public GTOreDefinition heightRangeTriangle(int min, int max) { heightRange(HeightRangePlacement.triangle(VerticalAnchor.absolute(min), VerticalAnchor.absolute(max))); - inferredProperties.heightRange = Pair.of(min, max); + inferredProperties.heightRange = IntIntPair.of(min, max); return this; } @@ -244,8 +257,8 @@ public GTOreDefinition geodeVeinGenerator(Consumer config) { public GTOreDefinition dikeVeinGenerator(Consumer config) { var veinGenerator = new DikeVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minYLevel(inferredProperties.heightRange.getFirst()); - veinGenerator.maxYLevel(inferredProperties.heightRange.getSecond()); + veinGenerator.minYLevel(inferredProperties.heightRange.firstInt()); + veinGenerator.maxYLevel(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -257,8 +270,8 @@ public GTOreDefinition dikeVeinGenerator(Consumer config) { public GTOreDefinition veinedVeinGenerator(Consumer config) { var veinGenerator = new VeinedVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minYLevel(inferredProperties.heightRange.getFirst()); - veinGenerator.maxYLevel(inferredProperties.heightRange.getSecond()); + veinGenerator.minYLevel(inferredProperties.heightRange.firstInt()); + veinGenerator.maxYLevel(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -279,8 +292,8 @@ public GTOreDefinition classicVeinGenerator(Consumer confi public GTOreDefinition cuboidVeinGenerator(Consumer config) { var veinGenerator = new CuboidVeinGenerator(this); if (inferredProperties.heightRange != null) { - veinGenerator.minY(inferredProperties.heightRange.getFirst()); - veinGenerator.maxY(inferredProperties.heightRange.getSecond()); + veinGenerator.minY(inferredProperties.heightRange.firstInt()); + veinGenerator.maxY(inferredProperties.heightRange.secondInt()); } config.accept(veinGenerator); @@ -321,6 +334,6 @@ private T getOrCreateIndicatorGenerator(Class private static class InferredProperties { - public Pair heightRange = null; + public IntIntPair heightRange = null; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java index 3fa9326b81a..ad87f60f1b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java @@ -4,13 +4,13 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.data.recipe.CustomTags; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.RandomSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.WorldGenLevel; @@ -50,10 +50,12 @@ public class WorldGeneratorUtils { public static final HashBiMap> INDICATOR_GENERATOR_FUNCTIONS = HashBiMap .create(); + public record WeightedVein(GTOreDefinition vein, int weight) implements WeightedEntry {} + private static class WorldOreVeinCache { private final List worldVeins; - private final List> veins = new LinkedList<>(); + private final Map, List> biomeVeins = new Object2ObjectOpenHashMap<>(); public WorldOreVeinCache(ServerLevel level) { this.worldVeins = GTRegistries.ORE_VEINS.values().stream() @@ -62,30 +64,20 @@ public WorldOreVeinCache(ServerLevel level) { .collect(Collectors.toList()); } - private List> getEntry(Holder biome) { - if (!veins.isEmpty()) - return veins; - List> result = worldVeins.stream() - .filter(entry -> entry.biomes() == null || - (entry.biomes().get().size() == 0 || entry.biomes().get().contains(biome))) - .map(vein -> new AbstractMap.SimpleEntry<>( - vein.weight() + - (vein.biomeWeightModifier() == null ? 0 : vein.biomeWeightModifier().apply(biome)), - vein)) - .filter(entry -> entry.getKey() > 0) - .collect(Collectors.toList()); - veins.addAll(result); - return result; + private List getEntry(Holder biome) { + if (biomeVeins.containsKey(biome)) return biomeVeins.get(biome); + var biomeVeins = worldVeins.stream() + .filter(vein -> vein.isForBiome(biome)) + .map(vein -> new WeightedVein(vein, vein.weightForBiome(biome))) + .filter(vein -> vein.weight > 0) + .toList(); + this.biomeVeins.put(biome, biomeVeins); + return biomeVeins; } } - public static List> getCachedBiomeVeins(ServerLevel level, Holder biome, - RandomSource random) { - if (oreVeinCache.containsKey(level)) - return oreVeinCache.get(level).getEntry(biome); - WorldOreVeinCache worldOreVeinCache = new WorldOreVeinCache(level); - oreVeinCache.put(level, worldOreVeinCache); - return worldOreVeinCache.getEntry(biome); + public static List getCachedBiomeVeins(ServerLevel level, Holder biome) { + return oreVeinCache.computeIfAbsent(level, WorldOreVeinCache::new).getEntry(biome); } public static Optional getWorldGenLayerKey(IWorldGenLayer layer) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java index c8730e6cf93..a3222217d25 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java @@ -103,11 +103,11 @@ public BedrockFluidDefinition(int weight, int minimumYield, int maximumYield, in originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -123,11 +123,11 @@ public void setOriginalModifiers(List modifiers) { originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java index 9295d11d12b..a5ceaad8e0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -17,10 +18,11 @@ import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.saveddata.SavedData; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; @@ -33,7 +35,7 @@ public class BedrockFluidVeinSavedData extends SavedData { public final HashMap veinFluids = new HashMap<>(); // runtime - private final HashMap, Integer> biomeWeights = new HashMap<>(); + private final Object2IntMap> biomeWeights = new Object2IntOpenHashMap<>(); private final ServerLevel serverLevel; @@ -85,7 +87,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { if (!veinFluids.containsKey(pos)) { BedrockFluidDefinition definition = null; int query = RandomSource - .create(Objects.hash(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) + .create(GTMath.hashLongs(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) .nextInt(); var biome = serverLevel.getBiome(new BlockPos(chunkX << 4, 64, chunkZ << 4)); int totalWeight = getTotalWeight(biome); @@ -93,7 +95,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { int weight = Math.abs(query % totalWeight); for (var fluidDefinition : GTRegistries.BEDROCK_FLUID_DEFINITIONS) { int veinWeight = fluidDefinition.getWeight() + - fluidDefinition.getBiomeWeightModifier().apply(biome); + fluidDefinition.getBiomeWeightModifier().applyAsInt(biome); if (veinWeight > 0 && (fluidDefinition.getDimensionFilter() == null || fluidDefinition.getDimensionFilter().stream().anyMatch( dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension())))) { @@ -136,7 +138,7 @@ public int getTotalWeight(Holder biome) { for (var definition : GTRegistries.BEDROCK_FLUID_DEFINITIONS) { if (definition.getDimensionFilter() == null || definition.getDimensionFilter().stream() .anyMatch(dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension()))) { - totalWeight += definition.getBiomeWeightModifier().apply(biome); + totalWeight += definition.getBiomeWeightModifier().applyAsInt(biome); totalWeight += definition.getWeight(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java index 6bb12abc294..16953e86ea5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.BiomeWeightModifier; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -18,11 +17,11 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; @@ -32,9 +31,6 @@ @Accessors(fluent = true, chain = true) public class BedrockOreDefinition { - public static final MapCodec> MATERIAL = Codec - .mapPair(GTCEuAPI.materialManager.codec().fieldOf("material"), Codec.INT.fieldOf("chance")); - public static final Codec FULL_CODEC = RecordCodecBuilder.create( instance -> instance.group( Codec.INT.fieldOf("weight").forGetter(ft -> ft.weight), @@ -43,7 +39,7 @@ public class BedrockOreDefinition { Codec.INT.fieldOf("depletion_amount").forGetter(ft -> ft.depletionAmount), ExtraCodecs.intRange(0, 100).fieldOf("depletion_chance").forGetter(ft -> ft.depletionChance), Codec.INT.fieldOf("depleted_yield").forGetter(ft -> ft.depletedYield), - MATERIAL.codec().listOf().fieldOf("materials").forGetter(ft -> ft.materials), + WeightedMaterial.CODEC.listOf().fieldOf("materials").forGetter(ft -> ft.materials), BiomeWeightModifier.CODEC.listOf().optionalFieldOf("weight_modifier", List.of()) .forGetter(ft -> ft.originalModifiers), ResourceKey.codec(Registries.DIMENSION).listOf().fieldOf("dimension_filter") @@ -74,7 +70,7 @@ public class BedrockOreDefinition { private int depletedYield; // yield after the vein is depleted @Getter @Setter - private List> materials; // the ores which the vein contains + private List materials; // the ores which the vein contains @Getter private BiomeWeightModifier biomeWeightModifier; // weighting of biomes private List originalModifiers; // weighting of biomes @@ -83,7 +79,7 @@ public class BedrockOreDefinition { public Set> dimensionFilter; // filtering of dimensions public BedrockOreDefinition(ResourceLocation name, int size, int weight, IntProvider yield, int depletionAmount, - int depletionChance, int depletedYield, List> materials, + int depletionChance, int depletedYield, List materials, List originalModifiers, Set> dimensionFilter) { this(weight, size, yield, depletionAmount, depletionChance, depletedYield, materials, originalModifiers, dimensionFilter); @@ -91,7 +87,7 @@ public BedrockOreDefinition(ResourceLocation name, int size, int weight, IntProv } public BedrockOreDefinition(int weight, int size, IntProvider yield, int depletionAmount, int depletionChance, - int depletedYield, List> materials, + int depletedYield, List materials, List originalModifiers, Set> dimensionFilter) { this.weight = weight; this.size = size; @@ -106,11 +102,11 @@ public BedrockOreDefinition(int weight, int size, IntProvider yield, int depleti originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -126,11 +122,11 @@ public void setOriginalModifiers(List modifiers) { originalModifiers.stream().mapToInt(mod -> mod.addedWeight).sum()) { @Override - public Integer apply(Holder biome) { + public int applyAsInt(Holder biome) { int mod = 0; for (var modifier : originalModifiers) { if (modifier.biomes.get().contains(biome)) { - mod += modifier.apply(biome); + mod += modifier.applyAsInt(biome); } } return mod; @@ -138,12 +134,12 @@ public Integer apply(Holder biome) { }; } - public List getAllChances() { - return materials().stream().map(Pair::getSecond).toList(); + public IntList getAllChances() { + return IntArrayList.toList(materials().stream().mapToInt(WeightedMaterial::weight)); } public List getAllMaterials() { - return materials().stream().map(Pair::getFirst).toList(); + return materials().stream().map(WeightedMaterial::material).toList(); } public static Builder builder(ResourceLocation name) { @@ -167,7 +163,7 @@ public static class Builder { @Setter private int depletedYield; // yield after the vein is depleted @Setter - private List> materials; // the ores which the vein contains + private List materials; // the ores which the vein contains private Set> dimensions; private final List biomes = new LinkedList<>(); @@ -188,7 +184,7 @@ public Builder copy(ResourceLocation name) { public Builder material(Material material, int amount) { if (this.materials == null) this.materials = new ArrayList<>(); - this.materials.add(Pair.of(material, amount)); + this.materials.add(new WeightedMaterial(material, amount)); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java index ecdebed7631..f1225a15dd0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java @@ -1,10 +1,10 @@ package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -18,13 +18,12 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.saveddata.SavedData; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; import javax.annotation.ParametersAreNonnullByDefault; @@ -37,7 +36,7 @@ public class BedrockOreVeinSavedData extends SavedData { public final HashMap veinOres = new HashMap<>(); // runtime - private final HashMap, Integer> biomeWeights = new HashMap<>(); + private final Object2IntMap> biomeWeights = new Object2IntOpenHashMap<>(); private final ServerLevel serverLevel; @@ -97,7 +96,7 @@ public OreVeinWorldEntry getOreVeinWorldEntry(int chunkX, int chunkZ) { BedrockOreDefinition definition = null; int query = RandomSource - .create(Objects.hash(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) + .create(GTMath.hashLongs(serverLevel.getSeed(), getVeinCoord(chunkX), getVeinCoord(chunkZ))) .nextInt(); var biome = serverLevel.getBiome(new BlockPos(chunkX << 4, 64, chunkZ << 4)); int totalWeight = getTotalWeight(biome); @@ -105,7 +104,7 @@ public OreVeinWorldEntry getOreVeinWorldEntry(int chunkX, int chunkZ) { int weight = Math.abs(query % totalWeight); for (var oreDefinition : GTRegistries.BEDROCK_ORE_DEFINITIONS) { int veinWeight = oreDefinition.weight() + (oreDefinition.biomeWeightModifier() != null ? - oreDefinition.biomeWeightModifier().apply(biome) : 0); + oreDefinition.biomeWeightModifier().applyAsInt(biome) : 0); if (veinWeight > 0 && (oreDefinition.dimensionFilter == null || oreDefinition.dimensionFilter().stream().anyMatch( dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension())))) { @@ -172,7 +171,7 @@ public int getTotalWeight(Holder biome) { if (definition.dimensionFilter == null || definition.dimensionFilter().stream() .anyMatch(dim -> WorldGeneratorUtils.isSameDimension(dim, serverLevel.dimension()))) { totalWeight += definition.biomeWeightModifier() != null ? - definition.biomeWeightModifier().apply(biome) : 0; + definition.biomeWeightModifier().applyAsInt(biome) : 0; totalWeight += definition.weight(); } } @@ -223,11 +222,10 @@ public int getOperationsRemaining(int chunkX, int chunkZ) { * @return Fluid in given chunk */ @Nullable - public List> getOreInChunk(int chunkX, int chunkZ) { + public List getOreInChunk(int chunkX, int chunkZ) { OreVeinWorldEntry info = getOreVeinWorldEntry(chunkX, chunkZ); if (info.getDefinition() == null) return null; - return info.getDefinition().materials().stream().map(pair -> Map.entry(pair.getSecond(), pair.getFirst())) - .collect(Collectors.toList()); + return info.getDefinition().materials(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java new file mode 100644 index 00000000000..d2406a5a58b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; + +import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.utils.WeightedEntry; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public record WeightedMaterial(Material material, int weight) implements WeightedEntry { + + public static final Codec CODEC = RecordCodecBuilder.create( + instance -> instance.group( + GTCEuAPI.materialManager.codec().fieldOf("material").forGetter(WeightedMaterial::material), + Codec.INT.fieldOf("weight").forGetter(WeightedMaterial::weight)) + .apply(instance, WeightedMaterial::new)); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java index 1519f326157..f95bee12d0e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/VeinGenerator.java @@ -6,22 +6,25 @@ import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; -import com.gregtechceu.gtceu.common.data.GTMaterials; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; import dev.latvian.mods.rhino.util.HideFromJS; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import java.util.*; import java.util.function.Function; -import java.util.stream.Collectors; +import java.util.stream.Stream; public abstract class VeinGenerator { @@ -46,44 +49,36 @@ public VeinGenerator(GTOreDefinition entry) { /** * @return List of [block|material, chance] */ - public abstract List, Integer>> getAllEntries(); + public abstract List getAllEntries(); public List getAllBlocks() { - return getAllEntries().stream().map(entry -> entry.getKey().map(Function.identity(), - material -> ChemicalHelper.getBlock(TagPrefix.ore, material).defaultBlockState())).toList(); + return getAllEntries().stream() + .map(VeinEntry::mapToBlockState) + .toList(); } public List getAllMaterials() { return getAllEntries().stream() - .sorted(Comparator.comparingInt(Map.Entry::getValue)) - .map(Map.Entry::getKey) - .map(either -> either.map(state -> { - var matStack = ChemicalHelper.getMaterialStack(state.getBlock()); - return matStack.material(); - }, Function.identity())) + .sorted(Comparator.comparingInt(VeinEntry::chance)) + .map(VeinEntry::mapToMaterial) .filter(mat -> !mat.isNull()) .toList(); } - public List getAllChances() { - return getAllEntries().stream().map(Map.Entry::getValue).toList(); + public IntList getAllChances() { + return IntArrayList.toList(getAllEntries().stream().mapToInt(VeinEntry::chance)); } - public List> getValidMaterialsChances() { + public List> getValidMaterialsChances() { return getAllEntries().stream() - .filter(entry -> entry.getKey() - .map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), - Function.identity()) != - GTMaterials.NULL) - .map(entry -> Map.entry(entry.getValue(), entry.getKey() - .map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), - Function.identity()))) - .collect(Collectors.toList()); + .map(entry -> ObjectIntPair.of(entry.mapToMaterial(), entry.chance)) + .filter(pair -> !pair.first().isNull()) + .toList(); } /** * Generate a map of all ore placers (by block position), for each block in this ore vein. - * + * *

* Note that, if in any way possible, this is NOT supposed to directly place any of the vein's blocks, as their * respective ore placers are invoked at a later time, when the chunk containing them is actually generated. @@ -103,4 +98,38 @@ public GTOreDefinition parent() { } public abstract Codec codec(); + + public record VeinEntry(Either vein, int chance) { + + public static VeinEntry ofBlock(BlockState state, int chance) { + return new VeinEntry(Either.left(state), chance); + } + + public static VeinEntry ofMaterial(Material mat, int chance) { + return new VeinEntry(Either.right(mat), chance); + } + + public T map(Function left, Function right) { + return vein.map(left, right); + } + + public BlockState mapToBlockState() { + return vein.map(Function.identity(), + material -> ChemicalHelper.getBlock(TagPrefix.ore, material).defaultBlockState()); + } + + public Material mapToMaterial() { + return vein.map(state -> ChemicalHelper.getMaterialStack(state.getBlock()).material(), Function.identity()); + } + } + + public static Stream> mapTarget(Either, Material> target) { + return target.map(tbs -> tbs.stream().map(state -> Either.left(state.state)), + mat -> Stream.of(Either.right(mat))); + } + + public static Stream mapTarget(Either, Material> target, + int weight) { + return mapTarget(target).map(entry -> new VeinEntry(entry, weight)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java index 23dc059b0f6..37dd3c02296 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java @@ -38,7 +38,6 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; -import java.util.stream.Stream; @Accessors(fluent = true, chain = true) public class ClassicVeinGenerator extends VeinGenerator { @@ -79,25 +78,13 @@ public ClassicVeinGenerator(Layer primary, Layer secondary, Layer between, Layer } @Override - public List, Integer>> getAllEntries() { - List, Integer>> result = new ArrayList<>(); - primary.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, primary.layers))); - secondary.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, secondary.layers))); - between.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, between.layers))); - sporadic.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, 1))); - return result; + public List getAllEntries() { + List entries = new ArrayList<>(primary.size() + secondary.size() + between.size() + sporadic.size()); + VeinGenerator.mapTarget(primary.target, primary.layers).forEach(entries::add); + VeinGenerator.mapTarget(secondary.target, secondary.layers).forEach(entries::add); + VeinGenerator.mapTarget(between.target, between.layers).forEach(entries::add); + VeinGenerator.mapTarget(sporadic.target, 1).forEach(entries::add); + return entries; } @Override @@ -285,6 +272,10 @@ public Layer copy() { return new Layer(this.target.mapBoth(ArrayList::new, Function.identity()), layers); } + public int size() { + return target.left().isPresent() ? target.left().get().size() : 1; + } + public static class Builder { private Either, Material> target; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java index 860d9cbeb9d..7e13f0401f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/CuboidVeinGenerator.java @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Stream; @SuppressWarnings({ "UnusedReturnValue", "BooleanMethodIsAlwaysInverted" }) @Accessors(fluent = true, chain = true) @@ -78,24 +77,13 @@ public CuboidVeinGenerator(ClassicVeinGenerator.Layer top, ClassicVeinGenerator. } @Override - public List, Integer>> getAllEntries() { - List, Integer>> result = new ArrayList<>(); - top.target.map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, top.layers))); - middle.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, middle.layers))); - bottom.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, bottom.layers))); - spread.target - .map(blockStates -> blockStates.stream().map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material))) - .forEach(entry -> result.add(Map.entry(entry, 1))); - return result; + public List getAllEntries() { + List entries = new ArrayList<>(top.size() + middle.size() + bottom.size() + spread.size()); + VeinGenerator.mapTarget(top.target, top.layers).forEach(entries::add); + VeinGenerator.mapTarget(middle.target, middle.layers).forEach(entries::add); + VeinGenerator.mapTarget(bottom.target, bottom.layers).forEach(entries::add); + VeinGenerator.mapTarget(spread.target, 1).forEach(entries::add); + return entries; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java index e7a3000e5e4..6d294d07826 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; @@ -38,8 +39,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; @Accessors(fluent = true, chain = true) @AllArgsConstructor @@ -61,15 +60,12 @@ public DikeVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { - return this.blocks.stream() - .flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), - definition.weight)), - material -> Stream - .of(Map.entry(Either.right(material), definition.weight)))) - .collect(Collectors.toList()); + public List getAllEntries() { + List entries = new ArrayList<>(this.blocks.size()); + for (var def : this.blocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + return entries; } @Override @@ -115,13 +111,10 @@ public Map generate(WorldGenLevel level, RandomSource return generatedBlocks; } - private void placeBlock( - BulkSectionAccess level, LevelChunkSection section, long randomSeed, BlockPos pos, + private void placeBlock(BulkSectionAccess level, LevelChunkSection section, long randomSeed, BlockPos pos, GTOreDefinition entry) { var rand = new XoroshiroRandomSource(randomSeed); - List> entries = blocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); - DikeBlockDefinition blockDefinition = blocks.get(GTUtil.getRandomItem(rand, entries, entries.size())); + DikeBlockDefinition blockDefinition = GTUtil.getRandomItem(rand, blocks); BlockState current = level.getBlockState(pos); int x = SectionPos.sectionRelative(pos.getX()); @@ -183,8 +176,8 @@ public DikeVeinGenerator withBlock(DikeBlockDefinition block) { return this; } - public record DikeBlockDefinition(Either, Material> block, int weight, - int minY, int maxY) { + public record DikeBlockDefinition(Either, Material> block, int weight, int minY, int maxY) + implements WeightedEntry { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Codec.either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()).fieldOf("block") diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java index 7b5ef3a54e2..b15a38b6f85 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java @@ -38,21 +38,18 @@ import net.minecraft.world.level.levelgen.synth.NormalNoise; import net.minecraft.world.level.material.FluidState; -import com.google.common.collect.Lists; import com.mojang.datafixers.util.Either; -import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import lombok.AllArgsConstructor; import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.function.Predicate; @Accessors(chain = true, fluent = true) @@ -117,19 +114,19 @@ public GeodeVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { RandomSource source = new LegacyRandomSource(0); return List.of( - Map.entry(geodeBlockSettings.fillingProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.innerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.alternateInnerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.middleLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1), - Map.entry(geodeBlockSettings.outerLayerProvider - .mapBoth(provider -> provider.getState(source, BlockPos.ZERO), Function.identity()), 1)); + new VeinEntry(geodeBlockSettings.fillingProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.innerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.alternateInnerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.middleLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1), + new VeinEntry(geodeBlockSettings.outerLayerProvider + .mapLeft(provider -> provider.getState(source, BlockPos.ZERO)), 1)); } @Override @@ -145,11 +142,11 @@ public Map generate(WorldGenLevel level, RandomSource int offset2; int minOffset = this.minGenOffset; int maxOffset = this.maxGenOffset; - LinkedList> points = Lists.newLinkedList(); int distributionSample = this.distributionPoints.sample(random); + List> points = new ArrayList<>(distributionSample); WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(level.getSeed())); NormalNoise normalNoise = NormalNoise.create(worldgenRandom, -4, 1.0); - LinkedList list2 = Lists.newLinkedList(); + List list2 = new ArrayList<>(3); double wallDistance = (double) distributionSample / (double) this.outerWallDistance.getMaxValue(); double fillingSize = 1.0 / Math.sqrt(geodeLayerSettings.filling); double innerSize = 1.0 / Math.sqrt(geodeLayerSettings.innerLayer + wallDistance); @@ -168,7 +165,7 @@ public Map generate(WorldGenLevel level, RandomSource ++invalidBlocksCount > this.invalidBlocksThreshold) { return Map.of(); } - points.add(Pair.of(origin2, this.pointOffset.sample(random))); + points.add(ObjectIntPair.of(origin2, this.pointOffset.sample(random))); } if (doCrack) { offset2 = random.nextInt(4); @@ -191,7 +188,7 @@ public Map generate(WorldGenLevel level, RandomSource list2.add(origin.offset(0, 1, 0)); } } - ArrayList positions = Lists.newArrayList(); + List positions = new ArrayList<>(); Predicate placementPredicate = GeodeFeature.isReplaceable(this.geodeBlockSettings.cannotReplace); for (BlockPos pos : BlockPos.betweenClosed(origin.offset(minOffset, minOffset, minOffset), origin.offset(maxOffset, maxOffset, maxOffset))) { @@ -199,10 +196,10 @@ public Map generate(WorldGenLevel level, RandomSource double s = 0.0; double t = 0.0; for (var pair : points) { - s += Mth.fastInvSqrt(pos.distSqr(pair.getFirst()) + (double) pair.getSecond()) + noiseValue; + s += Mth.invSqrt(pos.distSqr(pair.first()) + (double) pair.secondInt()) + noiseValue; } for (BlockPos origin4 : list2) { - t += Mth.fastInvSqrt(pos.distSqr(origin4) + (double) geodeCrackSettings.crackPointOffset) + noiseValue; + t += Mth.invSqrt(pos.distSqr(origin4) + (double) geodeCrackSettings.crackPointOffset) + noiseValue; } if (s < outerSize) continue; if (!level.ensureCanWrite(pos)) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java index e70da76fd8b..8e41df82fb5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/LayeredVeinGenerator.java @@ -24,6 +24,8 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.tterrag.registrate.util.nullness.NonNullSupplier; +import it.unimi.dsi.fastutil.floats.FloatArrayList; +import it.unimi.dsi.fastutil.floats.FloatList; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import java.util.ArrayList; @@ -32,7 +34,6 @@ import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; -import java.util.stream.Stream; public class LayeredVeinGenerator extends VeinGenerator { @@ -57,24 +58,12 @@ public List getLayerPatterns() { } @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { return getLayerPatterns().stream() .flatMap(pattern -> pattern.layers.stream()) - .map(layer -> Map.entry( - layer.targets.stream() - .flatMap(entry -> entry.map( - blockStates -> blockStates.stream() - .map(state -> Either.left(state.state)), - material -> Stream.of(Either.right(material)))) - .toList(), - layer.weight)) - .flatMap(entry -> { - var iterator = entry.getKey().iterator(); - return Stream.generate(() -> Map.entry(iterator.next(), entry.getValue())) - .limit(entry.getKey().size()); - }) + .flatMap(GTLayerPattern.Layer::asVeinEntries) .distinct() - .collect(Collectors.toList()); + .toList(); } @Override @@ -104,7 +93,7 @@ public Map generate(WorldGenLevel level, RandomSource return Map.of(); List resolvedLayers = new ArrayList<>(); - List layerDiameterOffsets = new ArrayList<>(); + FloatList layerDiameterOffsets = new FloatArrayList(); int layerCoordinate = random.nextInt(4); int slantyCoordinate = random.nextInt(3); @@ -142,7 +131,7 @@ public Map generate(WorldGenLevel level, RandomSource } if ((sizeFractionX * sizeFractionX) + (sizeFractionY * sizeFractionY) + - (sizeFractionZ * sizeFractionZ) > 1 * layerDiameterOffsets.get(layerIndex)) + (sizeFractionZ * sizeFractionZ) > 1 * layerDiameterOffsets.getFloat(layerIndex)) continue; GTLayerPattern.Layer layer = resolvedLayers.get(layerIndex); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java index 56a0abd5aa9..96e8b83d9ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/NoopVeinGenerator.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; @@ -8,11 +7,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.state.BlockState; -import com.mojang.datafixers.util.Either; import com.mojang.serialization.Codec; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -22,14 +20,14 @@ public class NoopVeinGenerator extends VeinGenerator { public static final Codec CODEC = Codec.unit(() -> INSTANCE); @Override - public List, Integer>> getAllEntries() { - return List.of(); + public List getAllEntries() { + return Collections.emptyList(); } @Override public Map generate(WorldGenLevel level, RandomSource random, GTOreDefinition entry, BlockPos origin) { - return Map.of(); + return Collections.emptyMap(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java index d16ae48c718..4a5e7860366 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.Map; import java.util.function.Function; -import java.util.stream.Collectors; public class StandardVeinGenerator extends VeinGenerator { @@ -91,18 +90,24 @@ public StandardVeinGenerator withMaterial(Material material) { return this; } + private List defaultEntries = null; + + private List getDefaultEntries() { + if (defaultEntries == null) { + defaultEntries = List.of( + VeinEntry.ofBlock(block.get().defaultBlockState(), 1), + VeinEntry.ofBlock(deepBlock.get().defaultBlockState(), 1), + VeinEntry.ofBlock(netherBlock.get().defaultBlockState(), 1)); + } + return defaultEntries; + } + @Override - public List, Integer>> getAllEntries() { + public List getAllEntries() { if (this.blocks != null) { - return this.blocks.map(blockStates -> blockStates.stream() - .map(state -> Either.left(state.state)) - .map(entry -> Map.entry(entry, 1)) - .collect(Collectors.toList()), material -> List.of(Map.entry(Either.right(material), 1))); + return VeinGenerator.mapTarget(blocks, 1).toList(); } else { - return List.of( - Map.entry(Either.left(block.get().defaultBlockState()), 1), - Map.entry(Either.left(deepBlock.get().defaultBlockState()), 1), - Map.entry(Either.left(netherBlock.get().defaultBlockState()), 1)); + return getDefaultEntries(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java index a1676edcd21..0db230c1201 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTFeatures; import com.gregtechceu.gtceu.utils.GTUtil; +import com.gregtechceu.gtceu.utils.WeightedEntry; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -30,6 +31,7 @@ import net.minecraft.world.level.levelgen.XoroshiroRandomSource; import net.minecraft.world.level.levelgen.blending.Blender; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.AlwaysTrueTest; import com.mojang.datafixers.util.Either; @@ -43,8 +45,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.annotation.ParametersAreNonnullByDefault; @@ -54,8 +54,8 @@ @Accessors(fluent = true, chain = true) public class VeinedVeinGenerator extends VeinGenerator { - public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec - .either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()); + public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec + .either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()); public static final Codec CODEC = RecordCodecBuilder.create((instance) -> instance.group( VeinBlockDefinition.CODEC.listOf().fieldOf("ore_blocks").forGetter(it -> it.oreBlocks), @@ -101,17 +101,15 @@ public VeinedVeinGenerator(GTOreDefinition entry) { } @Override - public List, Integer>> getAllEntries() { - var s1 = this.oreBlocks.stream().flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), definition.weight)), - material -> Stream.of(Map.entry(Either.right(material), definition.weight)))); - var s2 = this.rareBlocks.stream().flatMap(definition -> definition.block.map( - state -> state.stream() - .map(target -> Map.entry(Either.left(target.state), definition.weight)), - material -> Stream.of(Map.entry(Either.right(material), definition.weight)))); - - return Stream.concat(s1, s2).collect(Collectors.toList()); + public List getAllEntries() { + List entries = new ArrayList<>(oreBlocks.size() + rareBlocks.size()); + for (var def : oreBlocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + for (var def : rareBlocks) { + VeinGenerator.mapTarget(def.block, def.weight).forEach(entries::add); + } + return entries; } @Override @@ -122,11 +120,6 @@ public Map generate(WorldGenLevel level, RandomSource Registry densityFunctions = GTRegistries.builtinRegistry() .registry(Registries.DENSITY_FUNCTION).get(); - List> commonEntries = oreBlocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); - List> rareEntries = rareBlocks.stream() - .map(b -> Map.entry(b.weight, b)).toList(); // never accessed if rareBlocks is null - RandomState randomState = level.getLevel().getChunkSource().randomState(); Blender blender; if (level instanceof WorldGenRegion region) { @@ -206,16 +199,16 @@ public Blender getBlender() { final var randomSeed = random.nextLong(); // Fully deterministic regardless of chunk order generatedBlocks.put(pos, (access, section) -> placeBlock(access, section, randomSeed, entry, chance, - rareEntries, pos, commonEntries)); + rareBlocks, pos, oreBlocks)); } return generatedBlocks; } private void placeBlock(BulkSectionAccess access, LevelChunkSection section, long randomSeed, GTOreDefinition entry, - double chance, List> rareEntries, + double chance, List rareEntries, BlockPos.MutableBlockPos pos, - List> commonEntries) { + List commonEntries) { RandomSource random = new XoroshiroRandomSource(randomSeed); int sectionX = SectionPos.sectionRelative(pos.getX()); int sectionY = SectionPos.sectionRelative(pos.getY()); @@ -225,11 +218,13 @@ private void placeBlock(BulkSectionAccess access, LevelChunkSection section, lon if (random.nextFloat() <= entry.density()) { if (random.nextFloat() < chance) { if (rareBlocks != null && !rareBlocks.isEmpty() && random.nextFloat() < rareBlockChance) { - placeOre(rareBlocks.get(GTUtil.getRandomItem(random, rareEntries, rareEntries.size())).block, - current, access, section, random, pos, entry); + var ore = GTUtil.getRandomItem(random, rareEntries); + if (ore == null) return; + placeOre(ore.block, current, access, section, random, pos, entry); } else { - placeOre(oreBlocks.get(GTUtil.getRandomItem(random, commonEntries, commonEntries.size())).block, - current, access, section, random, pos, entry); + var ore = GTUtil.getRandomItem(random, commonEntries); + if (ore == null) return; + placeOre(ore.block, current, access, section, random, pos, entry); } } else { if (fillerBlock == null || fillerBlock.isAir()) @@ -241,7 +236,7 @@ private void placeBlock(BulkSectionAccess access, LevelChunkSection section, lon } } - protected static void placeOre(Either, Material> block, BlockState current, + protected static void placeOre(Either, Material> block, BlockState current, BulkSectionAccess level, LevelChunkSection section, RandomSource random, BlockPos.MutableBlockPos pos, GTOreDefinition entry) { int x = SectionPos.sectionRelative(pos.getX()); @@ -249,7 +244,7 @@ protected static void placeOre(Either, M int z = SectionPos.sectionRelative(pos.getZ()); block.ifLeft(blockStates -> { - for (OreConfiguration.TargetBlockState targetState : blockStates) { + for (TargetBlockState targetState : blockStates) { if (!OreVeinUtil.canPlaceOre(current, level::getBlockState, random, entry, targetState, pos)) continue; if (targetState.state.isAir()) @@ -293,7 +288,7 @@ public VeinedVeinGenerator oreBlock(Material block, int weight) { } public VeinedVeinGenerator oreBlock(BlockState blockState, int weight) { - OreConfiguration.TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); + TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); return this.oreBlock(new VeinBlockDefinition(List.of(target), weight)); } @@ -307,7 +302,7 @@ public VeinedVeinGenerator rareBlock(Material block, int weight) { } public VeinedVeinGenerator rareBlock(BlockState blockState, int weight) { - OreConfiguration.TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); + TargetBlockState target = OreConfiguration.target(AlwaysTrueTest.INSTANCE, blockState); return this.rareBlock(new VeinBlockDefinition(List.of(target), weight)); } @@ -316,7 +311,8 @@ public VeinedVeinGenerator rareBlock(VeinBlockDefinition material) { return this; } - public record VeinBlockDefinition(Either, Material> block, int weight) { + public record VeinBlockDefinition(Either, Material> block, int weight) + implements WeightedEntry { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( BLOCK_ENTRY_CODEC.fieldOf("block").forGetter(x -> x.block), @@ -326,7 +322,7 @@ public VeinBlockDefinition(Material block, int weight) { this(Either.right(block), weight); } - public VeinBlockDefinition(List block, int weight) { + public VeinBlockDefinition(List block, int weight) { this(Either.left(block), weight); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java index bdae89af54c..0e16434e1e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenCache.java @@ -127,12 +127,12 @@ private Stream getSurroundingChunks(ChunkPos center, int searchDistanc return Stream.generate(() -> { if (x.incrementAndGet() <= maxX) { - return new ChunkPos(x.getValue(), z.getValue()); + return new ChunkPos(x.intValue(), z.intValue()); } if (z.incrementAndGet() <= maxZ) { x.setValue(minX); - return new ChunkPos(x.getValue(), z.getValue()); + return new ChunkPos(x.intValue(), z.intValue()); } return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java index d0c83708ed1..9774686283a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/ores/OreGenerator.java @@ -141,11 +141,11 @@ private Stream getEntries(WorldGenLevel level, BlockPos veinCen @Nullable private GTOreDefinition getEntry(WorldGenLevel level, Holder biome, RandomSource random, IWorldGenLayer layer) { - var veins = WorldGeneratorUtils.getCachedBiomeVeins(level.getLevel(), biome, random).stream() - .filter(vein -> vein.getValue().layer().equals(layer)) + var veins = WorldGeneratorUtils.getCachedBiomeVeins(level.getLevel(), biome).stream() + .filter(vein -> vein.vein().layer().equals(layer)) .toList(); - int randomEntryIndex = GTUtil.getRandomItem(random, veins, veins.size()); - return randomEntryIndex == -1 ? null : veins.get(randomEntryIndex).getValue(); + var randomVein = GTUtil.getRandomItem(random, veins); + return randomVein == null ? null : randomVein.vein(); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java index df64e950f24..a0af005a9cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/IFancyTooltip.java @@ -8,6 +8,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.BooleanSupplier; import java.util.function.Supplier; public interface IFancyTooltip { @@ -25,7 +26,7 @@ default TooltipComponent getFancyComponent() { return null; } - record Basic(Supplier icon, Supplier> content, Supplier predicate, + record Basic(Supplier icon, Supplier> content, BooleanSupplier predicate, Supplier componentSupplier) implements IFancyTooltip { @@ -46,7 +47,7 @@ public List getFancyTooltip() { @Override public boolean showFancyTooltip() { - return predicate.get(); + return predicate.getAsBoolean(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index 95a2acb2e7e..8cc8200fb72 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -38,6 +38,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.fluids.FluidStack; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -143,11 +144,11 @@ public Class getItemClass() { @Override public void appendTooltips(List items, List tooltips, String selected) { - Map counter = new HashMap<>(); + Object2IntOpenHashMap counter = new Object2IntOpenHashMap<>(); for (var array : items) { for (String item : array) { if (ProspectingTexture.SELECTED_ALL.equals(selected) || selected.equals(getUniqueID(item))) { - counter.put(item, counter.getOrDefault(item, 0) + 1); + counter.addTo(item, 1); } } } @@ -294,7 +295,7 @@ public void scan(OreInfo[][][] storage, LevelChunk chunk) { var left = 100 * oreVein.getOperationsRemaining() / BedrockOreVeinSavedData.MAXIMUM_VEIN_OPERATIONS; for (var entry : oreVein.getDefinition().materials()) { storage[0][0] = ArrayUtils.add(storage[0][0], - new OreInfo(entry.getFirst(), entry.getSecond(), left, oreVein.getOreYield())); + new OreInfo(entry.material(), entry.weight(), left, oreVein.getOreYield())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java index 29d3b52c335..2bcc25b6bb5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java @@ -41,7 +41,7 @@ public static DrumMachineItem create(IMachineBlock block, Properties properties, return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, LazyOptional.of( () -> new ThermalFluidHandlerItemStack( itemStack, - Math.toIntExact(GTMachineUtils.DRUM_CAPACITY.get(getDefinition())), + GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition()), property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), property.isCryoProof(), property.isPlasmaProof()))); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index 94771358e82..a1e29f81971 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -66,6 +66,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -147,11 +148,12 @@ default ItemStack get() { // Set tool and material enchantments Object2IntMap enchantments = new Object2IntOpenHashMap<>(toolProperty.getEnchantments()); enchantments.putAll(toolStats.getDefaultEnchantments(stack)); - enchantments.forEach((enchantment, level) -> { + for (var entry : Object2IntMaps.fastIterable(enchantments)) { + var enchantment = entry.getKey(); if (enchantment.canEnchant(stack)) { - stack.enchant(enchantment, level); + stack.enchant(enchantment, entry.getIntValue()); } - }); + } // Set behaviours CompoundTag behaviourTag = getBehaviorsTag(stack); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java index 1fe9fd90a29..429b6cca85e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java @@ -25,12 +25,14 @@ import net.minecraftforge.event.ForgeEventFactory; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntIntPair; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenCustomHashMap; import java.text.DecimalFormat; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import javax.annotation.Nonnull; @@ -60,10 +62,10 @@ public static boolean isPossibleToCharge(ItemStack chargeable) { * @param tier of charger * @return Map of the inventory and a list of the index of a chargable item */ - public static List, List>> getChargeableItem(Player player, int tier) { - List, List>> inventorySlotMap = new ArrayList<>(); + public static List, IntList>> getChargeableItem(Player player, int tier) { + List, IntList>> inventorySlotMap = new ArrayList<>(); - List openMainSlots = new ArrayList<>(); + IntList openMainSlots = new IntArrayList(); for (int i = 0; i < player.getInventory().items.size(); i++) { ItemStack current = player.getInventory().items.get(i); IElectricItem item = GTCapabilityHelper.getElectricItem(current); @@ -78,7 +80,7 @@ public static List, List>> getChargeableIte inventorySlotMap.add(Pair.of(player.getInventory().items, openMainSlots)); } - List openArmorSlots = new ArrayList<>(); + IntList openArmorSlots = new IntArrayList(); for (int i = 0; i < player.getInventory().armor.size(); i++) { ItemStack current = player.getInventory().armor.get(i); IElectricItem item = GTCapabilityHelper.getElectricItem(current); @@ -102,7 +104,7 @@ public static List, List>> getChargeableIte } if (isPossibleToCharge(offHand) && offHandItem.getTier() <= tier) { - inventorySlotMap.add(Pair.of(player.getInventory().offhand, Collections.singletonList(0))); + inventorySlotMap.add(Pair.of(player.getInventory().offhand, IntList.of(0))); } return inventorySlotMap; @@ -178,7 +180,7 @@ public static List format(List input) { List output = new ArrayList<>(); for (ItemStack itemStack : input) { if (items.containsKey(itemStack)) { - int amount = items.get(itemStack); + int amount = items.getInt(itemStack); items.replace(itemStack, ++amount); } else { items.put(itemStack, 1); @@ -224,14 +226,14 @@ public void newString(Component string) { public void draw(GuiGraphics poseStack) { for (int i = 0; i < stringAmount; i++) { - Pair coords = this.getStringCoord(i); - poseStack.drawString(mc.font, stringList.get(i), coords.getFirst(), coords.getSecond(), 0xFFFFFF, + IntIntPair coords = this.getStringCoord(i); + poseStack.drawString(mc.font, stringList.get(i), coords.firstInt(), coords.secondInt(), 0xFFFFFF, false); } } @Nonnull - private Pair getStringCoord(int index) { + private IntIntPair getStringCoord(int index) { int posX; int posY; int fontHeight = mc.font.lineHeight; @@ -260,7 +262,7 @@ private Pair getStringCoord(int index) { default -> throw new IllegalArgumentException( "Armor Hud config hudLocation is improperly configured. Allowed values: [1,2,3,4]"); } - return Pair.of(posX, posY); + return IntIntPair.of(posX, posY); } public void reset() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java index 5d03859f9a2..0409b821822 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDurabilityBar.java @@ -7,6 +7,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; +import it.unimi.dsi.fastutil.ints.IntIntPair; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; @@ -35,7 +36,7 @@ default int getBarColor(ItemStack stack) { /** The first and last colors of a gradient. Default to Green durability gradient (null Pair). */ @Nullable - default Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + default IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return null; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java index ff2e232c144..fe5d8fb541d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java @@ -471,13 +471,13 @@ public class GTToolType { @Nullable public final SoundEntry soundEntry; public final boolean playSoundOnBlockDestroy; - public final Character symbol; + public final char symbol; public final long materialAmount; public final IGTToolDefinition toolDefinition; public final ToolConstructor constructor; public final int electricTier; - public GTToolType(String name, String idFormat, Character symbol, Set toolClasses, + public GTToolType(String name, String idFormat, char symbol, Set toolClasses, IGTToolDefinition toolDefinition, ToolConstructor constructor, List> harvestTags, List> itemTags, ResourceLocation modelLocation, Set toolClassNames, @Nullable SoundEntry soundEntry, boolean playSoundOnBlockDestroy, int electricTier, @@ -540,7 +540,7 @@ public static class Builder { @Setter private int tier = -1; @Setter - private Character symbol = null; + private char symbol = ' '; @Setter private ToolConstructor constructor = GTToolItem::create; @Setter @@ -620,7 +620,7 @@ public GTToolType build() { if (toolClassNames.isEmpty()) { toolClassNames.add(name); } - if (this.symbol == null) { + if (this.symbol == ' ') { return get(); } GTToolType existing = ToolHelper.getToolFromSymbol(this.symbol); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index c09a93b36ea..ae5797098ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -67,6 +67,7 @@ import it.unimi.dsi.fastutil.chars.Char2ReferenceOpenHashMap; import it.unimi.dsi.fastutil.chars.CharSet; import it.unimi.dsi.fastutil.chars.CharSets; +import it.unimi.dsi.fastutil.objects.Object2IntMaps; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -241,9 +242,9 @@ public static void playToolSound(GTToolType toolType, ServerPlayer player) { public static ItemStack getAndSetToolData(GTToolType toolType, Material material, int maxDurability, int harvestLevel, float toolSpeed, float attackDamage) { - var entry = GTMaterialItems.TOOL_ITEMS.get(material, toolType); - if (entry == null) return ItemStack.EMPTY; - ItemStack stack = entry.get().getRaw(); + var tool = GTMaterialItems.TOOL_ITEMS.get(material, toolType); + if (tool == null) return ItemStack.EMPTY; + ItemStack stack = tool.get().getRaw(); stack.getOrCreateTag().putInt(HIDE_FLAGS, 2); CompoundTag toolTag = getToolTag(stack); toolTag.putInt(MAX_DURABILITY_KEY, maxDurability); @@ -252,11 +253,12 @@ public static ItemStack getAndSetToolData(GTToolType toolType, Material material toolTag.putFloat(ATTACK_DAMAGE_KEY, attackDamage); ToolProperty toolProperty = material.getProperty(PropertyKey.TOOL); if (toolProperty != null) { - toolProperty.getEnchantments().forEach((enchantment, level) -> { - if (entry.get().definition$canApplyAtEnchantingTable(stack, enchantment)) { - stack.enchant(enchantment, level); + for (var entry : Object2IntMaps.fastIterable(toolProperty.getEnchantments())) { + var enchantment = entry.getKey(); + if (tool.get().definition$canApplyAtEnchantingTable(stack, enchantment)) { + stack.enchant(enchantment, entry.getIntValue()); } - }); + } } return stack; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java index d07933d1731..cc65f0d1002 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/ConditionalSubscriptionHandler.java @@ -8,7 +8,7 @@ import net.minecraft.util.thread.BlockableEventLoop; import net.minecraft.world.level.Level; -import java.util.function.Supplier; +import java.util.function.BooleanSupplier; /** * Handles a subscription that is only active in specific conditions. @@ -20,11 +20,11 @@ public class ConditionalSubscriptionHandler { private final ITickSubscription handler; private final Runnable runnable; - private final Supplier condition; + private final BooleanSupplier condition; private TickableSubscription subscription; - public ConditionalSubscriptionHandler(ITickSubscription handler, Runnable runnable, Supplier condition) { + public ConditionalSubscriptionHandler(ITickSubscription handler, Runnable runnable, BooleanSupplier condition) { this.handler = handler; this.runnable = runnable; this.condition = condition; @@ -54,7 +54,7 @@ protected void initialize(BlockableEventLoop server) { * Updates the subscription according to whether it should currently be active. */ public void updateSubscription() { - if (condition.get()) { + if (condition.getAsBoolean()) { subscription = handler.subscribeServerTick(subscription, runnable); } else if (subscription != null) { subscription.unsubscribe(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index 914b09ba922..496c2f36c6c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -11,6 +11,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; +import it.unimi.dsi.fastutil.ints.IntArrayList; import lombok.Getter; import lombok.NonNull; import lombok.Setter; @@ -67,15 +68,15 @@ public List getMatchingShapes() { if (!designs.isEmpty()) return designs; var structurePattern = patternFactory.get(); int[][] aisleRepetitions = structurePattern.aisleRepetitions; - return repetitionDFS(structurePattern, new ArrayList<>(), aisleRepetitions, new Stack<>()); + return repetitionDFS(structurePattern, new ArrayList<>(), aisleRepetitions, new IntArrayList()); } private List repetitionDFS(BlockPattern pattern, List pages, - int[][] aisleRepetitions, Stack repetitionStack) { + int[][] aisleRepetitions, IntArrayList repetitionStack) { if (repetitionStack.size() == aisleRepetitions.length) { int[] repetition = new int[repetitionStack.size()]; for (int i = 0; i < repetitionStack.size(); i++) { - repetition[i] = repetitionStack.get(i); + repetition[i] = repetitionStack.getInt(i); } pages.add(new MultiblockShapeInfo(pattern.getPreview(repetition))); } else { @@ -83,7 +84,7 @@ private List repetitionDFS(BlockPattern pattern, List lightGroups = new HashMap<>(); + final Int2ObjectMap lightGroups = new Int2ObjectOpenHashMap<>(); @Override public void initWidget() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index f25c7f140a6..72f81903859 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -24,6 +24,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSets; @@ -115,7 +116,8 @@ public void onStructureFormed() { capabilitiesFlat.clear(); traitSubscriptions.forEach(ISubscription::unsubscribe); traitSubscriptions.clear(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index c0fa942ef3a..94d4159cfa4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -107,7 +107,7 @@ public static List handleRecipe(IO io, GTRecipe recipe, List globalCount = worldState.getGlobalCount(); - Map layerCount = worldState.getLayerCount(); + Object2IntMap globalCount = worldState.getGlobalCount(); + Object2IntMap layerCount = worldState.getLayerCount(); // Checking aisles for (int c = 0, z = minZ++, r; c < this.fingerLength; c++) { // Checking repeatable slices @@ -178,8 +180,8 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di z++; // Check layer-local matcher predicate - for (Map.Entry entry : layerCount.entrySet()) { - if (entry.getValue() < entry.getKey().minLayerCount) { + for (var entry : layerCount.object2IntEntrySet()) { + if (entry.getIntValue() < entry.getKey().minLayerCount) { worldState.setError(new SinglePredicateError(entry.getKey(), 3)); return false; } @@ -199,8 +201,8 @@ public boolean checkPatternAt(MultiblockState worldState, BlockPos centerPos, Di } // Check count matches amount - for (Map.Entry entry : globalCount.entrySet()) { - if (entry.getValue() < entry.getKey().minCount) { + for (var entry : globalCount.object2IntEntrySet()) { + if (entry.getIntValue() < entry.getKey().minCount) { worldState.setError(new SinglePredicateError(entry.getKey(), 1)); return false; } @@ -220,8 +222,8 @@ public void autoBuild(Player player, MultiblockState worldState) { Direction facing = controller.self().getFrontFacing(); Direction upwardsFacing = controller.self().getUpwardsFacing(); boolean isFlipped = controller.self().isFlipped(); - Map cacheGlobal = worldState.getGlobalCount(); - Map cacheLayer = worldState.getLayerCount(); + Object2IntOpenHashMap cacheGlobal = worldState.getGlobalCount(); + Object2IntOpenHashMap cacheLayer = worldState.getLayerCount(); Map blocks = new HashMap<>(); Set placeBlockPos = new HashSet<>(); blocks.put(centerPos, controller); @@ -244,15 +246,13 @@ public void autoBuild(Player player, MultiblockState worldState) { BlockInfo[] infos = new BlockInfo[0]; for (SimplePredicate limit : predicate.limited) { if (limit.minLayerCount > 0) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else - if (cacheLayer.get(limit) < limit.minLayerCount && (limit.maxLayerCount == -1 || - cacheLayer.get(limit) < limit.maxLayerCount)) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } else { - continue; - } + int curr = cacheLayer.getInt(limit); + if (curr < limit.minLayerCount && + (limit.maxLayerCount == -1 || curr < limit.maxLayerCount)) { + cacheLayer.addTo(limit, 1); + } else { + continue; + } } else { continue; } @@ -263,14 +263,12 @@ public void autoBuild(Player player, MultiblockState worldState) { if (!find) { for (SimplePredicate limit : predicate.limited) { if (limit.minCount > 0) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.minCount && - (limit.maxCount == -1 || cacheGlobal.get(limit) < limit.maxCount)) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + int curr = cacheGlobal.getInt(limit); + if (curr < limit.minCount && (limit.maxCount == -1 || curr < limit.maxCount)) { + cacheGlobal.addTo(limit, 1); + } else { + continue; + } } else { continue; } @@ -282,21 +280,15 @@ public void autoBuild(Player player, MultiblockState worldState) { if (!find) { // no limited for (SimplePredicate limit : predicate.limited) { if (limit.maxLayerCount != -1 && - cacheLayer.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxLayerCount) + cacheLayer.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxLayerCount) { continue; + } if (limit.maxCount != -1 && - cacheGlobal.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxCount) + cacheGlobal.getOrDefault(limit, Integer.MAX_VALUE) == limit.maxCount) { continue; - if (cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } else { - cacheLayer.put(limit, 1); - } - if (cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - cacheGlobal.put(limit, 1); } + cacheLayer.addTo(limit, 1); + cacheGlobal.addTo(limit, 1); infos = ArrayUtils.addAll(infos, limit.candidates == null ? null : limit.candidates.get()); } @@ -323,8 +315,8 @@ public void autoBuild(Player player, MultiblockState worldState) { var foundHandler = getMatchStackWithHandler(candidates, player.getCapability(ForgeCapabilities.ITEM_HANDLER)); if (foundHandler != null) { - foundSlot = foundHandler.getFirst(); - handler = foundHandler.getSecond(); + foundSlot = foundHandler.firstInt(); + handler = foundHandler.second(); found = handler.getStackInSlot(foundSlot).copy(); } } else { @@ -381,7 +373,7 @@ public void autoBuild(Player player, MultiblockState worldState) { } public BlockInfo[][][] getPreview(int[] repetition) { - Map cacheGlobal = new HashMap<>(); + Object2IntOpenHashMap cacheGlobal = new Object2IntOpenHashMap<>(); Map blocks = new HashMap<>(); int minX = Integer.MAX_VALUE; int minY = Integer.MAX_VALUE; @@ -392,7 +384,7 @@ public BlockInfo[][][] getPreview(int[] repetition) { for (int l = 0, x = 0; l < this.fingerLength; l++) { for (int r = 0; r < repetition[l]; r++) { // Checking single slice - Map cacheLayer = new HashMap<>(); + Object2IntOpenHashMap cacheLayer = new Object2IntOpenHashMap<>(); for (int y = 0; y < this.thumbLength; y++) { for (int z = 0; z < this.palmLength; z++) { TraceabilityPredicate predicate = this.blockMatches[l][y][z]; @@ -400,21 +392,15 @@ public BlockInfo[][][] getPreview(int[] repetition) { BlockInfo[] infos = null; for (SimplePredicate limit : predicate.limited) { // check layer and previewCount if (limit.minLayerCount > 0) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else if (cacheLayer.get(limit) < limit.minLayerCount) { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); + if (cacheLayer.getInt(limit) < limit.minLayerCount) { + cacheLayer.addTo(limit, 1); } else { continue; } - if (cacheGlobal.getOrDefault(limit, 0) < limit.previewCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.previewCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + if (cacheGlobal.getInt(limit) < limit.previewCount) { + cacheGlobal.addTo(limit, 1); + } else { + continue; } } else { continue; @@ -426,19 +412,11 @@ public BlockInfo[][][] getPreview(int[] repetition) { if (!find) { // check global and previewCount for (SimplePredicate limit : predicate.limited) { if (limit.minCount == -1 && limit.previewCount == -1) continue; - if (cacheGlobal.getOrDefault(limit, 0) < limit.previewCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.previewCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } else { - continue; - } + if (cacheGlobal.getInt(limit) < limit.previewCount) { + cacheGlobal.addTo(limit, 1); } else if (limit.minCount > 0) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else if (cacheGlobal.get(limit) < limit.minCount) { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); + if (cacheGlobal.getInt(limit) < limit.minCount) { + cacheGlobal.addTo(limit, 1); } else { continue; } @@ -453,10 +431,8 @@ public BlockInfo[][][] getPreview(int[] repetition) { if (!find) { // check common with previewCount for (SimplePredicate common : predicate.common) { if (common.previewCount > 0) { - if (!cacheGlobal.containsKey(common)) { - cacheGlobal.put(common, 1); - } else if (cacheGlobal.get(common) < common.previewCount) { - cacheGlobal.put(common, cacheGlobal.get(common) + 1); + if (cacheGlobal.getInt(common) < common.previewCount) { + cacheGlobal.addTo(common, 1); } else { continue; } @@ -479,21 +455,12 @@ public BlockInfo[][][] getPreview(int[] repetition) { } if (!find) { // check max for (SimplePredicate limit : predicate.limited) { - if (limit.previewCount != -1) { - continue; - } else if (limit.maxCount != -1 || limit.maxLayerCount != -1) { + if (limit.previewCount != -1) continue; + if (limit.maxCount != -1 || limit.maxLayerCount != -1) { if (cacheGlobal.getOrDefault(limit, 0) < limit.maxCount) { - if (!cacheGlobal.containsKey(limit)) { - cacheGlobal.put(limit, 1); - } else { - cacheGlobal.put(limit, cacheGlobal.get(limit) + 1); - } + cacheGlobal.addTo(limit, 1); } else if (cacheLayer.getOrDefault(limit, 0) < limit.maxLayerCount) { - if (!cacheLayer.containsKey(limit)) { - cacheLayer.put(limit, 1); - } else { - cacheLayer.put(limit, cacheLayer.get(limit) + 1); - } + cacheLayer.addTo(limit, 1); } else { continue; } @@ -548,7 +515,7 @@ public BlockInfo[][][] getPreview(int[] repetition) { } private void resetFacing(BlockPos pos, BlockState blockState, Direction facing, - BiFunction checker, Consumer consumer) { + BiPredicate checker, Consumer consumer) { if (blockState.hasProperty(BlockStateProperties.FACING)) { tryFacings(blockState, pos, checker, consumer, BlockStateProperties.FACING, facing == null ? FACINGS : ArrayUtils.addAll(new Direction[] { facing }, FACINGS)); @@ -559,11 +526,11 @@ private void resetFacing(BlockPos pos, BlockState blockState, Direction facing, } } - private void tryFacings(BlockState blockState, BlockPos pos, BiFunction checker, + private void tryFacings(BlockState blockState, BlockPos pos, BiPredicate checker, Consumer consumer, Property property, Direction[] facings) { Direction found = null; for (Direction facing : facings) { - if (checker.apply(pos, facing)) { + if (checker.test(pos, facing)) { found = facing; break; } @@ -658,10 +625,10 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, } @Nullable - private static Pair getMatchStackWithHandler( + private static IntObjectPair getMatchStackWithHandler( List candidates, LazyOptional cap) { - IItemHandler handler = cap.orElse(null); + IItemHandler handler = cap.resolve().orElse(null); if (handler == null) { return null; } @@ -679,7 +646,7 @@ private static Pair getMatchStackWithHandler( } } else if (candidates.stream().anyMatch(candidate -> ItemStack.isSameItemSameTags(candidate, stack)) && !stack.isEmpty() && stack.getItem() instanceof BlockItem) { - return Pair.of(i, handler); + return IntObjectPair.of(i, handler); } } return null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java index 8ef60f55b95..305d342caed 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/FactoryBlockPattern.java @@ -3,22 +3,23 @@ import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.google.common.base.Joiner; +import it.unimi.dsi.fastutil.chars.Char2ObjectArrayMap; +import it.unimi.dsi.fastutil.chars.Char2ObjectMap; +import it.unimi.dsi.fastutil.chars.CharArrayList; +import it.unimi.dsi.fastutil.chars.CharList; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class FactoryBlockPattern { private static final Joiner COMMA_JOIN = Joiner.on(","); private final List depth; private final List aisleRepetitions; - private final Map symbolMap; + private final Char2ObjectMap symbolMap; private final RelativeDirection[] structureDir; private int aisleHeight; private int rowWidth; @@ -26,7 +27,7 @@ public class FactoryBlockPattern { private FactoryBlockPattern(RelativeDirection charDir, RelativeDirection stringDir, RelativeDirection aisleDir) { depth = new ArrayList<>(); aisleRepetitions = new ArrayList<>(); - symbolMap = new HashMap<>(); + symbolMap = new Char2ObjectArrayMap<>(); structureDir = new RelativeDirection[3]; structureDir[0] = charDir; structureDir[1] = stringDir; @@ -167,11 +168,11 @@ private TraceabilityPredicate[][][] makePredicateArray() { } private void checkMissingPredicates() { - List list = new ArrayList<>(); + CharList list = new CharArrayList(); - for (Entry entry : this.symbolMap.entrySet()) { + for (var entry : this.symbolMap.char2ObjectEntrySet()) { if (entry.getValue() == null) { - list.add(entry.getKey()); + list.add(entry.getCharKey()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java index 4549c444225..8df595b2ed8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java @@ -20,13 +20,12 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSets; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; import java.util.stream.Collectors; public class MultiblockState { @@ -41,9 +40,9 @@ public class MultiblockState { @Getter private final PatternMatchContext matchContext; @Getter - private Map globalCount; + private Object2IntOpenHashMap globalCount; @Getter - private Map layerCount; + private Object2IntOpenHashMap layerCount; public TraceabilityPredicate predicate; public IO io; public PatternError error; @@ -66,8 +65,8 @@ public MultiblockState(Level world, BlockPos controllerPos) { protected void clean() { this.matchContext.reset(); - this.globalCount = new HashMap<>(); - this.layerCount = new HashMap<>(); + this.globalCount = new Object2IntOpenHashMap<>(); + this.layerCount = new Object2IntOpenHashMap<>(); cache = new LongOpenHashSet(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java index d4082a60dbc..552d450fed2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/predicates/SimplePredicate.java @@ -21,6 +21,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import it.unimi.dsi.fastutil.longs.Long2ObjectArrayMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import org.jetbrains.annotations.Nullable; @@ -142,7 +143,7 @@ private boolean checkInnerConditions(MultiblockState blockWorldState) { return false; } if (slotName != null) { - Map> slots = blockWorldState.getMatchContext().getOrCreate("slots", + Long2ObjectMap> slots = blockWorldState.getMatchContext().getOrCreate("slots", Long2ObjectArrayMap::new); slots.computeIfAbsent(blockWorldState.getPos().asLong(), s -> new HashSet<>()).add(slotName); return true; @@ -152,10 +153,8 @@ private boolean checkInnerConditions(MultiblockState blockWorldState) { public boolean testGlobal(MultiblockState blockWorldState) { if (minCount == -1 && maxCount == -1) return true; - Integer count = blockWorldState.getGlobalCount().get(this); boolean base = predicate.test(blockWorldState); - count = (count == null ? 0 : count) + (base ? 1 : 0); - blockWorldState.getGlobalCount().put(this, count); + int count = blockWorldState.getGlobalCount().mergeInt(this, base ? 1 : 0, Integer::sum); if (maxCount == -1 || count <= maxCount) return base; blockWorldState.setError(new SinglePredicateError(this, 0)); return false; @@ -163,10 +162,8 @@ public boolean testGlobal(MultiblockState blockWorldState) { public boolean testLayer(MultiblockState blockWorldState) { if (minLayerCount == -1 && maxLayerCount == -1) return true; - Integer count = blockWorldState.getLayerCount().get(this); boolean base = predicate.test(blockWorldState); - count = (count == null ? 0 : count) + (base ? 1 : 0); - blockWorldState.getLayerCount().put(this, count); + int count = blockWorldState.getLayerCount().mergeInt(this, base ? 1 : 0, Integer::sum); if (maxLayerCount == -1 || count <= maxLayerCount) return base; blockWorldState.setError(new SinglePredicateError(this, 2)); return false; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index 7f442b7cb83..e4c23e855e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -5,6 +5,7 @@ import net.minecraft.core.Vec3i; import java.util.function.Function; +import java.util.function.ToIntFunction; /** * Relative direction when facing horizontally @@ -107,7 +108,7 @@ yield switch (upwardsFacing) { }; } - public Function getSorter(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { + public ToIntFunction getSorter(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { // get the direction to go in for the part sorter Direction sorterDirection = getRelativeFacing(frontFacing, upwardsFacing, isFlipped); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java index 1f6bee43baf..61410075c56 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pipenet/PipeNet.java @@ -26,7 +26,7 @@ public abstract class PipeNet implements ITagSerializable> nodeByBlockPos = new HashMap<>(); private final Map> unmodifiableNodeByBlockPos = Collections .unmodifiableMap(nodeByBlockPos); - private final Map ownedChunks = new HashMap<>(); + private final Object2IntOpenHashMap ownedChunks = new Object2IntOpenHashMap<>(); private long lastUpdate; boolean isValid = false; @@ -121,17 +121,17 @@ public void removeNode(BlockPos nodePos) { protected void checkAddedInChunk(BlockPos nodePos) { ChunkPos chunkPos = new ChunkPos(nodePos); - int newValue = this.ownedChunks.compute(chunkPos, (pos, old) -> (old == null ? 0 : old) + 1); - if (newValue == 1 && isValid()) { + int oldValue = this.ownedChunks.addTo(chunkPos, 1); + if (oldValue == 0 && isValid()) { this.worldData.addPipeNetToChunk(chunkPos, this); } } protected void ensureRemovedFromChunk(BlockPos nodePos) { ChunkPos chunkPos = new ChunkPos(nodePos); - int newValue = this.ownedChunks.compute(chunkPos, (pos, old) -> old == null ? 0 : old - 1); - if (newValue == 0) { - this.ownedChunks.remove(chunkPos); + int oldValue = this.ownedChunks.containsKey(chunkPos) ? ownedChunks.addTo(chunkPos, -1) : 0; + if (oldValue == 1) { + this.ownedChunks.removeInt(chunkPos); if (isValid()) { this.worldData.removePipeNetFromChunk(chunkPos, this); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 8517e33cd1e..2d67e39a479 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -47,8 +47,10 @@ public class GTRecipeType implements RecipeType { public final ResourceLocation registryName; public final String group; - public final TreeMap, Integer> maxInputs = new TreeMap<>(RecipeCapability.COMPARATOR); - public final TreeMap, Integer> maxOutputs = new TreeMap<>(RecipeCapability.COMPARATOR); + public final Object2IntSortedMap> maxInputs = new Object2IntAVLTreeMap<>( + RecipeCapability.COMPARATOR); + public final Object2IntSortedMap> maxOutputs = new Object2IntAVLTreeMap<>( + RecipeCapability.COMPARATOR); @Setter private GTRecipeBuilder recipeBuilder; @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java index 6ebeac15700..11ff4738084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ShapedFluidContainerRecipe.java @@ -15,7 +15,7 @@ import net.minecraft.world.item.crafting.ShapedRecipe; import com.google.gson.JsonObject; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntObjectPair; import org.jetbrains.annotations.NotNull; import java.util.Map; @@ -48,16 +48,16 @@ public ShapedFluidContainerRecipe(ResourceLocation id, String group, CraftingBoo for (int x = 0; x <= inv.getWidth() - this.getWidth(); ++x) { for (int y = 0; y <= inv.getHeight() - this.getHeight(); ++y) { var stack = this.findFluidReplacement(inv, x, y, false); - if (stack.getFirst() != -1) { - items.set(stack.getFirst(), stack.getSecond()); - replacedSlot = stack.getFirst(); + if (stack.firstInt() != -1) { + items.set(stack.firstInt(), stack.second()); + replacedSlot = stack.firstInt(); break OUTER_LOOP; } stack = this.findFluidReplacement(inv, x, y, true); - if (stack.getFirst() != -1) { - items.set(stack.getFirst(), stack.getSecond()); - replacedSlot = stack.getFirst(); + if (stack.firstInt() != -1) { + items.set(stack.firstInt(), stack.second()); + replacedSlot = stack.firstInt(); break OUTER_LOOP; } } @@ -79,7 +79,7 @@ public ShapedFluidContainerRecipe(ResourceLocation id, String group, CraftingBoo /** * Checks if the region of a crafting inventory is match for the recipe. */ - private Pair findFluidReplacement(CraftingContainer inv, int width, int height, + private IntObjectPair findFluidReplacement(CraftingContainer inv, int width, int height, boolean mirrored) { for (int x = 0; x < inv.getWidth(); ++x) { for (int y = 0; y < inv.getHeight(); ++y) { @@ -99,13 +99,13 @@ private Pair findFluidReplacement(CraftingContainer inv, int int slot = x + y * inv.getWidth(); ItemStack stack = inv.getItem(slot); if (fluidContainerIngredient.test(stack)) { - return Pair.of(slot, fluidContainerIngredient.getExtractedStack(stack)); + return IntObjectPair.of(slot, fluidContainerIngredient.getExtractedStack(stack)); } } } } - return Pair.of(-1, ItemStack.EMPTY); + return IntObjectPair.of(-1, ItemStack.EMPTY); } public static class Serializer implements RecipeSerializer { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java index 04c68856b10..0fd8586bba6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java @@ -15,6 +15,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IIngredientSerializer; +import com.google.common.base.Preconditions; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.mojang.serialization.JsonOps; @@ -34,24 +35,26 @@ public class IntProviderIngredient extends Ingredient { @Getter protected final IntProvider countProvider; @Setter - protected Integer sampledCount = null; + protected int sampledCount = -1; @Getter protected final Ingredient inner; @Setter protected ItemStack[] itemStacks = null; - public IntProviderIngredient(Ingredient inner, IntProvider countProvider) { + protected IntProviderIngredient(Ingredient inner, IntProvider countProvider) { super(Stream.empty()); this.inner = inner; this.countProvider = countProvider; } - public IntProviderIngredient(@NotNull TagKey tag, IntProvider amount) { - this(Ingredient.of(tag), amount); + public static IntProviderIngredient of(Ingredient inner, IntProvider countProvider) { + Preconditions.checkArgument(countProvider.getMinValue() >= 0, + "IntProviderIngredient must have a min value of at least 0."); + return new IntProviderIngredient(inner, countProvider); } - public static IntProviderIngredient create(Ingredient inner, IntProvider countProvider) { - return new IntProviderIngredient(inner, countProvider); + public static IntProviderIngredient ofTag(@NotNull TagKey tag, IntProvider countProvider) { + return of(Ingredient.of(tag), countProvider); } @Override @@ -69,7 +72,7 @@ public boolean test(@Nullable ItemStack stack) { } public int getSampledCount(@NotNull RandomSource random) { - if (sampledCount == null) { + if (sampledCount == -1) { sampledCount = countProvider.sample(random); } return sampledCount; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java index 1a032c1bdaf..c6a23b6337f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java @@ -77,12 +77,12 @@ public static Ingredient copy(Ingredient ingredient) { } else if (ingredient instanceof IntCircuitIngredient circuit) { return circuit.copy(); } else if (ingredient instanceof IntProviderIngredient intProviderIngredient) { - var copied = new IntProviderIngredient(intProviderIngredient.inner, intProviderIngredient.countProvider); + var copied = IntProviderIngredient.of(intProviderIngredient.inner, intProviderIngredient.countProvider); if (intProviderIngredient.itemStacks != null) { copied.itemStacks = Arrays.stream(intProviderIngredient.itemStacks).map(ItemStack::copy) .toArray(ItemStack[]::new); } - if (intProviderIngredient.sampledCount != null) { + if (intProviderIngredient.sampledCount != -1) { copied.sampledCount = intProviderIngredient.sampledCount; } return copied; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java index 399e0fb3b25..00b094b96b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java @@ -45,6 +45,8 @@ import dev.emi.emi.api.EmiApi; import it.unimi.dsi.fastutil.bytes.Byte2ObjectArrayMap; import it.unimi.dsi.fastutil.bytes.Byte2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2IntAVLTreeMap; +import it.unimi.dsi.fastutil.objects.Object2IntSortedMap; import lombok.Getter; import lombok.Setter; import me.shedaniel.rei.api.client.view.ViewSearchBuilder; @@ -55,7 +57,6 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import java.util.TreeMap; import java.util.function.BiConsumer; import java.util.function.DoubleSupplier; import java.util.stream.Collectors; @@ -289,11 +290,11 @@ public IEditableUI createEditableUITemplate(final boo protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, boolean isHighPressure) { int maxCount = 0; int totalR = 0; - TreeMap, Integer> map = new TreeMap<>(RecipeCapability.COMPARATOR); + Object2IntSortedMap> map = new Object2IntAVLTreeMap<>(RecipeCapability.COMPARATOR); if (isOutputs) { - for (var value : recipeType.maxOutputs.entrySet()) { + for (var value : recipeType.maxOutputs.object2IntEntrySet()) { if (value.getKey().doRenderSlot) { - int val = value.getValue(); + int val = value.getIntValue(); if (val > maxCount) { maxCount = Math.min(val, 3); } @@ -302,9 +303,9 @@ protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, } } } else { - for (var value : recipeType.maxInputs.entrySet()) { + for (var value : recipeType.maxInputs.object2IntEntrySet()) { if (value.getKey().doRenderSlot) { - int val = value.getValue(); + int val = value.getIntValue(); if (val > maxCount) { maxCount = Math.min(val, 3); } @@ -315,13 +316,13 @@ protected WidgetGroup addInventorySlotGroup(boolean isOutputs, boolean isSteam, } WidgetGroup group = new WidgetGroup(0, 0, maxCount * 18 + 8, totalR * 18 + 8); int index = 0; - for (var entry : map.entrySet()) { + for (var entry : map.object2IntEntrySet()) { RecipeCapability cap = entry.getKey(); var widgetClass = cap.getWidgetClass(); if (widgetClass == null) { continue; } - int capCount = entry.getValue(); + int capCount = entry.getIntValue(); for (int slotIndex = 0; slotIndex < capCount; slotIndex++) { var slot = cap.createWidget(); slot.setSelfPosition(new Position((index % 3) * 18 + 4, (index / 3) * 18 + 4)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 7a347372f96..09c1a803d29 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -266,8 +266,8 @@ public MachineBuilder tooltips(Component... components) { return this; } - public MachineBuilder conditionalTooltip(Component component, Supplier condition) { - return conditionalTooltip(component, condition.get()); + public MachineBuilder conditionalTooltip(Component component, BooleanSupplier condition) { + return conditionalTooltip(component, condition.getAsBoolean()); } public MachineBuilder conditionalTooltip(Component component, boolean condition) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 66800de6868..03799a768f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -289,8 +289,8 @@ public MultiblockMachineBuilder tooltips(Component... components) { } @Override - public MultiblockMachineBuilder conditionalTooltip(Component component, Supplier condition) { - return conditionalTooltip(component, condition.get()); + public MultiblockMachineBuilder conditionalTooltip(Component component, BooleanSupplier condition) { + return conditionalTooltip(component, condition.getAsBoolean()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java index fd935ef4043..04e16962445 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ToolChargeBarRenderer.java @@ -11,7 +11,7 @@ import net.minecraft.util.FastColor; import net.minecraft.world.item.ItemStack; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; public final class ToolChargeBarRenderer { @@ -72,10 +72,10 @@ public static boolean renderDurabilityBar(GuiGraphics graphics, ItemStack stack, float level = manager.getDurabilityForDisplay(stack); if (level == 0.0 && !manager.showEmptyBar(stack)) return false; if (level == 1.0 && !manager.showFullBar(stack)) return false; - Pair colors = manager.getDurabilityColorsForDisplay(stack); + IntIntPair colors = manager.getDurabilityColorsForDisplay(stack); boolean doDepletedColor = manager.doDamagedStateColors(stack); - int left = colors != null ? colors.getLeft() : colorBarLeftDurability; - int right = colors != null ? colors.getRight() : colorBarRightDurability; + int left = colors != null ? colors.leftInt() : colorBarLeftDurability; + int right = colors != null ? colors.rightInt() : colorBarRightDurability; render(graphics, manager.getBarWidth(stack), xPosition, yPosition, 0, true, left, right, doDepletedColor); return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java index 24bc9865896..95e2058b9d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidRegulatorCover.java @@ -25,8 +25,6 @@ import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Map; - import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @@ -133,28 +131,23 @@ private int keepExact(IFluidHandlerModifiable source, IFluidHandlerModifiable de int platformTransferLimit) { int fluidLeftToTransfer = platformTransferLimit; - final Map sourceAmounts = enumerateDistinctFluids(source, TransferDirection.EXTRACT); - final Map destinationAmounts = enumerateDistinctFluids(destination, - TransferDirection.INSERT); + var sourceAmounts = enumerateDistinctFluids(source, TransferDirection.EXTRACT); + var destinationAmounts = enumerateDistinctFluids(destination, TransferDirection.INSERT); for (FluidStack fluidStack : sourceAmounts.keySet()) { - if (fluidLeftToTransfer <= 0) - break; + if (fluidLeftToTransfer <= 0) break; int amountToKeep = getFilteredFluidAmount(fluidStack); - int amountInDest = destinationAmounts.getOrDefault(fluidStack, 0); - if (amountInDest >= amountToKeep) - continue; + long amountInDest = destinationAmounts.getOrDefault(fluidStack, 0); + if (amountInDest >= amountToKeep) continue; FluidStack fluidToMove = fluidStack.copy(); - fluidToMove.setAmount(Math.min(fluidLeftToTransfer, amountToKeep - amountInDest)); - if (fluidToMove.getAmount() <= 0) - continue; + fluidToMove.setAmount(Math.min(fluidLeftToTransfer, (int) (amountToKeep - amountInDest))); + if (fluidToMove.getAmount() <= 0) continue; FluidStack drained = source.drain(fluidToMove, FluidAction.SIMULATE); int fillableAmount = destination.fill(drained, FluidAction.SIMULATE); - if (fillableAmount <= 0) - continue; + if (fillableAmount <= 0) continue; fluidToMove.setAmount(Math.min(fluidToMove.getAmount(), fillableAmount)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index 836d046e320..d9fd379d5df 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -19,7 +19,6 @@ import com.gregtechceu.gtceu.api.transfer.fluid.ModifiableFluidHandlerWrapper; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; -import com.gregtechceu.gtceu.utils.FluidStackHashStrategy; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -40,14 +39,14 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import it.unimi.dsi.fastutil.ints.Int2IntFunction; -import it.unimi.dsi.fastutil.objects.Object2IntOpenCustomHashMap; +import it.unimi.dsi.fastutil.objects.Object2LongMap; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -261,23 +260,17 @@ protected enum TransferDirection { EXTRACT } - protected Map enumerateDistinctFluids(IFluidHandlerModifiable fluidHandler, - TransferDirection direction) { - final Map summedFluids = new Object2IntOpenCustomHashMap<>( - FluidStackHashStrategy.comparingAllButAmount()); - + protected Object2LongMap enumerateDistinctFluids(IFluidHandlerModifiable fluidHandler, + TransferDirection direction) { + // Long map because we could have multiple tanks of the same fluid summing up to > Integer.MAX_VALUE + var summedFluids = new Object2LongOpenHashMap(); for (int tank = 0; tank < fluidHandler.getTanks(); tank++) { - if (!canTransfer(fluidHandler, direction, tank)) - continue; + if (!canTransfer(fluidHandler, direction, tank)) continue; FluidStack fluidStack = fluidHandler.getFluidInTank(tank); - if (fluidStack.isEmpty()) - continue; + if (fluidStack.isEmpty()) continue; - summedFluids.putIfAbsent(fluidStack, 0); - summedFluids.computeIfPresent(fluidStack, (stack, totalAmount) -> { - return totalAmount + stack.getAmount(); - }); + summedFluids.addTo(fluidStack, fluidStack.getAmount()); } return summedFluids; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java index 6c547b35a46..a9da558c8f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/AdvancedFluidVoidingCover.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.cover.data.VoidingMode; +import com.gregtechceu.gtceu.utils.GTMath; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -21,11 +22,10 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.objects.Object2LongMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Map; - import javax.annotation.ParametersAreNonnullByDefault; @MethodsReturnNonnullByDefault @@ -71,18 +71,19 @@ protected void doVoidFluids() { } private void voidOverflow(IFluidHandlerModifiable fluidHandler) { - final Map fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); - - for (FluidStack fluidStack : fluidAmounts.keySet()) { - int presentAmount = fluidAmounts.get(fluidStack); - int targetAmount = getFilteredFluidAmount(fluidStack); - if (targetAmount <= 0L || targetAmount > presentAmount) - continue; - - var toDrain = fluidStack.copy(); - toDrain.setAmount(presentAmount - targetAmount); - - fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + var fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); + + for (var entry : Object2LongMaps.fastIterable(fluidAmounts)) { + var stack = entry.getKey(); + long presentAmount = entry.getLongValue(); + int targetAmount = getFilteredFluidAmount(stack); + if (targetAmount <= 0L || targetAmount > presentAmount) continue; + + long diff = presentAmount - targetAmount; + for (int op : GTMath.split(diff)) { + var toDrain = new FluidStack(stack, op); + fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java index b12254446c4..23ea7a8e9e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.common.cover.PumpCover; +import com.gregtechceu.gtceu.utils.GTMath; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -27,9 +28,10 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.objects.Object2LongMap; +import it.unimi.dsi.fastutil.objects.Object2LongMaps; import org.jetbrains.annotations.NotNull; -import java.util.Map; import java.util.Set; import javax.annotation.ParametersAreNonnullByDefault; @@ -70,16 +72,16 @@ protected void doVoidFluids() { } void voidAny(IFluidHandlerModifiable fluidHandler) { - final Map fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); + Object2LongMap fluidAmounts = enumerateDistinctFluids(fluidHandler, TransferDirection.EXTRACT); - for (FluidStack fluidStack : fluidAmounts.keySet()) { - if (!filterHandler.test(fluidStack)) - continue; + for (var entry : Object2LongMaps.fastIterable(fluidAmounts)) { + var stack = entry.getKey(); + if (!filterHandler.test(stack)) continue; - var toDrain = fluidStack.copy(); - toDrain.setAmount(fluidAmounts.get(fluidStack)); - - fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + for (int op : GTMath.split(entry.getLongValue())) { + var toDrain = new FluidStack(stack, op); + fluidHandler.drain(toDrain, IFluidHandler.FluidAction.EXECUTE); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index 07ed413e08c..b16edf4d173 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -1429,7 +1429,7 @@ public static void init() { } public static boolean doMetalPipe(Material material) { - return GTValues.FOOLS.get() && material.hasProperty(PropertyKey.INGOT) && + return GTValues.FOOLS.getAsBoolean() && material.hasProperty(PropertyKey.INGOT) && !material.hasProperty(PropertyKey.POLYMER) && !material.hasProperty(PropertyKey.WOOD); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index e1cdab67374..215182c5032 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -73,7 +73,6 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -2576,7 +2575,7 @@ public static NonNullConsumer attach(IItemComponen } public static NonNullConsumer modelPredicate(ResourceLocation predicate, - Function property) { + StackProperty property) { return item -> { if (GTCEu.isClientSide()) { ItemProperties.register(item, predicate, (itemStack, c, l, i) -> property.apply(itemStack)); @@ -2613,4 +2612,10 @@ T extends Item> NonNullBiConsumer, RegistrateLangProvide prov.add(ctx.get(), names.stream().map(StringUtils::capitalize).collect(Collectors.joining(" "))); }; } + + @FunctionalInterface + public interface StackProperty { + + float apply(ItemStack stack); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 44bbd3d611f..30d5e757850 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -234,7 +234,7 @@ public class GTMachines { .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) .workableTieredHullRenderer(GTCEu.id("block/machines/macerator")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .register(), ELECTRIC_TIERS); public static final MachineDefinition[] GAS_COLLECTOR = registerSimpleMachines("gas_collector", @@ -249,7 +249,7 @@ public class GTMachines { .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) .workableTieredHullRenderer(GTCEu.id("block/machines/rock_crusher")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.ROCK_BREAKER_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.ROCK_BREAKER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) .register(), ELECTRIC_TIERS); @@ -263,7 +263,7 @@ public class GTMachines { .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) .workableTieredHullRenderer(GTCEu.id("block/machines/air_scrubber")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, - GTRecipeTypes.AIR_SCRUBBER_RECIPES, defaultTankSizeFunction.apply(tier), true)) + GTRecipeTypes.AIR_SCRUBBER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) .register(), LOW_TIERS); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index a708beac5e7..45050a0ed08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -273,7 +273,7 @@ public static void init() { @NotNull public static Material get(String name) { var mat = GTCEuAPI.materialManager.getMaterial(name); - // mat could be null here due to the registry grabbing a material that isn't in the map + // material could be null here due to the registry grabbing a material that isn't in the map if (mat == null) { GTCEu.LOGGER.warn("{} is not a known Material", name); return GTMaterials.NULL; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index cf3ac9ffc86..0e4a2a7bd1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -184,7 +184,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, GuiTextures.VIAL_OVERLAY_1) .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); @@ -413,7 +413,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, GuiTextures.RESEARCH_STATION_OVERLAY) .setScanner(true) .setMaxTooltips(4) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); public final static GTRecipeType ROCK_BREAKER_RECIPES = register("rock_breaker", ELECTRIC).setMaxIOSize(1, 4, 0, 0) .setEUIO(IO.IN) @@ -644,7 +644,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, true, true, GuiTextures.MOLECULAR_OVERLAY_4) .setSlotOverlay(true, false, GuiTextures.VIAL_OVERLAY_1) .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) - .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) + .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSmallRecipeMap(CHEMICAL_RECIPES); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 2fd6a80e3ad..111c06e1cb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -72,7 +72,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Supplier; -import java.util.stream.Stream; +import java.util.stream.IntStream; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.GTValues.UV; @@ -154,7 +154,7 @@ public static MachineDefinition[] registerSimpleMachines(String name, .recipeType(recipeType) .workableTieredHullRenderer(GTCEu.id("block/machines/" + name)) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), true)) + tankScalingFunction.applyAsInt(tier), true)) .register(); }, tiers); @@ -261,7 +261,7 @@ public static MachineDefinition[] registerSimpleGenerator(String name, .addOutputLimit(FluidRecipeCapability.CAP, 0) .renderer(() -> new SimpleGeneratorMachineRenderer(tier, GTCEu.id("block/generators/" + name))) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), false)) + tankScalingFunction.applyAsInt(tier), false)) .register(), tiers); } @@ -551,8 +551,9 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .or(autoAbilities(true, true, false))) .where('D', ability(PartAbility.OUTPUT_ENERGY, - Stream.of(ULV, LV, MV, HV, EV, IV, LuV, ZPM, UV, UHV).filter(t -> t >= tier) - .mapToInt(Integer::intValue).toArray()) + IntStream.of(ULV, LV, MV, HV, EV, IV, LuV, ZPM, UV, UHV) + .filter(t -> t >= tier) + .toArray()) .addTooltips(Component.translatable("gtceu.multiblock.pattern.error.limited.1", GTValues.VN[tier]))) .where('A', diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index 9e03712f22c..4485b23a8fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -46,7 +46,7 @@ import appeng.api.util.AEColor; import appeng.blockentity.networking.CableBusBlockEntity; import com.google.common.collect.ImmutableMap; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -130,7 +130,7 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf private final Supplier empty; private final DyeColor color; public final int totalUses; - private final Pair durabilityBarColors; + private final IntIntPair durabilityBarColors; public ColorSprayBehaviour(Supplier empty, int totalUses, int color) { this.empty = empty; @@ -155,12 +155,12 @@ public int getMaxDurability(ItemStack stack) { @Override public int getBarColor(ItemStack stack) { float f = Math.max(0.0F, getDurabilityForDisplay(stack)); - return mixColors(f, durabilityBarColors.getLeft(), durabilityBarColors.getRight()); + return mixColors(f, durabilityBarColors.leftInt(), durabilityBarColors.rightInt()); } @Nullable @Override - public Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return durabilityBarColors; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java index b247e2beda5..c1f0190a701 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedNanoMuscleSuite.java @@ -25,17 +25,17 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Iterator; import java.util.List; public class AdvancedNanoMuscleSuite extends NanoMuscleSuite implements IJetpack { // A replacement for checking the current world time, to get around the gamerule that stops it private long timer = 0L; - private List, List>> inventoryIndexMap; + private List, IntList>> inventoryIndexMap; public AdvancedNanoMuscleSuite(int energyPerUse, long capacity, int tier) { super(ArmorItem.Type.CHESTPLATE, energyPerUse, capacity, tier); @@ -103,10 +103,10 @@ public void onArmorTick(Level world, Player player, @NotNull ItemStack item) { if (inventoryIndexMap != null && !inventoryIndexMap.isEmpty()) { // Charge all inventory slots for (int i = 0; i < inventoryIndexMap.size(); i++) { - Pair, List> inventoryMap = inventoryIndexMap.get(i); - Iterator inventoryIterator = inventoryMap.getSecond().iterator(); + Pair, IntList> inventoryMap = inventoryIndexMap.get(i); + var inventoryIterator = inventoryMap.getSecond().iterator(); while (inventoryIterator.hasNext()) { - int slot = inventoryIterator.next(); + int slot = inventoryIterator.nextInt(); IElectricItem chargable = GTCapabilityHelper.getElectricItem(inventoryMap.getFirst().get(slot)); // Safety check the null, it should not actually happen. Also don't try and charge itself diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java index 26e9f6a39f2..42d4eceabcf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/AdvancedQuarkTechSuite.java @@ -26,16 +26,16 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.ints.IntList; import org.jetbrains.annotations.NotNull; -import java.util.Iterator; import java.util.List; public class AdvancedQuarkTechSuite extends QuarkTechSuite implements IJetpack { // A replacement for checking the current world time, to get around the gamerule that stops it private long timer = 0L; - private List, List>> inventoryIndexMap; + private List, IntList>> inventoryIndexMap; public AdvancedQuarkTechSuite(int energyPerUse, long capacity, int tier) { super(ArmorItem.Type.CHESTPLATE, energyPerUse, capacity, tier); @@ -108,10 +108,10 @@ public void onArmorTick(Level world, Player player, ItemStack item) { if (inventoryIndexMap != null && !inventoryIndexMap.isEmpty()) { // Charge all inventory slots for (int i = 0; i < inventoryIndexMap.size(); i++) { - Pair, List> inventoryMap = inventoryIndexMap.get(i); - Iterator inventoryIterator = inventoryMap.getSecond().iterator(); + Pair, IntList> inventoryMap = inventoryIndexMap.get(i); + var inventoryIterator = inventoryMap.getSecond().iterator(); while (inventoryIterator.hasNext()) { - int slot = inventoryIterator.next(); + int slot = inventoryIterator.nextInt(); IElectricItem chargable = GTCapabilityHelper.getElectricItem(inventoryMap.getFirst().get(slot)); // Safety check the null, it should not actually happen. Also don't try and charge itself diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java index 13d8d41fcb7..9a96613c7aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/PowerlessJetpack.java @@ -32,9 +32,9 @@ import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; +import it.unimi.dsi.fastutil.ints.IntIntPair; import it.unimi.dsi.fastutil.objects.AbstractObject2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -219,7 +219,7 @@ public static class Behaviour implements IDurabilityBar, IItemComponent, ISubIte IInteractionItem, IComponentCapability { public final int maxCapacity; - private final Pair durabilityBarColors; + private final IntIntPair durabilityBarColors; public Behaviour(int internalCapacity) { this.maxCapacity = internalCapacity; @@ -235,7 +235,7 @@ public float getDurabilityForDisplay(@NotNull ItemStack itemStack) { @Nullable @Override - public Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { return durabilityBarColors; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java index 5503ea95456..83dbb7fc348 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java @@ -34,16 +34,16 @@ import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; +import it.unimi.dsi.fastutil.objects.Reference2IntMap; +import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; import org.jetbrains.annotations.NotNull; -import java.util.IdentityHashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; public class QuarkTechSuite extends ArmorLogicSuite implements IStepAssist { - public static final Map potionRemovalCost = new IdentityHashMap<>(); + public static final Reference2IntMap potionRemovalCost = new Reference2IntOpenHashMap<>(); private float charge = 0.0F; private static final byte RUNNING_TIMER = 10; // .5 seconds private static final byte JUMPING_TIMER = 10; // .5 seconds @@ -252,8 +252,8 @@ public boolean supplyFood(@NotNull IElectricItem item, Player player) { public static void removeNegativeEffects(@NotNull IElectricItem item, Player player) { for (MobEffectInstance effect : new LinkedList<>(player.getActiveEffects())) { MobEffect potion = effect.getEffect(); - Integer cost = potionRemovalCost.get(potion); - if (cost != null) { + int cost = potionRemovalCost.getOrDefault(potion, -1); + if (cost != -1) { cost = cost * (effect.getAmplifier() + 1); if (item.canUse(cost)) { item.discharge(cost, item.getTier(), true, false, false); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java index 6f6eea4f41c..0b38112fed9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java @@ -10,13 +10,13 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; +import it.unimi.dsi.fastutil.objects.Object2FloatMap; +import it.unimi.dsi.fastutil.objects.Object2FloatMaps; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.function.Function; /** * Add to tools to have them deal bonus damage to specific mobs. @@ -24,38 +24,37 @@ */ public class EntityDamageBehavior implements IToolBehavior { - private final List> shouldDoBonusList = new ArrayList<>(); + private final List shouldDoBonusList = new ArrayList<>(); private final String mobType; public EntityDamageBehavior(float bonus, Class... entities) { this(null, bonus, entities); } - public EntityDamageBehavior(Map, Float> entities) { - this(null, entities); + public EntityDamageBehavior(Object2FloatMap> entityDamageMap) { + this(null, entityDamageMap); } public EntityDamageBehavior(String mobType, float bonus, Class... entities) { this.mobType = mobType; for (Class entity : entities) { - shouldDoBonusList.add(e -> entity.isAssignableFrom(e.getClass()) ? bonus : 0); + shouldDoBonusList.add(damageForClass(entity, bonus)); } } - public EntityDamageBehavior(String mobType, Map, Float> entities) { + public EntityDamageBehavior(String mobType, Object2FloatMap> entityDamageMap) { this.mobType = mobType; - for (Map.Entry, Float> entry : entities.entrySet()) { + for (var entry : Object2FloatMaps.fastIterable(entityDamageMap)) { Class entity = entry.getKey(); - float bonus = entry.getValue(); - shouldDoBonusList.add(e -> entity.isAssignableFrom(e.getClass()) ? bonus : 0); + float bonus = entry.getFloatValue(); + shouldDoBonusList.add(damageForClass(entity, bonus)); } } @Override public void hitEntity(@NotNull ItemStack stack, @NotNull LivingEntity target, @NotNull LivingEntity attacker) { - float damageBonus = shouldDoBonusList.stream().map(func -> func.apply(target)).filter(f -> f > 0).findFirst() - .orElse(0f); + float damageBonus = getDamageBonus(target); if (damageBonus != 0f) { DamageSource source = attacker instanceof Player player ? attacker.damageSources().playerAttack(player) : attacker.damageSources().mobAttack(attacker); @@ -63,6 +62,14 @@ public void hitEntity(@NotNull ItemStack stack, @NotNull LivingEntity target, } } + private float getDamageBonus(@NotNull LivingEntity target) { + for (EntityDamageFunction func : shouldDoBonusList) { + float f = func.damageFor(target); + if (f > 0) return f; + } + return 0f; + } + @Override public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, @NotNull TooltipFlag flag) { @@ -71,4 +78,14 @@ public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @Not Component.translatable("item.gtceu.tool.behavior.damage_boost_" + mobType))); } } + + @FunctionalInterface + private interface EntityDamageFunction { + + float damageFor(LivingEntity e); + } + + static EntityDamageFunction damageForClass(Class clazz, float damage) { + return e -> clazz.isAssignableFrom(e.getClass()) ? damage : 0; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java index 0139e2af524..eec6e5d5673 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java @@ -31,7 +31,7 @@ import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -44,7 +44,7 @@ public class LighterBehavior implements IDurabilityBar, IInteractionItem, IAddIn public static final String LIGHTER_OPEN = "lighterOpen"; private static final String USES_LEFT = "usesLeft"; - private static final Pair DURABILITY_BAR_COLORS = GradientUtil.getGradient(0xF07F1D, 10); + private static final IntIntPair DURABILITY_BAR_COLORS = GradientUtil.getGradient(0xF07F1D, 10); private final ResourceLocation overrideLocation; private final boolean usesFluid; private final boolean hasMultipleUses; @@ -264,7 +264,7 @@ public boolean showEmptyBar(ItemStack itemStack) { } @Override - public @Nullable Pair getDurabilityColorsForDisplay(ItemStack itemStack) { + public @Nullable IntIntPair getDurabilityColorsForDisplay(ItemStack itemStack) { if (hasMultipleUses && usesFluid) { return DURABILITY_BAR_COLORS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index 483fbdf6c2d..bbc4dd55997 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -28,13 +28,13 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Map; import static com.gregtechceu.gtceu.api.pattern.Predicates.abilities; @@ -84,7 +84,8 @@ public void onStructureFormed() { // capture all energy containers List powerInput = new ArrayList<>(); List powerOutput = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getPrioritySortedParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); @@ -122,7 +123,7 @@ public void onStructureFormed() { @NotNull private List getPrioritySortedParts() { - return getParts().stream().sorted(Comparator.comparing(part -> { + return getParts().stream().sorted(Comparator.comparingInt(part -> { if (part instanceof MetaMachine partMachine) { Block partBlock = partMachine.getBlockState().getBlock(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index 84836a0b056..d3e6bb1a2f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -26,7 +26,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Optional; -import java.util.function.Function; +import java.util.function.ToIntFunction; public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @@ -59,11 +59,12 @@ public boolean beforeWorking(@Nullable GTRecipe recipe) { @Override public void onStructureFormed() { - getDefinition().setPartSorter(Comparator.comparing(it -> multiblockPartSorter().apply(it.self().getPos()))); + getDefinition() + .setPartSorter(Comparator.comparingInt(it -> multiblockPartSorter().applyAsInt(it.self().getPos()))); super.onStructureFormed(); } - private Function multiblockPartSorter() { + private ToIntFunction multiblockPartSorter() { return RelativeDirection.RIGHT.getSorter(getFrontFacing(), getUpwardsFacing(), isFlipped()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java index 90baca31852..af8040bc18f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/BedrockOreMinerMachine.java @@ -5,8 +5,8 @@ import com.gregtechceu.gtceu.api.capability.IEnergyContainer; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.WeightedMaterial; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -30,7 +30,6 @@ import lombok.Getter; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -76,9 +75,9 @@ public void addDisplayText(List textList) { // Ore names textList.add(Component.translatable("gtceu.multiblock.ore_rig.drilled_ores_list") .withStyle(ChatFormatting.GREEN)); - List> drilledOres = getRecipeLogic().getVeinMaterials(); + List drilledOres = getRecipeLogic().getVeinMaterials(); for (var entry : drilledOres) { - Component fluidInfo = entry.getValue().getLocalizedName().withStyle(ChatFormatting.GREEN); + Component fluidInfo = entry.material().getLocalizedName().withStyle(ChatFormatting.GREEN); textList.add(Component.translatable("gtceu.multiblock.ore_rig.drilled_ore_entry", fluidInfo) .withStyle(ChatFormatting.GRAY)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 8fb9da3ba16..e2b19ba69bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -62,6 +62,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -181,7 +182,8 @@ public boolean shouldAddPartToController(IMultiPart part) { protected void initializeAbilities() { List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { if (isPartIgnored(part)) continue; IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index 180105ca28d..e7e6d5c0f70 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -35,18 +35,17 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.longs.Long2IntAVLTreeMap; +import it.unimi.dsi.fastutil.longs.Long2IntSortedMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.TreeMap; +import java.util.*; import javax.annotation.ParametersAreNonnullByDefault; @@ -67,9 +66,9 @@ public class FusionReactorMachine extends WorkableElectricMultiblockMachine impl PERFECT_HALF_VOLTAGE_FACTOR, false); // Max EU -> Tier map, used to find minimum tier needed for X EU to start - private static final TreeMap FUSION_ENERGY = new TreeMap<>(); + private static final Long2IntSortedMap FUSION_ENERGY = new Long2IntAVLTreeMap(); // Tier -> Suffix map, i.e. LuV -> MKI - private static final Int2ObjectMap FUSION_NAMES = new Int2ObjectOpenHashMap<>(4); + private static final Int2ObjectMap FUSION_NAMES = new Int2ObjectArrayMap<>(4); // Minimum registered fusion reactor tier private static int MINIMUM_TIER = MAX; @@ -122,7 +121,8 @@ public void onStructureFormed() { super.onStructureFormed(); // capture all energy containers List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE || io == IO.OUT) continue; @@ -292,7 +292,7 @@ public static void addEUToStartLabel(GTRecipe recipe, WidgetGroup group) { long euToStart = recipe.data.getLong("eu_to_start"); if (euToStart <= 0) return; int recipeTier = RecipeHelper.getPreOCRecipeEuTier(recipe); - int fusionTier = FUSION_ENERGY.ceilingEntry(euToStart).getValue(); + int fusionTier = findCeilingTier(euToStart); int tier = Math.max(MINIMUM_TIER, Math.max(recipeTier, fusionTier)); group.addWidget(new LabelWidget(-8, group.getSizeHeight() - 10, LocalizationUtils.format("gtceu.recipe.eu_to_start", @@ -310,6 +310,17 @@ public static void registerFusionTier(int tier, @NotNull String name) { MINIMUM_TIER = Math.min(tier, MINIMUM_TIER); } + private static int findCeilingTier(long euToStart) { + long key; + // tail = submap where all keys are >= EU to start + // if tail is empty, then EU is greater than all the EU values, so we choose the last key + // otherwise we want the first key in the tail map + var tail = FUSION_ENERGY.tailMap(euToStart); + if (tail.isEmpty()) key = FUSION_ENERGY.lastLongKey(); + else key = tail.firstLongKey(); + return FUSION_ENERGY.get(key); + } + public static long calculateEnergyStorageFactor(int tier, int energyInputAmount) { return energyInputAmount * (long) Math.pow(2, tier - LuV) * 10000000L; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java index fe5f7f2f1a4..f2b776e41cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/LargeMinerMachine.java @@ -40,6 +40,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -48,7 +49,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -135,7 +135,8 @@ public boolean checkPattern() { private void initializeAbilities() { List energyContainers = new ArrayList<>(); List fluidTanks = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index b822e984959..c75fc8b59e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -36,6 +36,7 @@ import net.minecraft.world.entity.player.Player; import com.google.common.annotations.VisibleForTesting; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -94,7 +95,8 @@ public void onStructureFormed() { super.onStructureFormed(); List inputs = new ArrayList<>(); List outputs = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (io == IO.NONE) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java index e98d992d4c5..6ce8c20ee13 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java @@ -24,13 +24,13 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @@ -60,7 +60,8 @@ public DataBankMachine(IMachineBlockEntity holder) { public void onStructureFormed() { super.onStructureFormed(); List energyContainers = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (part instanceof IMaintenanceMachine maintenanceMachine) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 9d5d9a1c60d..9a9b9dd28f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -51,6 +51,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import it.unimi.dsi.fastutil.longs.Long2ObjectMaps; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; @@ -101,7 +102,8 @@ public void onStructureFormed() { List energyContainers = new ArrayList<>(); List coolantContainers = new ArrayList<>(); List componentHatches = new ArrayList<>(); - Map ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", Long2ObjectMaps::emptyMap); + Long2ObjectMap ioMap = getMultiblockState().getMatchContext().getOrCreate("ioMap", + Long2ObjectMaps::emptyMap); for (IMultiPart part : getParts()) { IO io = ioMap.getOrDefault(part.self().getPos().asLong(), IO.BOTH); if (part instanceof IHPCAComponentHatch componentHatch) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index 0d7c00d5b22..5956e121ca2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -49,7 +49,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.function.Supplier; +import java.util.function.DoubleSupplier; import javax.annotation.ParametersAreNonnullByDefault; @@ -369,17 +369,17 @@ public Widget createUIWidget() { return group; } - private static Component getTextWidgetText(String type, Supplier multiplier) { + private static Component getTextWidgetText(String type, DoubleSupplier multiplier) { Component tooltip; - if (multiplier.get() == 1.0) { + if (multiplier.getAsDouble() == 1.0) { tooltip = Component.translatable("gtceu.maintenance.configurable_" + type + ".unchanged_description"); } else { tooltip = Component.translatable("gtceu.maintenance.configurable_" + type + ".changed_description", - FormattingUtil.formatNumber2Places(multiplier.get())); + FormattingUtil.formatNumber2Places(multiplier.getAsDouble())); } return Component .translatable("gtceu.maintenance.configurable_" + type, - FormattingUtil.formatNumber2Places(multiplier.get())) + FormattingUtil.formatNumber2Places(multiplier.getAsDouble())) .setStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, tooltip))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java index 9dc6c30acd0..cb0cdd6fd18 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/TankValvePartMachine.java @@ -102,7 +102,7 @@ private void autoIO() { autoIOSubscription.updateSubscription(); } - private Boolean shouldAutoIO() { + private boolean shouldAutoIO() { if (!isFormed()) return false; if (getFrontFacing() != Direction.DOWN) return false; if (tankProxy.isEmpty()) return false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index e3d270564ab..25d33de72b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreVeinSavedData; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.OreVeinWorldEntry; +import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.WeightedMaterial; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; @@ -23,7 +24,6 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Map; public class BedrockOreMinerLogic extends RecipeLogic { @@ -31,7 +31,7 @@ public class BedrockOreMinerLogic extends RecipeLogic { @Getter @Nullable - private List> veinMaterials; + private List veinMaterials; public BedrockOreMinerLogic(BedrockOreMinerMachine machine) { super(machine); @@ -69,8 +69,9 @@ public void findAndHandleRecipe() { @Nullable private GTRecipe getOreMinerRecipe() { if (getMachine().getLevel() instanceof ServerLevel serverLevel && veinMaterials != null) { - Material material = veinMaterials - .get(GTUtil.getRandomItem(serverLevel.random, veinMaterials, veinMaterials.size())).getValue(); + WeightedMaterial wm = GTUtil.getRandomItem(serverLevel.random, veinMaterials); + if (wm == null) return null; + Material material = wm.material(); ItemStack stack = ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), material, getOreToProduce()); if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.crushed, material, getOreToProduce()); // backup diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java index 2b3cd3db0f2..3aa6800e1c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java @@ -7,11 +7,12 @@ import net.minecraft.network.FriendlyByteBuf; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.booleans.BooleanBooleanPair; import lombok.NoArgsConstructor; import java.util.List; +@SuppressWarnings("unchecked") @NoArgsConstructor public class CPacketKeysPressed implements IPacket { @@ -34,11 +35,11 @@ public void encode(FriendlyByteBuf buf) { @Override public void decode(FriendlyByteBuf buf) { - this.updateKeys = new Pair[KeyBind.VALUES.length]; - Pair[] updateKeys = (Pair[]) this.updateKeys; + this.updateKeys = new BooleanBooleanPair[KeyBind.VALUES.length]; + BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; int size = buf.readVarInt(); for (int i = 0; i < size; i++) { - updateKeys[buf.readVarInt()] = Pair.of(buf.readBoolean(), buf.readBoolean()); + updateKeys[buf.readVarInt()] = BooleanBooleanPair.of(buf.readBoolean(), buf.readBoolean()); } } @@ -46,11 +47,11 @@ public void decode(FriendlyByteBuf buf) { public void execute(IHandlerContext handler) { if (handler.getPlayer() != null) { KeyBind[] keybinds = KeyBind.VALUES; - Pair[] updateKeys = (Pair[]) this.updateKeys; + BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; for (int i = 0; i < updateKeys.length; i++) { - Pair pair = updateKeys[i]; + BooleanBooleanPair pair = updateKeys[i]; if (pair != null) { - keybinds[i].update(pair.getFirst(), pair.getSecond(), handler.getPlayer()); + keybinds[i].update(pair.firstBoolean(), pair.secondBoolean(), handler.getPlayer()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java index e588d1f41ea..92cd9b26a9d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/CableData.java @@ -2,14 +2,13 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.WireProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - @Accessors(fluent = true) public class CableData implements IAttachData { @@ -51,6 +50,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java index 2812f1b8320..5d77d05698e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/duct/DuctPipeProperties.java @@ -3,8 +3,6 @@ import lombok.Getter; import lombok.Setter; -import java.util.Objects; - public class DuctPipeProperties { /** @@ -35,7 +33,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(transferRate); + return Float.hashCode(transferRate); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java index 6e1ab2c9cc5..74094435d10 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/fluidpipe/FluidPipeData.java @@ -2,14 +2,13 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidPipeProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - @Accessors(fluent = true) public class FluidPipeData implements IAttachData { @@ -51,6 +50,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java index 532efae05bc..66c71106aa4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemNetHandler.java @@ -26,6 +26,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; @@ -39,7 +40,7 @@ public class ItemNetHandler implements IItemHandlerModifiable { private final Level world; @Getter private final Direction facing; - private final Map simulatedTransfersGlobalRoundRobin = new HashMap<>(); + private final Object2IntOpenHashMap simulatedTransfersGlobalRoundRobin = new Object2IntOpenHashMap<>(); private int simulatedTransfers = 0; private final ItemStackHandler testHandler = new ItemStackHandler(1); @@ -456,33 +457,40 @@ public boolean isItemValid(int slot, @NotNull ItemStack stack) { } private void transferTo(ItemRoutePath handler, boolean simulate, int amount) { - if (simulate) - simulatedTransfersGlobalRoundRobin.merge(handler.toFacingPos(), amount, Integer::sum); - else - pipe.getTransferred().merge(handler.toFacingPos(), amount, Integer::sum); + if (simulate) { + simulatedTransfersGlobalRoundRobin.addTo(handler.toFacingPos(), amount); + } else { + pipe.getTransferred().mergeInt(handler.toFacingPos(), amount, Integer::sum); + } } private boolean contains(ItemRoutePath handler, boolean simulate) { - return simulate ? simulatedTransfersGlobalRoundRobin.containsKey(handler.toFacingPos()) : - pipe.getTransferred().containsKey(handler.toFacingPos()); + if (simulate) { + return simulatedTransfersGlobalRoundRobin.containsKey(handler.toFacingPos()); + } else { + return pipe.getTransferred().containsKey(handler.toFacingPos()); + } } private int didTransferTo(ItemRoutePath handler, boolean simulate) { - if (simulate) + if (simulate) { return simulatedTransfersGlobalRoundRobin.getOrDefault(handler.toFacingPos(), 0); - return pipe.getTransferred().getOrDefault(handler.toFacingPos(), 0); + } else { + return pipe.getTransferred().getOrDefault(handler.toFacingPos(), 0); + } } private void resetTransferred(boolean simulated) { - if (simulated) + if (simulated) { simulatedTransfersGlobalRoundRobin.clear(); - else + } else { pipe.resetTransferred(); + } } private void decrementBy(int amount) { - for (Map.Entry entry : pipe.getTransferred().entrySet()) { - entry.setValue(entry.getValue() - amount); + for (var entry : pipe.getTransferred().object2IntEntrySet()) { + entry.setValue(entry.getIntValue() - amount); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java index 97f9e0a8e77..7f0a1193700 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/item/ItemPipeData.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.ItemPipeProperties; import com.gregtechceu.gtceu.api.pipenet.IAttachData; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.Direction; @@ -9,8 +10,6 @@ import lombok.Getter; import lombok.experimental.Accessors; -import java.util.Objects; - @Accessors(fluent = true) @AllArgsConstructor public class ItemPipeData implements IAttachData { @@ -48,6 +47,6 @@ public boolean equals(Object obj) { @Override public int hashCode() { - return Objects.hash(properties, connections); + return GTMath.hashInts(properties.hashCode(), connections); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java index e9899a7ef8d..70be959e2cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java +++ b/src/main/java/com/gregtechceu/gtceu/common/worldgen/feature/FluidSproutFeature.java @@ -108,7 +108,7 @@ public boolean place(FeaturePlaceContext context) { } } - return placedAmount.getValue() > 0; + return placedAmount.intValue() > 0; } public void setBlock(BlockPos.MutableBlockPos mutablePos, int currentX, int currentY, int currentZ, diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java index 6d846a62078..6ebebeae66f 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/top/ConfigMixin.java @@ -13,6 +13,8 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; import mcjty.theoneprobe.config.Config; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -20,9 +22,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import java.util.HashSet; import java.util.Map; -import java.util.Set; @Mixin(value = Config.class, remap = false) public class ConfigMixin { @@ -46,7 +46,7 @@ public class ConfigMixin { @Inject(method = "getHarvestabilityTags", at = @At(value = "INVOKE", target = "Ljava/util/List;iterator()Ljava/util/Iterator;")) private static void gtceu$injectHarvestTags(CallbackInfoReturnable> cir) { - Set passedTiers = new HashSet<>(); + IntSet passedTiers = new IntOpenHashSet(); for (Material mat : GTCEuAPI.materialManager.getRegisteredMaterials()) { if (mat.hasProperty(PropertyKey.TOOL)) { MaterialToolTier tier = mat.getToolTier(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java index 357be21399c..3cf4e1b8c0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.LootPoolAccessor; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import net.minecraft.core.registries.BuiltInRegistries; @@ -104,7 +105,7 @@ public static void addRolls(ResourceLocation tableLocation, int minAdd, int maxA private static @NotNull String createEntryName(@NotNull ItemStack stack, @NotNull String modid, int weight, @NotNull RandomWeightLootFunction function) { - int hashCode = Objects.hash(HASH_STRATEGY.hashCode(stack), modid, weight, function.getMinAmount(), + int hashCode = GTMath.hashInts(HASH_STRATEGY.hashCode(stack), modid.hashCode(), weight, function.getMinAmount(), function.getMaxAmount()); return String.format("#%s:loot_%s", modid, hashCode); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java index 7d42e21dbc5..8f57497253f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/VanillaRecipeHelper.java @@ -596,7 +596,7 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull if (info != null) { for (MaterialStack ms : info.getMaterials()) { if (!(ms.material() instanceof MarkerMaterial)) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, ms, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, ms); } } continue; @@ -605,14 +605,14 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull // Then try to get a single Material (UnificationEntry needs this, for example) MaterialStack materialStack = ChemicalHelper.getMaterialStack(itemLike); if (!materialStack.isEmpty() && !(materialStack.material() instanceof MarkerMaterial)) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, materialStack, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, materialStack); } // Gather any secondary materials if this item has an OrePrefix TagPrefix prefix = ChemicalHelper.getPrefix(itemLike); if (!prefix.isEmpty() && !prefix.secondaryMaterials().isEmpty()) { for (MaterialStack ms : prefix.secondaryMaterials()) { - addMaterialStack(materialStacksExploded, outputCount, inputCountMap, ms, lastChar); + addMaterialStack(materialStacksExploded, inputCountMap.get(lastChar), outputCount, ms); } } } @@ -621,8 +621,7 @@ public static ItemMaterialInfo getRecyclingIngredients(int outputCount, @NotNull } private static void addMaterialStack(@NotNull Reference2LongOpenHashMap materialStacksExploded, - int outputStackCount, @NotNull Char2IntFunction inputCountMap, - @NotNull MaterialStack ms, char c) { - materialStacksExploded.merge(ms.material(), (ms.amount() * inputCountMap.get(c) / outputStackCount), Long::sum); + int inputCount, int outputCount, @NotNull MaterialStack ms) { + materialStacksExploded.addTo(ms.material(), (ms.amount() * inputCount / outputCount)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 96aa5861c1d..d70ae1c7d21 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -618,7 +618,7 @@ public GTRecipeBuilder outputItems(MachineDefinition machine, int count) { } public GTRecipeBuilder outputItemsRanged(ItemStack output, IntProvider intProvider) { - return outputItems(IntProviderIngredient.create(SizedIngredient.create(output), intProvider)); + return outputItems(IntProviderIngredient.of(SizedIngredient.create(output), intProvider)); } public GTRecipeBuilder outputItemsRanged(Item input, IntProvider intProvider) { @@ -1015,7 +1015,7 @@ public GTRecipeBuilder addData(String key, String data) { return this; } - public GTRecipeBuilder addData(String key, Float data) { + public GTRecipeBuilder addData(String key, float data) { this.data.putFloat(key, data); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java index 4a29582286a..db190bb0284 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/DecompositionRecipeHandler.java @@ -69,8 +69,7 @@ private static void processDecomposition(@NotNull Consumer provi long smallestMaterialAmount = materialAmounts.longStream().min().orElse(0); for (int i = 2; i <= smallestMaterialAmount; i++) { - if (isEveryMaterialReducible(i, materialAmounts)) - highestDivisor = i; + if (isEveryMaterialReducible(i, materialAmounts)) highestDivisor = i; } // divide components @@ -123,8 +122,9 @@ private static void processDecomposition(@NotNull Consumer provi builder.save(provider); } - private static boolean isEveryMaterialReducible(int divisor, List materialAmounts) { - for (long amount : materialAmounts) { + private static boolean isEveryMaterialReducible(int divisor, LongList materialAmounts) { + for (var it = materialAmounts.iterator(); it.hasNext();) { + long amount = it.nextLong(); if (amount % divisor != 0) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 64c280d5119..8b02deded22 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -20,7 +20,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; -import com.mojang.datafixers.util.Pair; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -313,12 +313,12 @@ private static void processCrushedOre(@NotNull Consumer provider .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); - if (!property.getWashedIn().getFirst().isNull()) { + if (!property.getWashedIn().first().isNull()) { Material washingByproduct = property.getOreByProduct(3, material); - Pair washedInTuple = property.getWashedIn(); + ObjectIntPair washedInTuple = property.getWashedIn(); CHEMICAL_BATH_RECIPES.recipeBuilder("bathe_" + material.getName() + "_crushed_ore_to_purified_ore") .inputItems(crushed, material) - .inputFluids(washedInTuple.getFirst().getFluid(washedInTuple.getSecond())) + .inputFluids(washedInTuple.first().getFluid(washedInTuple.secondInt())) .outputItems(crushedPurifiedOre) .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000, 580) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java index fa65fd28f43..a8479d652dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/RecyclingRecipes.java @@ -23,6 +23,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -428,14 +429,14 @@ private static int calculateDuration(List materials) { */ private static List combineStacks(List rawList) { // Combine any stacks in the List that have the same Item. - Map materialStacksExploded = new HashMap<>(); + Object2LongOpenHashMap materialStacksExploded = new Object2LongOpenHashMap<>(); for (MaterialStack ms : rawList) { - long amount = materialStacksExploded.getOrDefault(ms.material(), 0L); - materialStacksExploded.put(ms.material(), ms.amount() + amount); + materialStacksExploded.addTo(ms.material(), ms.amount()); } - return materialStacksExploded.entrySet().stream() - .map(e -> new MaterialStack(e.getKey(), e.getValue())) - .collect(Collectors.toList()); + return materialStacksExploded.object2LongEntrySet() + .stream() + .map(e -> new MaterialStack(e.getKey(), e.getLongValue())) + .toList(); } private static List finalizeOutputs(List materials, int maxOutputs, diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 5855db09b56..6bf17e68c93 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -265,8 +265,8 @@ public static void onMobEffectEvent(MobEffectEvent.Applicable event) { if (item.is(GTItems.QUANTUM_HELMET.asItem()) && GTCapabilityHelper.getElectricItem(item) != null) { IElectricItem helmet = GTCapabilityHelper.getElectricItem(item); MobEffectInstance effect = event.getEffectInstance(); - Integer cost = QuarkTechSuite.potionRemovalCost.get(effect.getEffect()); - if (cost != null) { + int cost = QuarkTechSuite.potionRemovalCost.getOrDefault(effect.getEffect(), -1); + if (cost != -1) { cost = cost * (effect.getAmplifier() + 1); if (helmet.canUse(cost)) { helmet.discharge(cost, helmet.getTier(), true, false, false); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index edaffd37c01..0073e18f5cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -89,7 +89,7 @@ public MachineDefinition[] register() { if (tankScalingFunction != null && addDefaultTooltips) { builder.tooltips( GTMachineUtils.workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.apply(tier), true)); + tankScalingFunction.applyAsInt(tier), true)); } } definitions[tier] = builder.register(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index a5f79a5903b..e5fce3f2e92 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -356,7 +356,7 @@ public GTRecipeJS itemOutputsRanged(ExtendedOutputItem ingredient, int min, int } public GTRecipeJS outputItemsRanged(Ingredient ingredient, int min, int max) { - return output(ItemRecipeCapability.CAP, new IntProviderIngredient(ingredient, UniformInt.of(min, max))); + return output(ItemRecipeCapability.CAP, IntProviderIngredient.of(ingredient, UniformInt.of(min, max))); } public GTRecipeJS outputItemsRanged(ItemStack stack, int min, int max) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java index 749684ebf79..529b4ad0396 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java @@ -30,7 +30,7 @@ public ExtendedOutputItem(Ingredient ingredient, int count) { // reset the ingredient if it's an int provider. if (ingredient instanceof IntProviderIngredient intProvider) { intProvider.setItemStacks(null); - intProvider.setSampledCount(null); + intProvider.setSampledCount(-1); } this.ingredient = SizedIngredient.create(ingredient, count); } @@ -95,9 +95,9 @@ public OutputItem withCount(int count) { public OutputItem withRolls(IntProvider rolls) { IntProviderIngredient ingredient; if (this.ingredient.getInner() instanceof IntProviderIngredient intProvider) { - ingredient = new IntProviderIngredient(intProvider.getInner(), rolls); + ingredient = IntProviderIngredient.of(intProvider.getInner(), rolls); } else { - ingredient = new IntProviderIngredient(this.ingredient.getInner(), rolls); + ingredient = IntProviderIngredient.of(this.ingredient.getInner(), rolls); } return new ExtendedOutputItem(ingredient, this.ingredient.getAmount()); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java b/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java index 7b4e19abeb7..48f7e72ed29 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/WaypointManager.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.integration.map.ftbchunks.FTBChunksWaypointHandler; import com.gregtechceu.gtceu.integration.map.journeymap.JourneymapWaypointHandler; import com.gregtechceu.gtceu.integration.map.xaeros.XaeroWaypointHandler; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.resources.ResourceKey; @@ -17,7 +18,6 @@ import lombok.Getter; import java.util.HashSet; -import java.util.Objects; import java.util.Set; public class WaypointManager { @@ -104,7 +104,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(dim, x, y, z); + return GTMath.hashInts(dim.hashCode(), x, y, z); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java index a9de8fc9977..ba041b8e6ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/GridPos.java @@ -1,12 +1,11 @@ package com.gregtechceu.gtceu.integration.map.cache; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTMath; import net.minecraft.core.BlockPos; import net.minecraft.world.level.ChunkPos; -import java.util.Objects; - public class GridPos { public int x; @@ -45,7 +44,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(x, z); + return GTMath.hashInts(x, z); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java index 61c2acebca8..a48f4e76a5c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.worldgen.ores.GeneratedVeinMetadata; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.network.GTNetwork; @@ -69,15 +68,17 @@ public void prospectBySurfaceRockMaterial(ResourceKey dim, final Material List nearbyVeins = getNearbyVeins(dim, pos, radius); List foundVeins = new ArrayList<>(); for (GeneratedVeinMetadata nearbyVein : nearbyVeins) { - if (nearbyVein.definition().indicatorGenerators().stream() - .anyMatch(generator -> generator.block() != null && Objects.requireNonNull(generator.block()) - .map(state -> { - MaterialStack mat = ChemicalHelper.getMaterialStack(state.getBlock().asItem()); - if (mat.isEmpty()) return false; - return mat.material() == material; - }, - mat -> mat == material))) { - foundVeins.add(nearbyVein); + for (var gen : nearbyVein.definition().indicatorGenerators()) { + var block = gen.block(); + if (block == null) continue; + boolean found = block.map(state -> { + var ms = ChemicalHelper.getMaterialStack(state.getBlock().asItem()); + return !ms.isEmpty() && ms.material() == material; + }, mat -> mat == material); + if (found) { + foundVeins.add(nearbyVein); + break; + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java b/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java index 0c6f8af41d1..31237f97976 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/layer/builtin/OreRenderLayer.java @@ -67,7 +67,7 @@ public static List getTooltip(String name, GeneratedVeinMetadata vein tooltip.add(title); for (var filler : vein.definition().veinGenerator().getAllEntries()) { - filler.getKey().ifLeft(state -> { + filler.vein().ifLeft(state -> { tooltip.add(Component.literal(ConfigHolder.INSTANCE.compat.minimap.oreNamePrefix) .append(state.getBlock().getName())); }).ifRight(material -> { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java index 76b6924b892..578198b7204 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java @@ -26,9 +26,9 @@ import net.minecraft.world.level.block.Blocks; import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectIntPair; import java.util.ArrayList; import java.util.List; @@ -90,7 +90,7 @@ public GTOreByProduct(Material material) { // "INPUTS" - Pair washedIn = property.getWashedIn(); + ObjectIntPair washedIn = property.getWashedIn(); List separatedInto = property.getSeparatedInto(); ItemTagList oreStacks = new ItemTagList(); @@ -121,7 +121,7 @@ public GTOreByProduct(Material material) { itemInputs.add(ItemStackList.of(simpleWashers)); itemInputs.add(ItemStackList.of(simpleWashers)); - if (washedIn != null && !washedIn.getFirst().isNull()) { + if (!washedIn.first().isNull()) { hasChemBath = true; addToInputs(GTMachines.CHEMICAL_BATH[GTValues.LV].asStack()); } else { @@ -232,7 +232,7 @@ public GTOreByProduct(Material material) { addToOutputs(material, TagPrefix.crushedPurified, 1); addToOutputs(byproducts[3], TagPrefix.dust, byproductMultiplier); addChance(7000, 580); - fluidInputs.add(FluidTagList.of(washedIn.getFirst().getFluidTag(), washedIn.getSecond(), null)); + fluidInputs.add(FluidTagList.of(washedIn.first().getFluidTag(), washedIn.secondInt(), null)); } else { addEmptyOutputs(2); fluidInputs.add(new FluidStackList()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java index cf2343e3aa4..750baa14cc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProductWidget.java @@ -20,16 +20,17 @@ import net.minecraft.core.NonNullList; import net.minecraft.world.item.ItemStack; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; +import it.unimi.dsi.fastutil.booleans.BooleanArrayList; +import it.unimi.dsi.fastutil.booleans.BooleanList; +import it.unimi.dsi.fastutil.ints.IntImmutableList; +import it.unimi.dsi.fastutil.ints.IntSet; -import java.util.ArrayList; import java.util.List; public class GTOreByProductWidget extends WidgetGroup { // XY positions of every item and fluid, in three enormous lists - protected final static ImmutableList ITEM_INPUT_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList ITEM_INPUT_LOCATIONS = IntImmutableList.of( 3, 3, // ore 23, 3, // furnace (direct smelt) 3, 24, // macerator (ore -> crushed) @@ -48,7 +49,7 @@ public class GTOreByProductWidget extends WidgetGroup { 101, 25 // sifter ); - protected final static ImmutableList ITEM_OUTPUT_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList ITEM_OUTPUT_LOCATIONS = IntImmutableList.of( 46, 3, // smelt result: 0 3, 47, // ore -> crushed: 2 3, 65, // byproduct: 4 @@ -85,13 +86,13 @@ public class GTOreByProductWidget extends WidgetGroup { 155, 21 // 66 ); - protected final static ImmutableList FLUID_LOCATIONS = ImmutableList.of( + protected final static IntImmutableList FLUID_LOCATIONS = IntImmutableList.of( 42, 25, // washer in 42, 48 // chem bath in ); // Used to set intermediates as both input and output - protected final static ImmutableSet FINAL_OUTPUT_INDICES = ImmutableSet.of( + protected final static IntSet FINAL_OUTPUT_INDICES = IntSet.of( 0, 4, 8, 10, 12, 16, 20, 22, 24, 28, 30, 32, 40, 44, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66); public GTOreByProductWidget(Material material) { @@ -101,10 +102,11 @@ public GTOreByProductWidget(Material material) { } public void setRecipe(GTOreByProduct recipeWrapper) { - List itemOutputExists = new ArrayList<>(); + BooleanList itemOutputExists = new BooleanArrayList(); // only draw slot on inputs if it is the ore - addWidget(new ImageWidget(ITEM_INPUT_LOCATIONS.get(0), ITEM_INPUT_LOCATIONS.get(1), 18, 18, GuiTextures.SLOT)); + addWidget(new ImageWidget(ITEM_INPUT_LOCATIONS.getInt(0), ITEM_INPUT_LOCATIONS.getInt(1), 18, 18, + GuiTextures.SLOT)); boolean hasSifter = recipeWrapper.hasSifter(); addWidget(new ImageWidget(0, 0, 176, 166, GuiTextures.OREBY_BASE)); @@ -126,8 +128,8 @@ public void setRecipe(GTOreByProduct recipeWrapper) { WidgetGroup itemStackGroup = new WidgetGroup(); for (int i = 0; i < ITEM_INPUT_LOCATIONS.size(); i += 2) { final int finalI = i; - itemStackGroup.addWidget(new SlotWidget(itemInputsHandler, i / 2, ITEM_INPUT_LOCATIONS.get(i), - ITEM_INPUT_LOCATIONS.get(i + 1)) + itemStackGroup.addWidget(new SlotWidget(itemInputsHandler, i / 2, ITEM_INPUT_LOCATIONS.getInt(i), + ITEM_INPUT_LOCATIONS.getInt(i + 1)) .setCanTakeItems(false) .setCanPutItems(false) .setIngredientIO(IngredientIO.INPUT) @@ -151,8 +153,8 @@ public void setRecipe(GTOreByProduct recipeWrapper) { continue; } - itemStackGroup.addWidget(new SlotWidget(itemOutputsHandler, slotIndex, ITEM_OUTPUT_LOCATIONS.get(i), - ITEM_OUTPUT_LOCATIONS.get(i + 1)) + itemStackGroup.addWidget(new SlotWidget(itemOutputsHandler, slotIndex, ITEM_OUTPUT_LOCATIONS.getInt(i), + ITEM_OUTPUT_LOCATIONS.getInt(i + 1)) .setCanTakeItems(false) .setCanPutItems(false) .setIngredientIO(FINAL_OUTPUT_INDICES.contains(i) ? IngredientIO.OUTPUT : IngredientIO.BOTH) @@ -170,7 +172,7 @@ public void setRecipe(GTOreByProduct recipeWrapper) { int slotIndex = i / 2; if (!fluidInputs.get(slotIndex).isEmpty()) { var tank = new TankWidget(new CustomFluidTank(fluidInputsHandler.getFluidInTank(slotIndex)), - FLUID_LOCATIONS.get(i), FLUID_LOCATIONS.get(i + 1), false, false) + FLUID_LOCATIONS.getInt(i), FLUID_LOCATIONS.getInt(i + 1), false, false) .setIngredientIO(IngredientIO.INPUT) .setBackground(GuiTextures.FLUID_SLOT) .setShowAmount(false); @@ -183,9 +185,9 @@ public void setRecipe(GTOreByProduct recipeWrapper) { for (int i = 0; i < ITEM_OUTPUT_LOCATIONS.size(); i += 2) { // stupid hack to show all sifter slots if the first one exists - if (itemOutputExists.get(i / 2) || (i > 28 * 2 && itemOutputExists.get(28) && hasSifter)) { - addWidget(this.widgets.size() - 3, new ImageWidget(ITEM_OUTPUT_LOCATIONS.get(i), - ITEM_OUTPUT_LOCATIONS.get(i + 1), 18, 18, GuiTextures.SLOT)); + if (itemOutputExists.getBoolean(i / 2) || (i > 28 * 2 && itemOutputExists.getBoolean(28) && hasSifter)) { + addWidget(this.widgets.size() - 3, new ImageWidget(ITEM_OUTPUT_LOCATIONS.getInt(i), + ITEM_OUTPUT_LOCATIONS.getInt(i + 1), 18, 18, GuiTextures.SLOT)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java index 2fd4547d96e..c1dfe009a6c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreVeinWidget.java @@ -34,6 +34,7 @@ import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; +import it.unimi.dsi.fastutil.ints.IntList; import lombok.Getter; import java.util.Comparator; @@ -124,7 +125,7 @@ private void setupBaseGui(BedrockFluidDefinition fluid) { private void setupBaseGui(BedrockOreDefinition bedrockOreDefinition) { NonNullList containedOresAsItemStacks = NonNullList.create(); - List chances = bedrockOreDefinition.getAllChances(); + IntList chances = bedrockOreDefinition.getAllChances(); containedOresAsItemStacks.addAll(getRawMaterialList(bedrockOreDefinition)); int n = containedOresAsItemStacks.size(); int x = (width - 18 * n) / 2; @@ -134,7 +135,8 @@ private void setupBaseGui(BedrockOreDefinition bedrockOreDefinition) { int finalIndex = i; oreSlot.setOnAddedTooltips((stack, tooltips) -> tooltips.add(Component .nullToEmpty( - LocalizationUtils.format("gtceu.jei.ore_vein_diagram.chance", chances.get(finalIndex))))); + LocalizationUtils.format("gtceu.jei.ore_vein_diagram.chance", + chances.getInt(finalIndex))))); oreSlot.setIngredientIO(IngredientIO.OUTPUT); addWidget(oreSlot); x += 18; @@ -214,7 +216,7 @@ private void setupDimensionMarker(int yPosition) { public static List getContainedOresAndBlocks(GTOreDefinition oreDefinition) { return oreDefinition.veinGenerator().getAllEntries().stream() - .flatMap(entry -> entry.getKey().map(state -> Stream.of(state.getBlock().asItem().getDefaultInstance()), + .flatMap(entry -> entry.map(state -> Stream.of(state.getBlock().asItem().getDefaultInstance()), material -> { Set ores = new HashSet<>(); ores.add(ChemicalHelper.get(TagPrefix.rawOre, material)); @@ -228,14 +230,14 @@ public static List getContainedOresAndBlocks(GTOreDefinition oreDefin public static List getRawMaterialList(GTOreDefinition oreDefinition) { return oreDefinition.veinGenerator().getAllEntries().stream() - .map(entry -> entry.getKey().map(state -> state.getBlock().asItem().getDefaultInstance(), + .map(entry -> entry.map(state -> state.getBlock().asItem().getDefaultInstance(), material -> ChemicalHelper.get(TagPrefix.rawOre, material))) .toList(); } public static List getRawMaterialList(BedrockOreDefinition bedrockOreDefinition) { return bedrockOreDefinition.materials().stream() - .map(entry -> ChemicalHelper.get(TagPrefix.rawOre, entry.getFirst())) + .map(entry -> ChemicalHelper.get(TagPrefix.rawOre, entry.material())) .toList(); } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java index 28bff01144e..05aee21f19e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java @@ -9,6 +9,7 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.math.MathContext; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -50,6 +51,14 @@ public static int saturatedCast(long value) { } } + public static int hashInts(int... vals) { + return Arrays.hashCode(vals); + } + + public static int hashLongs(long... vals) { + return Arrays.hashCode(vals); + } + public static float ratio(BigInteger a, BigInteger b) { return new BigDecimal(a).divide(new BigDecimal(b), MathContext.DECIMAL32).floatValue(); } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index e99fc29fb19..46c74ab4d43 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -50,11 +50,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import static com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey.HAZARD; @@ -277,29 +273,28 @@ public static M getItem(List list, int index, M replacement) { return replacement; } - public static int getRandomItem(RandomSource random, List> randomList, int size) { - if (randomList.isEmpty()) - return -1; + public static @Nullable T getRandomItem(RandomSource random, List randomList) { + if (randomList.isEmpty()) return null; + int size = randomList.size(); int[] baseOffsets = new int[size]; int currentIndex = 0; for (int i = 0; i < size; i++) { - Entry entry = randomList.get(i); - if (entry.getKey() <= 0) { - throw new IllegalArgumentException("Invalid weight: " + entry.getKey()); + int weight = randomList.get(i).weight(); + if (weight <= 0) { + throw new IllegalArgumentException("Invalid weight: " + weight); } - currentIndex += entry.getKey(); + currentIndex += weight; baseOffsets[i] = currentIndex; } int randomValue = random.nextInt(currentIndex); for (int i = 0; i < size; i++) { - if (randomValue < baseOffsets[i]) - return i; + if (randomValue < baseOffsets[i]) return randomList.get(i); } throw new IllegalArgumentException("Invalid weight"); } - public static int getRandomItem(List> randomList, int size) { - return getRandomItem(GTValues.RNG, randomList, size); + public static @Nullable T getRandomItem(List randomList) { + return getRandomItem(GTValues.RNG, randomList); } @SuppressWarnings("unchecked") @@ -379,18 +374,20 @@ public static int getPumpBiomeModifier(Holder biome) { public static DyeColor determineDyeColor(int rgbColor) { float[] c = GradientUtil.getRGB(rgbColor); - Map distances = new HashMap<>(); + double min = Double.MAX_VALUE; + DyeColor minColor = null; for (DyeColor dyeColor : DyeColor.values()) { float[] c2 = GradientUtil.getRGB(dyeColor.getTextColor()); double distance = (c[0] - c2[0]) * (c[0] - c2[0]) + (c[1] - c2[1]) * (c[1] - c2[1]) + (c[2] - c2[2]) * (c[2] - c2[2]); - distances.put(distance, dyeColor); + if (Double.compare(min, distance) < 0) { + minColor = dyeColor; + min = distance; + } } - - double min = Collections.min(distances.keySet()); - return distances.get(min); + return minColor; } public static int convertRGBtoARGB(int colorValue) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java index 2e7c890a8a0..abf5ddf8e29 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GradientUtil.java @@ -2,7 +2,7 @@ import net.minecraft.util.FastColor; -import org.apache.commons.lang3.tuple.Pair; +import it.unimi.dsi.fastutil.ints.IntIntPair; public class GradientUtil { @@ -72,7 +72,7 @@ public static int blend(int c1, int c2, float ratio) { return a << 24 | r << 16 | g << 8 | b; } - public static Pair getGradient(int rgb, int luminanceDifference) { + public static IntIntPair getGradient(int rgb, int luminanceDifference) { float[] hsl = RGBtoHSL(rgb); float[] upshade = new float[3]; float[] downshade = new float[3]; @@ -84,7 +84,7 @@ public static Pair getGradient(int rgb, int luminanceDifferenc if (downshade[2] < 0.0F) downshade[2] = 0.0F; int upshadeRgb = toRGB(upshade); int downshadeRgb = toRGB(downshade); - return Pair.of(downshadeRgb, upshadeRgb); + return IntIntPair.of(downshadeRgb, upshadeRgb); } public static float[] RGBtoHSL(int rgbColor) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java b/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java new file mode 100644 index 00000000000..030aa572b0c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/WeightedEntry.java @@ -0,0 +1,6 @@ +package com.gregtechceu.gtceu.utils; + +public interface WeightedEntry { + + int weight(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java index a242f340496..3e43687d093 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java @@ -19,7 +19,7 @@ import net.minecraftforge.fml.common.Mod; import com.mojang.blaze3d.platform.InputConstants; -import org.apache.commons.lang3.tuple.MutablePair; +import it.unimi.dsi.fastutil.booleans.BooleanBooleanMutablePair; import java.util.*; import java.util.function.Supplier; @@ -112,7 +112,7 @@ public static boolean scrollingDown() { @OnlyIn(Dist.CLIENT) private boolean isPressed, isKeyDown; - private final WeakHashMap> mapping = new WeakHashMap<>(); + private final WeakHashMap mapping = new WeakHashMap<>(); // For Vanilla/Other Mod keybinds // Double Supplier to keep client classes from loading @@ -150,12 +150,12 @@ public boolean isKeyDown() { } public void update(boolean pressed, boolean keyDown, ServerPlayer player) { - MutablePair pair = this.mapping.get(player); + BooleanBooleanMutablePair pair = this.mapping.get(player); if (pair == null) { - this.mapping.put(player, MutablePair.of(pressed, keyDown)); + this.mapping.put(player, BooleanBooleanMutablePair.of(pressed, keyDown)); } else { - pair.left = pressed; - pair.right = keyDown; + pair.left(pressed); + pair.right(keyDown); } } @@ -163,8 +163,8 @@ public boolean isPressed(Player player) { if (player.level().isClientSide) { return isPressed(); } else { - MutablePair pair = this.mapping.get((ServerPlayer) player); - return pair != null && pair.left; + BooleanBooleanMutablePair pair = this.mapping.get((ServerPlayer) player); + return pair != null && pair.leftBoolean(); } } @@ -172,8 +172,8 @@ public boolean isKeyDown(Player player) { if (player.level().isClientSide) { return isKeyDown(); } else { - MutablePair pair = this.mapping.get((ServerPlayer) player); - return pair != null && pair.right; + BooleanBooleanMutablePair pair = this.mapping.get((ServerPlayer) player); + return pair != null && pair.rightBoolean(); } } } From 7521056f15d646187311d20c7922b9e3abbf9234 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Tue, 20 May 2025 19:56:21 +0300 Subject: [PATCH 027/270] Fix spotless CI checks (#3176) --- .github/workflows/auto-build.yml | 3 ++- .github/workflows/format-java.yml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto-build.yml b/.github/workflows/auto-build.yml index e297a3dfe7f..0d0d415b26c 100644 --- a/.github/workflows/auto-build.yml +++ b/.github/workflows/auto-build.yml @@ -23,6 +23,8 @@ jobs: contents: write steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 # do a full checkout instead of a shallow clone of HEAD so spotless's ratchetFrom works - name: Setup Build uses: ./.github/actions/build_setup - name: Get Mod Version @@ -31,7 +33,6 @@ jobs: - name: Version Suffix id: suffix run: echo "VERSION_SUFFIX=$(echo "${{ github.sha }}" | cut -c 1-7)" >> $GITHUB_ENV - - run: git fetch origin 1.20.1 - name: Build run: ./gradlew build - name: Publish to Maven diff --git a/.github/workflows/format-java.yml b/.github/workflows/format-java.yml index 705327a97e6..870202a8490 100644 --- a/.github/workflows/format-java.yml +++ b/.github/workflows/format-java.yml @@ -21,6 +21,8 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 + with: + fetch-depth: 0 # do a full checkout instead of a shallow clone of HEAD so spotless's ratchetFrom works - name: Check Path Filter uses: dorny/paths-filter@v3 id: filter @@ -29,8 +31,6 @@ jobs: code: - 'src/main/java/**' - 'src/test/**' - - run: git fetch origin 1.20.1 - if: steps.filter.outputs.code == 'true' - name: Setup Build if: steps.filter.outputs.code == 'true' uses: ./.github/actions/build_setup From 9814d41ef100d641e0304748e65d51e24e07cbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Sun, 1 Jun 2025 13:14:07 +0200 Subject: [PATCH 028/270] Remove Extruder Mold (Long Rod) (#3190) Co-authored-by: GirixK --- .../resources/assets/gtceu/lang/en_ud.json | 1 - .../resources/assets/gtceu/lang/en_us.json | 1 - .../models/item/long_rod_extruder_mold.json | 6 ------ .../gtceu/common/data/GTItems.java | 5 ----- .../recipe/generated/PartsRecipeHandler.java | 20 ------------------- .../recipe/misc/CraftingRecipeLoader.java | 2 -- 6 files changed, 35 deletions(-) delete mode 100644 src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 5b2919299ba..a2432b7c034 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -4007,7 +4007,6 @@ "item.gtceu.lime_dye_spray_can": ")ǝɯıꞀ( uɐƆ ʎɐɹdS", "item.gtceu.lime_glass_lens": ")ǝɯıꞀ( suǝꞀ ssɐן⅁", "item.gtceu.liquid_fuel_jetpack": "ʞɔɐdʇǝſ ןǝnℲ pınbıꞀ", - "item.gtceu.long_rod_extruder_mold": ")poᴚ buoꞀ( pןoW ɹǝpnɹʇxƎ", "item.gtceu.long_treated_wood_rod": "ʞɔıʇS pooM pǝʇɐǝɹ⟘ buoꞀ", "item.gtceu.long_wood_rod": "ʞɔıʇS pooM buoꞀ", "item.gtceu.lpic_chip": "dıɥƆ ƆIԀꞀ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index f019a6d6478..25536669de9 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -4007,7 +4007,6 @@ "item.gtceu.lime_dye_spray_can": "Spray Can (Lime)", "item.gtceu.lime_glass_lens": "Glass Lens (Lime)", "item.gtceu.liquid_fuel_jetpack": "Liquid Fuel Jetpack", - "item.gtceu.long_rod_extruder_mold": "Extruder Mold (Long Rod)", "item.gtceu.long_treated_wood_rod": "Long Treated Wood Stick", "item.gtceu.long_wood_rod": "Long Wood Stick", "item.gtceu.lpic_chip": "LPIC Chip", diff --git a/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json b/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json deleted file mode 100644 index 179fad0d068..00000000000 --- a/src/generated/resources/assets/gtceu/models/item/long_rod_extruder_mold.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "gtceu:item/long_rod_extruder_mold" - } -} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 215182c5032..2f4f33b3480 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -210,7 +210,6 @@ public class GTItems { public static ItemEntry SHAPE_EXTRUDER_BOTTLE; public static ItemEntry SHAPE_EXTRUDER_FOIL; public static ItemEntry SHAPE_EXTRUDER_GEAR_SMALL; - public static ItemEntry SHAPE_EXTRUDER_ROD_LONG; public static ItemEntry SHAPE_EXTRUDER_ROTOR; static { @@ -283,10 +282,6 @@ public class GTItems { .lang("Extruder Mold (Small Gear)") .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) .register(); - SHAPE_EXTRUDERS[25] = SHAPE_EXTRUDER_ROD_LONG = REGISTRATE.item("long_rod_extruder_mold", Item::new) - .lang("Extruder Mold (Long Rod)") - .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) - .register(); SHAPE_EXTRUDERS[26] = SHAPE_EXTRUDER_ROTOR = REGISTRATE.item("rotor_extruder_mold", Item::new) .lang("Extruder Mold (Rotor)") .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Steel, GTValues.M * 4)))) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java index 1bdd3e7a14b..c8ba65badf2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java @@ -569,26 +569,6 @@ private static void processLongRod(@NotNull Consumer provider, @ .duration((int) Math.max(material.getMass(), 1L)) .EUt(16) .save(provider); - - if (material.hasProperty(PropertyKey.INGOT)) { - EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_ingot_to_long_rod") - .inputItems(ingot, material) - .notConsumable(GTItems.SHAPE_EXTRUDER_ROD_LONG) - .outputItems(stack) - .duration((int) Math.max(material.getMass(), 1L)) - .EUt(64) - .save(provider); - - if (material.hasFlag(NO_SMASHING)) { - EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_dust_to_long_rod") - .inputItems(dust, material) - .notConsumable(GTItems.SHAPE_EXTRUDER_ROD_LONG) - .outputItems(stack) - .duration((int) Math.max(material.getMass(), 1L)) - .EUt(64) - .save(provider); - } - } } private static void processTurbine(@NotNull Consumer provider, @NotNull Material material) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java index b60f8334fb7..e1fe6b614ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CraftingRecipeLoader.java @@ -200,8 +200,6 @@ public static void init(Consumer provider) { " S ", " ", 'S', SHAPE_EXTRUDER_ROD.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_rod", SHAPE_EXTRUDER_ROD.asStack(), " ", " Sx", " ", 'S', SHAPE_EMPTY.asStack()); - VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_rod_long", - SHAPE_EXTRUDER_ROD_LONG.asStack(), " x", " S ", " ", 'S', SHAPE_EXTRUDER_ROD.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_plate", SHAPE_EXTRUDER_PLATE.asStack(), "x ", " S ", " ", 'S', SHAPE_EXTRUDER_FOIL.asStack()); VanillaRecipeHelper.addStrictShapedRecipe(provider, "shape_extruder_gear_small", From f77e9d708c0ba0f79b51af7cb37ffbcf95460274 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 1 Jun 2025 11:40:20 -0600 Subject: [PATCH 029/270] Removes the overclock configurator (#3183) --- .../OverclockFancyConfigurator.java | 190 ------------------ .../api/machine/feature/IFancyUIMachine.java | 4 - 2 files changed, 194 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java deleted file mode 100644 index 820f2e87303..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/OverclockFancyConfigurator.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.gregtechceu.gtceu.api.machine.fancyconfigurator; - -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; -import com.gregtechceu.gtceu.api.gui.widget.PredicatedButtonWidget; -import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; - -import com.lowdragmc.lowdraglib.gui.editor.Icons; -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; -import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; -import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.Component; - -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - -import java.util.List; -import java.util.function.BiConsumer; -import java.util.function.Consumer; - -public class OverclockFancyConfigurator implements IFancyConfigurator { - - protected IOverclockMachine overclockMachine; - // runtime - protected int currentTier; - - public OverclockFancyConfigurator(IOverclockMachine overclockMachine) { - this.overclockMachine = overclockMachine; - } - - @Override - public Component getTitle() { - return Component.translatable("gtceu.gui.overclock.title"); - } - - @Override - public IGuiTexture getIcon() { - return currentTier <= GTValues.UV ? GuiTextures.TIER[currentTier].copy().scale(1.2f) : - new TextTexture(GTValues.VNF[this.currentTier]).setDropShadow(false); - } - - @Override - public void writeInitialData(FriendlyByteBuf buffer) { - this.currentTier = overclockMachine.getOverclockTier(); - buffer.writeVarInt(currentTier); - } - - @Override - public void readInitialData(FriendlyByteBuf buffer) { - this.currentTier = buffer.readVarInt(); - } - - @Override - public void detectAndSendChange(BiConsumer> sender) { - var newTier = overclockMachine.getOverclockTier(); - if (newTier != currentTier) { - this.currentTier = newTier; - sender.accept(0, buf -> buf.writeVarInt(newTier)); - } - } - - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buf) { - if (id == 0) { - this.currentTier = buf.readVarInt(); - } - } - - @Override - public Widget createConfigurator() { - return new WidgetGroup(0, 0, 120, 40) { - - final Int2ObjectMap lightGroups = new Int2ObjectOpenHashMap<>(); - - @Override - public void initWidget() { - super.initWidget(); - setBackground(GuiTextures.BACKGROUND_INVERSE); - addWidget(new PredicatedButtonWidget(5, 5, 10, 20, - new GuiTextureGroup(GuiTextures.BUTTON, Icons.LEFT.copy().scale(0.7f)), cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(currentTier - 1); - } - }, () -> currentTier > overclockMachine.getMinOverclockTier())); - addWidget(new ImageWidget(20, 5, 120 - 5 - 10 - 5 - 20, 20, - () -> new GuiTextureGroup(GuiTextures.DISPLAY_FRAME, - new TextTexture(GTValues.VNF[currentTier])))); - addWidget(new PredicatedButtonWidget(120 - 5 - 10, 5, 10, 20, - new GuiTextureGroup(GuiTextures.BUTTON, Icons.RIGHT.copy().scale(0.7f)), cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(currentTier + 1); - } - }, () -> currentTier < overclockMachine.getMaxOverclockTier())); - } - - @Override - public void writeInitialData(FriendlyByteBuf buffer) { - int min = overclockMachine.getMinOverclockTier(); - int max = overclockMachine.getMaxOverclockTier(); - buffer.writeVarInt(min); - buffer.writeVarInt(max); - buffer.writeVarInt(currentTier); - updateLightButton(min, max); - super.writeInitialData(buffer); - } - - @Override - public void readInitialData(FriendlyByteBuf buffer) { - int min = buffer.readVarInt(); - int max = buffer.readVarInt(); - currentTier = buffer.readVarInt(); - updateLightButton(min, max); - super.readInitialData(buffer); - } - - private void updateLightButton(int min, int max) { - for (WidgetGroup light : lightGroups.values()) { - removeWidget(light); - } - lightGroups.clear(); - int x = 5; - for (int tier = min; tier <= max; tier++) { - int finalTier = tier; - var lightGroup = new WidgetGroup(x, 27, 8, 8); - lightGroup.addWidget(new ButtonWidget(0, 0, 8, 8, null, cd -> { - if (!cd.isRemote) { - overclockMachine.setOverclockTier(finalTier); - } - })); - lightGroup.addWidget(new ImageWidget(0, 0, 8, 8, - () -> currentTier >= finalTier ? GuiTextures.LIGHT_ON : GuiTextures.LIGHT_OFF)); - lightGroups.put(tier, lightGroup); - addWidget(lightGroup); - x += 10; - } - } - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - int min = overclockMachine.getMinOverclockTier(); - int max = overclockMachine.getMaxOverclockTier(); - if (lightGroups.size() != max - min + 1) { - updateLightButton(min, max); - writeUpdateInfo(0, buf -> { - buf.writeVarInt(min); - buf.writeVarInt(max); - }); - } else { - for (int i = min; i <= max; i++) { - if (!lightGroups.containsKey(i)) { - updateLightButton(min, max); - writeUpdateInfo(0, buf -> { - buf.writeVarInt(min); - buf.writeVarInt(max); - }); - return; - } - } - } - } - - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - if (id == 0) { - int min = buffer.readVarInt(); - int max = buffer.readVarInt(); - updateLightButton(min, max); - } else { - super.readUpdateInfo(id, buffer); - } - } - }; - } - - @Override - public List getTooltips() { - return List.of(getTitle(), - Component.translatable("gtceu.gui.overclock.range", - GTValues.VNF[overclockMachine.getMinOverclockTier()], - GTValues.VNF[overclockMachine.getMaxOverclockTier()])); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java index ae54a92b14b..99d38a97cc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CombinedDirectionalFancyConfigurator; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.MachineModeFancyConfigurator; -import com.gregtechceu.gtceu.api.machine.fancyconfigurator.OverclockFancyConfigurator; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -120,9 +119,6 @@ default void attachConfigurators(ConfiguratorPanel configuratorPanel) { Component.translatable( pressed ? "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")))); } - if (this instanceof IOverclockMachine overclockMachine) { - configuratorPanel.attachConfigurators(new OverclockFancyConfigurator(overclockMachine)); - } if (this instanceof MetaMachine machine) { for (var direction : Direction.values()) { if (machine.getCoverContainer().hasCover(direction)) { From ca90097c1df6a228f73db414c9ca9bfad062f6ee Mon Sep 17 00:00:00 2001 From: Karthi <75553966+JuiceyBeans@users.noreply.github.com> Date: Sun, 1 Jun 2025 20:19:49 +0100 Subject: [PATCH 030/270] Disable default enchantments if enchantedTools is false (#3105) --- .../gtceu/api/item/tool/ToolDefinitionBuilder.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java index 0378bb645ce..faf0b6fab90 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; +import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; @@ -140,11 +141,10 @@ public ToolDefinitionBuilder effectiveStates(Predicate effectiveStat } public ToolDefinitionBuilder defaultEnchantment(Enchantment enchantment, int level) { - return this.defaultEnchantment(enchantment, level, 0); - } + if (ConfigHolder.INSTANCE.recipes.enchantedTools) { + this.defaultEnchantments.put(enchantment, level); + } - public ToolDefinitionBuilder defaultEnchantment(Enchantment enchantment, int level, int growth) { - this.defaultEnchantments.put(enchantment, level); return this; } From e78d1d64a8ab7de617c7d5301e6fad06e5b5cb66 Mon Sep 17 00:00:00 2001 From: AbyssiusVIII Date: Tue, 3 Jun 2025 21:15:16 +0200 Subject: [PATCH 031/270] Add "Washed by 'Liquid'" tag for filtering (#3171) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../gregtechceu/gtceu/core/MixinHelpers.java | 25 ++++++++++++------- .../gtceu/data/recipe/CustomTags.java | 2 ++ .../com/gregtechceu/gtceu/utils/GTUtil.java | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 11843377c97..ef256689c4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.OreProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; @@ -17,7 +18,6 @@ import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTClientFluidTypeExtensions; -import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialItems; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -72,11 +72,25 @@ public static void generateGTDynamicTags(Map materialTag : materialTags) { List tags = new ArrayList<>(); itemLikes.forEach(item -> tags.add(new TagLoader.EntryWithSource( - TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get().asItem())), + TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get())), GTValues.CUSTOM_TAG_SOURCE))); tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(tags); } + if (entry.tagPrefix() == TagPrefix.crushed && material.hasProperty(PropertyKey.ORE)) { + OreProperty ore = material.getProperty(PropertyKey.ORE); + Material washedIn = ore.getWashedIn().first(); + if (washedIn.isNull()) return; + ResourceLocation generalTag = CustomTags.CHEM_BATH_WASHABLE.location(); + ResourceLocation specificTag = generalTag.withSuffix("/" + washedIn.getName()); + + List tags = new ArrayList<>(); + itemLikes.forEach(item -> tags.add(new TagLoader.EntryWithSource( + TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get())), + GTValues.CUSTOM_TAG_SOURCE))); + tagMap.computeIfAbsent(generalTag, path -> new ArrayList<>()).addAll(tags); + tagMap.computeIfAbsent(specificTag, path -> new ArrayList<>()).addAll(tags); + } } }); @@ -133,13 +147,6 @@ public static void generateGTDynamicTags(Map { - ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(block.get()); - tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[casingType.getHarvestLevel()].location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(blockId), GTValues.CUSTOM_TAG_SOURCE)); - }); - // if config is NOT enabled, add the pickaxe/axe tags to the "configurable" mineability tags if (!ConfigHolder.INSTANCE.machines.requireGTToolsForBlocks) { var tagList = tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_PICKAXE.location(), diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index d9a08b73320..90d00a3f963 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -120,6 +120,8 @@ public class CustomTags { public static final TagKey STEP_BOOTS = TagUtil.createModItemTag("step_boots"); public static final TagKey RUBBER_LOGS = TagUtil.createModItemTag("rubber_logs"); + public static final TagKey CHEM_BATH_WASHABLE = TagUtil.createModItemTag("chemical_bath_washable"); + // Mineability tags public static final TagKey MINEABLE_WITH_WRENCH = TagUtil.createBlockTag("mineable/wrench"); public static final TagKey MINEABLE_WITH_WIRE_CUTTER = TagUtil.createBlockTag("mineable/wire_cutter"); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 46c74ab4d43..cee2fad1dc0 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -50,7 +50,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; -import java.util.List; +import java.util.*; import static com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey.HAZARD; From 2cd22777ad8e80e6dcb87e2b60a4e105106a96c2 Mon Sep 17 00:00:00 2001 From: NegaNote Date: Tue, 3 Jun 2025 15:34:40 -0400 Subject: [PATCH 032/270] implement real XOR chance logic (replaces old, which is renamed FIRST) (#3187) --- .../resources/assets/gtceu/lang/en_ud.json | 1 + .../resources/assets/gtceu/lang/en_us.json | 1 + .../api/recipe/chance/logic/ChanceLogic.java | 87 ++++++++++++++++++- .../gtceu/data/lang/LangHandler.java | 1 + 4 files changed, 89 insertions(+), 1 deletion(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index a2432b7c034..aba6cb2af99 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2164,6 +2164,7 @@ "gtceu.canner": "ɹǝuuɐƆ", "gtceu.centrifuge": "ǝbnɟıɹʇuǝƆ", "gtceu.chance_logic.and": "ᗡNⱯ", + "gtceu.chance_logic.first": "⟘SᴚIℲ", "gtceu.chance_logic.none": "ƎNON", "gtceu.chance_logic.or": "ᴚO", "gtceu.chance_logic.xor": "ᴚOX", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 25536669de9..3dc27547323 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2164,6 +2164,7 @@ "gtceu.canner": "Canner", "gtceu.centrifuge": "Centrifuge", "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "FIRST", "gtceu.chance_logic.none": "NONE", "gtceu.chance_logic.or": "OR", "gtceu.chance_logic.xor": "XOR", diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java index 064645a7155..1a1d653ca48 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java @@ -10,12 +10,15 @@ import net.minecraftforge.fml.ModLoader; import com.google.common.collect.ImmutableList; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -115,7 +118,7 @@ public String toString() { /** * Chanced Output Logic where only the first ingredient succeeding its roll will be produced */ - public static final ChanceLogic XOR = new ChanceLogic("xor") { + public static final ChanceLogic FIRST = new ChanceLogic("first") { @Override public @Unmodifiable List<@NotNull Content> roll(@NotNull @Unmodifiable List<@NotNull Content> chancedEntries, @@ -141,6 +144,88 @@ public String toString() { return builder.build(); } + @Override + public @NotNull Component getTranslation() { + return Component.translatable("gtceu.chance_logic.first"); + } + + @Override + public String toString() { + return "ChanceLogic{FIRST}"; + } + }; + + /** + * Chanced Output Logic where only one of the ingredients will be output, in a manner weighted to the input chances + */ + public static final ChanceLogic XOR = new ChanceLogic("xor") { + + @Override + public @Unmodifiable List<@NotNull Content> roll(@NotNull @Unmodifiable List<@NotNull Content> chancedEntries, + @NotNull ChanceBoostFunction boostFunction, + int recipeTier, int chanceTier, + @Nullable Object2IntMap cache, int times) { + // Have to set up a system where all chances are set to be out of 10000 + IntList chancesOutOfTenThousand = new IntArrayList(); + + for (Content orig : chancedEntries) { + if (orig.maxChance == getMaxChancedValue()) { + chancesOutOfTenThousand.add(orig.chance); + } else { + chancesOutOfTenThousand.add((int) ((orig.chance / (float) orig.maxChance) * getMaxChancedValue())); + } + } + + int chanceTotal = 0; + for (int chance : chancesOutOfTenThousand) { + chanceTotal += chance; + } + + // Here, if the newly calculated chances don't add up to 10000, they're renormalized + if (chanceTotal != getMaxChancedValue()) { + int chanceTotalDecremented = getMaxChancedValue(); + for (int i = 0; i < chancesOutOfTenThousand.size(); i++) { + int newChance = (int) (chancesOutOfTenThousand.getInt(i) * + ((float) getMaxChancedValue() / (float) chanceTotal)); + // last chance ends up being set to the remainder in case things don't line up + if (i == chancesOutOfTenThousand.size() - 1) { + chancesOutOfTenThousand.set(i, chanceTotalDecremented); + } else { + chancesOutOfTenThousand.set(i, newChance); + } + chanceTotalDecremented -= newChance; + } + } + + // Finally, generate a new Content list with the changes + List normalizedEntries = new ArrayList<>(); + for (int i = 0; i < chancesOutOfTenThousand.size(); i++) { + normalizedEntries.add(new Content(chancedEntries.get(i).content, chancesOutOfTenThousand.getInt(i), + getMaxChancedValue(), chancedEntries.get(i).tierChanceBoost)); + } + + // Use the new, normalized list for the logic + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < times; ++i) { + Content selected = null; + int maxChance = getMaxChancedValue(); + for (Content entry : normalizedEntries) { + int newChance = getChance(entry, boostFunction, recipeTier, chanceTier); + int cached = getCachedChance(entry, cache); + int chance = newChance + cached; + if (passesChance(chance, maxChance)) { + selected = entry; + newChance -= maxChance; + } + updateCachedChance(entry.content, cache, newChance / 2 + cached); + if (selected != null) break; + maxChance -= newChance; + } + if (selected != null) builder.add(selected); + } + return builder.build(); + } + @Override public @NotNull Component getTranslation() { return Component.translatable("gtceu.chance_logic.xor"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index fb05fe6ec12..b3efb191ca3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1328,6 +1328,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.chance_logic.or", "OR"); provider.add("gtceu.chance_logic.and", "AND"); provider.add("gtceu.chance_logic.xor", "XOR"); + provider.add("gtceu.chance_logic.first", "FIRST"); provider.add("gtceu.chance_logic.none", "NONE"); provider.add("gtceu.gui.content.per_tick", "§aConsumed/Produced Per Tick§r"); From 020017161c1a91c152a6c07cb421c7f6fbe3816a Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:00:01 +0300 Subject: [PATCH 033/270] Fix only multiblocks autogenerating the language values with KubeJS (#3203) --- .../registry/registrate/MachineBuilder.java | 11 +++++++++- .../registrate/MultiblockMachineBuilder.java | 20 ++++--------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 09c1a803d29..494c19de82f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -49,6 +49,7 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; +import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; @@ -92,7 +93,6 @@ public class MachineBuilder extends Builde private RotationState rotationState = RotationState.NON_Y_AXIS; /** * Whether this machine can be rotated or face upwards. - * todo: set to true by default if we manage to rotate the model accordingly */ @Setter private boolean allowExtendedFacing = false; @@ -159,6 +159,7 @@ public class MachineBuilder extends Builde private EditableMachineUI editableUI; @Getter // getter for KJS @Setter + @Nullable private String langValue = null; protected MachineBuilder(Registrate registrate, String name, @@ -324,6 +325,14 @@ protected DEFINITION createDefinition() { return definition.apply(new ResourceLocation(registrate.getModid(), name)); } + @Override + public void generateLang(LangEventJS lang) { + super.generateLang(lang); + if (langValue() != null) { + lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); + } + } + @HideFromJS public DEFINITION register() { var definition = createDefinition(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 03799a768f2..7748358375a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.registry.registrate; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; @@ -43,7 +42,6 @@ import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import lombok.Getter; @@ -269,7 +267,7 @@ public MultiblockMachineBuilder appearanceBlock(Supplier block) } @Override - public MultiblockMachineBuilder langValue(String langValue) { + public MultiblockMachineBuilder langValue(@Nullable String langValue) { return (MultiblockMachineBuilder) super.langValue(langValue); } @@ -290,14 +288,12 @@ public MultiblockMachineBuilder tooltips(Component... components) { @Override public MultiblockMachineBuilder conditionalTooltip(Component component, BooleanSupplier condition) { - return conditionalTooltip(component, condition.getAsBoolean()); + return (MultiblockMachineBuilder) super.conditionalTooltip(component, condition); } @Override public MultiblockMachineBuilder conditionalTooltip(Component component, boolean condition) { - if (condition) - tooltips(component); - return this; + return (MultiblockMachineBuilder) super.conditionalTooltip(component, condition); } @Override @@ -379,18 +375,10 @@ public MultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) return (MultiblockMachineBuilder) super.allowExtendedFacing(allowExtendedFacing); } - @Override - public void generateLang(LangEventJS lang) { - super.generateLang(lang); - if (langValue() != null) { - lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); - } - } - @Override @HideFromJS public MultiblockMachineDefinition register() { - var definition = (MultiblockMachineDefinition) super.register(); + var definition = super.register(); definition.setGenerator(generator); if (pattern == null) { throw new IllegalStateException("missing pattern while creating multiblock " + name); From 13650b60b38b2eadbdc3bb2beb219996e3aacc58 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:01:06 +0300 Subject: [PATCH 034/270] Add a struct for research data to replace the generic pair (#3209) --- .../recipe/ItemRecipeCapability.java | 7 +++--- .../gtceu/common/item/DataItemBehavior.java | 6 ++--- .../part/DataAccessHatchMachine.java | 7 +++--- .../gtceu/core/mixins/GuiGraphicsMixin.java | 10 ++++---- .../gtceu/utils/ResearchManager.java | 23 ++++++++++++------- 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 2f5f0cced2c..74a3389c3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -49,7 +49,6 @@ import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -410,14 +409,14 @@ private Object2IntMap getIngredientStacks(IRecipeCapabilityHolder hol if (io == IO.OUT && recipe.recipeType.isScanner()) { scannerPossibilities = new ArrayList<>(); // Scanner Output replacing, used for cycling research outputs - Pair researchData = null; + ResearchManager.ResearchItem researchData = null; for (Content stack : recipe.getOutputContents(ItemRecipeCapability.CAP)) { researchData = ResearchManager.readResearchId(ItemRecipeCapability.CAP.of(stack.content).getItems()[0]); if (researchData != null) break; } if (researchData != null) { - Collection possibleRecipes = researchData.getFirst() - .getDataStickEntry(researchData.getSecond()); + Collection possibleRecipes = researchData.recipeType() + .getDataStickEntry(researchData.researchId()); Set cache = new ObjectOpenCustomHashSet<>(ItemStackHashStrategy.comparingItem()); if (possibleRecipes != null) { for (GTRecipe r : possibleRecipes) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java index 5d58201d4c3..349f3c506a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.item.component.IInteractionItem; import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.utils.ResearchManager; @@ -20,7 +19,6 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import org.jetbrains.annotations.Nullable; @@ -47,7 +45,7 @@ public boolean requireDataBank() { @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { - Pair researchData = ResearchManager.readResearchId(stack); + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); if (researchData == null) { if (stack.getOrCreateTag().contains("pos", Tag.TAG_INT_ARRAY) && stack.hasTag()) { int[] posArray = stack.getOrCreateTag().getIntArray("pos"); @@ -58,7 +56,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List recipes = researchData.getFirst().getDataStickEntry(researchData.getSecond()); + Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); if (recipes != null && !recipes.isEmpty()) { tooltipComponents.add(Component.translatable("behavior.data_item.assemblyline.title")); Collection added = new ObjectOpenHashSet<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index e174e0eee88..5ebe9a88ee2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -14,7 +14,6 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.DataBankMachine; import com.gregtechceu.gtceu.common.recipe.condition.ResearchCondition; @@ -33,7 +32,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.BlockHitResult; -import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; @@ -123,10 +121,11 @@ private void rebuildData(boolean isDataBank) { recipes.clear(); for (int i = 0; i < this.importItems.getSlots(); i++) { ItemStack stack = this.importItems.getStackInSlot(i); - Pair researchData = ResearchManager.readResearchId(stack); + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); boolean isValid = ResearchManager.isStackDataItem(stack, isDataBank); if (researchData != null && isValid) { - Collection collection = researchData.getFirst().getDataStickEntry(researchData.getSecond()); + Collection collection = researchData.recipeType() + .getDataStickEntry(researchData.researchId()); if (collection != null) { recipes.addAll(collection); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java index ac19c68ad03..932434a39a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.client.gui.GuiGraphics; @@ -11,7 +10,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import com.mojang.datafixers.util.Pair; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -40,13 +38,13 @@ private void renderItem(@Nullable LivingEntity entity, @Nullable Level level, It cancellable = true) protected void gtceu$renderItem(@Nullable LivingEntity livingEntity, @Nullable Level level, ItemStack stack, int x, int y, int seed, int z, CallbackInfo ci) { - if (GTCEU$OVERRIDING_FOR.get() != null) { + if (GTCEU$OVERRIDING_FOR.get() != null || !Screen.hasShiftDown()) { return; } - Pair researchData = ResearchManager.readResearchId(stack); - if (Screen.hasShiftDown() && researchData != null) { - Collection recipes = researchData.getFirst().getDataStickEntry(researchData.getSecond()); + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); + if (researchData != null) { + Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); if (recipes != null && !recipes.isEmpty()) { for (var recipe : recipes) { ItemStack output = ItemRecipeCapability.CAP diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java index dc367fdbfa4..30b8c36fce4 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java @@ -16,14 +16,15 @@ import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -67,16 +68,12 @@ public static void writeResearchToNBT(@NotNull CompoundTag stackCompound, @NotNu * @return the research id */ @Nullable - public static Pair readResearchId(@NotNull ItemStack stack) { + public static ResearchItem readResearchId(@NotNull ItemStack stack) { CompoundTag compound = stack.getTag(); if (!hasResearchTag(compound)) return null; CompoundTag researchCompound = compound.getCompound(RESEARCH_NBT_TAG); - String researchId = researchCompound.getString(RESEARCH_ID_NBT_TAG); - ResourceLocation researchRecipeType = ResourceLocation - .tryParse(researchCompound.getString(RESEARCH_TYPE_NBT_TAG)); - return researchId.isEmpty() || researchRecipeType == null ? null : - Pair.of(GTRegistries.RECIPE_TYPES.get(researchRecipeType), researchId); + return ResearchItem.CODEC.parse(NbtOps.INSTANCE, researchCompound).result().orElse(null); } /** @@ -156,6 +153,16 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, } } + public record ResearchItem(@NotNull String researchId, @NotNull GTRecipeType recipeType) { + + // spotless:off + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.STRING.fieldOf("research_id").forGetter(ResearchItem::researchId), + GTRegistries.RECIPE_TYPES.codec().fieldOf("research_type").forGetter(ResearchItem::recipeType) + ).apply(instance, ResearchItem::new)); + // spotless:on + } + public static class DataStickCopyScannerLogic implements GTRecipeType.ICustomRecipeLogic { private static final int EUT = 2; From 9c6c1d1e45028ea10d14b080df44c2cdafe6b109 Mon Sep 17 00:00:00 2001 From: Pedro Artur Silva Costa <166542074+GravityProtogen@users.noreply.github.com> Date: Fri, 13 Jun 2025 08:01:33 -0300 Subject: [PATCH 035/270] Fixed link on docs home page (#3220) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- docs/content/index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/content/index.md b/docs/content/index.md index 526122aad82..db33d56fd9c 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -23,6 +23,5 @@ You can download an offline version of this wiki here: ## Want to Contribute? - -If you want to contribute to this documentation site, feel free to open a pull request on -[its GitHub repository](https://github.com/GregTechCEu/gtceu-modern-docs). +If you want to contribute to this documentation site, feel free to read [the instructions](https://github.com/GregTechCEu/GregTech-Modern/blob/1.20.1/docs/CONTRIBUTING.md) and open a pull request on the [GitHub repository](https://github.com/GregTechCEu/GregTech-Modern). +``` From 8d72450b9310c6b3ea943b8c509874e10d6eccd3 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:02:40 +0300 Subject: [PATCH 036/270] Fix first hit on a Quantum Chest always inserting all items (#3204) --- .../gtceu/common/machine/storage/QuantumChestMachine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index 324b6138842..244ca59f1c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -282,7 +282,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play } private static boolean isDoubleHit(UUID uuid) { - return (System.currentTimeMillis() - INTERACTION_LOGGER.getOrDefault(uuid, System.currentTimeMillis())) < 300; + return (System.currentTimeMillis() - INTERACTION_LOGGER.getLong(uuid)) < 300; } @Override From 202aa2107b5be5b7f17ac8a4e67ae4741ce957c6 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:04:53 +0300 Subject: [PATCH 037/270] Remove Armor Mixin for damaging armor and use Forge methods instead (#3205) --- .../api/item/armor/ArmorComponentItem.java | 27 +++++++----- .../gtceu/api/item/armor/IArmorLogic.java | 6 ++- .../common/item/armor/NanoMuscleSuite.java | 7 +-- .../common/item/armor/QuarkTechSuite.java | 10 ++--- .../gtceu/core/mixins/LivingEntityMixin.java | 43 ------------------- src/main/resources/gtceu.mixins.json | 1 - 6 files changed, 30 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java index 5bd2c0b6628..2ba203b97ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java @@ -11,7 +11,6 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -83,15 +82,9 @@ public EquipmentSlot getEquipmentSlot() { @Override public void onArmorTick(ItemStack stack, Level level, Player player) { - super.onArmorTick(stack, level, player); this.armorLogic.onArmorTick(level, player, stack); } - @Override - public int getMaxDamage(ItemStack stack) { - return super.getMaxDamage(stack); - } - @Override public boolean isValidRepairItem(ItemStack stack, ItemStack repairCandidate) { return false; @@ -111,9 +104,23 @@ public int getArmorDisplay(Player player, @NotNull ItemStack armor, EquipmentSlo return armorLogic.getArmorDisplay(player, armor, slot); } - public void damageArmor(LivingEntity entity, @NotNull ItemStack stack, DamageSource source, int damage, - EquipmentSlot slot) { - armorLogic.damageArmor(entity, stack, source, damage, slot); + // Some trickery to always receive damage events without ever actually breaking the armor + @Override + public boolean canBeDepleted() { + return true; + } + + @Override + public void setDamage(ItemStack stack, int damage) {} + + @Override + public boolean isDamaged(ItemStack stack) { + return false; + } + + @Override + public int damageItem(ItemStack stack, int amount, T entity, Consumer onBroken) { + return armorLogic.damageArmor(entity, stack, entity.getLastDamageSource(), amount, this.getEquipmentSlot()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java index f449c5227dc..de7b9056892 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java @@ -54,8 +54,10 @@ default boolean isPPE() { return false; } - default void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) {} + default int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { + return 0; + } default Multimap getAttributeModifiers(EquipmentSlot slot, ItemStack stack) { return ImmutableMultimap.of(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java index eff73b53b0e..0a22daffc42 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NanoMuscleSuite.java @@ -121,12 +121,13 @@ public boolean handleUnblockableDamage(LivingEntity entity, @NotNull ItemStack a */ @Override - public void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) { + public int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); if (item != null) { - item.discharge((long) energyPerUse / 10 * damage, item.getTier(), true, false, false); + item.discharge(energyPerUse / 10L * damage, item.getTier(), true, false, false); } + return super.damageArmor(entity, itemStack, source, damage, equipmentSlot); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java index 83dbb7fc348..37d12610531 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java @@ -297,13 +297,13 @@ public static void removeNegativeEffects(@NotNull IElectricItem item, Player pla */ @Override - public void damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, - EquipmentSlot equipmentSlot) { + public int damageArmor(LivingEntity entity, ItemStack itemStack, DamageSource source, int damage, + EquipmentSlot equipmentSlot) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); - if (item == null) { - return; + if (item != null) { + item.discharge(energyPerUse / 100L * damage, item.getTier(), true, false, false); } - item.discharge(energyPerUse / 100L * damage, item.getTier(), true, false, false); + return super.damageArmor(entity, itemStack, source, damage, equipmentSlot); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java deleted file mode 100644 index f78855b4331..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LivingEntityMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; - -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(LivingEntity.class) -public abstract class LivingEntityMixin { - - @Shadow - public abstract Iterable getArmorSlots(); - - @Shadow - public abstract void setItemSlot(EquipmentSlot slot, ItemStack stack); - - @Inject(method = "getDamageAfterArmorAbsorb", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/damagesource/CombatRules;getDamageAfterAbsorb(FFF)F")) - private void gtceu$adjustArmorAbsorption(DamageSource damageSource, float damageAmount, - CallbackInfoReturnable cir) { - float armorDamage = Math.max(1.0F, damageAmount / 4.0F); - int i = 0; - for (ItemStack itemStack : this.getArmorSlots()) { - if (itemStack.getItem() instanceof ArmorComponentItem armorItem) { - EquipmentSlot slot = EquipmentSlot.byTypeAndIndex(EquipmentSlot.Type.ARMOR, i); - armorItem.damageArmor((LivingEntity) (Object) this, itemStack, damageSource, (int) armorDamage, slot); - if (itemStack.getCount() == 0) { - this.setItemSlot(slot, ItemStack.EMPTY); - } - } - ++i; - } - } -} diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 47487227862..f60d1e3d411 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -42,7 +42,6 @@ "ItemValueAccessor", "ITrunkPlacerTypeAccessor", "LevelMixin", - "LivingEntityMixin", "LootDataManagerMixin", "LootPoolAccessor", "OreConfigurationMixin", From 3f2e6b96e7375bce9fdc7d5b278a0405a776caf3 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 17:27:38 +0300 Subject: [PATCH 038/270] fix all miners having some level of fortune unintentionally (#3200) --- .../gtceu/api/machine/trait/RecipeLogic.java | 8 +---- .../machine/trait/miner/LargeMinerLogic.java | 34 ++++++++----------- .../machine/trait/miner/MinerLogic.java | 7 ++-- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 168e2f99fb2..b0b8cb97363 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -214,13 +214,7 @@ public void serverTick() { } protected ActionResult matchRecipe(GTRecipe recipe) { - var match = RecipeHelper.matchRecipe(machine, recipe); - if (!match.isSuccess()) return match; - - var matchTick = RecipeHelper.matchTickRecipe(machine, recipe); - if (!matchTick.isSuccess()) return matchTick; - - return ActionResult.SUCCESS; + return RecipeHelper.matchContents(machine, recipe); } protected ActionResult checkRecipe(GTRecipe recipe) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java index b2ee81ad82d..f99d8de0e6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java @@ -19,6 +19,7 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; +import net.minecraft.world.level.storage.loot.functions.LootItemFunction; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; @@ -33,6 +34,8 @@ public class LargeMinerLogic extends MinerLogic { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(LargeMinerLogic.class, MinerLogic.MANAGED_FIELD_HOLDER); private static final int CHUNK_LENGTH = 16; + private static final LootItemFunction DROP_MULTIPLIER = ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE) + .build(); @Setter @Getter @@ -132,30 +135,21 @@ protected boolean hasPostProcessing() { @Override protected void dropPostProcessing(NonNullList blockDrops, List outputs, BlockState blockState, LootParams.Builder builder) { + if (getDropCountMultiplier() <= 0) { + super.dropPostProcessing(blockDrops, outputs, blockState, builder); + return; + } + ItemStack fortunePick = this.pickaxeTool.copy(); + fortunePick.enchant(Enchantments.BLOCK_FORTUNE, getDropCountMultiplier()); + LootParams params = builder.withParameter(LootContextParams.TOOL, fortunePick) + .create(LootContextParamSets.BLOCK); + LootContext context = new LootContext.Builder(params).create(null); + for (ItemStack outputStack : outputs) { if (ChemicalHelper.getPrefix(outputStack.getItem()) == TagPrefix.crushed) { - if (getDropCountMultiplier() > 0) { - ItemStack fortunePick = pickaxeTool.copy(); - fortunePick.enchant(Enchantments.BLOCK_FORTUNE, getDropCountMultiplier()); - outputStack = ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE).build().apply( - outputStack, - new LootContext.Builder(builder.withParameter(LootContextParams.TOOL, fortunePick) - .create(LootContextParamSets.BLOCK)).create(null)); - } + outputStack = DROP_MULTIPLIER.apply(outputStack, context); } blockDrops.add(outputStack); } } - - @Override - protected boolean doPostProcessing(NonNullList blockDrops, BlockState blockState, - LootParams.Builder builder) { - if (!super.doPostProcessing(blockDrops, blockState, builder) && getDropCountMultiplier() > 0) { - for (ItemStack drop : blockDrops) { - if (drop.is(blockState.getBlock().asItem())) continue; - drop.setCount(drop.getCount() * getDropCountMultiplier()); - } - } - return true; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index 0bed1c37b2c..aa61bcdb89c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -31,7 +31,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -142,7 +141,6 @@ public MinerLogic(@NotNull IRecipeLogicMachine machine, int fortune, int speed, this.maximumRadius = maximumRadius; this.isDone = false; this.pickaxeTool = GTMaterialItems.TOOL_ITEMS.get(GTMaterials.Neutronium, GTToolType.PICKAXE).get().get(); - this.pickaxeTool.enchant(Enchantments.BLOCK_FORTUNE, fortune); this.capabilitiesProxy = new EnumMap<>(IO.class); this.capabilitiesFlat = new EnumMap<>(IO.class); this.inputItemHandler = new ItemRecipeHandler(IO.IN, @@ -352,7 +350,8 @@ protected int getVoltageTier() { protected boolean doPostProcessing(NonNullList blockDrops, BlockState blockState, LootParams.Builder builder) { - ItemStack oreDrop = blockDrops.get(0); + ItemStack oreDrop = new ItemStack(blockState.getBlock()); + if (oreDrop.isEmpty()) return false; // create dummy recipe handler inputItemHandler.storage.setStackInSlot(0, oreDrop); @@ -360,7 +359,7 @@ protected boolean doPostProcessing(NonNullList blockDrops, BlockState var matches = machine.getRecipeType().searchRecipe(this, r -> RecipeHelper.matchContents(this, r).isSuccess()); - while (matches != null && matches.hasNext()) { + while (matches.hasNext()) { GTRecipe match = matches.next(); if (match == null) continue; From 4eb0e4787b55c29adac91323b3ce6c4fb9a71e2d Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 13 Jun 2025 18:32:49 +0300 Subject: [PATCH 039/270] remove unnecessary nbt clearing from custom item fluid handlers (#3201) --- .../forge/FilteredFluidHandlerItemStack.java | 20 ------- .../SimpleThermalFluidHandlerItemStack.java | 54 +++---------------- .../forge/ThermalFluidHandlerItemStack.java | 51 +++--------------- .../gtceu/common/item/ItemFluidContainer.java | 4 +- 4 files changed, 14 insertions(+), 115 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java index fde82d03cce..e1a2479c87f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java @@ -22,26 +22,6 @@ public FilteredFluidHandlerItemStack(@NotNull ItemStack container, int capacity, this.filter = filter; } - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - @Override public boolean canFillFluidType(FluidStack fluid) { return filter.test(fluid); diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java index d6913d03a8f..134cd1b73a9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/SimpleThermalFluidHandlerItemStack.java @@ -3,18 +3,23 @@ import com.gregtechceu.gtceu.api.capability.IThermalFluidHandlerItemStack; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; +import lombok.Getter; import org.jetbrains.annotations.NotNull; public class SimpleThermalFluidHandlerItemStack extends FluidHandlerItemStackSimple implements IThermalFluidHandlerItemStack { - public final int maxFluidTemperature; + @Getter + private final int maxFluidTemperature; + @Getter private final boolean gasProof; + @Getter private final boolean acidProof; + @Getter private final boolean cryoProof; + @Getter private final boolean plasmaProof; public SimpleThermalFluidHandlerItemStack(@NotNull ItemStack container, int capacity, int maxFluidTemperature, @@ -27,49 +32,4 @@ public SimpleThermalFluidHandlerItemStack(@NotNull ItemStack container, int capa this.cryoProof = cryoProof; this.plasmaProof = plasmaProof; } - - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - - @Override - public int getMaxFluidTemperature() { - return maxFluidTemperature; - } - - @Override - public boolean isGasProof() { - return gasProof; - } - - @Override - public boolean isAcidProof() { - return acidProof; - } - - @Override - public boolean isCryoProof() { - return cryoProof; - } - - @Override - public boolean isPlasmaProof() { - return plasmaProof; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java index 987090ffe83..580a71d4767 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/ThermalFluidHandlerItemStack.java @@ -6,14 +6,20 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; +import lombok.Getter; import org.jetbrains.annotations.NotNull; public class ThermalFluidHandlerItemStack extends FluidHandlerItemStack implements IThermalFluidHandlerItemStack { + @Getter private final int maxFluidTemperature; + @Getter private final boolean gasProof; + @Getter private final boolean acidProof; + @Getter private final boolean cryoProof; + @Getter private final boolean plasmaProof; /** @@ -30,53 +36,8 @@ public ThermalFluidHandlerItemStack(@NotNull ItemStack container, int capacity, this.plasmaProof = plasmaProof; } - @Override - public @NotNull FluidStack drain(FluidStack resource, FluidAction action) { - FluidStack drained = super.drain(resource, action); - this.removeTagWhenEmpty(action); - return drained; - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = super.drain(maxDrain, action); - this.removeTagWhenEmpty(action); - return drained; - } - - private void removeTagWhenEmpty(FluidAction action) { - if (getFluid() == FluidStack.EMPTY && action.execute()) { - this.container.setTag(null); - } - } - @Override public boolean canFillFluidType(FluidStack fluid) { return IThermalFluidHandlerItemStack.super.canFillFluidType(fluid); } - - @Override - public int getMaxFluidTemperature() { - return maxFluidTemperature; - } - - @Override - public boolean isGasProof() { - return gasProof; - } - - @Override - public boolean isAcidProof() { - return acidProof; - } - - @Override - public boolean isCryoProof() { - return cryoProof; - } - - @Override - public boolean isPlasmaProof() { - return plasmaProof; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java index 160ea28515b..90f569afed2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ItemFluidContainer.java @@ -15,9 +15,7 @@ public ItemStack getRecipeRemained(ItemStack itemStack) { var drained = handler.drain(FluidType.BUCKET_VOLUME, FluidAction.SIMULATE); if (drained.getAmount() != FluidType.BUCKET_VOLUME) return ItemStack.EMPTY; handler.drain(FluidType.BUCKET_VOLUME, FluidAction.EXECUTE); - var copy = handler.getContainer(); - copy.setTag(null); - return copy; + return handler.getContainer(); }).orElse(itemStack); } } From 0fbd9d9a2799d1855468ca7395cf06302dde080e Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:50:53 +0300 Subject: [PATCH 040/270] backport a better version of `FormattingUtil#toLowerCaseUnderscore` (#3206) --- .../java/com/gregtechceu/gtceu/GTCEu.java | 2 +- .../gtceu/api/block/MetaMachineBlock.java | 4 +- .../gtceu/api/data/tag/TagPrefix.java | 20 ++++---- .../gtceu/api/data/tag/TagType.java | 5 +- .../gregtechceu/gtceu/api/item/IGTTool.java | 25 ++++------ .../api/item/component/ElectricStats.java | 10 ++-- .../gtceu/api/machine/MetaMachine.java | 4 +- .../gtceu/api/recipe/GTRecipeType.java | 35 ++++++------- .../gtceu/client/TooltipsHandler.java | 4 +- .../gtceu/common/data/GTMaterialBlocks.java | 11 ++-- .../recipe/condition/BiomeCondition.java | 31 ++++++------ .../gtceu/data/lang/LangHandler.java | 7 ++- .../data/recipe/builder/GTRecipeBuilder.java | 13 ++++- .../generated/MaterialRecipeHandler.java | 12 ++--- .../recipe/generated/PipeRecipeHandler.java | 2 +- .../gtceu/forge/ForgeCommonEventListener.java | 6 +-- .../kjs/recipe/GTRecipeSchema.java | 13 ++++- .../gtceu/utils/FormattingUtil.java | 50 +++++++++++-------- 18 files changed, 137 insertions(+), 117 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index c86ee0a0e71..57da2e6ae61 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -42,7 +42,7 @@ public static void init() { } public static ResourceLocation id(String path) { - return new ResourceLocation(MOD_ID, FormattingUtil.toLowerCaseUnder(path)); + return new ResourceLocation(MOD_ID, FormattingUtil.toLowerCaseUnderscore(path)); } public static String appendIdString(String id) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index fcd478a4006..d87408a943c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -14,11 +14,11 @@ import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -202,7 +202,7 @@ public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List TagUtil.createItemTag( - type.tagPath.formatted(FormattingUtil.toLowerCaseUnderscore(prefix.name), mat.getName())); + type.tagPath.formatted(prefix.getLowerCaseName(), mat.getName())); return type; } @@ -53,7 +52,7 @@ public static TagType withPrefixFormatter(String tagPath) { public static TagType withPrefixOnlyFormatter(String tagPath) { TagType type = new TagType(tagPath); type.formatter = (prefix, mat) -> TagUtil - .createItemTag(type.tagPath.formatted(FormattingUtil.toLowerCaseUnderscore(prefix.name))); + .createItemTag(type.tagPath.formatted(prefix.getLowerCaseName())); type.isParentTag = true; return type; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index a1e29f81971..9c2b92a8531 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -29,13 +29,13 @@ import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import net.minecraft.client.color.item.ItemColor; -import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; @@ -629,9 +629,6 @@ default int getTotalHarvestLevel(ItemStack stack) { } } - // Client-side methods - - @OnlyIn(Dist.CLIENT) default void definition$appendHoverText(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, TooltipFlag flag) { if (!(stack.getItem() instanceof IGTTool tool)) return; @@ -678,7 +675,7 @@ default int getTotalHarvestLevel(ItemStack stack) { int harvestLevel = tool.getTotalHarvestLevel(stack); String harvestName = "item.gtceu.tool.harvest_level." + harvestLevel; - if (I18n.exists(harvestName)) { // if there's a defined name for the harvest level, use it + if (Language.getInstance().has(harvestName)) { // if there's a defined name for the harvest level, use it tooltip.add(Component.translatable("item.gtceu.tool.tooltip.harvest_level_extra", harvestLevel, Component.translatable(harvestName))); } else { @@ -691,7 +688,7 @@ default int getTotalHarvestLevel(ItemStack stack) { AoESymmetrical aoeDefinition = getAoEDefinition(stack); if (aoeDefinition != AoESymmetrical.none()) { - addedBehaviorNewLine = tooltip.add(Component.literal("")); + addedBehaviorNewLine = tooltip.add(CommonComponents.EMPTY); tooltip.add(Component.translatable("item.gtceu.tool.behavior.aoe_mining", aoeDefinition.column * 2 + 1, aoeDefinition.row * 2 + 1, aoeDefinition.layer + 1)); } @@ -700,29 +697,29 @@ default int getTotalHarvestLevel(ItemStack stack) { if (behaviorsTag.getBoolean(RELOCATE_MINED_BLOCKS_KEY)) { if (!addedBehaviorNewLine) { addedBehaviorNewLine = true; - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); } tooltip.add(Component.translatable("item.gtceu.tool.behavior.relocate_mining")); } if (!addedBehaviorNewLine && !toolStats.getBehaviors().isEmpty()) { - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); } toolStats.getBehaviors().forEach(behavior -> behavior.addInformation(stack, world, tooltip, flag)); // unique tooltip - String uniqueTooltip = "item.gtceu.tool." + BuiltInRegistries.ITEM.getKey(this.asItem()).getPath() + ".tooltip"; - if (I18n.exists(uniqueTooltip)) { - tooltip.add(Component.literal("")); + String uniqueTooltip = this.getToolType().getUnlocalizedName() + ".tooltip"; + if (Language.getInstance().has(uniqueTooltip)) { + tooltip.add(CommonComponents.EMPTY); tooltip.add(Component.translatable(uniqueTooltip)); } - tooltip.add(Component.literal("")); + tooltip.add(CommonComponents.EMPTY); // valid tools tooltip.add(Component.translatable("item.gtceu.tool.usable_as", getToolClassNames(stack).stream() - .filter(s -> I18n.exists("gtceu.tool.class." + s)) + .filter(s -> Language.getInstance().has("gtceu.tool.class." + s)) .map(s -> Component.translatable("gtceu.tool.class." + s)) .collect(Component::empty, FormattingUtil::combineComponents, FormattingUtil::combineComponents))); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index 52cd85dc7be..9f089646924 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -12,8 +12,6 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; @@ -203,7 +201,7 @@ public static void addCurrentChargeTooltip(List tooltip, long current Duration durationMax = Duration.between(start, max); long currentChargeTime; long maxChargeTime; - String unit; + Component unit; ChatFormatting color = ChatFormatting.RED; if (percentage > 0.5) { @@ -216,15 +214,15 @@ public static void addCurrentChargeTooltip(List tooltip, long current if (durationCurrent.getSeconds() <= 60) { maxChargeTime = durationMax.getSeconds(); currentChargeTime = durationCurrent.toSeconds(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.second"); + unit = Component.translatable("item.gtceu.battery.charge_unit.second"); } else if (durationCurrent.toMinutes() <= 60) { maxChargeTime = durationMax.toMinutes(); currentChargeTime = durationCurrent.toMinutes(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.minute"); + unit = Component.translatable("item.gtceu.battery.charge_unit.minute"); } else { maxChargeTime = durationMax.toHours(); currentChargeTime = durationCurrent.toHours(); - unit = LocalizationUtils.format("item.gtceu.battery.charge_unit.hour"); + unit = Component.translatable("item.gtceu.battery.charge_unit.hour"); } tooltip.add(Component.translatable("item.gtceu.battery.charge_detailed", FormattingUtil.formatNumbers(currentCharge), FormattingUtil.formatNumbers(maxCharge), diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 8e24776dd14..b30d7b37b28 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -39,11 +39,11 @@ import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.lowdragmc.lowdraglib.utils.DummyWorld; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.locale.Language; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.util.RandomSource; @@ -818,7 +818,7 @@ public void onAddFancyInformationTooltip(List tooltips) { getDefinition().getTooltipBuilder().accept(getDefinition().asStack(), tooltips); String mainKey = String.format("%s.machine.%s.tooltip", getDefinition().getId().getNamespace(), getDefinition().getId().getPath()); - if (LocalizationUtils.exist(mainKey)) { + if (Language.getInstance().has(mainKey)) { tooltips.add(0, Component.translatable(mainKey)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 2d67e39a479..a53ddd30e27 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.recipe.*; -import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.gui.SteamTexture; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; @@ -28,7 +27,6 @@ import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SmeltingRecipe; -import net.minecraft.world.level.ItemLike; import it.unimi.dsi.fastutil.bytes.Byte2ObjectArrayMap; import it.unimi.dsi.fastutil.bytes.Byte2ObjectMap; @@ -245,32 +243,27 @@ public GTRecipeType prepareBuilder(Consumer onPrepare) { return this; } - public GTRecipeBuilder recipeBuilder(ResourceLocation id, Object... append) { - if (append.length > 0) { - return recipeBuilder.copy(new ResourceLocation(id.getNamespace(), - id.getPath() + Arrays.stream(append).map(Object::toString).map(FormattingUtil::toLowerCaseUnder) - .reduce("", (a, b) -> a + "_" + b))); - } + public GTRecipeBuilder recipeBuilder(ResourceLocation id) { return recipeBuilder.copy(id); } - public GTRecipeBuilder recipeBuilder(String id, Object... append) { - return recipeBuilder(GTCEu.id(id), append); - } - - public GTRecipeBuilder recipeBuilder(MaterialEntry entry, Object... append) { - return recipeBuilder( - GTCEu.id(entry.tagPrefix() + - (entry.material().isNull() ? "" : "_" + entry.material().getName())), - append); + public GTRecipeBuilder recipeBuilder(ResourceLocation id, Object... append) { + if (append.length > 0) { + String toAppend = Arrays.stream(append) + .map(Object::toString) + .map(FormattingUtil::toLowerCaseUnderscore) + .reduce("", (a, b) -> a + "_" + b); + id = id.withSuffix(toAppend); + } + return recipeBuilder(id); } - public GTRecipeBuilder recipeBuilder(Supplier item, Object... append) { - return recipeBuilder(item.get(), append); + public GTRecipeBuilder recipeBuilder(String id) { + return recipeBuilder(GTCEu.id(id)); } - public GTRecipeBuilder recipeBuilder(ItemLike itemLike, Object... append) { - return recipeBuilder(new ResourceLocation(itemLike.asItem().getDescriptionId()), append); + public GTRecipeBuilder recipeBuilder(String id, Object... append) { + return recipeBuilder(GTCEu.id(id), append); } public GTRecipeBuilder copyFrom(GTRecipeBuilder builder) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java index 3ebbd5cd886..4e0931d5585 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/client/TooltipsHandler.java @@ -16,7 +16,7 @@ import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.ChatFormatting; -import net.minecraft.client.resources.language.I18n; +import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.tags.FluidTags; @@ -62,7 +62,7 @@ public static void appendTooltips(ItemStack stack, TooltipFlag flag, List multiLang = LangHandler.getMultiLang(tooltipKey); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 8c02d62b092..184dc5ea3e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -114,11 +114,12 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) if (ore.getKey().isIgnored(material)) continue; var oreTag = ore.getKey(); final TagPrefix.OreType oreType = ore.getValue(); - var entry = registrate - .block("%s%s_ore".formatted( - oreTag != TagPrefix.ore ? FormattingUtil.toLowerCaseUnder(oreTag.name) + "_" : "", - material.getName()), - properties -> new OreBlock(properties, oreTag, material, true)) + String typePrefix = ""; + if (oreTag == TagPrefix.ore) { + typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.name) + "_"; + } + var entry = registrate.block("%s%s_ore".formatted(typePrefix, material.getName()), + properties -> new OreBlock(properties, oreTag, material, true)) .initialProperties(() -> { if (oreType.stoneType().get().isAir()) { // if the block is not registered (yet), fallback to // stone diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java index ba4b9844236..9281f7c5ec1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java @@ -6,11 +6,11 @@ import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.common.data.GTRecipeConditions; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.core.Holder; +import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.Level; @@ -19,6 +19,7 @@ import com.google.gson.JsonObject; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; @@ -27,18 +28,19 @@ public class BiomeCondition extends RecipeCondition { public static final Codec CODEC = RecordCodecBuilder .create(instance -> RecipeCondition.isReverse(instance) - .and(ResourceLocation.CODEC.fieldOf("biome").forGetter(val -> val.biome)) + .and(ResourceKey.codec(Registries.BIOME).fieldOf("biome").forGetter(val -> val.biome)) .apply(instance, BiomeCondition::new)); public final static BiomeCondition INSTANCE = new BiomeCondition(); - private ResourceLocation biome = new ResourceLocation("dummy"); + @Getter + private ResourceKey biome = ResourceKey.create(Registries.BIOME, new ResourceLocation("dummy")); - public BiomeCondition(boolean isReverse, ResourceLocation biome) { + public BiomeCondition(boolean isReverse, ResourceKey biome) { super(isReverse); this.biome = biome; } - public BiomeCondition(ResourceLocation biome) { + public BiomeCondition(ResourceKey biome) { this.biome = biome; } @@ -55,11 +57,8 @@ public boolean isOr() { @Override public Component getTooltips() { return Component.translatable("recipe.condition.biome.tooltip", - LocalizationUtils.format("biome.%s.%s", biome.getNamespace(), biome.getPath())); - } - - public ResourceLocation getBiome() { - return biome; + Component.translatableWithFallback(biome.location().toLanguageKey("biome"), + biome.location().toString())); } @Override @@ -79,28 +78,28 @@ public RecipeCondition createTemplate() { @Override public JsonObject serialize() { JsonObject config = super.serialize(); - config.addProperty("biome", biome.toString()); + config.addProperty("biome", biome.location().toString()); return config; } @Override public RecipeCondition deserialize(@NotNull JsonObject config) { super.deserialize(config); - biome = new ResourceLocation( - GsonHelper.getAsString(config, "biome", "dummy")); + biome = ResourceKey.create(Registries.BIOME, + new ResourceLocation(GsonHelper.getAsString(config, "biome", "dummy"))); return this; } @Override public RecipeCondition fromNetwork(FriendlyByteBuf buf) { super.fromNetwork(buf); - biome = new ResourceLocation(buf.readUtf()); + biome = buf.readResourceKey(Registries.BIOME); return this; } @Override public void toNetwork(FriendlyByteBuf buf) { super.toNetwork(buf); - buf.writeUtf(biome.toString()); + buf.writeResourceKey(biome); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index b3efb191ca3..19bdc1fe975 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -3,8 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - +import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraftforge.common.data.LanguageProvider; @@ -1509,7 +1508,7 @@ public static List getMultiLang(String key) { var outputKeys = new ArrayList(); var i = 0; var next = getSubKey(key, i); - while (LocalizationUtils.exist(next)) { + while (Language.getInstance().has(next)) { outputKeys.add(next); next = getSubKey(key, ++i); } @@ -1549,7 +1548,7 @@ public static List getMultiLang(String key, Object... args) { var outputKeys = new ArrayList(); var i = 0; var next = getSubKey(key, i); - while (LocalizationUtils.exist(next)) { + while (Language.getInstance().has(next)) { outputKeys.add(next); next = getSubKey(key, ++i); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index d70ae1c7d21..b70ea3ec435 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -34,9 +34,11 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.util.valueproviders.IntProvider; @@ -46,6 +48,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.fluids.FluidStack; @@ -1078,13 +1081,21 @@ public GTRecipeBuilder dimension(ResourceLocation dimension) { } public GTRecipeBuilder biome(ResourceLocation biome, boolean reverse) { - return addCondition(new BiomeCondition(biome).setReverse(reverse)); + return biome(ResourceKey.create(Registries.BIOME, biome), reverse); } public GTRecipeBuilder biome(ResourceLocation biome) { return biome(biome, false); } + public GTRecipeBuilder biome(ResourceKey biome, boolean reverse) { + return addCondition(new BiomeCondition(biome).setReverse(reverse)); + } + + public GTRecipeBuilder biome(ResourceKey biome) { + return biome(biome, false); + } + public GTRecipeBuilder rain(float level, boolean reverse) { return addCondition(new RainingCondition(level).setReverse(reverse)); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index fc6c358d187..a9ab791a2ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -434,7 +434,7 @@ private static void processGemConversion(@NotNull Consumer provi if (material.hasFlag(MORTAR_GRINDABLE)) { VanillaRecipeHelper.addShapedRecipe(provider, String.format("gem_to_dust_%s_%s", material.getName(), - FormattingUtil.toLowerCaseUnder(prefix.name)), + FormattingUtil.toLowerCaseUnderscore(prefix.name)), crushedStack, "X", "m", 'X', new MaterialEntry(prefix, material)); } @@ -449,14 +449,14 @@ private static void processGemConversion(@NotNull Consumer provi } VanillaRecipeHelper.addShapelessRecipe(provider, - String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnder(lowerPrefix.name), + String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name), material.getName()), prevStack, 'h', new MaterialEntry(prefix, material)); CUTTER_RECIPES - .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnder(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnder(lowerPrefix.name)) + .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) .inputItems(prefix, material) .outputItems(prevStack) .duration(20) @@ -465,8 +465,8 @@ private static void processGemConversion(@NotNull Consumer provi LASER_ENGRAVER_RECIPES .recipeBuilder( - "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnder(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnder(lowerPrefix.name)) + "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) .inputItems(prevStack) .notConsumable(lens, MarkerMaterials.Color.White) .outputItems(prefix, material) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java index 4d87cff74af..f902d93dcc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java @@ -68,7 +68,7 @@ private static void processRestrictivePipe(@NotNull Consumer pro .save(provider); VanillaRecipeHelper.addShapedRecipe(provider, - FormattingUtil.toLowerCaseUnder(prefix + "_" + material.getName()), + FormattingUtil.toLowerCaseUnderscore(prefix + "_" + material.getName()), ChemicalHelper.get(prefix, material), "PR", "Rh", 'P', new MaterialEntry(unrestrictive, material), 'R', ChemicalHelper.get(ring, Iron)); } diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 6bf17e68c93..ecc22f0b40a 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -108,7 +108,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnder; +import static com.gregtechceu.gtceu.utils.FormattingUtil.toLowerCaseUnderscore; @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class ForgeCommonEventListener { @@ -627,8 +627,8 @@ public static void remapIds(MissingMappingsEvent event) { }); for (TagPrefix prefix : TagPrefix.values()) { - String first = prefix.invertedName ? toLowerCaseUnder(prefix.name) : "(.+?)"; - String last = prefix.invertedName ? "(.+?)" : toLowerCaseUnder(prefix.name); + String first = prefix.invertedName ? toLowerCaseUnderscore(prefix.name) : "(.+?)"; + String last = prefix.invertedName ? "(.+?)" : toLowerCaseUnderscore(prefix.name); Pattern idPattern = Pattern.compile(first + "_" + last); event.getMappings(Registries.BLOCK, GTCEu.MOD_ID).forEach(mapping -> { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index e5fce3f2e92..40850cde490 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -29,8 +29,10 @@ import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents; import com.gregtechceu.gtceu.utils.ResearchManager; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.util.valueproviders.UniformInt; @@ -38,6 +40,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.biome.Biome; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -777,13 +780,21 @@ public GTRecipeJS dimension(ResourceLocation dimension) { } public GTRecipeJS biome(ResourceLocation biome, boolean reverse) { - return addCondition(new BiomeCondition(biome).setReverse(reverse)); + return biome(ResourceKey.create(Registries.BIOME, biome), reverse); } public GTRecipeJS biome(ResourceLocation biome) { return biome(biome, false); } + public GTRecipeJS biome(ResourceKey biome, boolean reverse) { + return addCondition(new BiomeCondition(biome).setReverse(reverse)); + } + + public GTRecipeJS biome(ResourceKey biome) { + return biome(biome, false); + } + public GTRecipeJS rain(float level, boolean reverse) { return addCondition(new RainingCondition(level).setReverse(reverse)); } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java index d2d8f30602a..817f391b451 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java @@ -4,8 +4,8 @@ import net.minecraft.network.chat.ComponentContents; import net.minecraft.network.chat.MutableComponent; -import com.google.common.base.CaseFormat; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -36,20 +36,21 @@ public class FormattingUtil { private static final int NUMBER_BASE = '0'; public static String toSmallUpNumbers(String string) { - return checkNumbers(string, SMALL_UP_NUMBER_BASE, true); + return checkNumbers(string, SMALL_UP_NUMBER_BASE); } public static String toSmallDownNumbers(String string) { - return checkNumbers(string, SMALL_DOWN_NUMBER_BASE, false); + return checkNumbers(string, SMALL_DOWN_NUMBER_BASE); } @NotNull - private static String checkNumbers(String string, int smallUpNumberBase, boolean isUp) { + private static String checkNumbers(String string, int startIndex) { char[] charArray = string.toCharArray(); for (int i = 0; i < charArray.length; i++) { int relativeIndex = charArray[i] - NUMBER_BASE; if (relativeIndex >= 0 && relativeIndex <= 9) { - if (isUp) { + // is superscript + if (startIndex == SMALL_UP_NUMBER_BASE) { if (relativeIndex == 1) { charArray[i] = SMALL_UP_NUMBER_ONE; continue; @@ -61,7 +62,7 @@ private static String checkNumbers(String string, int smallUpNumberBase, boolean continue; } } - int newChar = smallUpNumberBase + relativeIndex; + int newChar = startIndex + relativeIndex; charArray[i] = (char) newChar; } } @@ -69,34 +70,43 @@ private static String checkNumbers(String string, int smallUpNumberBase, boolean } /** - * Does almost the same thing as .to(LOWER_UNDERSCORE, string), but it also inserts underscores between words and - * numbers. + * Does almost the same thing as {@code UPPER_CAMEL.to(LOWER_UNDERSCORE, string)}, + * but it also inserts underscores between words and numbers. * * @param string Any string with ASCII characters. * @return A string that is all lowercase, with underscores inserted before word/number boundaries: - * "maragingSteel300" -> "maraging_steel_300" + * + *

+     *         
{@code "maragingSteel300" -> "maraging_steel_300"} + *
{@code "gtceu:maraging_steel_300" -> "gtceu:maraging_steel_300"} + *
{@code "maragingSteel_300" -> "maraging_steel_300"} + *
{@code "maragingSTEEL_300" -> "maraging_steel_300"} + *
{@code "MARAGING_STEEL_300" -> "maraging_steel_300"} + *
*/ public static String toLowerCaseUnderscore(String string) { StringBuilder result = new StringBuilder(); for (int i = 0; i < string.length(); i++) { - if (i != 0 && (Character.isUpperCase(string.charAt(i)) || - (Character.isDigit(string.charAt(i - 1)) ^ Character.isDigit(string.charAt(i))))) - result.append("_"); - result.append(Character.toLowerCase(string.charAt(i))); + char curChar = string.charAt(i); + result.append(Character.toLowerCase(curChar)); + if (i == string.length() - 1) break; + + char nextChar = string.charAt(i + 1); + if (curChar == '_' || nextChar == '_') continue; + boolean nextIsUpper = Character.isUpperCase(nextChar); + if (Character.isUpperCase(curChar) && nextIsUpper) continue; + if (nextIsUpper || Character.isDigit(curChar) ^ Character.isDigit(nextChar)) result.append('_'); } return result.toString(); } /** - * Does almost the same thing as .to(LOWER_UNDERSCORE, string), but it also inserts underscores between words and - * numbers. - * - * @param string Any string with ASCII characters. - * @return A string that is all lowercase, with underscores inserted before word/number boundaries: - * "maragingSteel300" -> "maraging_steel_300" + * @deprecated use {@link FormattingUtil#toLowerCaseUnderscore(String) toLowerCaseUnderscore} instead. */ + @ApiStatus.Obsolete(since = "7.0.0") + @Deprecated(since = "7.0.0") public static String toLowerCaseUnder(String string) { - return CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, string); + return toLowerCaseUnderscore(string); } /** From 76f4a90e1f3515016906b63a06537e1bad372bd2 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:10:42 +0300 Subject: [PATCH 041/270] fix up dynamic tag generation so it's actually readable (#3199) --- .../tags/fluids/lighter_fluids.json} | 2 +- .../api/data/chemical/ChemicalHelper.java | 23 +- .../chemical/material/ItemMaterialData.java | 37 +-- .../gtceu/api/data/tag/TagUtil.java | 9 + .../gtceu/api/fluids/FluidBuilder.java | 4 +- .../api/fluids/store/FluidStorageImpl.java | 3 +- .../api/fluids/store/FluidStorageKey.java | 28 ++- .../api/fluids/store/FluidStorageKeys.java | 7 +- .../gregtechceu/gtceu/core/IGTTagLoader.java | 9 +- .../gregtechceu/gtceu/core/MixinHelpers.java | 213 +++++++++--------- .../core/mixins/IHolderReferenceAccessor.java | 12 - .../gtceu/core/mixins/TagLoaderMixin.java | 17 +- .../gtceu/core/mixins/TagManagerMixin.java | 27 +-- .../gtceu/data/recipe/CustomTags.java | 5 +- src/main/resources/gtceu.mixins.json | 1 - 15 files changed, 193 insertions(+), 204 deletions(-) rename src/generated/resources/data/{forge/tags/fluids/lighter_fluid.json => gtceu/tags/fluids/lighter_fluids.json} (96%) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java diff --git a/src/generated/resources/data/forge/tags/fluids/lighter_fluid.json b/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json similarity index 96% rename from src/generated/resources/data/forge/tags/fluids/lighter_fluid.json rename to src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json index 4502e24916f..43638fc2896 100644 --- a/src/generated/resources/data/forge/tags/fluids/lighter_fluid.json +++ b/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json @@ -3,4 +3,4 @@ "gtceu:butane", "gtceu:propane" ] -} \ No newline at end of file +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 1eae80ee58b..459900ade99 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; +import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -16,7 +17,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -221,13 +221,13 @@ public static MaterialEntry getMaterialEntry(TagKey tag) { public static List getItems(MaterialEntry materialEntry) { if (materialEntry.material().isNull()) return new ArrayList<>(); return MATERIAL_ENTRY_ITEM_MAP.computeIfAbsent(materialEntry, entry -> { + TagPrefix prefix = entry.tagPrefix(); var items = new ArrayList>(); - for (TagKey tag : getTags(entry.tagPrefix(), entry.material())) { + for (TagKey tag : prefix.getItemTags(entry.material())) { for (Holder itemHolder : BuiltInRegistries.ITEM.getTagOrEmpty(tag)) { items.add(itemHolder::value); } } - TagPrefix prefix = entry.tagPrefix(); if (items.isEmpty() && prefix.hasItemTable() && prefix.doGenerateItem(entry.material())) { return List.of(() -> prefix.getItemFromTable(entry.material()).get().asItem()); } @@ -254,14 +254,19 @@ public static ItemStack get(TagPrefix orePrefix, Material material) { public static List getBlocks(MaterialEntry materialEntry) { if (materialEntry.isEmpty()) return Collections.emptyList(); return MATERIAL_ENTRY_BLOCK_MAP.computeIfAbsent(materialEntry, entry -> { - + TagPrefix prefix = entry.tagPrefix(); var blocks = new ArrayList>(); - for (var tag : getTags(materialEntry.tagPrefix(), entry.material())) { - var blockTag = TagKey.create(Registries.BLOCK, tag.location()); - for (Holder itemHolder : BuiltInRegistries.BLOCK.getTagOrEmpty(blockTag)) { + for (TagKey tag : prefix.getBlockTags(entry.material())) { + for (Holder itemHolder : BuiltInRegistries.BLOCK.getTagOrEmpty(tag)) { blocks.add(itemHolder::value); } } + if (blocks.isEmpty() && prefix.hasItemTable() && prefix.doGenerateBlock(entry.material())) { + var blockSupplier = ItemMaterialData.convertToBlock(prefix.getItemFromTable(entry.material())); + if (blockSupplier != null) { + return Collections.singletonList(blockSupplier); + } + } return blocks; }).stream().map(Supplier::get).collect(Collectors.toList()); } @@ -296,10 +301,6 @@ public static TagKey getTag(TagPrefix orePrefix, @NotNull Material materia return null; } - public static TagKey[] getTags(TagPrefix orePrefix, @NotNull Material material) { - return orePrefix.getItemTags(material); - } - public static List> getAllItemInfos() { List> f = new ArrayList<>(); for (var entry : ITEM_MATERIAL_INFO.entrySet()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java index 5c0332daef5..412a8931662 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java @@ -24,13 +24,14 @@ import net.minecraftforge.registries.RegistryObject; import com.mojang.datafixers.util.Pair; -import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Consumer; @@ -78,11 +79,8 @@ public static void registerMaterialEntry(@NotNull Supplier s @NotNull MaterialEntry materialEntry) { registerItemEntry(supplier, materialEntry); ITEM_MATERIAL_ENTRY.add(Pair.of(() -> supplier.get().asItem(), materialEntry)); - if (supplier instanceof RegistryObject registryObject) { - registerRegistryObjectEntry(registryObject, materialEntry); - } else if (supplier instanceof BlockEntry entry) { - registerBlockEntry(entry, materialEntry); - } else if (supplier instanceof MemoizedBlockSupplier blockSupplier) { + var blockSupplier = convertToBlock(supplier); + if (blockSupplier != null) { registerBlockEntry(blockSupplier, materialEntry); } } @@ -131,21 +129,30 @@ private static void registerItemEntry(@NotNull Supplier supp } } - @SuppressWarnings("unchecked") - private static void registerRegistryObjectEntry(@NotNull RegistryObject registryObject, - @NotNull MaterialEntry materialEntry) { - var key = registryObject.getKey(); - if (key != null && key.isFor(Registries.BLOCK)) { - registerBlockEntry((Supplier) registryObject, materialEntry); - } - } - private static void registerBlockEntry(@NotNull Supplier supplier, @NotNull MaterialEntry materialEntry) { MATERIAL_ENTRY_BLOCK_MAP.computeIfAbsent(materialEntry, k -> new ArrayList<>()) .add(supplier); } + @SuppressWarnings("unchecked") + public static @Nullable Supplier convertToBlock(@NotNull Supplier supplier) { + if (supplier instanceof RegistryObject registryObject) { + var key = registryObject.getKey(); + if (key != null && key.isFor(Registries.BLOCK)) { + return (Supplier) registryObject; + } + } else if (supplier instanceof RegistryEntry entry) { + var key = entry.getKey(); + if (key.isFor(Registries.BLOCK)) { + return (Supplier) entry; + } + } else if (supplier instanceof MemoizedBlockSupplier blockSupplier) { + return blockSupplier; + } + return null; + } + public static void reinitializeMaterialData() { // Clear old data MATERIAL_ENTRY_ITEM_MAP.clear(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java index efe1d1c77b0..bd09735b024 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagUtil.java @@ -121,4 +121,13 @@ public static TagKey createModItemTag(String path) { public static TagKey createFluidTag(String path) { return createTag(BuiltInRegistries.FLUID, path, false); } + + /** + * Generates fluid tag under GTM namespace + * + * @return Fluid tag #gtceu:path + */ + public static TagKey createModFluidTag(String path) { + return createModTag(BuiltInRegistries.FLUID, path); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java index 07b32a05804..fd38f96c99b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/FluidBuilder.java @@ -240,10 +240,10 @@ private static int convertViscosity(double viscosity) { return this; } - public @NotNull Supplier build(@NotNull String modid, Material material, FluidStorageKey key, + public @NotNull Supplier build(Material material, @NotNull FluidStorageKey key, GTRegistrate registrate) { determineName(material, key); - determineTextures(material, key, modid); + determineTextures(material, key, material.getModid()); if (name == null) { throw new IllegalStateException("Could not determine fluid name"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java index a2a4165a847..4f3a8b864cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageImpl.java @@ -82,8 +82,7 @@ public void registerFluids(@NotNull Material material, GTRegistrate registrate) material); return; } - Supplier fluid = entry.getValue().build(material.getModid(), material, - entry.getKey(), registrate); + Supplier fluid = entry.getValue().build(material, entry.getKey(), registrate); if (!storeNoOverwrites(entry.getKey(), fluid, entry.getValue())) { GTCEu.LOGGER.error("{} already has an associated fluid for material {}", material, material); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java index a6b151d26a4..85f2225d91c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKey.java @@ -2,9 +2,12 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.tag.TagUtil; import com.gregtechceu.gtceu.api.fluids.FluidState; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; @@ -22,7 +25,7 @@ public final class FluidStorageKey { @Getter private final ResourceLocation resourceLocation; @Getter - private final String tagKey; + private final TagKey extraTag; @Getter private final MaterialIconType iconType; private final Function registryNameFunction; @@ -33,13 +36,13 @@ public final class FluidStorageKey { @Getter private final int registrationPriority; - public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull String tagKey, + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @Nullable TagKey extraTag, @NotNull MaterialIconType iconType, @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, @Nullable FluidState defaultFluidState, int registrationPriority) { this.resourceLocation = resourceLocation; - this.tagKey = tagKey; + this.extraTag = extraTag; this.iconType = iconType; this.registryNameFunction = registryNameFunction; this.translationKeyFunction = translationKeyFunction; @@ -52,6 +55,25 @@ public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull Stri keys.put(resourceLocation, this); } + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull String tagKey, + @NotNull MaterialIconType iconType, + @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, + @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, + @Nullable FluidState defaultFluidState, int registrationPriority) { + this(resourceLocation, TagUtil.createFluidTag(tagKey), iconType, + registryNameFunction, translationKeyFunction, + defaultFluidState, registrationPriority); + } + + public FluidStorageKey(@NotNull ResourceLocation resourceLocation, @NotNull MaterialIconType iconType, + @NotNull Function<@NotNull Material, @NotNull String> registryNameFunction, + @NotNull Function<@NotNull Material, @NotNull String> translationKeyFunction, + @Nullable FluidState defaultFluidState, int registrationPriority) { + this(resourceLocation, (TagKey) null, iconType, + registryNameFunction, translationKeyFunction, + defaultFluidState, registrationPriority); + } + public static @Nullable FluidStorageKey getByName(@NotNull ResourceLocation location) { return keys.get(location); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java index 72ade027fb4..712e56e0672 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java +++ b/src/main/java/com/gregtechceu/gtceu/api/fluids/store/FluidStorageKeys.java @@ -6,20 +6,19 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.fluids.FluidState; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import org.jetbrains.annotations.NotNull; public final class FluidStorageKeys { public static final FluidStorageKey LIQUID = new FluidStorageKey(GTCEu.id("liquid"), - "liquids", MaterialIconType.liquid, m -> prefixedRegisteredName("liquid_", FluidStorageKeys.LIQUID, m), m -> m.hasProperty(PropertyKey.DUST) ? "gtceu.fluid.liquid_generic" : "gtceu.fluid.generic", FluidState.LIQUID, 0); public static final FluidStorageKey GAS = new FluidStorageKey(GTCEu.id("gas"), - "gases", MaterialIconType.gas, m -> postfixedRegisteredName("_gas", FluidStorageKeys.GAS, m), m -> { @@ -37,14 +36,12 @@ public final class FluidStorageKeys { FluidState.GAS, 0); public static final FluidStorageKey PLASMA = new FluidStorageKey(GTCEu.id("plasma"), - "plasmas", MaterialIconType.plasma, m -> m.getName() + "_plasma", m -> "gtceu.fluid.plasma", FluidState.PLASMA, -1); - public static final FluidStorageKey MOLTEN = new FluidStorageKey(GTCEu.id("molten"), - "molten", + public static final FluidStorageKey MOLTEN = new FluidStorageKey(GTCEu.id("molten"), CustomTags.MOLTEN_FLUIDS, MaterialIconType.molten, m -> "molten_" + m.getName(), m -> "gtceu.fluid.molten", diff --git a/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java b/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java index 3d6c903d4be..80c5e9ddd3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/core/IGTTagLoader.java @@ -2,12 +2,7 @@ import net.minecraft.core.Registry; -import org.jetbrains.annotations.Nullable; +public interface IGTTagLoader { -public interface IGTTagLoader { - - void gtceu$setRegistry(Registry registry); - - @Nullable - Registry gtceu$getRegistry(); + void gtceu$setRegistry(Registry registry); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index ef256689c4d..6da63136d27 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -11,11 +11,10 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.data.tag.TagUtil; +import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.GTFluid; import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTClientFluidTypeExtensions; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; @@ -37,6 +36,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.storage.loot.IntRange; @@ -51,6 +51,7 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.versions.forge.ForgeVersion; import com.tterrag.registrate.util.entry.BlockEntry; @@ -58,7 +59,10 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; +import java.util.stream.Collector; +import java.util.stream.Collectors; +@SuppressWarnings("deprecation") public class MixinHelpers { public static void generateGTDynamicTags(Map> tagMap, @@ -67,41 +71,32 @@ public static void generateGTDynamicTags(Map { if (itemLikes.isEmpty()) return; var material = entry.material(); - if (!material.isNull()) { - var materialTags = entry.tagPrefix().getAllItemTags(material); - for (TagKey materialTag : materialTags) { - List tags = new ArrayList<>(); - itemLikes.forEach(item -> tags.add(new TagLoader.EntryWithSource( - TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get())), - GTValues.CUSTOM_TAG_SOURCE))); - tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(tags); - } + if (material.isNull()) return; + var entries = itemLikes.stream().map(MixinHelpers::makeItemEntry).collect(toArrayList()); - if (entry.tagPrefix() == TagPrefix.crushed && material.hasProperty(PropertyKey.ORE)) { - OreProperty ore = material.getProperty(PropertyKey.ORE); - Material washedIn = ore.getWashedIn().first(); - if (washedIn.isNull()) return; - ResourceLocation generalTag = CustomTags.CHEM_BATH_WASHABLE.location(); - ResourceLocation specificTag = generalTag.withSuffix("/" + washedIn.getName()); - - List tags = new ArrayList<>(); - itemLikes.forEach(item -> tags.add(new TagLoader.EntryWithSource( - TagEntry.element(BuiltInRegistries.ITEM.getKey(item.get())), - GTValues.CUSTOM_TAG_SOURCE))); - tagMap.computeIfAbsent(generalTag, path -> new ArrayList<>()).addAll(tags); - tagMap.computeIfAbsent(specificTag, path -> new ArrayList<>()).addAll(tags); - } + var materialTags = entry.tagPrefix().getAllItemTags(material); + for (TagKey materialTag : materialTags) { + tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(entries); + } + + if (entry.tagPrefix() == TagPrefix.crushed && material.hasProperty(PropertyKey.ORE)) { + OreProperty ore = material.getProperty(PropertyKey.ORE); + Material washedIn = ore.getWashedIn().first(); + if (washedIn.isNull()) return; + ResourceLocation generalTag = CustomTags.CHEM_BATH_WASHABLE.location(); + ResourceLocation specificTag = generalTag.withSuffix("/" + washedIn.getName()); + + tagMap.computeIfAbsent(generalTag, path -> new ArrayList<>()).addAll(entries); + tagMap.computeIfAbsent(specificTag, path -> new ArrayList<>()).addAll(entries); } }); GTMaterialItems.TOOL_ITEMS.rowMap().forEach((material, map) -> { - map.forEach((type, item) -> { - if (item != null) { - var entry = new TagLoader.EntryWithSource(TagEntry.element(item.getId()), - GTValues.CUSTOM_TAG_SOURCE); - for (TagKey tag : type.itemTags) { - tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); - } + map.values().forEach(item -> { + if (item == null) return; + var entry = makeItemEntry(item); + for (TagKey tag : item.get().getToolType().itemTags) { + tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); } }); }); @@ -110,54 +105,59 @@ public static void generateGTDynamicTags(Map new ArrayList<>()).add(entry); } } } else if (registry == BuiltInRegistries.BLOCK) { - GTMaterialBlocks.MATERIAL_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.CABLE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.FLUID_PIPE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); - }); - GTMaterialBlocks.ITEM_PIPE_BLOCKS.rowMap().forEach((prefix, map) -> { - MixinHelpers.addMaterialBlockTags(tagMap, prefix, map); + ItemMaterialData.MATERIAL_ENTRY_BLOCK_MAP.forEach((entry, blocks) -> { + if (blocks.isEmpty()) return; + var material = entry.material(); + if (material.isNull()) return; + + var entries = blocks.stream().map(MixinHelpers::makeBlockEntry).collect(toArrayList()); + var materialTags = entry.tagPrefix().getAllBlockTags(material); + for (TagKey materialTag : materialTags) { + tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(entries); + } + // Add tool tags + if (!entry.tagPrefix().miningToolTag().isEmpty()) { + tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), + path -> new ArrayList<>()).addAll(entries); + if (material.hasProperty(PropertyKey.WOOD)) { + tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) + .addAll(entries); + } else { + for (var tag : entry.tagPrefix().miningToolTag()) { + tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).addAll(entries); + } + } + } }); + GTRegistries.MACHINES.forEach(machine -> { - ResourceLocation id = machine.getId(); tagMap.computeIfAbsent(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH.location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(id), GTValues.CUSTOM_TAG_SOURCE)); + path -> new ArrayList<>()).add(makeBlockEntry(machine.getBlock())); }); - // if config is NOT enabled, add the pickaxe/axe tags to the "configurable" mineability tags + // if config is NOT enabled, add the "configurable" mineability tags to the pickaxe tag if (!ConfigHolder.INSTANCE.machines.requireGTToolsForBlocks) { var tagList = tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_PICKAXE.location(), path -> new ArrayList<>()); - tagList.add(new TagLoader.EntryWithSource( - TagEntry.tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH.location()), - GTValues.CUSTOM_TAG_SOURCE)); - tagList.add(new TagLoader.EntryWithSource( - TagEntry.tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER.location()), - GTValues.CUSTOM_TAG_SOURCE)); + tagList.add(makeTagEntry(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH)); + tagList.add(makeTagEntry(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER)); } } else if (registry == BuiltInRegistries.FLUID) { for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { @@ -166,72 +166,64 @@ public static void generateGTDynamicTags(Map new ArrayList<>()) - .add(entry); + TagLoader.EntryWithSource entry = makeFluidEntry(fluid); + + ResourceLocation fluidIdTag = fluid.builtInRegistryHolder().key().location(); + fluidIdTag = new ResourceLocation(ForgeVersion.MOD_ID, fluidIdTag.getPath()); + tagMap.computeIfAbsent(fluidIdTag, path -> new ArrayList<>()).add(entry); + FluidState state; + if (fluid instanceof GTFluid gtFluid) { - tagMap.computeIfAbsent(gtFluid.getState().getTagKey().location(), - path -> new ArrayList<>()) - .add(entry); + state = gtFluid.getState(); } else { - ResourceLocation fluidKeyTag = key.getDefaultFluidState().getTagKey().location(); - tagMap.computeIfAbsent(fluidKeyTag, path -> new ArrayList<>()) - .add(entry); + state = key.getDefaultFluidState(); } - } - if (material.hasProperty(PropertyKey.ALLOY_BLAST)) { - Fluid fluid = material.getProperty(PropertyKey.FLUID).getStorage().get(FluidStorageKeys.MOLTEN); - if (fluid != null) { - ResourceLocation moltenID = BuiltInRegistries.FLUID.getKey(fluid); - tagMap.computeIfAbsent(CustomTags.MOLTEN_FLUIDS.location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(moltenID), - GTValues.CUSTOM_TAG_SOURCE)); + tagMap.computeIfAbsent(state.getTagKey().location(), path -> new ArrayList<>()).add(entry); + + if (key.getExtraTag() != null) { + tagMap.computeIfAbsent(key.getExtraTag().location(), path -> new ArrayList<>()).add(entry); } } } } } - public static void addMaterialBlockTags(Map> tagMap, - TagPrefix prefix, - Map> map) { - // Add tool tags - if (!prefix.miningToolTag().isEmpty()) { - map.forEach((material, block) -> { - tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), - path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), - GTValues.CUSTOM_TAG_SOURCE)); - - var entry = new TagLoader.EntryWithSource(TagEntry.element(block.getId()), GTValues.CUSTOM_TAG_SOURCE); - if (material.hasProperty(PropertyKey.WOOD)) { - tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) - .add(entry); - } else { - for (var tag : prefix.miningToolTag()) { - tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).add(entry); - } - } - }); - } - // Copy item tags to blocks - map.forEach((material, block) -> { - for (TagKey blockTag : prefix.getAllBlockTags(material)) { - tagMap.computeIfAbsent(blockTag.location(), path -> new ArrayList<>()) - .add(new TagLoader.EntryWithSource(TagEntry.element(block.getId()), - GTValues.CUSTOM_TAG_SOURCE)); - } - }); + private static Collector> toArrayList() { + return Collectors.toCollection(ArrayList::new); + } + + public static TagLoader.EntryWithSource makeItemEntry(Supplier item) { + return makeItemEntry(item.get()); + } + + public static TagLoader.EntryWithSource makeItemEntry(ItemLike item) { + return makeElementEntry(item.asItem().builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeBlockEntry(Supplier block) { + return makeBlockEntry(block.get()); + } + + public static TagLoader.EntryWithSource makeBlockEntry(Block block) { + return makeElementEntry(block.builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeFluidEntry(Fluid fluid) { + return makeElementEntry(fluid.builtInRegistryHolder().key().location()); + } + + public static TagLoader.EntryWithSource makeElementEntry(ResourceLocation id) { + return new TagLoader.EntryWithSource(TagEntry.element(id), GTValues.CUSTOM_TAG_SOURCE); + } + + public static TagLoader.EntryWithSource makeTagEntry(TagKey tag) { + return new TagLoader.EntryWithSource(TagEntry.tag(tag.location()), GTValues.CUSTOM_TAG_SOURCE); } private static final VanillaBlockLoot BLOCK_LOOT = new VanillaBlockLoot(); @@ -263,7 +255,6 @@ public static void generateGTDynamicLoot(Map lootTa // .apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE)))); //disable fortune for // balance reasons. (for now, until we can think of a better solution.) - Supplier outputDustMat = type.material(); LootPool.Builder pool = LootPool.lootPool(); boolean isEmpty = true; for (MaterialStack secondaryMaterial : prefix.secondaryMaterials()) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java deleted file mode 100644 index 3a2bc3bdbec..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IHolderReferenceAccessor.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.core.Holder; - -import org.spongepowered.asm.mixin.Mixin; - -@Mixin(Holder.Reference.class) -public interface IHolderReferenceAccessor extends Holder { - - // @Invoker - // void invokeBind(ResourceKey key, T value); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java index e34dd0d7c79..062af0de349 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagLoaderMixin.java @@ -19,28 +19,21 @@ import java.util.Map; @Mixin(value = TagLoader.class, priority = 500) -public class TagLoaderMixin implements IGTTagLoader { +public class TagLoaderMixin implements IGTTagLoader { @Nullable @Unique - private Registry gtceu$storedRegistry; + private Registry gtceu$storedRegistry; @Inject(method = "load", at = @At(value = "RETURN")) public void gtceu$load(ResourceManager resourceManager, CallbackInfoReturnable>> cir) { - var tagMap = cir.getReturnValue(); - if (gtceu$getRegistry() == null) return; - MixinHelpers.generateGTDynamicTags(tagMap, gtceu$getRegistry()); + if (gtceu$storedRegistry == null) return; + MixinHelpers.generateGTDynamicTags(cir.getReturnValue(), gtceu$storedRegistry); } @Override - @Nullable - public Registry gtceu$getRegistry() { - return gtceu$storedRegistry; - } - - @Override - public void gtceu$setRegistry(Registry registry) { + public void gtceu$setRegistry(Registry registry) { this.gtceu$storedRegistry = registry; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java index c9a0d312939..e4b61052e2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/TagManagerMixin.java @@ -3,38 +3,25 @@ import com.gregtechceu.gtceu.core.IGTTagLoader; import net.minecraft.core.Holder; -import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.tags.TagLoader; import net.minecraft.tags.TagManager; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @Mixin(TagManager.class) public class TagManagerMixin { - @Inject(method = "createLoader", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/tags/TagLoader;(Ljava/util/function/Function;Ljava/lang/String;)V", - shift = At.Shift.BY, - by = 2), - locals = LocalCapture.CAPTURE_FAILHARD) - private < - T> void gtceu$saveRegistryToTagLoader(ResourceManager rm, Executor executor, - RegistryAccess.RegistryEntry reg, - CallbackInfoReturnable>> cir, - ResourceKey> key, Registry registry, - TagLoader> loader) { - ((IGTTagLoader) loader).gtceu$setRegistry(registry); + @ModifyExpressionValue(method = "createLoader", at = @At(value = "NEW", target = "net/minecraft/tags/TagLoader")) + private TagLoader> gtceu$saveTagLoaderRegistry(TagLoader> loader, + ResourceManager rm, Executor executor, + RegistryAccess.RegistryEntry entry) { + ((IGTTagLoader) loader).gtceu$setRegistry(entry.value()); + return loader; } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 90d00a3f963..11155682b1a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -199,9 +199,10 @@ public class CustomTags { public static final TagKey> CHEMICAL_IMMUNE = TagUtil.createModTag(Registries.ENTITY_TYPE, "chemical_immune"); - public static final TagKey LIGHTER_FLUIDS = TagUtil.createFluidTag("lighter_fluid"); - public static final TagKey MOLTEN_FLUIDS = TagUtil.createFluidTag("molten"); + public static final TagKey LIGHTER_FLUIDS = TagUtil.createModFluidTag("lighter_fluids"); public static final TagKey POTION_FLUIDS = TagUtil.createFluidTag("potion"); + + public static final TagKey MOLTEN_FLUIDS = TagUtil.createFluidTag("molten"); public static final TagKey LIQUID_FLUIDS = TagUtil.createFluidTag("liquid"); public static final TagKey PLASMA_FLUIDS = TagUtil.createFluidTag("plasmatic"); } diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index f60d1e3d411..292a0b3d3dd 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -35,7 +35,6 @@ "CreeperMixin", "EntityMixin", "IFoliagePlacerTypeAccessor", - "IHolderReferenceAccessor", "IngredientAccessor", "IntersectionIngredientAccessor", "InventoryMixin", From e690638e72da5e822bf51a7ee102a56040e80f33 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:46:09 +0300 Subject: [PATCH 042/270] fix `GTCEu.id` reformatting already lowercase strings (#3230) --- .../gtceu/tags/fluids/lighter_fluids.json | 2 +- .../java/com/gregtechceu/gtceu/GTCEu.java | 35 ++++++++++++------- .../gtceu/common/data/GTRecipeCategories.java | 2 +- .../gtceu/common/data/GTRecipeTypes.java | 2 +- .../integration/kjs/GTCEuStartupEvents.java | 2 +- .../kjs/events/GTRegistryEventJS.java | 4 +-- .../gtceu/utils/FormattingUtil.java | 14 ++++++++ 7 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json b/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json index 43638fc2896..4502e24916f 100644 --- a/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json +++ b/src/generated/resources/data/gtceu/tags/fluids/lighter_fluids.json @@ -3,4 +3,4 @@ "gtceu:butane", "gtceu:propane" ] -} +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index 57da2e6ae61..e82439c4533 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -19,6 +19,7 @@ import dev.emi.emi.config.EmiConfig; import me.shedaniel.rei.api.client.REIRuntime; +import org.apache.logging.log4j.util.Strings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +29,7 @@ public class GTCEu { public static final String MOD_ID = "gtceu"; + private static final ResourceLocation TEMPLATE_LOCATION = new ResourceLocation(MOD_ID, ""); public static final String NAME = "GregTechCEu"; public static final Logger LOGGER = LoggerFactory.getLogger(NAME); @@ -42,23 +44,32 @@ public static void init() { } public static ResourceLocation id(String path) { - return new ResourceLocation(MOD_ID, FormattingUtil.toLowerCaseUnderscore(path)); - } + if (Strings.isBlank(path)) { + return TEMPLATE_LOCATION; + } - public static String appendIdString(String id) { - return id.indexOf(':') == -1 ? (MOD_ID + ":" + id) : id; + int i = path.indexOf(':'); + if (i > 0) { + return new ResourceLocation(path); + } else if (i == 0) { + path = path.substring(i + 1); + } + // only convert it to camel_case if it has any uppercase to begin with + if (FormattingUtil.hasUpperCase(path)) { + path = FormattingUtil.toLowerCaseUnderscore(path); + } + return TEMPLATE_LOCATION.withPath(path); } - public static ResourceLocation appendId(String id) { - String[] strings = new String[] { "gtceu", id }; + public static String appendIdString(String id) { int i = id.indexOf(':'); - if (i >= 0) { - strings[1] = id.substring(i + 1); - if (i >= 1) { - strings[0] = id.substring(0, i); - } + if (i > 0) { + return id; + } else if (i == 0) { + return MOD_ID + id; + } else { + return MOD_ID + ":" + id; } - return new ResourceLocation(strings[0], strings[1]); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java index 22fdc55b580..fb8d08212e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java @@ -47,6 +47,6 @@ public static void init() { } public static GTRecipeCategory get(String name) { - return GTRegistries.RECIPE_CATEGORIES.get(GTCEu.appendId(name)); + return GTRegistries.RECIPE_CATEGORIES.get(GTCEu.id(name)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 0e4a2a7bd1f..7f093a7807d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -690,6 +690,6 @@ public static void init() { } public static GTRecipeType get(String name) { - return GTRegistries.RECIPE_TYPES.get(GTCEu.appendId(name)); + return GTRegistries.RECIPE_TYPES.get(GTCEu.id(name)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java index a2e85489b25..59764783f61 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java @@ -18,7 +18,7 @@ public interface GTCEuStartupEvents { private static boolean validateRegistry(Object o) { try { - var id = GTCEu.appendId(o.toString()); + var id = GTCEu.id(o.toString()); return GTRegistry.REGISTERED.containsKey(id) || GTRegistryInfo.EXTRA_IDS.contains(id); } catch (Exception ex) { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java index 54a38313929..0cbf73bf135 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryEventJS.java @@ -24,7 +24,7 @@ public BuilderBase create(String id, String type) { } var b = t.factory() - .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.appendId(id))); + .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.id(id))); if (b == null) { throw new IllegalArgumentException("Unknown type '" + type + "' for object '" + id + "'!"); @@ -44,7 +44,7 @@ public BuilderBase create(String id) { } var b = t.factory() - .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.appendId(id))); + .createBuilder(UtilsJS.getMCID(ScriptType.STARTUP.manager.get().context, GTCEu.id(id))); if (b == null) { throw new IllegalArgumentException("Unknown type '" + t.type() + "' for object '" + id + "'!"); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java index 817f391b451..09edf06c3f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/FormattingUtil.java @@ -109,6 +109,20 @@ public static String toLowerCaseUnder(String string) { return toLowerCaseUnderscore(string); } + /** + * Check if {@code string} has any uppercase characters. + * + * @param string the string to check + * @return if the string has any uppercase characters. + */ + public static boolean hasUpperCase(String string) { + for (int i = 0; i < string.length(); i++) { + char ch = string.charAt(i); + if (Character.isUpperCase(ch)) return true; + } + return false; + } + /** * apple_orange.juice => Apple Orange (Juice) */ From 0a27df67b4b764f82f94b7addd5df33494003a5f Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 14 Jun 2025 02:32:30 -0600 Subject: [PATCH 043/270] Refactor "gtceu.universal.x" Lang Key (#3150) --- .../resources/assets/gtceu/lang/en_ud.json | 4 +- .../resources/assets/gtceu/lang/en_us.json | 4 +- .../gtceu/common/data/GTMachines.java | 23 ++++++----- .../common/data/machines/GCYMMachines.java | 3 +- .../common/data/machines/GTAEMachines.java | 16 ++++---- .../common/data/machines/GTMachineUtils.java | 5 ++- .../data/machines/GTResearchMachines.java | 40 +++++++++++++------ .../gtceu/data/lang/LangHandler.java | 4 +- .../resources/assets/gtceu/lang/ja_jp.json | 4 +- .../resources/assets/gtceu/lang/ru_ru.json | 4 +- .../resources/assets/gtceu/lang/uk_ua.json | 7 ++-- .../resources/assets/gtceu/lang/zh_cn.json | 4 +- .../resources/assets/gtceu/lang/zh_tw.json | 4 +- 13 files changed, 69 insertions(+), 53 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index aba6cb2af99..4a7da651717 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3390,6 +3390,8 @@ "gtceu.ownership.name.ftb": "sɯɐǝ⟘ ᗺ⟘Ⅎ", "gtceu.ownership.name.player": "ɹǝʎɐןԀ", "gtceu.packer": "ɹǝʞɔɐԀ", + "gtceu.part_sharing.disabled": "pǝןqɐsıᗡㄣ§ buıɹɐɥS ʞɔoןqıʇןnW", + "gtceu.part_sharing.enabled": "pǝןqɐuƎɐ§ buıɹɐɥS ʞɔoןqıʇןnW", "gtceu.plasma_generator": "ɹoʇɐɹǝuǝ⅁ ɐɯsɐןԀ", "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", @@ -3580,8 +3582,6 @@ "gtceu.top.valid_structure": "pǝɯɹoℲ ǝɹnʇɔnɹʇS", "gtceu.top.working_disabled": "pǝןqɐsıᗡ buıʞɹoM", "gtceu.universal.clear_nbt_recipe.tooltip": "¡sʇuǝʇuoɔ ןןɐ ʎoɹʇsǝp ןןıʍ sıɥ⟘ɔ§", - "gtceu.universal.disabled": "pǝןqɐsıᗡㄣ§ buıɹɐɥS ʞɔoןqıʇןnW", - "gtceu.universal.enabled": "pǝןqɐuƎɐ§ buıɹɐɥS ʞɔoןqıʇןnW", "gtceu.universal.kiloliters": "ᗺ %s", "gtceu.universal.liters": "ᗺɯ %s", "gtceu.universal.tooltip.amperage_in": "Ɐ%dɟ§ :NI ǝbɐɹǝdɯⱯǝ§", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 3dc27547323..c9dcc8d43dc 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3390,6 +3390,8 @@ "gtceu.ownership.name.ftb": "FTB Teams", "gtceu.ownership.name.player": "Player", "gtceu.packer": "Packer", + "gtceu.part_sharing.disabled": "Multiblock Sharing §4Disabled", + "gtceu.part_sharing.enabled": "Multiblock Sharing §aEnabled", "gtceu.plasma_generator": "Plasma Generator", "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", @@ -3580,8 +3582,6 @@ "gtceu.top.valid_structure": "Structure Formed", "gtceu.top.working_disabled": "Working Disabled", "gtceu.universal.clear_nbt_recipe.tooltip": "§cThis will destroy all contents!", - "gtceu.universal.disabled": "Multiblock Sharing §4Disabled", - "gtceu.universal.enabled": "Multiblock Sharing §aEnabled", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", "gtceu.universal.tooltip.amperage_in": "§eAmperage IN: §f%dA", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 30d5e757850..0472182791d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -855,7 +855,7 @@ public class GTMachines { .overlayTieredHullRenderer("muffler_hatch") .tooltips(LangHandler.getFromMultiLang("gtceu.machine.muffler_hatch.tooltip", 0), Component.translatable("gtceu.muffler.recovery_tooltip", Math.max(1, tier * 10)), - Component.translatable("gtceu.universal.enabled"), + Component.translatable("gtceu.part_sharing.enabled"), LangHandler.getFromMultiLang("gtceu.machine.muffler_hatch.tooltip", 1) .withStyle(ChatFormatting.DARK_RED)) .register(), @@ -896,6 +896,7 @@ public class GTMachines { public static final MachineDefinition COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) .rotationState(RotationState.ALL) .modelRenderer(() -> GTCEu.id("block/machine/part/coke_oven_hatch")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); public static final MachineDefinition PUMP_HATCH = REGISTRATE.machine("pump_hatch", PumpHatchPartMachine::new) @@ -908,7 +909,7 @@ public class GTMachines { .machine("maintenance_hatch", (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, false)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .renderer(() -> new MaintenanceHatchPartRenderer(1, GTCEu.id("block/machine/part/maintenance"))) .register(); @@ -917,7 +918,7 @@ public class GTMachines { (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, true)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .renderer( () -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.configurable"))) .register(); @@ -927,7 +928,7 @@ public class GTMachines { holder -> new CleaningMaintenanceHatchPartMachine(holder, CleanroomType.CLEANROOM)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled"), + .tooltips(Component.translatable("gtceu.part_sharing.disabled"), Component.translatable("gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.0"), Component.translatable("gtceu.machine.maintenance_hatch_cleanroom_auto.tooltip.1")) .tooltipBuilder((stack, tooltips) -> { @@ -941,7 +942,7 @@ public class GTMachines { .machine("auto_maintenance_hatch", AutoMaintenanceHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) - .tooltips(Component.translatable("gtceu.universal.disabled")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .renderer(() -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.full_auto"))) .register(); @@ -955,7 +956,7 @@ public class GTMachines { .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier))), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), ELECTRIC_TIERS); @@ -970,7 +971,7 @@ public class GTMachines { .tooltips( Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity_mult", tier + 1, 16 * FluidType.BUCKET_VOLUME), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), ELECTRIC_TIERS); @@ -983,7 +984,7 @@ public class GTMachines { .tooltips( Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", FormattingUtil.formatNumbers(ReservoirHatchPartMachine.FLUID_AMOUNT)), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .overlayTieredHullRenderer("reservoir_hatch") .register(); @@ -1005,7 +1006,7 @@ public class GTMachines { (tier - 4), DualHatchPartMachine.getTankCapacity(DualHatchPartMachine.INITIAL_TANK_CAPACITY, tier)), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), DUAL_HATCH_TIERS); @@ -1027,7 +1028,7 @@ public class GTMachines { (tier - 4), DualHatchPartMachine.getTankCapacity( DualHatchPartMachine.INITIAL_TANK_CAPACITY, tier)), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(), DUAL_HATCH_TIERS); @@ -1057,7 +1058,7 @@ public class GTMachines { .renderer(() -> new RotorHolderMachineRenderer(tier)) .tooltips(LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 0), LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 1), - Component.translatable("gtceu.universal.disabled")) + Component.translatable("gtceu.part_sharing.disabled")) .register(), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index ca5401c2ace..aeffc89d3ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -68,7 +68,8 @@ public static void init() {} .rotationState(RotationState.ALL) .abilities(PartAbility.PARALLEL_HATCH) .workableTieredHullRenderer(GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) - .tooltips(Component.translatable("gtceu.machine.parallel_hatch_mk" + tier + ".tooltip")) + .tooltips(Component.translatable("gtceu.machine.parallel_hatch_mk" + tier + ".tooltip"), + Component.translatable("gtceu.part_sharing.disabled")) .register(), IV, LuV, ZPM, UV); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java index 248a5752b45..33430802919 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java @@ -25,7 +25,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.me.item_import.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition STOCKING_IMPORT_BUS_ME = REGISTRATE @@ -41,7 +41,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.me_import_item_hatch.configs.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), Component.translatable("gtceu.machine.me.stocking_item.tooltip.1"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition ITEM_EXPORT_BUS_ME = REGISTRATE @@ -54,7 +54,7 @@ public class GTAEMachines { .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.me.item_export.tooltip"), Component.translatable("gtceu.machine.me.export.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition FLUID_IMPORT_HATCH_ME = REGISTRATE @@ -68,7 +68,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.fluid_hatch.import.tooltip"), Component.translatable("gtceu.machine.me.fluid_import.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition STOCKING_IMPORT_HATCH_ME = REGISTRATE @@ -84,7 +84,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.me_import_fluid_hatch.configs.tooltip"), Component.translatable("gtceu.machine.me.copy_paste.tooltip"), Component.translatable("gtceu.machine.me.stocking_fluid.tooltip.1"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public final static MachineDefinition FLUID_EXPORT_HATCH_ME = REGISTRATE @@ -98,7 +98,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.fluid_hatch.export.tooltip"), Component.translatable("gtceu.machine.me.fluid_export.tooltip"), Component.translatable("gtceu.machine.me.export.tooltip"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static final MachineDefinition ME_PATTERN_BUFFER = REGISTRATE .machine("me_pattern_buffer", MEPatternBufferPartMachine::new) @@ -113,7 +113,7 @@ public class GTAEMachines { Component.translatable("block.gtceu.pattern_buffer.desc.0"), Component.translatable("block.gtceu.pattern_buffer.desc.1"), Component.translatable("block.gtceu.pattern_buffer.desc.2"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static final MachineDefinition ME_PATTERN_BUFFER_PROXY = REGISTRATE .machine("me_pattern_buffer_proxy", MEPatternBufferProxyPartMachine::new) @@ -128,7 +128,7 @@ public class GTAEMachines { Component.translatable("block.gtceu.pattern_buffer_proxy.desc.0"), Component.translatable("block.gtceu.pattern_buffer_proxy.desc.1"), Component.translatable("block.gtceu.pattern_buffer_proxy.desc.2"), - Component.translatable("gtceu.universal.enabled")) + Component.translatable("gtceu.part_sharing.enabled")) .register(); public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 111c06e1cb7..2ce5c99e36f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -362,7 +362,7 @@ public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAb FormattingUtil .formatNumbers( EnergyHatchPartMachine.getHatchEnergyCapacity(tier, amperage))), - Component.translatable("gtceu.universal.disabled")) + Component.translatable("gtceu.part_sharing.disabled")) .abilities(ability) .overlayTieredHullRenderer("laser_hatch." + name) .register(), @@ -448,7 +448,8 @@ public static MachineDefinition registerTankValve(String name, String displayNam MachineBuilder builder = REGISTRATE .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) - .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip")) + .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip"), + Component.translatable("gtceu.part_sharing.disabled")) .rotationState(RotationState.ALL); rendererSetup.accept(builder, GTCEu.id("block/multiblock/tank_valve")); return builder.register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index aa1c8f47aaf..8992ee9db38 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -297,22 +297,30 @@ public class GTResearchMachines { public static final MachineDefinition COMPUTATION_HATCH_TRANSMITTER = registerDataHatch( "computation_transmitter_hatch", "Computation Data Transmission Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, true), - "computation_data_hatch", PartAbility.COMPUTATION_DATA_TRANSMISSION).register(); + "computation_data_hatch", PartAbility.COMPUTATION_DATA_TRANSMISSION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition COMPUTATION_HATCH_RECEIVER = registerDataHatch( "computation_receiver_hatch", "Computation Data Reception Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, false), - "computation_data_hatch", PartAbility.COMPUTATION_DATA_RECEPTION).register(); + "computation_data_hatch", PartAbility.COMPUTATION_DATA_RECEPTION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition DATA_HATCH_TRANSMITTER = registerDataHatch( "data_transmitter_hatch", "Optical Data Transmission Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, true), - "optical_data_hatch", PartAbility.OPTICAL_DATA_TRANSMISSION).register(); + "optical_data_hatch", PartAbility.OPTICAL_DATA_TRANSMISSION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition DATA_HATCH_RECEIVER = registerDataHatch( "data_receiver_hatch", "Optical Data Reception Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, false), - "optical_data_hatch", PartAbility.OPTICAL_DATA_RECEPTION).register(); + "optical_data_hatch", PartAbility.OPTICAL_DATA_RECEPTION) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition DATA_ACCESS_HATCH = REGISTRATE .machine("data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, EV, false)) @@ -322,7 +330,7 @@ public class GTResearchMachines { .abilities(PartAbility.DATA_ACCESS) .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 9), - Component.translatable("gtceu.universal.disabled")) + Component.translatable("gtceu.part_sharing.disabled")) .overlayTieredHullRenderer("data_access_hatch") .register(); @@ -334,7 +342,7 @@ public class GTResearchMachines { .abilities(PartAbility.DATA_ACCESS) .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 16), - Component.translatable("gtceu.universal.disabled")) + Component.translatable("gtceu.part_sharing.disabled")) .overlayTieredHullRenderer("data_access_hatch") .register(); @@ -347,7 +355,7 @@ public class GTResearchMachines { .tooltipBuilder((s, list) -> { list.add(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0")); CREATIVE_TOOLTIPS.accept(s, list); - list.add(Component.translatable("gtceu.universal.enabled")); + list.add(Component.translatable("gtceu.part_sharing.enabled")); }) .overlayTieredHullRenderer("data_access_hatch_creative") .register(); @@ -362,7 +370,8 @@ public class GTResearchMachines { public static final MachineDefinition HPCA_EMPTY_COMPONENT = registerHPCAPart( "hpca_empty_component", "Empty HPCA Component", - HPCAEmptyPartMachine::new, "empty", null, null, false).register(); + HPCAEmptyPartMachine::new, "empty", null, null, false) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")).register(); public static final MachineDefinition HPCA_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_computation_component", "HPCA Computation Component", holder -> new HPCAComputationPartMachine(holder, false), "computation", false) @@ -370,7 +379,8 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.EV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.LuV]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 4), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2)) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 2), + Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_ADVANCED_COMPUTATION_COMPONENT = registerHPCAPart( @@ -380,14 +390,16 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_general.upkeep_eut", GTValues.VA[GTValues.IV]), Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.ZPM]), Component.translatable("gtceu.machine.hpca.component_type.computation_cwut", 16), - Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4)) + Component.translatable("gtceu.machine.hpca.component_type.computation_cooling", 4), + Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); public static final MachineDefinition HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( "hpca_heat_sink_component", "HPCA Heat Sink Component", holder -> new HPCACoolerPartMachine(holder, false), "heat_sink", null, null, false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.cooler_passive"), - Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1)) + Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1), + Component.translatable("gtceu.part_sharing.disabled")) .register(); public static final MachineDefinition HPCA_ACTIVE_COOLER_COMPONENT = registerHPCAPart( "hpca_active_cooler_component", "HPCA Active Cooling Component", @@ -396,13 +408,15 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_type.cooler_active"), Component.translatable("gtceu.machine.hpca.component_type.cooler_active_coolant", 8, GTMaterials.PCBCoolant.getLocalizedName()), - Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 2)) + Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 2), + Component.translatable("gtceu.part_sharing.disabled")) .register(); public static final MachineDefinition HPCA_BRIDGE_COMPONENT = registerHPCAPart( "hpca_bridge_component", "HPCA Bridge Component", HPCABridgePartMachine::new, "bridge", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.bridge"), - Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.IV])) + Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.IV]), + Component.translatable("gtceu.part_sharing.disabled")) .register(); @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 19bdc1fe975..729dd5b140b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -899,8 +899,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("metaitem.cover.digital.mode.fluid.disabled", "Click to enable Fluid Mode"); provider.add("metaitem.cover.digital.mode.fluid.enabled", "Fluid Mode enabled"); - provider.add("gtceu.universal.disabled", "Multiblock Sharing §4Disabled"); - provider.add("gtceu.universal.enabled", "Multiblock Sharing §aEnabled"); + provider.add("gtceu.part_sharing.disabled", "Multiblock Sharing §4Disabled"); + provider.add("gtceu.part_sharing.enabled", "Multiblock Sharing §aEnabled"); provider.add("gtceu.universal.liters", "%s mB"); provider.add("gtceu.universal.kiloliters", "%s B"); provider.add("gtceu.universal.tooltip.voltage_in", "§aVoltage IN: §f%d EU/t (%s§f)"); diff --git a/src/main/resources/assets/gtceu/lang/ja_jp.json b/src/main/resources/assets/gtceu/lang/ja_jp.json index ee2185c9c12..a818219d5a1 100644 --- a/src/main/resources/assets/gtceu/lang/ja_jp.json +++ b/src/main/resources/assets/gtceu/lang/ja_jp.json @@ -3332,6 +3332,8 @@ "gtceu.oc.tooltip.4": "シフトを押したまま完璧なオーバークロックに変更", "gtceu.ore_washer": "鉱石洗浄機", "gtceu.packer": "梱包機", + "gtceu.part_sharing.disabled": "マルチブロック間での共有: §4不可能", + "gtceu.part_sharing.enabled": "マルチブロック間での共有: §a可能", "gtceu.plasma_generator": "プラズマ発生機", "gtceu.polarizer": "磁化装置", "gtceu.primitive_blast_furnace": "初歩的な溶鉱炉", @@ -3516,8 +3518,6 @@ "gtceu.top.valid_structure": "構造に問題なし", "gtceu.top.working_disabled": "作業停止", "gtceu.universal.clear_nbt_recipe.tooltip": "§cこれによりすべてのコンテンツが破棄されます!", - "gtceu.universal.disabled": "マルチブロック間での共有: §4不可能", - "gtceu.universal.enabled": "マルチブロック間での共有: §a可能", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", "gtceu.universal.tooltip.amperage_in": "§e入力電流: §f%dA", diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index a245c6ec146..c5680b354e4 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -2110,6 +2110,8 @@ "gtceu.multiblock.work_paused": "Работа приостановлена.", "gtceu.ore_washer": "Рудопромывочная машина", "gtceu.packer": "Упаковщик", + "gtceu.part_sharing.disabled": "Совместное использование между структурами: §4Выключено", + "gtceu.part_sharing.enabled": "Совместное использование между структурами: §aВключено", "gtceu.plasma_generator": "Плазменный генератор", "gtceu.polarizer": "Поляризатор", "gtceu.primitive_blast_furnace": "Примитивная доменная печь", @@ -2190,8 +2192,6 @@ "gtceu.top.valid_structure": "Структура собрана", "gtceu.top.working_disabled": "Работа остановлена", "gtceu.universal.clear_nbt_recipe.tooltip": "§cЭто уничтожит весь контент!", - "gtceu.universal.disabled": "Совместное использование между структурами: §4Выключено", - "gtceu.universal.enabled": "Совместное использование между структурами: §aВключено", "gtceu.universal.tooltip.amperage_in": "§eСила потребляемого тока: §f%dA", "gtceu.universal.tooltip.amperage_in_out": "§eСила тока: §f%dA", "gtceu.universal.tooltip.amperage_in_out_till": "§eСила тока до: §f%dA", diff --git a/src/main/resources/assets/gtceu/lang/uk_ua.json b/src/main/resources/assets/gtceu/lang/uk_ua.json index a5e8ec19dec..ec2ec5f731d 100644 --- a/src/main/resources/assets/gtceu/lang/uk_ua.json +++ b/src/main/resources/assets/gtceu/lang/uk_ua.json @@ -2303,8 +2303,6 @@ "gtceu.universal.tooltip.base_production_fluid": "§eБазове виробництво:§f %d мВ/т", "gtceu.universal.tooltip.produces_fluid": "§eВиробляє:§f %d мВ/т", "gtceu.universal.tooltip.chunk_mode": "Режим чанків: ", - "gtceu.universal.disabled": "Спільний доступ конструкції§4 вимкнено", - "gtceu.universal.enabled": "Спільний доступ конструкції§a увімкнено", "gtceu.universal.tooltip.silk_touch": "Шовковий дотик: ", "gtceu.universal.tooltip.terrain_resist": "Ця машина не вибухне під час контакту з хім. елементами", "gtceu.universal.tooltip.uses_per_op": "Використовує§f %d EU на операцію", @@ -2318,7 +2316,7 @@ "command.gtceu.place_vein.failure": "Не вдалося розмістити жилу %s на позиції %s", "command.gtceu.place_vein.success": "Розміщено жилу %s на позиції %s", - "gtceu.gui.авто_output.name": "авто", + "gtceu.gui.auto_output.name": "авто", "gtceu.gui.charger_slot.tooltip.0": "§fГніздо для зарядного пристрою§r", "gtceu.gui.charger_slot.tooltip.1": "§7Живиться від %s акумуляторів§r", "gtceu.gui.charger_slot.tooltip.2": "§7Заряджає %s інструментів та акумуляторів", @@ -2414,7 +2412,8 @@ "gtceu.gui.toggle_view.disabled": "Перемкнути вид (Рідини)", "gtceu.gui.toggle_view.enabled": "Перемкнути вид (Предмети)", "gtceu.gui.waiting_list": "Черга на відправлення:", - + "gtceu.part_sharing.disabled": "Спільний доступ конструкції§4 вимкнено", + "gtceu.part_sharing.enabled": "Спільний доступ конструкції§a увімкнено", "item.gtceu.ash_dust": "Попіл", "item.gtceu.basaltic_mineral_sand_dust": "Базальтовий мінеральний пісок", "item.gtceu.bone_dust": "Кісткове борошно", diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index fb89c90e407..6e0bfd56fba 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -3389,6 +3389,8 @@ "gtceu.ownership.name.ftb": "FTB团队", "gtceu.ownership.name.player": "玩家", "gtceu.packer": "打包机", + "gtceu.part_sharing.disabled": "多方块结构共享:§4禁止", + "gtceu.part_sharing.enabled": "多方块结构共享:§a允许", "gtceu.plasma_generator": "等离子燃料", "gtceu.polarizer": "两极磁化机", "gtceu.primitive_blast_furnace": "土高炉", @@ -3579,8 +3581,6 @@ "gtceu.top.valid_structure": "结构已成型", "gtceu.top.working_disabled": "已暂停工作", "gtceu.universal.clear_nbt_recipe.tooltip": "§c这将清除所有内容物!", - "gtceu.universal.disabled": "多方块结构共享:§4禁止", - "gtceu.universal.enabled": "多方块结构共享:§a允许", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", "gtceu.universal.tooltip.amperage_in": "§e输入电流:§f%dA", diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index ec533b3e77c..9440ee33e3f 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -3389,6 +3389,8 @@ "gtceu.ownership.name.ftb": "FTB團隊", "gtceu.ownership.name.player": "玩家", "gtceu.packer": "打包機", + "gtceu.part_sharing.disabled": "多方塊結構共享:§4禁止", + "gtceu.part_sharing.enabled": "多方塊結構共享:§a允許", "gtceu.plasma_generator": "電漿燃料", "gtceu.polarizer": "兩極磁化機", "gtceu.primitive_blast_furnace": "土高爐", @@ -3579,8 +3581,6 @@ "gtceu.top.valid_structure": "結構已成型", "gtceu.top.working_disabled": "已暫停工作", "gtceu.universal.clear_nbt_recipe.tooltip": "§c這將清除所有內容物!", - "gtceu.universal.disabled": "多方塊結構共享:§4禁止", - "gtceu.universal.enabled": "多方塊結構共享:§a允許", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", "gtceu.universal.tooltip.amperage_in": "§e輸入電流:§f%dA", From b058c18779d0f5c2c1b3b301d9971f56f4d9b274 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 14 Jun 2025 02:32:48 -0600 Subject: [PATCH 044/270] Add a block tag for surface indicators (#3151) --- src/generated/resources/assets/gtceu/lang/en_ud.json | 1 + src/generated/resources/assets/gtceu/lang/en_us.json | 1 + .../java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java | 6 ++++++ .../com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java | 3 ++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 4a7da651717..e4ea9e45e6e 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -5517,6 +5517,7 @@ "tagprefix.spring": "buıɹdS %s", "tagprefix.stairs": "sɹıɐʇS %s", "tagprefix.stone": "ǝɹO %s", + "tagprefix.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "tagprefix.tiny_dust": "ʇsnᗡ %s ɟo ǝןıԀ ʎuı⟘", "tagprefix.tuff": "ǝɹO %s ɟɟn⟘", "tagprefix.turbine_blade": "ǝpɐןᗺ ǝuıqɹn⟘ %s", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index c9dcc8d43dc..f4946b2b17c 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -5517,6 +5517,7 @@ "tagprefix.spring": "%s Spring", "tagprefix.stairs": "%s Stairs", "tagprefix.stone": "%s Ore", + "tagprefix.surface_rock": "%s Surface Rock", "tagprefix.tiny_dust": "Tiny Pile of %s Dust", "tagprefix.tuff": "Tuff %s Ore", "tagprefix.turbine_blade": "%s Turbine Blade", diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index 0e026195c40..793d155890a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -947,6 +947,12 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); + public static final TagPrefix surfaceRock = new TagPrefix("surfaceRock") + .langValue("%s Surface Rock") + .defaultTagPath("surface_rocks/%s") + .unformattedTagPath("surface_rocks") + .materialAmount(GTValues.M / 3); + public static class Conditions { public static final Predicate hasToolProperty = mat -> mat.hasProperty(PropertyKey.TOOL); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 184dc5ea3e2..2734bc32767 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -115,7 +115,7 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) var oreTag = ore.getKey(); final TagPrefix.OreType oreType = ore.getValue(); String typePrefix = ""; - if (oreTag == TagPrefix.ore) { + if (oreTag != TagPrefix.ore) { typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.name) + "_"; } var entry = registrate.block("%s%s_ore".formatted(typePrefix, material.getName()), @@ -167,6 +167,7 @@ private static void registerOreIndicator(Material material, GTRegistrate registr .block("%s_indicator".formatted(material.getName()), p -> new SurfaceRockBlock(p, material)) .initialProperties(() -> Blocks.GRAVEL) .properties(p -> p.noLootTable().strength(0.25f)) + .transform(GTBlocks.unificationBlock(TagPrefix.surfaceRock, material)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .setData(ProviderType.BLOCKSTATE, NonNullBiConsumer.noop()) From 63e347c8644da3fbcd38d9d410fe588343e2d046 Mon Sep 17 00:00:00 2001 From: cewlboi <147581985+cewlboi@users.noreply.github.com> Date: Sat, 14 Jun 2025 03:50:12 -0500 Subject: [PATCH 045/270] Fix Electronic Circuit Recipe (#3133) --- .../com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java index 23837c3414a..25b3edbd70d 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java @@ -1029,7 +1029,7 @@ private static void circuitRecipes(Consumer provider) { CIRCUIT_ASSEMBLER_RECIPES.recipeBuilder("electronic_circuit_mv").EUt(VA[LV]).duration(300) .inputItems(GOOD_CIRCUIT_BOARD) - .inputItems(CustomTags.LV_CIRCUITS, 2) + .inputItems(ELECTRONIC_CIRCUIT_LV, 2) .inputItems(CustomTags.DIODES, 2) .inputItems(wireGtSingle, Copper, 2) .outputItems(ELECTRONIC_CIRCUIT_MV) From 0217fdfef870d1662e1c77b9cda7af127de78683 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:12:12 +0300 Subject: [PATCH 046/270] use `InteractionResult.sidedSuccess` instead of calling `Player#swing` manually (#3208) --- .../gtceu/api/block/PipeBlock.java | 3 +- .../api/blockentity/PipeBlockEntity.java | 9 +-- .../gtceu/api/cover/CoverBehavior.java | 3 +- .../gtceu/api/item/tool/ToolHelper.java | 15 ++-- .../gtceu/api/machine/MetaMachine.java | 74 +++++++------------ .../MultiblockControllerMachine.java | 6 +- .../cover/voiding/FluidVoidingCover.java | 3 +- .../cover/voiding/ItemVoidingCover.java | 3 +- .../tool/behavior/BlockRotatingBehavior.java | 19 +++-- .../item/tool/behavior/GrassPathBehavior.java | 5 +- .../item/tool/behavior/HoeGroundBehavior.java | 5 +- .../item/tool/behavior/LogStripBehavior.java | 5 +- .../item/tool/behavior/PlungerBehavior.java | 20 ++--- .../tool/behavior/RotateRailBehavior.java | 12 +-- .../item/tool/behavior/ScrapeBehavior.java | 5 +- .../tool/behavior/ToolModeSwitchBehavior.java | 8 ++ .../item/tool/behavior/WaxOffBehavior.java | 9 +-- .../machine/electric/BlockBreakerMachine.java | 3 +- .../machine/electric/FisherMachine.java | 3 +- .../electric/ItemCollectorMachine.java | 3 +- .../primitive/CharcoalPileIgniterMachine.java | 73 ++++++++---------- .../machine/storage/QuantumChestMachine.java | 3 +- .../machine/storage/QuantumTankMachine.java | 3 +- 23 files changed, 129 insertions(+), 163 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java index 235c3ebeeea..e8f3c2abe4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/PipeBlock.java @@ -323,8 +323,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player level.playSound(player, pos, type.getPlaceSound(), SoundSource.BLOCKS, (type.getVolume() + 1.0F) / 2.0F, type.getPitch() * 0.8F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(player.level().isClientSide); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index c660044b5e8..efd45f5a254 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -399,22 +399,19 @@ public Pair onToolClick(Set toolTypes boolean isOpen = this.isConnected(gridSide); this.setConnection(gridSide, !isOpen, false); } - playerIn.swing(hand); - return Pair.of(getPipeTuneTool(), InteractionResult.CONSUME); + return Pair.of(getPipeTuneTool(), InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } else if (toolTypes.contains(GTToolType.CROWBAR)) { if (coverBehavior != null) { if (!isRemote()) { getCoverContainer().removeCover(gridSide, playerIn); - playerIn.swing(hand); - return Pair.of(GTToolType.CROWBAR, InteractionResult.CONSUME); + return Pair.of(GTToolType.CROWBAR, InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } } else { if (!frameMaterial.isNull()) { Block.popResource(getLevel(), getPipePos(), GTMaterialBlocks.MATERIAL_BLOCKS.get(TagPrefix.frameGt, frameMaterial).asStack()); frameMaterial = GTMaterials.NULL; - playerIn.swing(hand); - return Pair.of(GTToolType.CROWBAR, InteractionResult.CONSUME); + return Pair.of(GTToolType.CROWBAR, InteractionResult.sidedSuccess(playerIn.level().isClientSide)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index aa5bcb76a9b..2cfcd5a12c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -160,8 +160,7 @@ public InteractionResult onScrewdriverClick(Player playerIn, InteractionHand han if (playerIn instanceof ServerPlayer serverPlayer) { CoverUIFactory.INSTANCE.openUI(this, serverPlayer); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index ae5797098ec..a28de32eb7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -562,19 +562,18 @@ public static HitResult getPlayerDefaultRaytrace(@NotNull Player player) { * Damages the item, plays the tool sound (if available), and swings the player's arm. * * @param player the player clicking the item - * @param world the world in which the click happened - * @param hand the hand holding the item + * @param stack the item that was used + * @param level the level in which the click happened + * @param pos the position that was clicked */ - public static void onActionDone(@NotNull Player player, @NotNull Level world, @NotNull InteractionHand hand) { - ItemStack stack = player.getItemInHand(hand); + public static void onActionDone(@Nullable Player player, @NotNull ItemStack stack, + @NotNull Level level, @NotNull Vec3 pos) { IGTTool tool = (IGTTool) stack.getItem(); ToolHelper.damageItem(stack, player); if (tool.getSound() != null) { - world.playSound(null, player.getX(), player.getY(), player.getZ(), tool.getSound().getMainEvent(), - SoundSource.PLAYERS, 1.0F, - 1.0F); + level.playSound(player, pos.x, pos.y, pos.z, tool.getSound().getMainEvent(), + SoundSource.PLAYERS, 1.0F, 1.0F); } - player.swing(hand); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index b30d7b37b28..ec3d41d3a37 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -348,8 +348,7 @@ protected InteractionResult onHardHammerClick(Player playerIn, InteractionHand h playerIn.sendSystemMessage(Component.translatable(mufflableMachine.isMuffled() ? "gtceu.machine.muffle.on" : "gtceu.machine.muffle.off")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return InteractionResult.PASS; } @@ -364,8 +363,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (gridSide == getFrontFacing() && allowExtendedFacing()) { setUpwardsFacing(playerIn.isShiftKeyDown() ? getUpwardsFacing().getCounterClockWise() : getUpwardsFacing().getClockWise()); - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(isRemote()); } if (playerIn.isShiftKeyDown()) { if (gridSide == getFrontFacing() || !isFacingValid(gridSide)) { @@ -374,63 +372,52 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (!isRemote()) { setFrontFacing(gridSide); } - playerIn.swing(hand); - return InteractionResult.CONSUME; } else { - if (isRemote()) - return InteractionResult.CONSUME; + if (isRemote()) return InteractionResult.SUCCESS; + var itemStack = playerIn.getItemInHand(hand); var tagCompound = getBehaviorsTag(itemStack); ToolModeSwitchBehavior.WrenchModeType type = ToolModeSwitchBehavior.WrenchModeType.values()[tagCompound .getByte("Mode")]; - if (type == ToolModeSwitchBehavior.WrenchModeType.ITEM || - type == ToolModeSwitchBehavior.WrenchModeType.BOTH) { + if (type.isItem()) { if (this instanceof IAutoOutputItem autoOutputItem && (!hasFrontFacing() || gridSide != getFrontFacing())) { autoOutputItem.setOutputFacingItems(gridSide); } } - if (type == ToolModeSwitchBehavior.WrenchModeType.FLUID || - type == ToolModeSwitchBehavior.WrenchModeType.BOTH) { + if (type.isFluid()) { if (this instanceof IAutoOutputFluid autoOutputFluid && (!hasFrontFacing() || gridSide != getFrontFacing())) { autoOutputFluid.setOutputFacingFluids(gridSide); } } - playerIn.swing(hand); - return InteractionResult.CONSUME; } + return InteractionResult.sidedSuccess(isRemote()); } protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); - if (controllable != null) { - if (!isRemote()) { - if (!playerIn.isShiftKeyDown() || !controllable.isWorkingEnabled()) { - controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); - playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? - "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")); - } else { - controllable.setSuspendAfterFinish(true); - playerIn.sendSystemMessage(Component.translatable("behaviour.soft_hammer.idle_after_cycle")); - } + if (controllable == null) return InteractionResult.PASS; + if (!isRemote()) { + if (!playerIn.isShiftKeyDown() || !controllable.isWorkingEnabled()) { + controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); + playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? + "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")); + } else { + controllable.setSuspendAfterFinish(true); + playerIn.sendSystemMessage(Component.translatable("behaviour.soft_hammer.idle_after_cycle")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; } - return InteractionResult.PASS; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - var itemStack = playerIn.getItemInHand(hand); - var tagCompound = getBehaviorsTag(itemStack); - if (isRemote()) - return InteractionResult.CONSUME; + if (isRemote()) return InteractionResult.SUCCESS; if (playerIn.isShiftKeyDown()) { - boolean flag = false; + boolean changed = false; if (this instanceof IAutoOutputItem autoOutputItem) { if (autoOutputItem.getOutputFacingItems() == gridSide) { autoOutputItem.setAllowInputFromOutputSideItems(!autoOutputItem.isAllowInputFromOutputSideItems()); @@ -438,7 +425,7 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand .translatable("gtceu.machine.basic.input_from_output_side." + (autoOutputItem.isAllowInputFromOutputSideItems() ? "allow" : "disallow")) .append(Component.translatable("gtceu.creative.chest.item")), true); - flag = true; + changed = true; } } if (this instanceof IAutoOutputFluid autoOutputFluid) { @@ -449,31 +436,29 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand .translatable("gtceu.machine.basic.input_from_output_side." + (autoOutputFluid.isAllowInputFromOutputSideFluids() ? "allow" : "disallow")) .append(Component.translatable("gtceu.creative.tank.fluid")), true); - flag = true; + changed = true; } } - if (flag) { - playerIn.swing(hand); - return InteractionResult.SUCCESS; + if (changed) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } } else { - boolean flag = false; + boolean changed = false; if (this instanceof IAutoOutputItem autoOutputItem) { if (autoOutputItem.getOutputFacingItems() == gridSide) { autoOutputItem.setAutoOutputItems(!autoOutputItem.isAutoOutputItems()); - flag = true; + changed = true; } } if (this instanceof IAutoOutputFluid autoOutputFluid) { if (autoOutputFluid.getOutputFacingFluids() == gridSide) { autoOutputFluid.setAutoOutputFluids(!autoOutputFluid.isAutoOutputFluids()); - flag = true; + changed = true; } } - if (flag) { - playerIn.swing(hand); - return InteractionResult.SUCCESS; + if (changed) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } } return InteractionResult.PASS; @@ -585,9 +570,6 @@ public final boolean hasFrontFacing() { } public boolean isFacingValid(Direction facing) { - if (allowExtendedFacing()) { - return true; - } if (hasFrontFacing() && facing == getFrontFacing()) return false; var coverContainer = getCoverContainer(); if (coverContainer.hasCover(facing)) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index a00f0ea4175..4b97e34b9de 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -259,8 +259,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (gridSide == getFrontFacing() && allowExtendedFacing()) { setUpwardsFacing(playerIn.isShiftKeyDown() ? getUpwardsFacing().getCounterClockWise() : getUpwardsFacing().getClockWise()); - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } if (playerIn.isShiftKeyDown()) { if (gridSide == getFrontFacing() || !isFacingValid(gridSide)) { @@ -269,8 +268,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (!isRemote()) { setFrontFacing(gridSide); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java index 23ea7a8e9e4..eae589d72a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java @@ -118,8 +118,7 @@ public InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand playerIn.sendSystemMessage(Component.translatable(isWorkingEnabled() ? "cover.voiding.message.enabled" : "cover.voiding.message.disabled")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } // TODO: Decide grid behavior diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java index 2e6f387638d..9015aea95cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java @@ -114,8 +114,7 @@ public InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand playerIn.sendSystemMessage(Component.translatable(isWorkingEnabled() ? "cover.voiding.message.enabled" : "cover.voiding.message.disabled")); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } // TODO: Decide grid behavior diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java index 7d645ec0a3e..df33c4c90df 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java @@ -57,19 +57,22 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { return InteractionResult.FAIL; } - if (!player.isShiftKeyDown()) { + if (player == null || !player.isShiftKeyDown()) { // Special cases for vanilla blocks where the default rotation behavior is less than ideal ICustomRotationBehavior behavior = CustomBlockRotations.getCustomRotation(b); if (behavior != null) { if (behavior.customRotate(state, level, pos, retraceBlock(level, player, pos))) { - ToolHelper.onActionDone(player, level, context.getHand()); - return InteractionResult.SUCCESS; + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } - } else if (state.rotate(player.getDirection().getClockWise() == context.getClickedFace() ? - Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90) != state) { - ToolHelper.onActionDone(player, level, context.getHand()); - return InteractionResult.SUCCESS; - } + } else { + Rotation rot = player == null || player.getDirection().getClockWise() == context.getClickedFace() ? + Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90; + if (state.rotate(level, pos, rot) != state) { + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); + } + } } return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java index 9714f106d83..afe621ba97e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java @@ -92,10 +92,9 @@ public InteractionResult onItemUse(UseOnContext context) { } if (pathed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.SHOVEL_FLATTEN, + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.SHOVEL_FLATTEN, SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java index b43c0e319c6..40c6dba91dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java @@ -92,10 +92,9 @@ public InteractionResult onItemUse(UseOnContext context) { } if (tilled) { - world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.HOE_TILL, + world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.HOE_TILL, SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(player.level().isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java index 9c03bf4d06c..b0b4fef9c48 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java @@ -86,10 +86,9 @@ public InteractionResult onItemUse(UseOnContext context) { } if (stripped) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_STRIP, + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_STRIP, SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java index 48766c72a6f..154473063f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java @@ -9,6 +9,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; @@ -43,21 +44,20 @@ public boolean shouldOpenUIAfterUse(UseOnContext context) { @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - if (context.getPlayer() == null || !context.getPlayer().isShiftKeyDown()) { + Player player = context.getPlayer(); + Level level = context.getLevel(); + if (player != null && !player.isShiftKeyDown()) { return InteractionResult.PASS; } IFluidHandler fluidHandler; - - if (context.getLevel() - .getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity metaMachineBlockEntity) { - fluidHandler = metaMachineBlockEntity.getMetaMachine().getFluidHandlerCap(context.getClickedFace(), false); + if (level.getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity mmbe) { + fluidHandler = mmbe.getMetaMachine().getFluidHandlerCap(context.getClickedFace(), false); } else { - fluidHandler = FluidUtil - .getFluidHandler(context.getLevel(), context.getClickedPos(), context.getClickedFace()).resolve() + // noinspection DataFlowIssue + fluidHandler = FluidUtil.getFluidHandler(level, context.getClickedPos(), context.getClickedFace()) .orElse(null); } - if (fluidHandler == null) { return InteractionResult.PASS; } @@ -65,8 +65,8 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { FluidStack drained = fluidHandler.drain(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.SIMULATE); if (!drained.isEmpty()) { fluidHandler.drain(FluidType.BUCKET_VOLUME, IFluidHandler.FluidAction.EXECUTE); - ToolHelper.onActionDone(context.getPlayer(), context.getLevel(), context.getHand()); - return InteractionResult.CONSUME; + ToolHelper.onActionDone(player, stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java index 0132624f368..db2576decf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; @@ -28,12 +29,13 @@ protected RotateRailBehavior() {/**/} @NotNull @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + BlockState state = level.getBlockState(pos); if (state.getBlock() instanceof BaseRailBlock) { - if (context.getLevel().setBlock(context.getClickedPos(), state.rotate(Rotation.CLOCKWISE_90), - Block.UPDATE_ALL)) { - ToolHelper.onActionDone(context.getPlayer(), context.getLevel(), context.getHand()); - return InteractionResult.SUCCESS; + if (level.setBlock(pos, state.rotate(level, pos, Rotation.CLOCKWISE_90), Block.UPDATE_ALL)) { + ToolHelper.onActionDone(context.getPlayer(), stack, level, context.getClickLocation()); + return InteractionResult.sidedSuccess(level.isClientSide); } } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java index b6ef0098ea1..b9002464ca6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java @@ -88,10 +88,9 @@ public InteractionResult onItemUse(UseOnContext context) { } if (pathed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, + level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java index 6c7f70e1c54..45cbc153921 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java @@ -80,5 +80,13 @@ public enum WrenchModeType { WrenchModeType(Component name) { this.name = name; } + + public boolean isItem() { + return this == ITEM || this == BOTH; + } + + public boolean isFluid() { + return this == FLUID || this == BOTH; + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java index 325be349a09..c78823a3aa8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java @@ -73,9 +73,9 @@ public InteractionResult onItemUse(UseOnContext context) { } else return InteractionResult.PASS; - boolean pathed = false; + boolean waxed = false; for (BlockPos blockPos : blocks) { - pathed |= level.setBlock(blockPos, + waxed |= level.setBlock(blockPos, getUnWaxed(level.getBlockState(blockPos), new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), Block.UPDATE_ALL); @@ -87,11 +87,10 @@ public InteractionResult onItemUse(UseOnContext context) { break; } - if (pathed) { + if (waxed) { level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, SoundSource.PLAYERS, 1.0F, 1.0F); - player.swing(hand); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(player.level().isClientSide); } return InteractionResult.PASS; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index d048880b85f..d1ef73b5df4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -471,8 +471,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 0fb1f98b09e..270ae10eb4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -531,8 +531,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 134c62c0592..0296184879d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -538,8 +538,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, // remove the output facing when wrenching the current one to disable it setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index 1cbf95e7e84..8b6ea160e46 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -21,15 +21,16 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.FireChargeItem; -import net.minecraft.world.item.FlintAndSteelItem; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; @@ -40,6 +41,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import lombok.Getter; import java.util.*; @@ -78,6 +80,7 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private int fDist = 0; @DescSynced private int hDist = 0; + @Getter @DescSynced @RequireRerender private boolean isActive; @@ -131,11 +134,6 @@ public int getMaxProgress() { return maxTime; } - @Override - public boolean isActive() { - return isActive; - } - @Override public boolean isWorkingEnabled() { return true; @@ -359,47 +357,40 @@ private void convertLogBlocks() { } @Override - public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, + public InteractionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - BlockEntity be = world.getBlockEntity(pos); + ItemStack stack = player.getItemInHand(hand); + if (!stack.is(ItemTags.CREEPER_IGNITERS)) { + return super.onUse(state, level, pos, player, hand, hit); + } + + BlockEntity be = level.getBlockEntity(pos); if (be instanceof IMachineBlockEntity machineBe) { MetaMachine mte = machineBe.getMetaMachine(); - if (mte instanceof CharcoalPileIgniterMachine cpi && cpi.isFormed()) { - if (world.isClientSide) { - player.swing(hand); - } else if (!cpi.isActive()) { - boolean shouldActivate = false; - ItemStack stack = player.getItemInHand(hand); - if (stack.getItem() instanceof FlintAndSteelItem) { - stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); - getLevel().playSound(null, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, 1.0f, 1.0f); - - shouldActivate = true; - } else if (stack.getItem() instanceof FireChargeItem) { - stack.shrink(1); - - getLevel().playSound(null, pos, SoundEvents.FIRECHARGE_USE, SoundSource.PLAYERS, 1.0f, 1.0f); - - shouldActivate = true; - } else if (stack.getItem() instanceof ComponentItem compItem) { - for (var component : compItem.getComponents()) { - if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { - getLevel().playSound(null, pos, SoundEvents.FIRECHARGE_USE, SoundSource.PLAYERS, 1.0f, - 1.0f); - - shouldActivate = true; - break; - } + if (mte instanceof CharcoalPileIgniterMachine cpi && cpi.isFormed() && !cpi.isActive()) { + boolean isLighter = false; + SoundEvent sound = stack.is(Items.FIRE_CHARGE) ? SoundEvents.FIRECHARGE_USE : + SoundEvents.FLINTANDSTEEL_USE; + + if (stack.getItem() instanceof ComponentItem compItem) { + for (var component : compItem.getComponents()) { + if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { + isLighter = true; + break; } } - - if (shouldActivate) { - cpi.setActive(true); - return InteractionResult.CONSUME; - } } + if (!isLighter && stack.isDamageableItem()) { + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); + } else if (!isLighter) { + stack.shrink(1); + } + + level.playSound(null, pos, sound, SoundSource.PLAYERS, 1.0f, 1.0f); + cpi.setActive(true); + return InteractionResult.sidedSuccess(level.isClientSide); } } - return super.onUse(state, world, pos, player, hand, hit); + return super.onUse(state, level, pos, player, hand, hit); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index 244ca59f1c0..1b1c49116ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -313,8 +313,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, } else { setOutputFacingItems(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 4894b634133..93846e5fbaf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -277,8 +277,7 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, } else { setOutputFacingFluids(null); } - playerIn.swing(hand); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); From dd3ddd36eac7f7c8129918c96667fbf3ab9a7de4 Mon Sep 17 00:00:00 2001 From: nutant <65939836+nutant233@users.noreply.github.com> Date: Sat, 14 Jun 2025 17:27:33 +0800 Subject: [PATCH 047/270] Fixed large boiler explodes when loading the world (#3022) Co-authored-by: suried --- .../multiblock/steam/LargeBoilerMachine.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index e11e2b8aa4a..0493cfc45e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -80,14 +80,30 @@ public ManagedFieldHolder getFieldHolder() { ////////////////////////////////////// @Override - public void onLoad() { - super.onLoad(); + public void onStructureFormed() { + super.onStructureFormed(); + if (getLevel() instanceof ServerLevel serverLevel) { + serverLevel.getServer().tell(new TickTask(0, this::updateSteamSubscription)); + } + } + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); if (getLevel() instanceof ServerLevel serverLevel) { serverLevel.getServer().tell(new TickTask(0, this::updateSteamSubscription)); } } + @Override + public void onUnload() { + if (temperatureSubs != null) { + temperatureSubs.unsubscribe(); + temperatureSubs = null; + } + super.onUnload(); + } + protected void updateSteamSubscription() { if (currentTemperature > 0) { temperatureSubs = subscribeServerTick(temperatureSubs, this::updateCurrentTemperature); @@ -108,11 +124,11 @@ protected void updateCurrentTemperature() { currentTemperature -= getCoolDownRate(); } - if (getOffsetTimer() % TICKS_PER_STEAM_GENERATION == 0) { + if (isFormed() && getOffsetTimer() % TICKS_PER_STEAM_GENERATION == 0) { // drain water - var maxDrain = currentTemperature * throttle * TICKS_PER_STEAM_GENERATION / + double maxDrain = (double) (currentTemperature * throttle * TICKS_PER_STEAM_GENERATION) / (ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater * 100); - var drainWater = List.of(FluidIngredient.of(maxDrain, Fluids.WATER)); + var drainWater = List.of(FluidIngredient.of(Math.max(1, (int) Math.ceil(maxDrain)), Fluids.WATER)); List> inputTanks = new ArrayList<>(); inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); @@ -133,11 +149,11 @@ protected void updateCurrentTemperature() { break; } } - var drained = (drainWater == null || drainWater.isEmpty()) ? maxDrain : + double drained = (drainWater == null || drainWater.isEmpty()) ? maxDrain : maxDrain - drainWater.get(0).getAmount(); boolean hasDrainedWater = drained > 0; - steamGenerated = drained * ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater; + steamGenerated = (int) (drained * ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater); if (hasDrainedWater) { // fill steam From 6d1953a6a81490d7ec1f29815779915fea138086 Mon Sep 17 00:00:00 2001 From: Kovrax Date: Sat, 14 Jun 2025 17:51:43 +0800 Subject: [PATCH 048/270] Fix Large Boilers exploding when throttle is too low (#3064) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../multiblock/steam/LargeBoilerMachine.java | 35 ++++++------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index 0493cfc45e5..43de48374a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -57,8 +57,6 @@ public class LargeBoilerMachine extends WorkableMultiblockMachine implements IEx @Persisted @Getter private int currentTemperature, throttle; - @Getter - private boolean hasNoWater; @Nullable protected TickableSubscription temperatureSubs; private int steamGenerated; @@ -125,37 +123,28 @@ protected void updateCurrentTemperature() { } if (isFormed() && getOffsetTimer() % TICKS_PER_STEAM_GENERATION == 0) { - // drain water - double maxDrain = (double) (currentTemperature * throttle * TICKS_PER_STEAM_GENERATION) / + var maxDrain = currentTemperature * throttle * TICKS_PER_STEAM_GENERATION / (ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater * 100); - var drainWater = List.of(FluidIngredient.of(Math.max(1, (int) Math.ceil(maxDrain)), Fluids.WATER)); - List> inputTanks = new ArrayList<>(); - inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); - inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); if (currentTemperature < 100) { steamGenerated = 0; - for (IRecipeHandler tank : inputTanks) { - drainWater = (List) tank.handleRecipe(IO.IN, null, drainWater, true); - this.hasNoWater = !(drainWater == null || drainWater.isEmpty() || - drainWater.get(0).getAmount() > 0); - if (!this.hasNoWater) { - break; - } - } - } else { + } else if (maxDrain > 0) { // if maxDrain is 0 because throttle is too low, skip trying to make steam + // drain water + var drainWater = List.of(FluidIngredient.of(maxDrain, Fluids.WATER)); + List> inputTanks = new ArrayList<>(); + inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); + inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); for (IRecipeHandler tank : inputTanks) { drainWater = (List) tank.handleRecipe(IO.IN, null, drainWater, false); if (drainWater == null || drainWater.isEmpty()) { break; } } - double drained = (drainWater == null || drainWater.isEmpty()) ? maxDrain : + var drained = (drainWater == null || drainWater.isEmpty()) ? maxDrain : maxDrain - drainWater.get(0).getAmount(); - boolean hasDrainedWater = drained > 0; - steamGenerated = (int) (drained * ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater); + steamGenerated = drained * ConfigHolder.INSTANCE.machines.largeBoilers.steamPerWater; - if (hasDrainedWater) { + if (drained > 0) { // fill steam var fillSteam = List.of(FluidIngredient.of(GTMaterials.Steam.getFluid(steamGenerated))); List> outputTanks = new ArrayList<>(); @@ -168,7 +157,7 @@ protected void updateCurrentTemperature() { } // check explosion - if (this.hasNoWater && hasDrainedWater) { + if (drained < maxDrain) { doExplosion(2f); var center = getPos().below().relative(getFrontFacing().getOpposite()); if (GTValues.RNG.nextInt(100) > 80) { @@ -181,8 +170,6 @@ protected void updateCurrentTemperature() { } } } - } else { - this.hasNoWater = !hasDrainedWater; } } } From 8a32b1d61ce31ab3fe77db1626ee3c1230d3ec61 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 14 Jun 2025 03:51:59 -0600 Subject: [PATCH 049/270] Adds Fluid Stack capability to Research Entries (#3106) --- .../api/recipe/ResearchRecipeBuilder.java | 26 +++++++++++---- .../data/recipe/builder/GTRecipeBuilder.java | 6 ++-- .../gtceu/utils/GTStringUtils.java | 7 ++++ .../gtceu/utils/ResearchManager.java | 33 +++++++++++++------ 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java index 4062abf3362..74e4d163bcb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java @@ -9,20 +9,29 @@ import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; public abstract class ResearchRecipeBuilder> { - protected ItemStack researchStack; + protected ItemStack itemResearchStack = ItemStack.EMPTY; + protected FluidStack fluidResearchStack = FluidStack.EMPTY; protected ItemStack dataStack; protected String researchId; protected int eut; public T researchStack(@NotNull ItemStack researchStack) { if (!researchStack.isEmpty()) { - this.researchStack = researchStack; + this.itemResearchStack = researchStack; + } + return (T) this; + } + + public T researchFluidStack(@NotNull FluidStack researchStack) { + if (!researchStack.isEmpty()) { + this.fluidResearchStack = researchStack; } return (T) this; } @@ -45,12 +54,13 @@ public T EUt(int eut) { } protected void validateResearchItem() { - if (researchStack == null) { - throw new IllegalArgumentException("Research stack cannot be null or empty!"); + if (itemResearchStack.isEmpty() && fluidResearchStack.isEmpty()) { + throw new IllegalArgumentException("Research recipe must have an item or fluid stack!"); } if (researchId == null) { - researchId = GTStringUtils.itemStackToString(researchStack); + if (!itemResearchStack.isEmpty()) researchId = GTStringUtils.itemStackToString(itemResearchStack); + else researchId = GTStringUtils.fluidStackToString(fluidResearchStack); } if (dataStack == null) { @@ -100,7 +110,8 @@ public GTRecipeBuilder.ResearchRecipeEntry build() { validateResearchItem(); if (duration <= 0) duration = DEFAULT_SCANNER_DURATION; if (eut <= 0) eut = DEFAULT_SCANNER_EUT; - return new GTRecipeBuilder.ResearchRecipeEntry(researchId, researchStack, dataStack, duration, eut, 0); + return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, + duration, eut, 0); } } @@ -147,7 +158,8 @@ public GTRecipeBuilder.ResearchRecipeEntry build() { int duration = totalCWU; if (eut <= 0) eut = DEFAULT_STATION_EUT; - return new GTRecipeBuilder.ResearchRecipeEntry(researchId, researchStack, dataStack, duration, eut, cwut); + return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, + duration, eut, cwut); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index b70ea3ec435..5a7066a4115 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -1511,13 +1511,15 @@ public int getSolderMultiplier() { * An entry for an autogenerated research recipe for producing a data item containing research data. * * @param researchId the id of the research to store - * @param researchStack the stack to scan for research + * @param researchItem the item stack to scan for research + * @param researchFluid the fluid stack to scan for research * @param dataStack the stack to contain the data * @param duration the duration of the recipe * @param EUt the EUt of the recipe * @param CWUt how much computation per tick this recipe needs if in Research Station */ - public record ResearchRecipeEntry(@NotNull String researchId, @NotNull ItemStack researchStack, + public record ResearchRecipeEntry(@NotNull String researchId, + @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, @NotNull ItemStack dataStack, int duration, int EUt, int CWUt) { } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java index 8565b27e242..7ff60bee2da 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java @@ -3,6 +3,7 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -20,4 +21,10 @@ public static String itemStackToString(@NotNull ItemStack stack) { ResourceLocation itemId = BuiltInRegistries.ITEM.getKey(stack.getItem()); return stack.getCount() + "x_" + itemId.getNamespace() + "_" + itemId.getPath(); } + + @NotNull + public static String fluidStackToString(@NotNull FluidStack stack) { + ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(stack.getFluid()); + return stack.getAmount() + "x_" + fluidId.getNamespace() + "_" + fluidId.getPath(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java index 30b8c36fce4..3bdad1e68fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java @@ -20,6 +20,7 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.wrapper.CombinedInvWrapper; @@ -119,13 +120,18 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeBuilder builder, if (!ConfigHolder.INSTANCE.machines.enableResearch) return; for (GTRecipeBuilder.ResearchRecipeEntry entry : builder.researchRecipeEntries()) { - createDefaultResearchRecipe(builder.recipeType, entry.researchId(), entry.researchStack(), + if (entry.researchItem().isEmpty() && entry.researchFluid().isEmpty()) + throw new IllegalStateException("Both entry types in the research entry are null!"); + + createDefaultResearchRecipe(builder.recipeType, entry.researchId(), entry.researchItem(), + entry.researchFluid(), entry.dataStack(), entry.duration(), entry.EUt(), entry.CWUt(), provider); } } public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, @NotNull String researchId, - @NotNull ItemStack researchItem, @NotNull ItemStack dataItem, + @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, + @NotNull ItemStack dataItem, int duration, int EUt, int CWUt, Consumer provider) { if (!ConfigHolder.INSTANCE.machines.enableResearch) return; @@ -133,19 +139,26 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, writeResearchToNBT(compound, researchId, recipeType); if (CWUt > 0) { - GTRecipeTypes.RESEARCH_STATION_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) - .inputItems(dataItem.getItem()) - .inputItems(researchItem) - .outputItems(dataItem) + var builder = GTRecipeTypes.RESEARCH_STATION_RECIPES + .recipeBuilder(researchId) + .inputItems(dataItem.getItem()); + + if (!researchItem.isEmpty()) builder.inputItems(researchItem); + if (!researchFluid.isEmpty()) builder.inputFluids(researchFluid); + + builder.outputItems(dataItem) .EUt(EUt) .CWUt(CWUt) .totalCWU(duration) .save(provider); } else { - GTRecipeTypes.SCANNER_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) - .inputItems(dataItem.getItem()) - .inputItems(researchItem) - .outputItems(dataItem) + var builder = GTRecipeTypes.SCANNER_RECIPES.recipeBuilder(FormattingUtil.toLowerCaseUnderscore(researchId)) + .inputItems(dataItem.getItem()); + + if (!researchItem.isEmpty()) builder.inputItems(researchItem); + if (!researchFluid.isEmpty()) builder.inputFluids(researchFluid); + + builder.outputItems(dataItem) .duration(duration) .EUt(EUt) .researchScan(true) From d36a44cdf7de650e98151318567aeb5ff3fd2309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Sat, 14 Jun 2025 12:25:27 +0200 Subject: [PATCH 050/270] Change Substation Casing color to match Palladium's color (#3227) Co-authored-by: GirixK --- .../machine_casing_palladium_substation.png | Bin 490 -> 493 bytes .../machine_casing_palladium_substation_ctm.png | Bin 843 -> 928 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png b/src/main/resources/assets/gtceu/textures/block/casings/solid/machine_casing_palladium_substation.png index ec56c9556c534c2d6b9206b82afe1475ea8f1561..553fe0c74d0df513a1f465d11eaeab6d4ce22854 100644 GIT binary patch delta 449 zcmV;y0Y3if1MLHlB#}WCf1gQ2K~y*qjZ;5Q!cY)DghfWu1~eu`KY%j>CWwijL1ZF? zfzcHg2TU0K046L(9UWLPg*dP(oq=kDl#&RGE}F{kUS6qCqnGr(dw0M4e+`w=IakxR z31pgmk~|9n4nL;dx+kjUE3WIf{C#%cU3^!S%YVxv2=X=hAltS%f1cwwd=DQ7BzYDD z;9Bh_MUc`m4a^?Z>pe17)OCDou)_ zcurMSWxmn4;~UN;b`6sJNs;!m2doS-MlawHI?z$>mZ=UT1G4U_fD$fpCSvYr7)VAA!to+8%6GsJqvCGQ_BsrA`4!2USmK4A9vhuIDIq1_j?}rfNpgJ*&00000NkvXXu0mjfmru+) delta 444 zcmV;t0Ym=n1L^~iBpLy8Qb$4nuFf3k00004XF*Lt006O%3;baPks%m=e@R3^R5(w4 zQ$0_@P!zpYCPq>Mx&V{TvXHnS4*UgmBN7re^%uC9Fp{{Mu&JvFGbtn{tZ0*t(9mcL z4DbuE=fZt9FNKq|_rBBn@$N^BYPGV?kgj}cd!Wrbe3tWP2+uP$m;G8`= zW*u@k{EW5Z6726UK1ilg>6}c{WF1JS(=5B)50(fnwg-5jITw{nCgPk?FF1SyuC8yW zR;#nl0R)Kb|NhWou~3iWI7-JiE-jngdTdLOu>h#ITrR6_1DQ;JhNWd$93%>L16)(; zLbGs|F(Mc^IKw8I@UU1sd-SFr&1L~DS4;A|DWy^-C6h_jJOo0cB?0U$t4FKQ-e@## z*ZL;5T2HEBfMnL~n$7xVk@O7%Fn4{C;_P^lbifg#l5WEh|3Vx#i==HBGJ=avLO319 m=}BRo%kTe%cfp+(jOh>RVfyMM4x(=W0000$C7@St{(fqG-0dz`&)&VMc0czkfBH*HH>;_ssfm2Y z-@bLDsulF`@Gu9&f%H;pOkyOWakQUj{A=%L=GP(+v?K&nFjYn45PEx{t;XiD3QS+F*v*vGaAm${X~2m<1;1TB$SAQy%Hnq zC~5UeZ4>{}%;j9=fBIhs_oXDUQu3Z~ErMD%(vSMRAG;YcbLDF4Goz|EQo9{Z<}AK&HNco*Ne4ke z)yhe1oA`sl&Ix$?Z-cu-^`lQBdeZ6CjMHeVRE(Q4$L>zRimO)=Ogx6-c}pMepubbq z+uPfW(|VFQL0sG+M@&hSW+`6p>z8yK8ArY_YU_=SSE=uJx{R^y558rU%8f$joIXji zIaM9*4cWa?f9QA(>u&c^2Kd_G4DlnwI66TGuQU8}i4}@tuxo2CM;|2FIJ`fUd6P5Q z;3fR5*LDfQ~FIiuIUWwa!z5F756Y60B zqzlG3Bsw31o3z37UTBtJJsHLb{#u()-ybQUXL%m-f5^>o!hgaqz6Jj)I1@+}&`i$L zdfA2d<&$nw>wI{vPj5e_J)rVUI^cJZhKzg2v6`6coL}4n z0FX&!YznGYSZosMVsPx@o!SFhqo#E|3xo4gaIcz@%x?h-zfAnz7g((>5shiZU0AqY zJoCcpZktd(YJONs{N9i6g4=|r6%PB#%7bJomE324|H;Gr#?;))+PSdvP9Oac&bF*i zA?)86M^I)(1)_LxFelyuej+10jTaF_ynkQ+aOr6@&^(x*zAG!!9ni4<9GEZn4VWd-pH5pGG4 zC~cYq1U0SgGvSPmuV)sV%_j|eclMsSGk51_DUC*>JGWuETy8Aqs@3Yoa;{dZ`Rih_ z@K?R>bUwMOtDzf@$KF1FK7QjWl}b{t{_VG~U5212)9KW$Rx4is>ro(_OeUd&_8zDW zs70~<^Z7j3ng4wNy=GA`5;}8Kyx#?@Z#4G34H_@^UB(gf3K(eD;24pTr?>bFAUH=J z6BBz6-J=mb*xJrEJ@6f{!GSu*8qRO z79&qjXh-J&VVw#Ib$O)px@`R_P)9oF1qT>CJE1!p*`_BM95pbA)d8klgU86z&t^B9 zyTACeK%v;epfnwmKrMHwXFTZ(1_w*FEk#qyDbAWvSSz>muZ>07XoQCC2ryCsf-4J`y*+xK2XR{N_ z*4f#)D-8yN@I?gJb0w8(K!5lQhu_`7!K+7;6wj%LeQ|Mr?%M5lp{{gvbQn6Y%WF{d zHBgHVAngcXg9CH`P+R)a{p>q{cSkq^PB?%%y$3q6RL}E*!GU&$puJMR-@ntPMRpOB zBKpGL14Z>d0~>oMV(VGczYY7^!YbehQfn4y9k3$>&(%lgK&;`sG#1ep{vIf*e=-O7 zj`H5?HXk&59t*BnBmcA!=>|k%8<7Pa;5T8|h}P?M=z#9~c7L~L0-+zCpPY1`Y{i75 zM+bVnuc1Bv@0ha`*qNG|!4{18^t2cL9V?o8oW3{!nV~ZNA_E+a&jBA306H|NXu#BV e4L*K&@9qKSH|6vYp>whT0000 Date: Mon, 16 Jun 2025 18:53:17 +0800 Subject: [PATCH 051/270] Make thorium and magnesite ores obtainable again (#3234) --- src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java index 709ec79ca59..d97de5f9964 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java @@ -177,7 +177,7 @@ public class GTOres { .dikeVeinGenerator(generator -> generator .withBlock(new DikeBlockDefinition(Beryllium, 3, 5, 30)) .withBlock(new DikeBlockDefinition(Emerald, 2, 5, 19)) - .withBlock(new DikeBlockDefinition(Emerald, 2, 16, 30))) + .withBlock(new DikeBlockDefinition(Thorium, 1, 16, 30))) .surfaceIndicatorGenerator(indicator -> indicator .surfaceRock(Beryllium) .placement(SurfaceIndicatorGenerator.IndicatorPlacement.ABOVE))); @@ -659,7 +659,7 @@ public class GTOres { .layeredVeinGenerator(generator -> generator .withLayerPattern(() -> GTLayerPattern.builder(OVERWORLD_RULES) .layer(l -> l.weight(3).mat(Bentonite).size(2, 4)) - .layer(l -> l.weight(2).mat(Magnetite).size(1, 1)) + .layer(l -> l.weight(2).mat(Magnesite).size(1, 1)) .layer(l -> l.weight(2).mat(Olivine).size(1, 1)) .layer(l -> l.weight(1).mat(GlauconiteSand).size(1, 1)) .build())) From 2c0cd4bdbaccd02778519b80bfe9ba71864a89f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Mon, 16 Jun 2025 13:00:10 +0200 Subject: [PATCH 052/270] Remove muffler hatch requirement from Large Brewing Vat (#3231) Co-authored-by: GirixK --- .../gregtechceu/gtceu/common/data/machines/GCYMMachines.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index aeffc89d3ef..0a23895b400 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -572,7 +572,7 @@ public static void init() {} .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#####") .aisle("XXXXX", "XCCCX", "XAAAX", "XXAXX", "##X##") - .aisle("XXXXX", "XCPCX", "XAPAX", "XAPAX", "#XMX#") + .aisle("XXXXX", "XCPCX", "XAPAX", "XAPAX", "#XXX#") .aisle("XXXXX", "XCCCX", "XAAAX", "XXAXX", "##X##") .aisle("#XXX#", "#XSX#", "#XXX#", "#XXX#", "#####") .where('S', controller(blocks(definition.get()))) @@ -581,7 +581,6 @@ public static void init() {} .or(autoAbilities(true, false, true))) .where('P', blocks(CASING_STEEL_PIPE.get())) .where('C', blocks(MOLYBDENUM_DISILICIDE_COIL_BLOCK.get())) - .where('M', abilities(MUFFLER)) .where('A', air()) .where('#', any()) .build()) From 0f6f1b5d91b9a1020d306b5e2ff932f85659c2cc Mon Sep 17 00:00:00 2001 From: Arbor <44860537+Arborsm@users.noreply.github.com> Date: Mon, 16 Jun 2025 20:59:06 +0800 Subject: [PATCH 053/270] Add the Ender Fluid Link cover (#3024) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_ud.json | 4 + .../resources/assets/gtceu/lang/en_us.json | 4 + .../gregtechceu/gtceu/api/cover/IUICover.java | 6 +- .../gtceu/api/gui/GuiTextures.java | 4 + .../api/gui/widget/ColorBlockWidget.java | 65 +++ .../gui/widget/ConfirmTextInputWidget.java | 73 +++ .../api/machine/MachineCoverContainer.java | 1 + .../api/misc/virtualregistry/EntryTypes.java | 64 +++ .../virtualregistry/VirtualEnderRegistry.java | 137 +++++ .../misc/virtualregistry/VirtualEntry.java | 83 +++ .../virtualregistry/VirtualRegistryMap.java | 86 +++ .../virtualregistry/entries/VirtualTank.java | 71 +++ .../cover/ender/AbstractEnderLinkCover.java | 514 ++++++++++++++++++ .../cover/ender/EnderFluidLinkCover.java | 135 +++++ .../gtceu/common/data/GTCovers.java | 5 + .../gtceu/common/data/GTItems.java | 2 + .../common/data/GTSyncedFieldAccessors.java | 2 + .../gtceu/data/lang/LangHandler.java | 4 + .../gtceu/forge/ForgeCommonEventListener.java | 7 +- .../gtceu/syncdata/VirtualTankAccessor.java | 31 ++ .../textures/gui/widget/button_check.png | Bin 0 -> 454 bytes .../gtceu/textures/gui/widget/button_list.png | Bin 0 -> 402 bytes 22 files changed, 1296 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java create mode 100644 src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java create mode 100644 src/main/resources/assets/gtceu/textures/gui/widget/button_check.png create mode 100644 src/main/resources/assets/gtceu/textures/gui/widget/button_list.png diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index e4ea9e45e6e..91f381ea9b9 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1972,6 +1972,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "ɹǝʌoɔ ǝɥʇ pǝɔɐןd ʎןןɐuıbıɹo oɥʍ ɹǝʎɐןd ǝɥʇ sǝsn ǝpoɯ ǝʇɐʌıɹԀ", "cover.ender_fluid_link.private.tooltip.enabled": "ǝpoɯ ʞuɐʇ ɔıןqnd oʇ ɥɔʇıʍS", "cover.ender_fluid_link.title": "ʞuıꞀ pınןℲ ɹǝpuƎ", + "cover.ender_fluid_link.tooltip.channel_description": "ʇxǝʇ ʇnduı ɥʇıʍ uoıʇdıɹɔsǝp ןǝuuɐɥɔ ʇǝS", + "cover.ender_fluid_link.tooltip.channel_name": "ʇxǝʇ ʇnduı ɥʇıʍ ǝɯɐu ןǝuuɐɥɔ ʇǝS", + "cover.ender_fluid_link.tooltip.clear_button": "uoıʇdıɹɔsǝp ןǝuuɐɥɔ ɹɐǝןƆ", + "cover.ender_fluid_link.tooltip.list_button": "ʇsıן ןǝuuɐɥɔ ʍoɥS", "cover.filter.blacklist.disabled": "ʇsıןǝʇıɥM", "cover.filter.blacklist.enabled": "ʇsıןʞɔɐןᗺ", "cover.filter.mode.filter_both": "ʇɔɐɹʇxƎ/ʇɹǝsuI ɹǝʇןıℲ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index f4946b2b17c..b9bf6ca36e1 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1972,6 +1972,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "Private mode uses the player who originally placed the cover", "cover.ender_fluid_link.private.tooltip.enabled": "Switch to public tank mode", "cover.ender_fluid_link.title": "Ender Fluid Link", + "cover.ender_fluid_link.tooltip.channel_description": "Set channel description with input text", + "cover.ender_fluid_link.tooltip.channel_name": "Set channel name with input text", + "cover.ender_fluid_link.tooltip.clear_button": "Clear channel description", + "cover.ender_fluid_link.tooltip.list_button": "Show channel list", "cover.filter.blacklist.disabled": "Whitelist", "cover.filter.blacklist.enabled": "Blacklist", "cover.filter.mode.filter_both": "Filter Insert/Extract", diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java index b9fef5c7eb7..27d7b8cc56e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IUICover.java @@ -36,12 +36,16 @@ default ModularUI createUI(Player entityPlayer) { var widget = createUIWidget(); var size = widget.getSize(); widget.setSelfPosition(new Position((176 - size.width) / 2, 0)); - return new ModularUI(176, size.height + 82, this, entityPlayer) + var modularUI = new ModularUI(176, size.height + 82, this, entityPlayer) .background(GuiTextures.BACKGROUND) .widget(widget) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT, 7, size.height, true)); + modularUI.registerCloseListener(this::onUIClosed); + return modularUI; } + default void onUIClosed() {} + Widget createUIWidget(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index a364ea40d07..c071a90c2ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -122,6 +122,10 @@ public class GuiTextures { public static final ResourceTexture BUTTON_LEFT = new ResourceTexture("gtceu:textures/gui/widget/left.png"); public static final ResourceTexture BUTTON_PUBLIC_PRIVATE = new ResourceTexture( "gtceu:textures/gui/widget/button_public_private.png"); + public static final ResourceTexture BUTTON_CHECK = new ResourceTexture( + "gtceu:textures/gui/widget/button_check.png"); + public static final ResourceTexture BUTTON_LIST = new ResourceTexture( + "gtceu:textures/gui/widget/button_list.png"); public static final ResourceTexture BUTTON_RIGHT = new ResourceTexture("gtceu:textures/gui/widget/right.png"); public static final ResourceTexture BUTTON_SILK_TOUCH_MODE = new ResourceTexture( "gtceu:textures/gui/widget/button_silk_touch_mode.png"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java new file mode 100644 index 00000000000..5e7bbf3e412 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ColorBlockWidget.java @@ -0,0 +1,65 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import com.lowdragmc.lowdraglib.gui.widget.Widget; + +import net.minecraft.client.gui.GuiGraphics; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; + +import java.util.function.IntSupplier; + +@Setter +@Accessors(chain = true) +public class ColorBlockWidget extends Widget { + + private IntSupplier colorSupplier; + @Getter + private int currentColor; + private static boolean isShowAlpha = false; + + public ColorBlockWidget(int x, int y, int width, int height) { + super(x, y, width, height); + this.currentColor = 0xFFFFFFFF; + } + + @Override + public void updateScreen() { + super.updateScreen(); + if (isClientSideWidget && colorSupplier != null) { + currentColor = colorSupplier.getAsInt(); + } + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (isMouseOverElement(mouseX, mouseY)) { + playButtonClickSound(); + isShowAlpha = !isShowAlpha; + return true; + } + return super.mouseClicked(mouseX, mouseY, button); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + int x = getPosition().x + 1; + int y = getPosition().y + 1; + int width = getSize().width - 2; + int height = getSize().height - 2; + + if (colorSupplier != null) { + currentColor = colorSupplier.getAsInt(); + } + final int BORDER_COLOR = 0xFF000000; + int opaqueColor = isShowAlpha ? currentColor : currentColor | 0xFF000000; + graphics.fill(x, y, x + width, y + height, opaqueColor); + DrawerHelper.drawBorder(graphics, x, y, width, height, BORDER_COLOR, 1); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java new file mode 100644 index 00000000000..9a77e5e26c1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ConfirmTextInputWidget.java @@ -0,0 +1,73 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; + +import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; +import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; +import java.util.function.Function; + +@Accessors(chain = true) +public class ConfirmTextInputWidget extends WidgetGroup { + + private final Consumer textResponder; + @Nullable + private final Function returnValidator; + private Function validator = (s) -> s; + @Getter(AccessLevel.PRIVATE) + @Setter(AccessLevel.PRIVATE) + private String inputText = ""; + @Setter + private String tooltip = ""; + + public ConfirmTextInputWidget(int x, int y, int width, int height, String text, + Consumer textResponder, + @Nullable Function validator, + @Nullable Function returnValidator) { + super(x, y, width, height); + this.textResponder = textResponder; + this.returnValidator = returnValidator; + if (validator != null) { + this.validator = validator; + } + if (text != null) { + this.inputText = text; + } + } + + @Override + public void initWidget() { + super.initWidget(); + this.addWidget(new ButtonWidget( + getSizeWidth() - getSizeHeight(), + 0, + getSizeHeight(), + getSizeHeight(), + pressed -> { + if (returnValidator != null) { + inputText = returnValidator.apply(inputText); + } + textResponder.accept(inputText); + }) + .setButtonTexture( + new GuiTextureGroup(GuiTextures.VANILLA_BUTTON, GuiTextures.BUTTON_CHECK))); + this.addWidget(new TextFieldWidget( + 1, + 1, + getSizeWidth() - getSizeHeight() - 4, + getSizeHeight() - 2, + this::getInputText, + this::setInputText) + .setValidator(validator) + .setHoverTooltips(tooltip)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java index 1741bab070b..9a122721d41 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineCoverContainer.java @@ -35,6 +35,7 @@ public class MachineCoverContainer implements ICoverable, IEnhancedManaged { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(MachineCoverContainer.class); @Getter private final FieldManagedStorage syncStorage = new FieldManagedStorage(this); + @Getter private final MetaMachine machine; @DescSynced @Persisted diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java new file mode 100644 index 00000000000..9910f108a88 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/EntryTypes.java @@ -0,0 +1,64 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; + +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.function.Supplier; + +public final class EntryTypes { + + private static final Map> TYPES_MAP = new Object2ObjectOpenHashMap<>(); + public static final EntryTypes ENDER_FLUID = addEntryType(GTCEu.id("ender_fluid"), VirtualTank::new); + // ENDER_ITEM("ender_item", null), + // ENDER_ENERGY("ender_energy", null), + // ENDER_REDSTONE("ender_redstone", null); + private final ResourceLocation location; + private final Supplier factory; + + private EntryTypes(ResourceLocation location, Supplier supplier) { + this.location = location; + this.factory = supplier; + } + + @Nullable + public static EntryTypes fromString(String name) { + return TYPES_MAP.getOrDefault(GTCEu.id(name), null); + } + + @Nullable + public static EntryTypes fromLocation(ResourceLocation location) { + return TYPES_MAP.getOrDefault(location, null); + } + + public static EntryTypes addEntryType(ResourceLocation location, Supplier supplier) { + var type = new EntryTypes<>(location, supplier); + if (!TYPES_MAP.containsKey(location)) { + TYPES_MAP.put(location, type); + } else { + GTCEu.LOGGER.warn("Entry \"{}\" is already registered!", location); + } + return type; + } + + public T createInstance(CompoundTag nbt) { + var entry = createInstance(); + entry.deserializeNBT(nbt); + return entry; + } + + public T createInstance() { + return factory.get(); + } + + @Override + public String toString() { + return this.location.toString(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java new file mode 100644 index 00000000000..d76b54600b8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEnderRegistry.java @@ -0,0 +1,137 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraftforge.server.ServerLifecycleHooks; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.UUID; +import java.util.function.Predicate; + +public class VirtualEnderRegistry extends SavedData { + + private static final String DATA_ID = GTCEu.MOD_ID + ".virtual_entry_data"; + private static final String PUBLIC_KEY = "Public"; + private static final String PRIVATE_KEY = "Private"; + private static volatile VirtualEnderRegistry data; + private final Map VIRTUAL_REGISTRIES = new HashMap<>(); + + public VirtualEnderRegistry() {} + + public VirtualEnderRegistry(CompoundTag name) { + readFromNBT(name); + } + + public static VirtualEnderRegistry getInstance() { + if (data == null) { + var server = ServerLifecycleHooks.getCurrentServer(); + if (server != null) { + data = server.overworld().getDataStorage() + .computeIfAbsent(VirtualEnderRegistry::new, VirtualEnderRegistry::new, DATA_ID); + } + } + + return data; + } + + /** + * To be called on server stopped event + */ + public static void release() { + if (data != null) { + data = null; + GTCEu.LOGGER.debug("VirtualEnderRegistry has been unloaded"); + } + } + + public T getEntry(@Nullable UUID owner, EntryTypes type, String name) { + return getRegistry(owner).getEntry(type, name); + } + + public void addEntry(@Nullable UUID owner, String name, VirtualEntry entry) { + getRegistry(owner).addEntry(name, entry); + } + + public boolean hasEntry(@Nullable UUID owner, EntryTypes type, String name) { + return getRegistry(owner).contains(type, name); + } + + public @NotNull T getOrCreateEntry(@Nullable UUID owner, EntryTypes type, String name) { + if (!hasEntry(owner, type, name)) addEntry(owner, name, type.createInstance()); + return getEntry(owner, type, name); + } + + /** + * Removes an entry from the registry. Use with caution! + * + * @param owner The uuid of the player the entry is private to, or null if the entry is public + * @param type Type of the registry to remove from + * @param name The name of the entry + */ + public void deleteEntry(@Nullable UUID owner, EntryTypes type, String name) { + var registry = getRegistry(owner); + if (registry.contains(type, name)) { + registry.deleteEntry(type, name); + return; + } + GTCEu.LOGGER.warn("Attempted to delete {} entry {} of type {}, which does not exist", + owner == null ? "public" : String.format("private [%s]", owner), name, type); + } + + public void deleteEntryIf(@Nullable UUID owner, EntryTypes type, String name, + Predicate shouldDelete) { + T entry = getEntry(owner, type, name); + if (entry != null && shouldDelete.test(entry)) deleteEntry(owner, type, name); + } + + public Set getEntryNames(UUID owner, EntryTypes type) { + return getRegistry(owner).getEntryNames(type); + } + + private VirtualRegistryMap getRegistry(UUID owner) { + if (data == null) getInstance(); + return data.VIRTUAL_REGISTRIES.computeIfAbsent(owner, key -> new VirtualRegistryMap()); + } + + public final void readFromNBT(CompoundTag nbt) { + if (nbt.contains(PUBLIC_KEY)) { + VIRTUAL_REGISTRIES.put(null, new VirtualRegistryMap(nbt.getCompound(PUBLIC_KEY))); + } + if (nbt.contains(PRIVATE_KEY)) { + CompoundTag privateEntries = nbt.getCompound(PRIVATE_KEY); + for (String owner : privateEntries.getAllKeys()) { + var privateMap = privateEntries.getCompound(owner); + VIRTUAL_REGISTRIES.put(UUID.fromString(owner), new VirtualRegistryMap(privateMap)); + } + } + } + + @NotNull + @Override + public final CompoundTag save(@NotNull CompoundTag tag) { + var privateTag = new CompoundTag(); + for (var owner : VIRTUAL_REGISTRIES.keySet()) { + var mapTag = VIRTUAL_REGISTRIES.get(owner).serializeNBT(); + if (owner != null) { + privateTag.put(owner.toString(), mapTag); + } else { + tag.put(PUBLIC_KEY, mapTag); + } + } + tag.put(PRIVATE_KEY, privateTag); + return tag; + } + + @Override + public boolean isDirty() { + // can't think of a good way to mark dirty other than always return true; + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java new file mode 100644 index 00000000000..1c4d24e118f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualEntry.java @@ -0,0 +1,83 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import com.lowdragmc.lowdraglib.syncdata.ITagSerializable; + +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.util.INBTSerializable; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; + +import java.util.Locale; + +@Getter +@Accessors(chain = true) +public abstract class VirtualEntry implements INBTSerializable, ITagSerializable { + + public static final String DEFAULT_COLOR = "FFFFFFFF"; + protected static final String COLOR_KEY = "color"; + protected static final String DESC_KEY = "description"; + + @Setter + @NotNull + private String description = ""; + private int color = 0xFFFFFFFF; + private String colorStr = DEFAULT_COLOR; + + public abstract EntryTypes getType(); + + public void setColor(String color) { + this.color = parseColor(color); + this.colorStr = color.toUpperCase(Locale.ROOT); + } + + public void setColor(int color) { + this.color = color; + this.colorStr = Integer.toHexString(color).toUpperCase(Locale.ROOT); + } + + public static int parseColor(String colorString) { + if (colorString.length() < 8) { + throw new IllegalArgumentException("Invalid color string: " + colorString); + } + + int red = Integer.parseInt(colorString.substring(0, 2), 16); + int green = Integer.parseInt(colorString.substring(2, 4), 16); + int blue = Integer.parseInt(colorString.substring(4, 6), 16); + int alpha = Integer.parseInt(colorString.substring(6, 8), 16); + + return (alpha << 24) | (red << 16) | (green << 8) | blue; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof VirtualEntry other)) return false; + return this.getType() == other.getType() && this.color == other.color && + this.description.equals(other.description); + } + + @Override + public CompoundTag serializeNBT() { + var tag = new CompoundTag(); + tag.putString(COLOR_KEY, this.colorStr); + + if (!description.isEmpty()) + tag.putString(DESC_KEY, this.description); + + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + setColor(nbt.getString(COLOR_KEY)); + + if (nbt.contains(DESC_KEY)) + this.description = nbt.getString(DESC_KEY); + } + + public boolean canRemove() { + return this.description.isEmpty(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java new file mode 100644 index 00000000000..3d48f8b0200 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/VirtualRegistryMap.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.util.INBTSerializable; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public class VirtualRegistryMap implements INBTSerializable { + + private final Map, Map> registryMap = new ConcurrentHashMap<>(); + + public VirtualRegistryMap() {} + + public VirtualRegistryMap(CompoundTag tag) { + deserializeNBT(tag); + } + + @SuppressWarnings("unchecked") + public @Nullable T getEntry(EntryTypes type, String name) { + return (T) registryMap.getOrDefault(type, Collections.emptyMap()).get(name); + } + + public void addEntry(String name, VirtualEntry entry) { + registryMap.computeIfAbsent(entry.getType(), k -> new ConcurrentHashMap<>()).put(name, entry); + } + + public boolean contains(EntryTypes type, String name) { + return registryMap.containsKey(type) && registryMap.get(type).containsKey(name); + } + + public void deleteEntry(EntryTypes type, String name) { + Map entries = registryMap.get(type); + if (entries != null) { + entries.remove(name); + if (entries.isEmpty()) { + registryMap.remove(type); + } + } + } + + public void clear() { + registryMap.clear(); + } + + public Set getEntryNames(EntryTypes type) { + return new HashSet<>(registryMap.getOrDefault(type, Collections.emptyMap()).keySet()); + } + + @Override + public @NotNull CompoundTag serializeNBT() { + CompoundTag tag = new CompoundTag(); + for (Map.Entry, Map> entry : registryMap.entrySet()) { + CompoundTag entriesTag = new CompoundTag(); + for (Map.Entry subEntry : entry.getValue().entrySet()) { + entriesTag.put(subEntry.getKey(), subEntry.getValue().serializeNBT()); + } + tag.put(entry.getKey().toString(), entriesTag); + } + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + for (String entryTypeString : nbt.getAllKeys()) { + EntryTypes type = entryTypeString.contains(":") ? + EntryTypes.fromLocation(ResourceLocation.tryParse(entryTypeString)) : + EntryTypes.fromString(entryTypeString); + + if (type == null) continue; + + CompoundTag virtualEntries = nbt.getCompound(entryTypeString); + for (String name : virtualEntries.getAllKeys()) { + CompoundTag entryTag = virtualEntries.getCompound(name); + addEntry(name, type.createInstance(entryTag)); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java new file mode 100644 index 00000000000..b142de09b9a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/virtualregistry/entries/VirtualTank.java @@ -0,0 +1,71 @@ +package com.gregtechceu.gtceu.api.misc.virtualregistry.entries; + +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; + +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidTank; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; + +public class VirtualTank extends VirtualEntry { + + public static final int DEFAULT_CAPACITY = 160_000; // 160B for per second transfer + protected static final String CAPACITY_KEY = "capacity"; + protected static final String FLUID_KEY = "fluid"; + @NotNull + @Getter + private final FluidTank fluidTank; + private int capacity; + + public VirtualTank(int capacity) { + this.capacity = capacity; + fluidTank = new FluidTank(this.capacity); + } + + public VirtualTank() { + this(DEFAULT_CAPACITY); + } + + @Override + public EntryTypes getType() { + return EntryTypes.ENDER_FLUID; + } + + public void setFluid(FluidStack fluid) { + this.fluidTank.setFluid(fluid); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof VirtualTank other)) return false; + return this.fluidTank == other.fluidTank; + } + + @Override + public CompoundTag serializeNBT() { + var tag = super.serializeNBT(); + tag.putInt(CAPACITY_KEY, this.capacity); + + if (this.fluidTank.getFluid() != FluidStack.EMPTY) + tag.put(FLUID_KEY, this.fluidTank.getFluid().writeToNBT(new CompoundTag())); + + return tag; + } + + @Override + public void deserializeNBT(CompoundTag nbt) { + super.deserializeNBT(nbt); + this.capacity = nbt.getInt(CAPACITY_KEY); + + if (nbt.contains(FLUID_KEY)) + setFluid(FluidStack.loadFluidStackFromNBT(nbt.getCompound(FLUID_KEY))); + } + + @Override + public boolean canRemove() { + return super.canRemove() && this.fluidTank.isEmpty(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java new file mode 100644 index 00000000000..65ccd50b0b4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java @@ -0,0 +1,514 @@ +package com.gregtechceu.gtceu.common.cover.ender; + +import com.gregtechceu.gtceu.api.capability.IControllable; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IUICover; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.ColorBlockWidget; +import com.gregtechceu.gtceu.api.gui.widget.ConfirmTextInputWidget; +import com.gregtechceu.gtceu.api.gui.widget.EnumSelectorWidget; +import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; +import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler; +import com.gregtechceu.gtceu.api.machine.MachineCoverContainer; +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; +import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; + +import com.lowdragmc.lowdraglib.gui.editor.ColorPattern; +import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.TextTexture; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.ChatFormatting; +import net.minecraft.core.Direction; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; +import org.apache.commons.lang3.mutable.MutableBoolean; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.regex.Pattern; + +@SuppressWarnings("SameParameterValue") +public abstract class AbstractEnderLinkCover extends CoverBehavior + implements IUICover, IControllable { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(AbstractEnderLinkCover.class, + CoverBehavior.MANAGED_FIELD_HOLDER); + public static final Pattern COLOR_INPUT_PATTERN = Pattern.compile("^[0-9a-fA-F]{0,8}$"); + + protected final ConditionalSubscriptionHandler subscriptionHandler; + + @Persisted + @DescSynced + protected String colorStr = VirtualEntry.DEFAULT_COLOR; + @Getter + @Persisted + @DescSynced + protected Permissions permission = Permissions.PUBLIC; + @Persisted + @Getter + protected boolean isWorkingEnabled = true; + @Getter + @Persisted + @DescSynced + protected ManualIOMode manualIOMode = ManualIOMode.DISABLED; + @Getter + @Persisted + @DescSynced + @RequireRerender + protected IO io = IO.OUT; + protected VirtualEntryWidget virtualEntryWidget; + @DescSynced + boolean isAnyChanged = false; + + public AbstractEnderLinkCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + subscriptionHandler = new ConditionalSubscriptionHandler(coverHolder, this::update, this::isSubscriptionActive); + } + + @Override + public void onLoad() { + super.onLoad(); + subscriptionHandler.initialize(coverHolder.getLevel()); + } + + @Override + public abstract boolean canAttach(); + + @Override + public void onAttached(@NotNull ItemStack itemStack, @NotNull ServerPlayer player) { + super.onAttached(itemStack, player); + } + + @Override + public void onRemoved() { + super.onRemoved(); + subscriptionHandler.unsubscribe(); + if (!isRemote()) { + VirtualEnderRegistry.getInstance() + .deleteEntryIf(getOwner(), getEntryType(), getChannelName(), VirtualEntry::canRemove); + } + } + + @Override + public void onUnload() { + super.onUnload(); + subscriptionHandler.unsubscribe(); + if (!isRemote()) { + VirtualEnderRegistry.getInstance() + .deleteEntryIf(getOwner(), getEntryType(), getChannelName(), VirtualEntry::canRemove); + } + } + + @Override + public void onUIClosed() { + virtualEntryWidget = null; + } + + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) { + if (this.isWorkingEnabled != isWorkingAllowed) { + this.isWorkingEnabled = isWorkingAllowed; + subscriptionHandler.updateSubscription(); + } + } + + @Override + public Widget createUIWidget() { + virtualEntryWidget = new VirtualEntryWidget(this); + return virtualEntryWidget; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + public void setIo(IO io) { + if (io == IO.IN || io == IO.OUT) { + this.io = io; + subscriptionHandler.updateSubscription(); + } + } + + public UUID getOwner() { + if (permission == Permissions.PRIVATE && coverHolder instanceof MachineCoverContainer mcc) { + var owner = mcc.getMachine().getOwner(); + return owner != null ? owner.getPlayerUUID() : null; + } + return null; + } + + protected boolean isSubscriptionActive() { + return isWorkingEnabled(); + } + + protected abstract String identifier(); + + protected abstract VirtualEntry getEntry(); + + protected abstract void setEntry(VirtualEntry entry); + + protected final String getChannelName() { + return identifier() + this.colorStr; + } + + protected void setChannelName(String name) { + if (isRemote()) return; + VirtualEnderRegistry.getInstance().deleteEntryIf(getOwner(), getEntryType(), getChannelName(), + VirtualEntry::canRemove); + this.colorStr = name; + setVirtualEntry(); + } + + protected final String getChannelName(VirtualEntry entry) { + return identifier() + entry.getColorStr(); + } + + protected void setPermission(Permissions permission) { + if (isRemote()) return; + VirtualEnderRegistry.getInstance().deleteEntryIf(getOwner(), getEntryType(), getChannelName(), + VirtualEntry::canRemove); + this.permission = permission; + setVirtualEntry(); + } + + protected void setVirtualEntry() { + setEntry(VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(), getEntryType(), getChannelName())); + getEntry().setColor(this.colorStr); + this.isAnyChanged = true; + subscriptionHandler.updateSubscription(); + } + + protected abstract EntryTypes getEntryType(); + + protected void update() { + long timer = coverHolder.getOffsetTimer(); + if (timer % 5 != 0) return; + + if (isWorkingEnabled() && !isRemote()) { + var entry = VirtualEnderRegistry.getInstance().getOrCreateEntry(getOwner(), getEntryType(), + getChannelName()); + if (!entry.getColorStr().equals(this.colorStr)) { + entry.setColor(this.colorStr); + } + if (!getEntry().equals(entry)) { + setEntry(entry); + } + transfer(); + } + + if (isAnyChanged) { + if (virtualEntryWidget != null) virtualEntryWidget.update(); + isAnyChanged = false; + } + subscriptionHandler.updateSubscription(); + } + + protected abstract void transfer(); + + protected void setManualIOMode(ManualIOMode manualIOMode) { + this.manualIOMode = manualIOMode; + subscriptionHandler.updateSubscription(); + } + + @Nullable + protected FilterHandler getFilterHandler() { + return null; + } + + protected abstract Widget addVirtualEntryWidget(VirtualEntry entry, int x, int y, int width, int height, + boolean canClick); + + protected abstract String getUITitle(); + + protected int getColor() { + return VirtualEntry.parseColor(this.colorStr); + } + + protected enum Permissions implements EnumSelectorWidget.SelectableEnum { + + PUBLIC("cover.ender_fluid_link.private.tooltip.disabled", + GuiTextures.BUTTON_PUBLIC_PRIVATE.getSubTexture(0, 0, 1, 0.5)), + + PRIVATE("cover.ender_fluid_link.private.tooltip.enabled", + GuiTextures.BUTTON_PUBLIC_PRIVATE.getSubTexture(0, 0.5, 1, 0.5)); + + @Getter + private final String tooltip; + @Getter + private final IGuiTexture icon; + + Permissions(String tooltip, IGuiTexture icon) { + this.tooltip = tooltip; + this.icon = icon; + } + } + + protected static class VirtualEntryWidget extends WidgetGroup { + + private static final int WIDGET_BOARD = 20; + private static final int GROUP_WIDTH = 176; + private static final int TOTAL_WIDTH = 156; + private static final int BUTTON_SIZE = 16; + private final AbstractEnderLinkCover cover; + private final MutableBoolean showChannels; + private final WidgetGroup mainGroup; + private final WidgetGroup mainChannelGroup; + private final DraggableScrollableWidgetGroup channelsGroup; // client only + + VirtualEntryWidget(AbstractEnderLinkCover cover) { + super(0, 0, GROUP_WIDTH, 137); + this.cover = cover; + this.showChannels = new MutableBoolean(false); + mainGroup = new WidgetGroup(0, 0, GROUP_WIDTH, 137); + channelsGroup = new DraggableScrollableWidgetGroup(0, 20, 170, 110) + .setYScrollBarWidth(2).setYBarStyle(null, ColorPattern.T_WHITE.rectTexture().setRadius(1)); + mainChannelGroup = new WidgetGroup(10, 20, 156, 20); + initWidgets(); + } + + public void update() { + if (isRemote()) return; + widgets.clear(); + mainGroup.widgets.clear(); + channelsGroup.widgets.clear(); + mainChannelGroup.widgets.clear(); + initWidgets(); + this.detectAndSendChanges(); + } + + private void initWidgets() { + int currentX = 0; + final var titleGroup = new WidgetGroup(10, 5, GROUP_WIDTH, 20); + + this.addWidget(titleGroup); + this.addWidget(mainGroup); + this.addWidget(channelsGroup.setVisible(false)); + + titleGroup.addWidget(createToggleButton()); + titleGroup.addWidget(new LabelWidget(15, 3, cover.getUITitle())); + + var toggleButtonWidget = createToggleButtonForPrivacy(currentX); + mainChannelGroup.addWidget(toggleButtonWidget); + currentX += WIDGET_BOARD + 2; + mainChannelGroup.addWidget(createColorBlockWidget(currentX)); + currentX += WIDGET_BOARD + 2; + mainChannelGroup.addWidget(createConfirmTextInputWidget(currentX)); + + mainChannelGroup.addWidget(new ConfirmTextInputWidget(0, WIDGET_BOARD + 2, GROUP_WIDTH - WIDGET_BOARD, + WIDGET_BOARD, cover.getEntry().getDescription(), cover.getEntry()::setDescription, + t -> t == null ? "" : t, null).setTooltip("cover.ender_fluid_link.tooltip.channel_description")); + + mainGroup.addWidget(mainChannelGroup); + mainGroup.addWidget(createWorkingEnabledButton()); + addEnumSelectorWidgets(); + mainGroup.addWidget( + cover.addVirtualEntryWidget(cover.getEntry(), 146, WIDGET_BOARD, WIDGET_BOARD, WIDGET_BOARD, true)); + + if (cover.getFilterHandler() != null) { + mainGroup.addWidget(cover.getFilterHandler().createFilterSlotUI(117, 108)); + mainGroup.addWidget(cover.getFilterHandler().createFilterConfigUI(10, 72, 156, 60)); + } + } + + @Contract(" -> new") + private @NotNull ToggleButtonWidget createToggleButton() { + return (ToggleButtonWidget) new ToggleButtonWidget(0, 0, 12, 12, showChannels::getValue, cd -> { + showChannels.setValue(!showChannels.getValue()); + mainGroup.setVisible(showChannels.isFalse()); + channelsGroup.setVisible(showChannels.isTrue()); + requestUpdate(); + }).setTexture( + new GuiTextureGroup(GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0, 1, 0.5), + GuiTextures.BUTTON_LIST), + new GuiTextureGroup(GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0.5, 1, 0.5), + GuiTextures.BUTTON_LIST)) + .setHoverTooltips("cover.ender_fluid_link.tooltip.list_button"); + } + + @Contract("_ -> new") + private @NotNull Widget createToggleButtonForPrivacy(int currentX) { + return new EnumSelectorWidget<>(currentX, 0, + WIDGET_BOARD, WIDGET_BOARD, Permissions.values(), cover.permission, cover::setPermission); + } + + private ColorBlockWidget createColorBlockWidget(int currentX) { + return new ColorBlockWidget(currentX, 0, WIDGET_BOARD, WIDGET_BOARD).setColorSupplier(cover::getColor); + } + + private ConfirmTextInputWidget createConfirmTextInputWidget(int currentX) { + int GROUP_X = 10; + int textInputWidth = (GROUP_WIDTH - GROUP_X * 2) - currentX - WIDGET_BOARD - 2; + return new ConfirmTextInputWidget(currentX, 0, textInputWidth, WIDGET_BOARD, cover.colorStr, + cover::setChannelName, text -> { + if (text == null || !COLOR_INPUT_PATTERN.matcher(text).matches()) { + return VirtualTank.DEFAULT_COLOR; + } + return text; + }, text -> { + if (text.length() < 8) { + text += "F".repeat(8 - text.length()); + } + return text; + }).setTooltip("cover.ender_fluid_link.tooltip.channel_name"); + } + + @Contract(" -> new") + private @NotNull ToggleButtonWidget createWorkingEnabledButton() { + return new ToggleButtonWidget(116, 82, WIDGET_BOARD, WIDGET_BOARD, GuiTextures.BUTTON_POWER, + cover::isWorkingEnabled, cover::setWorkingEnabled); + } + + private void addEnumSelectorWidgets() { + mainGroup.addWidget(new EnumSelectorWidget<>(146, 82, WIDGET_BOARD, WIDGET_BOARD, List.of(IO.IN, IO.OUT), + cover.io, cover::setIo)); + mainGroup.addWidget(new EnumSelectorWidget<>(146, 107, WIDGET_BOARD, WIDGET_BOARD, ManualIOMode.VALUES, + cover.manualIOMode, cover::setManualIOMode) + .setHoverTooltips("cover.universal.manual_import_export.mode.description")); + } + + private void addChannelWidgets(List entries) { + channelsGroup.clearAllWidgets(); + int y = 1; + SelectableWidgetGroup selectedWidget = null; + for (var entry : entries.stream().sorted(Comparator.comparing(VirtualEntry::getColorStr)).toList()) { + SelectableWidgetGroup channelWidget = createChannelWidget(entry, 10, y); + if (cover.getChannelName(entry).equals(cover.getChannelName())) { + selectedWidget = channelWidget; + } + channelsGroup.addWidget(channelWidget); + y += 22; + } + channelsGroup.setSelected(selectedWidget); + if (selectedWidget != null) selectedWidget.onSelected(); + channelsGroup.setClientSideWidget(); + } + + private @NotNull SelectableWidgetGroup createChannelWidget(@NotNull VirtualEntry entry, int x, int y) { + int currentX = 0; + int MARGIN = 2; + int availableWidth = TOTAL_WIDTH - (BUTTON_SIZE + MARGIN) * 3; + + final MutableBoolean canSelect = new MutableBoolean(false); + var des = entry.getDescription(); + TextBoxWidget textBoxWidget = new TextBoxWidget(BUTTON_SIZE + MARGIN, + !des.isEmpty() ? 0 : 4, availableWidth, List.of(entry.getColorStr())).setCenter(true); + SelectableWidgetGroup channelGroup = new SelectableWidgetGroup(x, y, TOTAL_WIDTH, BUTTON_SIZE) { + + @Override + public boolean allowSelected(double mouseX, double mouseY, int button) { + return canSelect.getValue() && super.allowSelected(mouseX, mouseY, button); + } + }; + channelGroup.setOnSelected(group -> { + if (cover.getChannelName().equals(cover.getChannelName(entry))) return; + writeClientAction(0, buffer -> { + // send new channel name to server + String newChannelColorStr = entry.getColorStr(); + buffer.writeUtf(newChannelColorStr); + }); + playButtonClickSound(); + }).setSelectedTexture(1, -1); + + // Color block + ColorBlockWidget colorBlockWidget = new ColorBlockWidget(currentX, 0, BUTTON_SIZE, BUTTON_SIZE) + .setCurrentColor(VirtualEntry.parseColor(entry.getColorStr())); + channelGroup.addWidget(colorBlockWidget); + currentX += BUTTON_SIZE + MARGIN; + + // Text box + channelGroup.addWidget(textBoxWidget); + currentX += availableWidth + MARGIN; + if (!des.isEmpty()) { + var desText = new TextTexture(ChatFormatting.DARK_GRAY + des).setDropShadow(false); + desText.setType(TextTexture.TextType.ROLL).setRollSpeed(0.7f); + channelGroup.addWidget(new ImageWidget(BUTTON_SIZE + MARGIN, 10, availableWidth, 8, desText)); + } + + // Slot + Widget slotWidget = cover.addVirtualEntryWidget(entry, currentX, 0, BUTTON_SIZE, BUTTON_SIZE, false); + channelGroup.addWidget(slotWidget); + currentX += BUTTON_SIZE + MARGIN; + + // Clear Description button + channelGroup.addWidget( + new ButtonWidget(currentX, 0, BUTTON_SIZE, BUTTON_SIZE, GuiTextures.BUTTON_CLEAR_GRID, press -> { + writeClientAction(200, buffer -> buffer.writeUtf(cover.getChannelName(entry))); + requestUpdate(); + }) { + + @Override + public boolean isMouseOverElement(double mouseX, double mouseY) { + var isOver = super.isMouseOverElement(mouseX, mouseY); + if (canSelect.getValue() == isOver) canSelect.setValue(!isOver); + return isOver; + } + }.appendHoverTooltips("cover.ender_fluid_link.tooltip.clear_button")); + + return channelGroup; + } + + private void requestUpdate() { + writeClientAction(100, buffer -> buffer.writeBoolean(showChannels.isTrue())); + } + + @Override + public void handleClientAction(int id, FriendlyByteBuf buffer) { + super.handleClientAction(id, buffer); + if (id == 0) { + String newChannelColorStr = buffer.readUtf(); + cover.setChannelName(newChannelColorStr); + } else if (id == 100) { + if (!buffer.readBoolean()) return; + var entries = VirtualEnderRegistry.getInstance().getEntryNames(cover.getOwner(), cover.getEntryType()) + .stream().map(name -> VirtualEnderRegistry.getInstance().getEntry(cover.getOwner(), + cover.getEntryType(), name)) + .sorted(Comparator.comparing(VirtualEntry::getColorStr)); + writeUpdateInfo(101, buf -> { + var list = entries.toList(); + buf.writeVarInt(list.size()); + for (var entry : list) { + buf.writeNbt(entry.serializeNBT()); + } + }); + } else if (id == 200) { + String channelName = buffer.readUtf(); + VirtualEnderRegistry.getInstance().getEntry(cover.getOwner(), cover.getEntryType(), channelName) + .setDescription(""); + } + } + + @Override + public void readUpdateInfo(int id, FriendlyByteBuf buffer) { + super.readUpdateInfo(id, buffer); + if (id == 101) { + int size = buffer.readVarInt(); + List entries = new ArrayList<>(); + for (int i = 0; i < size; i++) { + VirtualEntry entry = cover.getEntryType().createInstance(); + entry.deserializeNBT(Objects.requireNonNull(buffer.readNbt())); + entries.add(entry); + } + addChannelWidgets(entries); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java new file mode 100644 index 00000000000..f4660d14df0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/EnderFluidLinkCover.java @@ -0,0 +1,135 @@ +package com.gregtechceu.gtceu.common.cover.ender; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; +import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; +import com.gregtechceu.gtceu.api.cover.filter.FluidFilter; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.TankWidget; +import com.gregtechceu.gtceu.api.misc.virtualregistry.EntryTypes; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEntry; +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; +import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.utils.GTTransferUtils; + +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.core.Direction; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidUtil; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +public class EnderFluidLinkCover extends AbstractEnderLinkCover { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(EnderFluidLinkCover.class, + AbstractEnderLinkCover.MANAGED_FIELD_HOLDER); + public static final int TRANSFER_RATE = 8000; // mB/t + + @Persisted + @DescSynced + protected VirtualTank visualTank; + + @Getter + @Persisted + @DescSynced + protected final FilterHandler filterHandler; + protected int mBLeftToTransferLastSecond; + + public EnderFluidLinkCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + this.mBLeftToTransferLastSecond = TRANSFER_RATE * 20; + filterHandler = FilterHandlers.fluid(this); + if (!isRemote()) visualTank = VirtualEnderRegistry.getInstance() + .getOrCreateEntry(getOwner(), EntryTypes.ENDER_FLUID, getChannelName()); + } + + @Override + protected VirtualTank getEntry() { + return visualTank; + } + + @Override + protected void setEntry(VirtualEntry entry) { + visualTank = (VirtualTank) entry; + } + + @Override + public boolean canAttach() { + return FluidUtil.getFluidHandler(coverHolder.getLevel(), coverHolder.getPos(), attachedSide).isPresent(); + } + + @Override + protected EntryTypes getEntryType() { + return EntryTypes.ENDER_FLUID; + } + + @Override + protected String identifier() { + return "EFLink#"; + } + + @Override + protected void transfer() { + long timer = coverHolder.getOffsetTimer(); + if (mBLeftToTransferLastSecond > 0) { + int platformTransferredFluid = doTransferFluids(mBLeftToTransferLastSecond); + this.mBLeftToTransferLastSecond -= platformTransferredFluid; + } + + if (timer % 20 == 0) { + this.mBLeftToTransferLastSecond = TRANSFER_RATE * 20; + } + } + + protected @Nullable IFluidHandlerModifiable getOwnFluidHandler() { + return coverHolder.getFluidHandlerCap(attachedSide, false); + } + + private int doTransferFluids(int platformTransferLimit) { + var ownFluidHandler = getOwnFluidHandler(); + + if (ownFluidHandler != null) { + return switch (io) { + case IN -> GTTransferUtils.transferFluidsFiltered(ownFluidHandler, visualTank.getFluidTank(), + filterHandler.getFilter(), platformTransferLimit); + case OUT -> GTTransferUtils.transferFluidsFiltered(visualTank.getFluidTank(), ownFluidHandler, + filterHandler.getFilter(), platformTransferLimit); + default -> 0; + }; + + } + return 0; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + ////////////////////////////////////// + // ************ GUI ************ // + ////////////////////////////////////// + + @Override + protected Widget addVirtualEntryWidget(VirtualEntry entry, int x, int y, int width, int height, boolean canClick) { + return new TankWidget(((VirtualTank) entry).getFluidTank(), 0, x, y, width, height, canClick, canClick) + .setBackground(GuiTextures.FLUID_SLOT); + } + + @NotNull + @Override + protected String getUITitle() { + return "cover.ender_fluid_link.title"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index 95931a8a939..de16ee5b3e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.client.renderer.cover.*; import com.gregtechceu.gtceu.common.cover.*; import com.gregtechceu.gtceu.common.cover.detector.*; +import com.gregtechceu.gtceu.common.cover.ender.EnderFluidLinkCover; import com.gregtechceu.gtceu.common.cover.voiding.AdvancedFluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.AdvancedItemVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.FluidVoidingCover; @@ -49,6 +50,10 @@ public class GTCovers { "infinite_water", InfiniteWaterCover::new, new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_infinite_water"))); + public final static CoverDefinition ENDER_FLUID_LINK = register( + "ender_fluid_link", EnderFluidLinkCover::new, + new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_ender_fluid_link"))); + public final static CoverDefinition SHUTTER = register( "shutter", ShutterCover::new, new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_shutter"))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 2f4f33b3480..c8b28aaf225 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -1872,7 +1872,9 @@ public static ItemEntry createFluidCell(Material mat, int capacit public static ItemEntry COVER_ENDER_FLUID_LINK = REGISTRATE .item("ender_fluid_link_cover", ComponentItem::create) .lang("Ender Fluid Link") + .onRegister(attach(new CoverPlaceBehavior(GTCovers.ENDER_FLUID_LINK))) .register(); + public static ItemEntry COVER_FLUID_VOIDING = REGISTRATE .item("fluid_voiding_cover", ComponentItem::create) .lang("Fluid Voiding Cover") diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index dcfc7e35117..ab1d7bce4a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -6,6 +6,7 @@ import com.lowdragmc.lowdraglib.syncdata.IAccessor; import com.lowdragmc.lowdraglib.syncdata.payload.FriendlyBufPayload; +import com.lowdragmc.lowdraglib.syncdata.payload.NbtTagPayload; import net.minecraftforge.fluids.FluidStack; @@ -17,6 +18,7 @@ public class GTSyncedFieldAccessors { public static void init() { register(FriendlyBufPayload.class, FriendlyBufPayload::new, GT_RECIPE_TYPE_ACCESSOR, 1000); + register(NbtTagPayload.class, NbtTagPayload::new, VirtualTankAccessor.INSTANCE, 2); registerSimple(MaterialPayload.class, MaterialPayload::new, Material.class, 1); registerSimple(GTRecipePayload.class, GTRecipePayload::new, GTRecipe.class, 100); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 729dd5b140b..c5c60f707a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -450,6 +450,10 @@ public static void init(RegistrateLangProvider provider) { provider.add("cover.ender_fluid_link.title", "Ender Fluid Link"); provider.add("cover.ender_fluid_link.iomode.enabled", "I/O Enabled"); provider.add("cover.ender_fluid_link.iomode.disabled", "I/O Disabled"); + provider.add("cover.ender_fluid_link.tooltip.channel_description", "Set channel description with input text"); + provider.add("cover.ender_fluid_link.tooltip.channel_name", "Set channel name with input text"); + provider.add("cover.ender_fluid_link.tooltip.list_button", "Show channel list"); + provider.add("cover.ender_fluid_link.tooltip.clear_button", "Clear channel description"); multilineLang(provider, "cover.ender_fluid_link.private.tooltip.disabled", "Switch to private tank mode\nPrivate mode uses the player who originally placed the cover"); provider.add("cover.ender_fluid_link.private.tooltip.enabled", "Switch to public tank mode"); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index ecc22f0b40a..5a58f57c75f 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -23,6 +23,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.misc.forge.FilteredFluidHandlerItemStack; +import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; @@ -40,7 +41,10 @@ import com.gregtechceu.gtceu.common.item.armor.QuarkTechSuite; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.network.GTNetwork; -import com.gregtechceu.gtceu.common.network.packets.*; +import com.gregtechceu.gtceu.common.network.packets.SPacketSendWorldID; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncBedrockOreVeins; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncFluidVeins; +import com.gregtechceu.gtceu.common.network.packets.SPacketSyncOreVeins; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketAddHazardZone; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketRemoveHazardZone; import com.gregtechceu.gtceu.common.network.packets.hazard.SPacketSyncLevelHazards; @@ -353,6 +357,7 @@ public static void serverStarting(ServerStartingEvent event) { @SubscribeEvent public static void serverStopped(ServerStoppedEvent event) { ServerCache.instance.clear(); + VirtualEnderRegistry.release(); } @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java b/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java new file mode 100644 index 00000000000..f469f0f5d14 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/VirtualTankAccessor.java @@ -0,0 +1,31 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.api.misc.virtualregistry.entries.VirtualTank; + +import com.lowdragmc.lowdraglib.syncdata.AccessorOp; +import com.lowdragmc.lowdraglib.syncdata.accessor.CustomObjectAccessor; +import com.lowdragmc.lowdraglib.syncdata.payload.ITypedPayload; +import com.lowdragmc.lowdraglib.syncdata.payload.NbtTagPayload; + +import net.minecraft.nbt.CompoundTag; + +public class VirtualTankAccessor extends CustomObjectAccessor { + + public static final VirtualTankAccessor INSTANCE = new VirtualTankAccessor(); + + protected VirtualTankAccessor() { + super(VirtualTank.class, true); + } + + @Override + public ITypedPayload serialize(AccessorOp op, VirtualTank value) { + return NbtTagPayload.of(value.serializeNBT()); + } + + @Override + public VirtualTank deserialize(AccessorOp op, ITypedPayload payload) { + var tank = new VirtualTank(); + tank.deserializeNBT((CompoundTag) payload.getPayload()); + return tank; + } +} diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_check.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_check.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3435aefb9c4eedb6c217461087e08096505151 GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|>0G|+7<~nBP9n8#@AWa5Er*lE-N`m}?|NsBb;Gnhg3y{xQ;1OBOz`%DH zgc*%FBlnrvV1|u_AoC(M_WMl&SA_~aPY-a(BX93wDkO0IW{V*EM zQU;(GCa^QG096!MXrq(i9*Y1ek#4Fo9JDSy}*DP+f)w1|Zp&SHD@D zx|LG}Wcqr#IEH8h*Pd|{I$*%Tr8$xGp6!o$zo4HmUz1QxvX&q9iy!t)x7$D3u`~F*C13&(AeP!Bo#s z&*=9a=50VV+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMvmbx}Ze zW;+X5JPXJM0qby9h8N5T8qHD$pwt9*1{R=710!Pt#sv^lK{m23fS5D|$OZu>pt($7 zl|hykKo(S&p@9KNmUXs|&X3~jD}hW$PZ!4!3;$$^f&&~&C3SRT|2MyQe7xNF(2X4j z=30N3jN8AD`5L#mLr4hg8cr3) Date: Mon, 16 Jun 2025 16:39:47 +0200 Subject: [PATCH 054/270] Make screwdriver able to invert buses (#3235) --- .../multiblock/part/DualHatchPartMachine.java | 32 ++++++++++++ .../part/FluidHatchPartMachine.java | 52 +++++++++++++++++++ .../multiblock/part/ItemBusPartMachine.java | 48 +++++++++++++++++ .../multiblock/part/PumpHatchPartMachine.java | 7 +++ .../part/ReservoirHatchPartMachine.java | 7 +++ .../part/SteamHatchPartMachine.java | 9 ++++ .../part/SteamItemBusPartMachine.java | 32 ++++++++++++ .../ae2/machine/MEBusPartMachine.java | 7 +++ .../ae2/machine/MEHatchPartMachine.java | 7 +++ 9 files changed, 201 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index 16d6ad29ced..203c825859a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -5,7 +5,9 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.utils.GTTransferUtils; import com.lowdragmc.lowdraglib.gui.widget.Widget; @@ -16,6 +18,8 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.fluids.FluidType; import org.jetbrains.annotations.Nullable; @@ -124,6 +128,34 @@ protected void autoIO() { } } + @Override + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + + if (io == IO.IN) { + newDefinition = GTMachines.DUAL_EXPORT_HATCH[this.getTier()]; + } else if (io == IO.OUT) { + newDefinition = GTMachines.DUAL_IMPORT_HATCH[this.getTier()]; + } + if (newDefinition == null) return false; + + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof DualHatchPartMachine newMachine) { + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + } + } + } + return true; + } + /////////////////////////////// // ********** GUI ***********// /////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 16f8fa1e140..af44e768cf3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; @@ -15,6 +16,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -34,8 +36,13 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; @@ -206,6 +213,51 @@ public void setWorkingEnabled(boolean workingEnabled) { updateTankSubscription(); } + @Override + protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, + BlockHitResult hitResult) { + InteractionResult superResult = super.onScrewdriverClick(playerIn, hand, gridSide, hitResult); + if (superResult != InteractionResult.PASS) return superResult; + if (io == IO.BOTH) return InteractionResult.PASS; + if (playerIn.isShiftKeyDown()) { + if (swapIO()) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); + } + } + return InteractionResult.PASS; + } + + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + + if (io == IO.IN) { + if (this.slots == 1) newDefinition = GTMachines.FLUID_EXPORT_HATCH[this.getTier()]; + else if (this.slots == 4) newDefinition = GTMachines.FLUID_EXPORT_HATCH_4X[this.getTier()]; + else if (this.slots == 9) newDefinition = GTMachines.FLUID_EXPORT_HATCH_9X[this.getTier()]; + } else if (io == IO.OUT) { + if (this.slots == 1) newDefinition = GTMachines.FLUID_IMPORT_HATCH[this.getTier()]; + else if (this.slots == 4) newDefinition = GTMachines.FLUID_IMPORT_HATCH_4X[this.getTier()]; + else if (this.slots == 9) newDefinition = GTMachines.FLUID_IMPORT_HATCH_9X[this.getTier()]; + } + if (newDefinition == null) return false; + + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof FluidHatchPartMachine newMachine) { + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + for (int i = 0; i < this.tank.getTanks(); i++) { + newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); + } + } + } + return true; + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index d98a5419d31..80eba890fad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.CircuitFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.IHasCircuitSlot; @@ -13,6 +14,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -31,8 +33,13 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.TickTask; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; import lombok.Setter; @@ -224,6 +231,47 @@ public void setWorkingEnabled(boolean workingEnabled) { updateInventorySubscription(); } + @Override + protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide, + BlockHitResult hitResult) { + InteractionResult superResult = super.onScrewdriverClick(playerIn, hand, gridSide, hitResult); + if (superResult != InteractionResult.PASS) return superResult; + if (io == IO.BOTH) return InteractionResult.PASS; + if (playerIn.isShiftKeyDown()) { + if (swapIO()) { + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); + } + } + return InteractionResult.PASS; + } + + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + if (io == IO.IN) { + newDefinition = GTMachines.ITEM_EXPORT_BUS[this.getTier()]; + } else if (io == IO.OUT) { + newDefinition = GTMachines.ITEM_IMPORT_BUS[this.getTier()]; + } + + if (newDefinition == null) return false; + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof ItemBusPartMachine newMachine) { + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + } + } + return true; + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java index aca80322d33..a836518ca0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/PumpHatchPartMachine.java @@ -50,4 +50,11 @@ public ModularUI createUI(Player entityPlayer) { .setTooltipText("gtceu.gui.fluid_auto_input.tooltip")) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT, 7, 84, true)); } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java index ba62aa0676c..8602416b9e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ReservoirHatchPartMachine.java @@ -61,6 +61,13 @@ protected void autoIO() { } } + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } + protected static class InfiniteWaterTank extends CustomFluidTank { private static final CompoundTag EMPTY = new CompoundTag(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java index edec624e40c..8d39234eb77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamHatchPartMachine.java @@ -50,4 +50,13 @@ public ModularUI createUI(Player entityPlayer) { .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.SLOT_STEAM.get(IS_STEEL), 7, 84, true)); } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO, since this is a + // hatch that only allows steam in, not + // a steam version of an input/output hatch + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index 2d0c3316f61..59280df5e30 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -6,12 +6,16 @@ import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.NotNull; @@ -53,4 +57,32 @@ public ModularUI createUI(@NotNull Player entityPlayer) { return modular; } + + @Override + public boolean swapIO() { + BlockPos blockPos = getHolder().pos(); + MachineDefinition newDefinition = null; + if (io == IO.IN) { + newDefinition = GTMachines.STEAM_EXPORT_BUS; + } else if (io == IO.OUT) { + newDefinition = GTMachines.STEAM_IMPORT_BUS; + } + + if (newDefinition == null) return false; + BlockState newBlockState = newDefinition.getBlock().defaultBlockState(); + + getLevel().setBlockAndUpdate(blockPos, newBlockState); + + if (getLevel().getBlockEntity(blockPos) instanceof IMachineBlockEntity newHolder) { + if (newHolder.getMetaMachine() instanceof SteamItemBusPartMachine newMachine) { + // We don't set the circuit or distinct busses, since + // that doesn't make sense on an output bus. + // Furthermore, existing inventory items + // and conveyors will drop to the floor on block override. + newMachine.setFrontFacing(this.getFrontFacing()); + newMachine.setUpwardsFacing(this.getUpwardsFacing()); + } + } + return true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java index 1bc7a2dcd6c..7bd09427d3b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEBusPartMachine.java @@ -86,4 +86,11 @@ public void onRotated(Direction oldFacing, Direction newFacing) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java index 52064460f02..c7237baaf41 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEHatchPartMachine.java @@ -87,4 +87,11 @@ public void onRotated(Direction oldFacing, Direction newFacing) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + // By returning false here, we don't allow shift-clicking + // with a screwdriver to swap the IO. + @Override + public boolean swapIO() { + return false; + } } From 7577d1ebbc0da99ffca63ba05f3ce2d22a2c4691 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Tue, 17 Jun 2025 00:01:47 +0200 Subject: [PATCH 055/270] Fix missing maxDamage override in armorcomponent (#3236) --- .../gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java index 2ba203b97ab..94b2b75519a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java @@ -118,6 +118,11 @@ public boolean isDamaged(ItemStack stack) { return false; } + @Override + public int getMaxDamage(ItemStack stack) { + return Integer.MAX_VALUE; + } + @Override public int damageItem(ItemStack stack, int amount, T entity, Consumer onBroken) { return armorLogic.damageArmor(entity, stack, entity.getLastDamageSource(), amount, this.getEquipmentSlot()); From 868e48c789d53dc79bca8328b46ddc42239063fe Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Tue, 17 Jun 2025 23:12:20 -0600 Subject: [PATCH 056/270] Add pattern dimensions to all Multiblock Controllers (#3240) --- src/generated/resources/assets/gtceu/lang/en_ud.json | 1 + src/generated/resources/assets/gtceu/lang/en_us.json | 1 + .../gtceu/api/block/MetaMachineBlock.java | 12 ++++++++++++ .../gregtechceu/gtceu/api/pattern/BlockPattern.java | 5 +++++ .../com/gregtechceu/gtceu/data/lang/LangHandler.java | 2 ++ 5 files changed, 21 insertions(+) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 91f381ea9b9..44123cebd7c 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3186,6 +3186,7 @@ "gtceu.multiblock.cracking_unit.energy": "%s%% :ǝbɐs∩ ʎbɹǝuƎ", "gtceu.multiblock.data_bank.description": "˙sǝןnpoW ɐʇɐᗡ uo ɐʇɐp ɥɔɹɐǝsǝɹ xǝןdɯoɔ ǝɹoɯ pɐǝɹ oʇ sǝuıꞀ ʎןqɯǝssⱯ sǝןqɐuǝ ʇı 'ʎןןɐuoıʇıppⱯ ˙sǝuıꞀ ʎןqɯǝssⱯ ǝןdıʇןnɯ uǝǝʍʇǝq ɐʇɐᗡ ɥɔɹɐǝsǝᴚ ǝuıꞀ ʎןqɯǝssⱯ buıɹɐɥs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʞuɐᗺ ɐʇɐᗡ ǝɥ⟘", "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ", + "gtceu.multiblock.dimension": "%sx%sx%sɹ§ :suoısuǝɯıᗡǝ§", "gtceu.multiblock.distillation_tower.description": "˙uoıʇısod ʎuɐ uı spınןɟ ʇɹǝsuı puɐ sɯǝʇı ʇndʇno uɐɔ ɹǝʎɐן ɯoʇʇoq ǝɥ⟘ ˙ǝuo puoɔǝs ǝɥʇ ɯoɹɟ buıʇɹɐʇs 'ɥɔʇɐɥ ʇndʇno ǝuo ʎןʇɔɐxǝ ǝʌɐɥ ʇsnɯ ɹǝʎɐן ɥɔɐƎ ˙sʇɔnpoɹdʎq ɹıǝɥʇ ɟo ǝɯos puɐ ןıO ɟo sǝdʎʇ snoıɹɐʌ ǝɥʇ buıןןıʇsıp ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ ǝɥ⟘", "gtceu.multiblock.distillation_tower.distilling_fluid": "%s buıןןıʇsıᗡ", "gtceu.multiblock.electric_blast_furnace.description": "˙ʎoןןɐ ɥɐpɐnbɐu puɐ 'ɯnıuɐʇıʇ 'ןǝǝʇs ssǝןuıɐʇs 'ɯnıuıɯnןɐ sɐ ɥɔns 'sןɐʇǝɯ puɐ sʎoןןɐ ɹǝıʇ-ɥbıɥ buıuıɐʇqo ɹoɟ pǝɹınbǝɹ sı ʇI ˙sǝɹo buıuıɟǝɹ puɐ sןɐʇǝɯ buıʞooɔ 'sʎoןןɐ buıʇןǝɯs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı )ℲᗺƎ( ǝɔɐuɹnℲ ʇsɐןᗺ ɔıɹʇɔǝןƎ ǝɥ⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index b9bf6ca36e1..20d3c1fb08b 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3186,6 +3186,7 @@ "gtceu.multiblock.cracking_unit.energy": "Energy Usage: %s%%", "gtceu.multiblock.data_bank.description": "The Data Bank is a multiblock structure used for sharing Assembly Line Research Data between multiple Assembly Lines. Additionally, it enables Assembly Lines to read more complex research data on Data Modules.", "gtceu.multiblock.data_bank.providing": "Providing data.", + "gtceu.multiblock.dimension": "§eDimensions: §r%sx%sx%s", "gtceu.multiblock.distillation_tower.description": "The Distillation Tower is a multiblock structure used for distilling the various types of Oil and some of their byproducts. Each layer must have exactly one output hatch, starting from the second one. The bottom layer can output items and insert fluids in any position.", "gtceu.multiblock.distillation_tower.distilling_fluid": "Distilling %s", "gtceu.multiblock.electric_blast_furnace.description": "The Electric Blast Furnace (EBF) is a multiblock structure used for smelting alloys, cooking metals and refining ores. It is required for obtaining high-tier alloys and metals, such as aluminium, stainless steel, titanium, and naquadah alloy.", diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index d87408a943c..f48ef9e220d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; @@ -202,6 +203,17 @@ public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List Date: Thu, 19 Jun 2025 10:59:51 +0200 Subject: [PATCH 057/270] Make tank widgets able to display the contents of the tank in the tooltip separately from the overlay (#3221) Co-authored-by: GirixK --- .../java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java | 4 +++- .../common/machine/multiblock/primitive/CokeOvenMachine.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java index 91f3322c424..93da02eaab1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java @@ -112,6 +112,8 @@ public class TankWidget extends Widget implements IRecipeIngredientSlot, IConfig protected int lastTankCapacity; @Setter protected Runnable changeListener; + @Setter + protected boolean showAmountOverlay = true; public TankWidget() { this(null, 0, 0, 18, 18, true, true); @@ -388,7 +390,7 @@ public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mous ((int) (width * drawnWidth)), ((int) (height * drawnHeight))); } - if (showAmount && !renderedFluid.isEmpty()) { + if (showAmount && showAmountOverlay && !renderedFluid.isEmpty()) { graphics.pose().pushPose(); graphics.pose().scale(0.5F, 0.5F, 1); String s = TextFormattingUtil.formatLongToCompactStringBuckets(renderedFluid.getAmount(), 3) + "B"; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java index f4fccd52e15..4d23df29cb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CokeOvenMachine.java @@ -50,7 +50,7 @@ public ModularUI createUI(Player entityPlayer) { .widget(new TankWidget(exportFluids.getStorages()[0], 134, 13, 20, 58, true, false) .setBackground(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK) .setFillDirection(ProgressTexture.FillDirection.DOWN_TO_UP) - .setShowAmount(false) + .setShowAmountOverlay(false) .setOverlay(GuiTextures.PRIMITIVE_LARGE_FLUID_TANK_OVERLAY)) .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, true)); From dd580b07a8d4f972089f2374e4b479afed88226e Mon Sep 17 00:00:00 2001 From: iouter <62897714+iouter@users.noreply.github.com> Date: Sun, 22 Jun 2025 17:06:30 +0800 Subject: [PATCH 058/270] Update zh_cn.json (#3244) --- .../resources/assets/gtceu/lang/zh_cn.json | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 6e0bfd56fba..51d8d55298d 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -1097,7 +1097,7 @@ "block.gtceu.steel_firebox_casing": "钢制燃烧室", "block.gtceu.steel_gearbox": "钢齿轮箱机械方块", "block.gtceu.steel_large_boiler": "大型钢锅炉", - "block.gtceu.steel_machine_casing": "脱氧钢机械方块", + "block.gtceu.steel_machine_casing": "牢固机械方块", "block.gtceu.steel_multiblock_tank": "钢制多方块储罐", "block.gtceu.steel_pipe_casing": "钢管道方块", "block.gtceu.steel_tank_valve": "钢制储罐阀门", @@ -1972,6 +1972,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "私有权归最初加装该覆盖板的玩家所有", "cover.ender_fluid_link.private.tooltip.enabled": "切换至公共储罐模式", "cover.ender_fluid_link.title": "末影流体连接", + "cover.ender_fluid_link.tooltip.channel_description": "把输入文本设为频道描述", + "cover.ender_fluid_link.tooltip.channel_name": "把输入文本设为频道名", + "cover.ender_fluid_link.tooltip.clear_button": "清除频道描述", + "cover.ender_fluid_link.tooltip.list_button": "显示频道列表", "cover.filter.blacklist.disabled": "白名单", "cover.filter.blacklist.enabled": "黑名单", "cover.filter.mode.filter_both": "过滤两者", @@ -2164,6 +2168,7 @@ "gtceu.canner": "装罐机", "gtceu.centrifuge": "离心机", "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "第一", "gtceu.chance_logic.none": "NONE", "gtceu.chance_logic.or": "OR", "gtceu.chance_logic.xor": "XOR", @@ -2354,7 +2359,7 @@ "gtceu.gui.multiblock_item_voiding.0": "销毁模式", "gtceu.gui.multiblock_item_voiding.1": "§7销毁§6物品", "gtceu.gui.multiblock_no_voiding.0": "销毁模式", - "gtceu.gui.multiblock_no_voiding.1": "§7不进行销毁", + "gtceu.gui.multiblock_no_voiding.1": "§7不销毁", "gtceu.gui.output_setting.title": "输出设置", "gtceu.gui.output_setting.tooltips.0": "左键单击以自动输出物品", "gtceu.gui.output_setting.tooltips.1": "右键单击以自动输出流体", @@ -3181,6 +3186,7 @@ "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", "gtceu.multiblock.data_bank.description": "数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", "gtceu.multiblock.data_bank.providing": "提供数据。", + "gtceu.multiblock.dimension": "§e维度:§r%sx%sx%s", "gtceu.multiblock.distillation_tower.description": "蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸馏%s", "gtceu.multiblock.electric_blast_furnace.description": "电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", @@ -3190,7 +3196,7 @@ "gtceu.multiblock.fluid_rig.drilled_fluid": "流体:%s", "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", "gtceu.multiblock.fluid_rig.no_fluid_in_area": "区域内没有。", - "gtceu.multiblock.fluid_rig.vein_depleted": "矿脉已殆尽", + "gtceu.multiblock.fluid_rig.vein_depleted": "矿脉已枯竭", "gtceu.multiblock.fluid_rig.vein_depletion": "矿脉大小:%s", "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", "gtceu.multiblock.fusion_reactor.heat": "热量:%d", @@ -4007,7 +4013,6 @@ "item.gtceu.lime_dye_spray_can": "喷漆罐(黄绿色)", "item.gtceu.lime_glass_lens": "玻璃透镜(黄绿色)", "item.gtceu.liquid_fuel_jetpack": "液体燃料喷气背包", - "item.gtceu.long_rod_extruder_mold": "模头(长杆)", "item.gtceu.long_treated_wood_rod": "长防腐木棍", "item.gtceu.long_wood_rod": "长木棍", "item.gtceu.lpic_chip": "LPIC芯片", @@ -4698,6 +4703,9 @@ "material.gtceu.bastnasite": "氟碳镧铈矿", "material.gtceu.battery_alloy": "电池合金", "material.gtceu.bauxite": "铝土矿", + "material.gtceu.bauxite_slag": "铝土矿渣", + "material.gtceu.bauxite_sludge": "铝土泥渣", + "material.gtceu.bauxite_slurry": "铝土浆液", "material.gtceu.bentonite": "膨润土", "material.gtceu.benzene": "苯", "material.gtceu.berkelium": "锫", @@ -4718,7 +4726,7 @@ "material.gtceu.blue_dye": "蓝色染料", "material.gtceu.blue_steel": "蓝钢", "material.gtceu.blue_topaz": "蓝黄玉", - "material.gtceu.bohrium": "钅波", + "material.gtceu.bohrium": "𬭛", "material.gtceu.bone": "骨头", "material.gtceu.borax": "硼砂", "material.gtceu.bornite": "斑铜矿", @@ -4778,8 +4786,9 @@ "material.gtceu.concrete": "混凝土", "material.gtceu.construction_foam": "建筑泡沫", "material.gtceu.cooperite": "谢尔顿矿", - "material.gtceu.copernicium": "钅哥", + "material.gtceu.copernicium": "鿔", "material.gtceu.copper": "铜", + "material.gtceu.cracked_bauxite_slurry": "裂化铝土浆液", "material.gtceu.creosote": "杂酚油", "material.gtceu.cumene": "异丙苯", "material.gtceu.cupric_oxide": "氧化铜", @@ -4790,7 +4799,8 @@ "material.gtceu.cyclohexanone_oxime": "环己酮肟", "material.gtceu.damascus_steel": "大马士革钢", "material.gtceu.dark_ash": "黑色灰烬", - "material.gtceu.darmstadtium": "钅达", + "material.gtceu.darmstadtium": "𫟼", + "material.gtceu.decalcified_bauxite_sludge": "脱钙铝土泥渣", "material.gtceu.deepslate": "深板岩", "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化铀", "material.gtceu.deuterium": "氘", @@ -4816,7 +4826,7 @@ "material.gtceu.dissolved_calcium_acetate": "乙酸钙溶液", "material.gtceu.distilled_water": "蒸馏水", "material.gtceu.drilling_fluid": "钻井液", - "material.gtceu.dubnium": "钅杜", + "material.gtceu.dubnium": "𬭊", "material.gtceu.duranium": "铿铀", "material.gtceu.dysprosium": "镝", "material.gtceu.echo_shard": "回响碎片", @@ -4851,7 +4861,7 @@ "material.gtceu.ferrosilite": "铁辉石", "material.gtceu.fireclay": "耐火黏土", "material.gtceu.fish_oil": "鱼油", - "material.gtceu.flerovium": "钅夫", + "material.gtceu.flerovium": "𫓧", "material.gtceu.flint": "燧石", "material.gtceu.fluorine": "氟", "material.gtceu.fluoroantimonic_acid": "氟锑酸", @@ -4893,7 +4903,7 @@ "material.gtceu.gunpowder": "火药", "material.gtceu.gypsum": "石膏", "material.gtceu.hafnium": "铪", - "material.gtceu.hassium": "钅黑", + "material.gtceu.hassium": "𬭶", "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", "material.gtceu.heavy_fuel": "重燃油", @@ -4922,6 +4932,7 @@ "material.gtceu.hypochlorous_acid": "次氯酸", "material.gtceu.ice": "冰", "material.gtceu.ilmenite": "钛铁矿", + "material.gtceu.ilmenite_slag": "钛铁矿渣", "material.gtceu.impure_enriched_naquadah_solution": "含杂富集硅岩溶液", "material.gtceu.impure_naquadria_solution": "含杂超能硅岩溶液", "material.gtceu.incoloy_ma_956": "耐热铬铁合金 MA-956", @@ -4969,7 +4980,7 @@ "material.gtceu.liquid_nether_air": "液态下界空气", "material.gtceu.lithium": "锂", "material.gtceu.lithium_chloride": "氯化锂", - "material.gtceu.livermorium": "钅立", + "material.gtceu.livermorium": "𫟷", "material.gtceu.lpg": "液化石油气", "material.gtceu.lubricant": "润滑油", "material.gtceu.lutetium": "镥", @@ -4993,7 +5004,7 @@ "material.gtceu.massicot": "铅黄", "material.gtceu.mc_guffium_239": "麦高芬-239", "material.gtceu.meat": "肉", - "material.gtceu.meitnerium": "钅麦", + "material.gtceu.meitnerium": "鿏", "material.gtceu.mendelevium": "钔", "material.gtceu.mercury": "汞", "material.gtceu.mercury_barium_calcium_cuprate": "汞钡钙铜氧化物", @@ -5032,7 +5043,7 @@ "material.gtceu.nichrome": "镍铬合金", "material.gtceu.nickel": "镍", "material.gtceu.nickel_zinc_ferrite": "镍锌铁氧体", - "material.gtceu.nihonium": "钅尔", + "material.gtceu.nihonium": "鿭", "material.gtceu.niobium": "铌", "material.gtceu.niobium_nitride": "氮化铌", "material.gtceu.niobium_titanium": "铌钛合金", @@ -5048,7 +5059,7 @@ "material.gtceu.nobelium": "锘", "material.gtceu.obsidian": "黑曜石", "material.gtceu.octane": "辛烷", - "material.gtceu.oganesson": "气奥", + "material.gtceu.oganesson": "鿫", "material.gtceu.oil": "石油", "material.gtceu.oil_heavy": "重油", "material.gtceu.oil_light": "轻油", @@ -5144,7 +5155,7 @@ "material.gtceu.rhodium_sulfate": "硫酸铑", "material.gtceu.rock_salt": "岩盐", "material.gtceu.rocket_fuel": "火箭燃料", - "material.gtceu.roentgenium": "钅仑", + "material.gtceu.roentgenium": "𬬭", "material.gtceu.rose_gold": "玫瑰金", "material.gtceu.rtm_alloy": "钌钨钼合金", "material.gtceu.rubber": "橡胶", @@ -5155,7 +5166,7 @@ "material.gtceu.ruthenium": "钌", "material.gtceu.ruthenium_tetroxide": "四氧化钌", "material.gtceu.ruthenium_trinium_americium_neutronate": "钌凯金镅中子素氧化物", - "material.gtceu.rutherfordium": "钅卢", + "material.gtceu.rutherfordium": "𬬻", "material.gtceu.rutile": "金红石", "material.gtceu.salt": "盐", "material.gtceu.salt_water": "盐水", @@ -5167,7 +5178,7 @@ "material.gtceu.scandium": "钪", "material.gtceu.scheelite": "白钨矿", "material.gtceu.sculk": "幽匿", - "material.gtceu.seaborgium": "钅喜", + "material.gtceu.seaborgium": "𬭳", "material.gtceu.seed_oil": "种子油", "material.gtceu.selenium": "硒", "material.gtceu.severely_hydro_cracked_gas": "重度加氢裂化炼油气", @@ -5232,7 +5243,7 @@ "material.gtceu.tantalum_carbide": "碳化钽", "material.gtceu.technetium": "锝", "material.gtceu.tellurium": "碲", - "material.gtceu.tennessine": "石田", + "material.gtceu.tennessine": "鿬", "material.gtceu.terbium": "铽", "material.gtceu.tetrafluoroethylene": "四氟乙烯", "material.gtceu.tetrahedrite": "黝铜矿", @@ -5511,6 +5522,7 @@ "tagprefix.spring": "%s弹簧", "tagprefix.stairs": "%s楼梯", "tagprefix.stone": "%s矿石", + "tagprefix.surface_rock": "地表岩石(%s)", "tagprefix.tiny_dust": "小撮%s粉", "tagprefix.tuff": "凝灰岩%s矿石", "tagprefix.turbine_blade": "%s涡轮扇叶", From a8a05006c80b0e82b8678f8940e345c11da59dae Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:14:41 +0300 Subject: [PATCH 059/270] fix all the lighter and TNT logic being terribly jank. (#3202) --- .../data/forge/tags/items/tools/igniter.json | 9 + .../blocks/charcoal_pile_igniter_walls.json | 14 + .../block/explosive/GTExplosiveBlock.java | 44 +-- .../block/explosive/IndustrialTNTBlock.java | 2 +- .../block/explosive/PowderbarrelBlock.java | 2 +- .../gtceu/common/data/GTItems.java | 12 +- .../item/tool/behavior/LighterBehavior.java | 298 ++++++++++-------- .../primitive/CharcoalPileIgniterMachine.java | 243 +++++++------- .../gtceu/core/mixins/CreeperMixin.java | 43 --- .../gtceu/data/recipe/CustomTags.java | 4 + .../gtceu/data/tags/BlockTagLoader.java | 30 +- .../gtceu/data/tags/ItemTagLoader.java | 3 + .../com/gregtechceu/gtceu/utils/GTUtil.java | 2 +- src/main/resources/gtceu.mixins.json | 1 - 14 files changed, 354 insertions(+), 353 deletions(-) create mode 100644 src/generated/resources/data/forge/tags/items/tools/igniter.json create mode 100644 src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java diff --git a/src/generated/resources/data/forge/tags/items/tools/igniter.json b/src/generated/resources/data/forge/tags/items/tools/igniter.json new file mode 100644 index 00000000000..197502e68b2 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/tools/igniter.json @@ -0,0 +1,9 @@ +{ + "values": [ + "gtceu:matches", + "gtceu:matchbox", + "gtceu:invar_lighter", + "gtceu:platinum_lighter", + "#minecraft:creeper_igniters" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json b/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json new file mode 100644 index 00000000000..1dcbb3b4810 --- /dev/null +++ b/src/generated/resources/data/gtceu/tags/blocks/charcoal_pile_igniter_walls.json @@ -0,0 +1,14 @@ +{ + "remove": [ + "minecraft:moss_block", + "minecraft:mud", + "minecraft:muddy_mangrove_roots" + ], + "values": [ + "#minecraft:dirt", + "minecraft:dirt_path", + "#forge:sand", + "#minecraft:sand", + "#minecraft:terracotta" + ] +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java index 4ffec36867e..9a5a379dca2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java @@ -1,9 +1,11 @@ package com.gregtechceu.gtceu.common.block.explosive; import com.gregtechceu.gtceu.common.entity.GTExplosiveEntity; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -14,7 +16,6 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Arrow; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Explosion; @@ -22,8 +23,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootParams; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; @@ -56,7 +56,7 @@ public GTExplosiveBlock(BlockBehaviour.Properties properties, boolean canRedston } protected abstract GTExplosiveEntity createEntity(@NotNull Level world, @NotNull BlockPos pos, - @NotNull LivingEntity exploder); + @Nullable LivingEntity exploder); @Override public boolean isCollisionShapeFullBlock(BlockState state, BlockGetter level, BlockPos pos) { @@ -68,13 +68,20 @@ public boolean dropFromExplosion(Explosion explosion) { return false; } - public void explode(Level world, BlockPos pos, LivingEntity exploder) { - if (!world.isClientSide) { - GTExplosiveEntity entity = createEntity(world, pos, exploder); + @Override + public void onCaughtFire(BlockState state, Level level, BlockPos pos, @Nullable Direction face, + @Nullable LivingEntity igniter) { + explode(level, pos, igniter); + } + + public void explode(Level level, BlockPos pos, @Nullable LivingEntity exploder) { + if (!level.isClientSide) { + GTExplosiveEntity entity = createEntity(level, pos, exploder); entity.setFuse(fuseLength); - world.addFreshEntity(entity); - world.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.TNT_PRIMED, + level.addFreshEntity(entity); + level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.TNT_PRIMED, SoundSource.BLOCKS, 1.0f, 1.0f); + level.gameEvent(entity, GameEvent.PRIME_FUSE, pos); } } @@ -91,11 +98,11 @@ public void wasExploded(Level level, BlockPos pos, Explosion explosion) { public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ItemStack stack = player.getItemInHand(hand); - if (!stack.isEmpty() && (stack.getItem() == Items.FLINT_AND_STEEL || stack.getItem() == Items.FIRE_CHARGE)) { + if (!stack.isEmpty() && stack.is(CustomTags.TOOLS_IGNITER)) { this.explode(level, pos, player); level.removeBlock(pos, false); - if (stack.getItem() == Items.FLINT_AND_STEEL) { - stack.hurtAndBreak(1, player, playerx -> playerx.broadcastBreakEvent(hand)); + if (stack.isDamageableItem()) { + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); } else if (!player.isCreative()) { stack.shrink(1); } @@ -105,16 +112,11 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player } @Override - public List getDrops(BlockState state, LootParams.Builder params) { - if (explodeOnMine) { - Entity entity = params.getOptionalParameter(LootContextParams.THIS_ENTITY); - if (entity != null && !entity.isCrouching() && entity instanceof LivingEntity living) { - this.explode(params.getLevel(), BlockPos.containing(params.getParameter(LootContextParams.ORIGIN)), - living); - return List.of(); - } + public void playerWillDestroy(Level level, BlockPos pos, BlockState state, Player player) { + if (explodeOnMine && !player.isShiftKeyDown()) { + this.explode(level, pos, player); } - return super.getDrops(state, params); + super.playerWillDestroy(level, pos, state, player); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java index c379f830f88..3c86c9c410f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/IndustrialTNTBlock.java @@ -32,7 +32,7 @@ public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List createFluidCell(Material mat, int capacit .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .properties(p -> p.stacksTo(stackSize)) .onRegister(attach(cellName(), - ThermalFluidStats.create(FluidType.BUCKET_VOLUME * capacity, - prop, true), + ThermalFluidStats.create(FluidType.BUCKET_VOLUME * capacity, prop, true), new ItemFluidContainer())) - .onRegister( - materialInfo(new ItemMaterialInfo(new MaterialStack(mat, GTValues.M * matSize)))) + .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(mat, GTValues.M * matSize)))) .register(); } @@ -394,12 +392,14 @@ public static ItemEntry createFluidCell(Material mat, int capacit .lang("Matches") .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(false, false, false))) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_MATCHBOX = REGISTRATE.item("matchbox", ComponentItem::create) .lang("Matchbox") .properties(p -> p.stacksTo(1)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) - .onRegister(attach(new LighterBehavior(false, true, false, Items.PAPER, 16))) + .onRegister(attach(new LighterBehavior(false, true, false, () -> new ItemStack(Items.PAPER, 1), 16))) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_LIGHTER_INVAR = REGISTRATE.item("invar_lighter", ComponentItem::create) .lang("Invar Lighter") @@ -411,6 +411,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry TOOL_LIGHTER_PLATINUM = REGISTRATE .item("platinum_lighter", ComponentItem::create) @@ -423,6 +424,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) + .tag(CustomTags.TOOLS_IGNITER) .register(); public static ItemEntry CARBON_FIBERS = REGISTRATE.item("carbon_fibers", Item::new) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java index eec6e5d5673..ebaae0ca6b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java @@ -1,42 +1,50 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDurabilityBar; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; import com.gregtechceu.gtceu.common.block.explosive.GTExplosiveBlock; +import com.gregtechceu.gtceu.common.block.explosive.IndustrialTNTBlock; +import com.gregtechceu.gtceu.common.block.explosive.PowderbarrelBlock; import com.gregtechceu.gtceu.utils.GradientUtil; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.monster.Creeper; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.FluidState; import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; import it.unimi.dsi.fastutil.ints.IntIntPair; +import it.unimi.dsi.fastutil.objects.Reference2BooleanMap; +import it.unimi.dsi.fastutil.objects.Reference2BooleanOpenHashMap; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.List; - -import javax.annotation.Nullable; +import java.util.function.Supplier; import static net.minecraft.world.level.block.AbstractCandleBlock.LIT; @@ -45,27 +53,21 @@ public class LighterBehavior implements IDurabilityBar, IInteractionItem, IAddIn public static final String LIGHTER_OPEN = "lighterOpen"; private static final String USES_LEFT = "usesLeft"; private static final IntIntPair DURABILITY_BAR_COLORS = GradientUtil.getGradient(0xF07F1D, 10); - private final ResourceLocation overrideLocation; private final boolean usesFluid; private final boolean hasMultipleUses; private final boolean canOpen; - private Item destroyItem = Items.AIR; + private Supplier destroyItem = () -> ItemStack.EMPTY; private int maxUses = 0; - public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen) { - this(null, useFluid, hasMultipleUses, canOpen); - } - - public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen, Item destroyItem, int maxUses) { - this(null, useFluid, hasMultipleUses, canOpen); + public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen, Supplier destroyItem, + int maxUses) { + this(useFluid, hasMultipleUses, canOpen); this.maxUses = maxUses; this.destroyItem = destroyItem; } - public LighterBehavior(@Nullable ResourceLocation overrideLocation, boolean useFluid, boolean hasMultipleUses, - boolean canOpen) { - this.overrideLocation = overrideLocation; + public LighterBehavior(boolean useFluid, boolean hasMultipleUses, boolean canOpen) { this.usesFluid = useFluid; this.hasMultipleUses = hasMultipleUses; this.canOpen = canOpen; @@ -84,107 +86,82 @@ public InteractionResultHolder use(Item item, Level level, Player pla @Override public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) { - // ItemStack itemStack = player.getItemInHand(usedHand); CompoundTag tag = itemStack.getOrCreateTag(); + Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - BlockState state = context.getLevel().getBlockState(pos); + Direction clickedFace = context.getClickedFace(); + BlockState state = level.getBlockState(pos); Block block = state.getBlock(); - BlockPos offset = pos.offset(context.getClickedFace().getNormal()); - - if ((!canOpen || (tag.getBoolean(LIGHTER_OPEN)) && !player.isCrouching())) { - if (block instanceof TntBlock tnt && consumeFuel(player, itemStack)) { - tnt.onCaughtFire(null, context.getLevel(), pos, null, player); - context.getLevel().setBlock(pos, Blocks.AIR.defaultBlockState(), - Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } - if (block instanceof GTExplosiveBlock explosive && consumeFuel(player, itemStack)) { - explosive.explode(context.getLevel(), pos, player); - context.getLevel().setBlock(pos, Blocks.AIR.defaultBlockState(), - Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } - if (block instanceof CandleBlock) { - if (CandleBlock.canLight(state) && !CandleBlock.isLit(state) && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; - } - if (block instanceof CandleCakeBlock) { - if (CandleCakeBlock.canLight(state) && !CandleCakeBlock.isLit(state) && - consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; - } - if (block instanceof CampfireBlock) { - if (CampfireBlock.canLight(state) && !CampfireBlock.isLitCampfire(state) && - consumeFuel(player, itemStack)) { - context.getLevel().setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; - } else return InteractionResult.PASS; + + if ((!canOpen || tag.getBoolean(LIGHTER_OPEN)) && (player == null || !player.isShiftKeyDown())) { + // check if it's "tnt-like" in that it implements the same method for igniting it + if (classImplementsOnCaughtFire(block.getClass())) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + state.onCaughtFire(level, pos, clickedFace, player); + FluidState fluidState = level.getFluidState(pos); + level.setBlock(pos, fluidState.createLegacyBlock(), Block.UPDATE_ALL_IMMEDIATE); + return InteractionResult.sidedSuccess(level.isClientSide); } - if (block instanceof SoulSandBlock && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.SOUL_FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); - } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.PASS; + if ((CampfireBlock.canLight(state) || CandleBlock.canLight(state) || CandleCakeBlock.canLight(state))) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + level.setBlock(pos, state.setValue(LIT, true), Block.UPDATE_ALL_IMMEDIATE); + level.playSound(player, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + level.gameEvent(player, GameEvent.BLOCK_CHANGE, pos); + return InteractionResult.sidedSuccess(level.isClientSide); } - if (block == Blocks.SOUL_SOIL && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.SOUL_FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); + + BlockPos offset = pos.relative(clickedFace); + if (BaseFireBlock.canBePlacedAt(level, offset, context.getHorizontalDirection())) { + if (!consumeFuel(player, itemStack)) return InteractionResult.PASS; + + level.playSound(player, offset, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + BlockState fireState = BaseFireBlock.getState(level, offset); + level.setBlock(offset, fireState, Block.UPDATE_ALL_IMMEDIATE); + level.gameEvent(player, GameEvent.BLOCK_PLACE, pos); + + if (player instanceof ServerPlayer serverPlayer) { + CriteriaTriggers.PLACED_BLOCK.trigger(serverPlayer, offset, itemStack); + itemStack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(context.getHand())); } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.PASS; + return InteractionResult.sidedSuccess(level.isClientSide); } + } + return InteractionResult.PASS; + } - if (context.getLevel().isEmptyBlock(offset) && - BaseFireBlock.canBePlacedAt(context.getLevel(), offset, context.getHorizontalDirection()) && - block != Blocks.FIRE && block != Blocks.SOUL_FIRE && consumeFuel(player, itemStack)) { - context.getLevel().setBlock(offset, Blocks.FIRE.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE); - if (!context.getLevel().isClientSide) { - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayer) player, offset, itemStack); + @Override + public InteractionResult interactLivingEntity(ItemStack stack, Player player, + LivingEntity interactionTarget, InteractionHand usedHand) { + CompoundTag tag = stack.getOrCreateTag(); + Level level = player.level(); + + if ((!canOpen || tag.getBoolean(LIGHTER_OPEN)) && !player.isShiftKeyDown()) { + if (interactionTarget instanceof Creeper creeper) { + if (!consumeFuel(player, stack)) return InteractionResult.PASS; + level.playSound(player, creeper, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, + 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F); + if (!level.isClientSide) { + creeper.ignite(); } - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, SoundSource.PLAYERS, - 1.0F, - GTValues.RNG.nextFloat() * 0.4F + 0.8F); - return InteractionResult.SUCCESS; + return InteractionResult.sidedSuccess(level.isClientSide); } } return InteractionResult.PASS; } - public boolean consumeFuel(Player player, ItemStack stack) { + public boolean consumeFuel(@Nullable Player player, ItemStack stack) { if (player != null && player.isCreative()) return true; - int usesLeft = getUsesLeft(stack); + int usesLeft = getUsesLeft(stack) - 1; - if (usesLeft - 1 >= 0) { - setUsesLeft(player, stack, usesLeft - 1); + if (usesLeft >= 0) { + setUsesLeft(player, stack, usesLeft); return true; } return false; @@ -192,43 +169,39 @@ public boolean consumeFuel(Player player, ItemStack stack) { private int getUsesLeft(ItemStack stack) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem == null) - return 0; - - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.drain(Integer.MAX_VALUE, - IFluidHandler.FluidAction.SIMULATE); - return fluid.isEmpty() ? 0 : fluid.getAmount(); - } - if (hasMultipleUses) { + var handler = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null).resolve(); + if (handler.isEmpty()) return 0; + + FluidStack fluid = handler.get().drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); + return fluid.getAmount(); + } else if (hasMultipleUses) { CompoundTag compound = stack.getOrCreateTag(); if (compound.contains(USES_LEFT)) { return compound.getInt(USES_LEFT); } compound.putInt(USES_LEFT, maxUses); - stack.setTag(compound); - return compound.getInt(USES_LEFT); + // no need to get the value from the tag here when we set it just above + return maxUses; + } else { + return stack.getCount(); } - return stack.getCount(); } - private void setUsesLeft(Player player, @NotNull ItemStack stack, int usesLeft) { + private void setUsesLeft(Player player, @NotNull ItemStack stack, final int usesLeft) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem != null) { - - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.drain(Integer.MAX_VALUE, - IFluidHandler.FluidAction.SIMULATE); + stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresent(handler -> { + FluidStack fluid = handler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); if (!fluid.isEmpty()) { - fluidHandlerItem.drain(fluid.getAmount() - usesLeft, IFluidHandler.FluidAction.EXECUTE); + handler.drain(fluid.getAmount() - usesLeft, IFluidHandler.FluidAction.EXECUTE); } - } + }); } else if (hasMultipleUses) { - if (usesLeft == 0) { - stack.setCount(0); - player.addItem(new ItemStack(destroyItem)); + if (usesLeft <= 0) { + stack.shrink(1); + ItemStack brokenStack = this.destroyItem.get(); + if (!player.addItem(brokenStack)) { + player.drop(brokenStack, true); + } } else { stack.getOrCreateTag().putInt(USES_LEFT, usesLeft); } @@ -240,17 +213,16 @@ private void setUsesLeft(Player player, @NotNull ItemStack stack, int usesLeft) @Override public float getDurabilityForDisplay(ItemStack stack) { if (usesFluid) { - IFluidHandlerItem fluidHandlerItem = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null) - .resolve().orElse(null); - if (fluidHandlerItem == null) - return 0.0f; + var handler = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM, null).resolve(); + if (handler.isEmpty()) return 0.0f; - net.minecraftforge.fluids.FluidStack fluid = fluidHandlerItem.getFluidInTank(0); - return fluid.isEmpty() ? 0.0f : (float) fluid.getAmount() / (float) fluidHandlerItem.getTankCapacity(0); + FluidStack fluid = handler.get().getFluidInTank(0); + return (float) fluid.getAmount() / (float) handler.get().getTankCapacity(0); } else if (hasMultipleUses) { return (float) getUsesLeft(stack) / (float) maxUses; + } else { + return 0.0f; } - return 0.0f; } @Override @@ -272,7 +244,7 @@ public boolean showEmptyBar(ItemStack itemStack) { } @Override - public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable Level level, + public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { tooltipComponents.add(Component .translatable(usesFluid ? "behaviour.lighter.fluid.tooltip" : "behaviour.lighter.tooltip.description")); @@ -281,4 +253,66 @@ public void appendHoverText(ItemStack stack, @org.jetbrains.annotations.Nullable tooltipComponents.add(Component.translatable("behaviour.lighter.uses", getUsesLeft(stack))); } } + + private static boolean defaultsCacheInit = false; + private static final Reference2BooleanMap> IMPLS_CACHE = new Reference2BooleanOpenHashMap<>(); + + /** + * This is the simplest way I could figure out to check if a block can "catch fire" like TNT does (i.e. explode.), + * whilst still placing a fire block if the block can't do that. + *

+ * Most modded TNTs implement this method in one way or another, but don't have tags or extend {@link TntBlock}. + * + * @author screret + */ + private static boolean classImplementsOnCaughtFire(Class clazz) { + if (!defaultsCacheInit) { + initCacheDefaults(); + defaultsCacheInit = true; + } + // first, check if class is cached + if (IMPLS_CACHE.containsKey(clazz)) { + return IMPLS_CACHE.getBoolean(clazz); + } else { + // then, cached superclasses + for (Class cls = clazz; cls != Block.class; cls = cls.getSuperclass()) { + if (IMPLS_CACHE.containsKey(cls)) { + boolean val = IMPLS_CACHE.getBoolean(cls); + IMPLS_CACHE.put(clazz, val); + return val; + } + } + } + boolean exists; + + // finally, actually check if the method exists. + try { + // find the method and check its modifiers. + Method onCaughtFire = clazz.getDeclaredMethod("onCaughtFire", + BlockState.class, Level.class, BlockPos.class, Direction.class, LivingEntity.class); + int modifiers = onCaughtFire.getModifiers(); + // the method is implemented if it's: 1. not a default method, 2. public, 3. not static, 4. not abstract + exists = !onCaughtFire.getDeclaringClass().isInterface() && Modifier.isPublic(modifiers) && + !Modifier.isStatic(modifiers) && !Modifier.isAbstract(modifiers); + + IMPLS_CACHE.put(onCaughtFire.getDeclaringClass(), exists); + } catch (NoSuchMethodException e) { + exists = false; + } + IMPLS_CACHE.put(clazz, exists); + return exists; + } + + private static void initCacheDefaults() { + // self-test & default caching + if (!classImplementsOnCaughtFire(TntBlock.class)) { + throw new AssertionError("TntBlock doesn't implement IForgeBlock#onCaughtFire!" + + "Something is seriously wrong!" + + "Maybe check if the method name changed?"); + } + classImplementsOnCaughtFire(GTExplosiveBlock.class); + // expected subclasses of GTExplosiveBlock + classImplementsOnCaughtFire(IndustrialTNTBlock.class); + classImplementsOnCaughtFire(PowderbarrelBlock.class); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java index 8b6ea160e46..1805d16d635 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/CharcoalPileIgniterMachine.java @@ -4,44 +4,46 @@ import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; +import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; +import com.lowdragmc.lowdraglib.utils.BlockInfo; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.sounds.SoundEvent; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import it.unimi.dsi.fastutil.longs.Long2BooleanMap; +import it.unimi.dsi.fastutil.longs.Long2BooleanOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import lombok.Getter; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -49,27 +51,15 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implements IWorkable { - private static final Set WALL_BLOCKS = new ObjectOpenHashSet<>(); - static { - WALL_BLOCKS.add(Blocks.DIRT); - WALL_BLOCKS.add(Blocks.COARSE_DIRT); - WALL_BLOCKS.add(Blocks.PODZOL); - WALL_BLOCKS.add(Blocks.GRASS_BLOCK); - WALL_BLOCKS.add(Blocks.DIRT_PATH); - WALL_BLOCKS.add(Blocks.SAND); - WALL_BLOCKS.add(Blocks.RED_SAND); - - } - protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( CharcoalPileIgniterMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - private final Collection logPos = new ObjectOpenHashSet<>(); - private static final int MIN_RADIUS = 1; private static final int MIN_DEPTH = 2; + private final Collection logPos = new ObjectOpenHashSet<>(); + @DescSynced private int lDist = 0; @DescSynced @@ -80,13 +70,8 @@ public class CharcoalPileIgniterMachine extends WorkableMultiblockMachine implem private int fDist = 0; @DescSynced private int hDist = 0; - @Getter - @DescSynced - @RequireRerender - private boolean isActive; - private int progressTime = 0; - private int maxTime = 0; - private TickableSubscription burnLogsSubscription; + + private boolean hasAir = false; public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { super(holder); @@ -95,43 +80,38 @@ public CharcoalPileIgniterMachine(IMachineBlockEntity holder) { @Override public void onStructureFormed() { super.onStructureFormed(); - updateMaxProgessTime(); - burnLogsSubscription = subscribeServerTick(this::tick); - tick(); - } - - @Override - public void onStructureInvalid() { - super.onStructureInvalid(); - resetState(); - this.progressTime = 0; - this.maxTime = 0; + hasAir = false; + if (getMultiblockState().getMatchContext().containsKey("logPos")) { + Long2BooleanMap logPositions = getMultiblockState().getMatchContext().get("logPos"); + for (var entry : logPositions.long2BooleanEntrySet()) { + if (entry.getBooleanValue()) { + logPos.add(BlockPos.of(entry.getLongKey())); + } else { + hasAir = true; + } + } + } + this.getRecipeLogic().setDuration(Math.max(1, (int) Math.sqrt(logPos.size() * 240_000))); } @Override - public ManagedFieldHolder getFieldHolder() { - return MANAGED_FIELD_HOLDER; + protected @NotNull CharcoalRecipeLogic createRecipeLogic(Object @NotNull... args) { + return new CharcoalRecipeLogic(this); } @Override - public void onUnload() { - super.onUnload(); - resetState(); - } - - private void resetState() { - unsubscribe(burnLogsSubscription); - isActive = false; + public @NotNull CharcoalRecipeLogic getRecipeLogic() { + return (CharcoalRecipeLogic) super.getRecipeLogic(); } @Override - public int getProgress() { - return progressTime; + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; } @Override - public int getMaxProgress() { - return maxTime; + public boolean isActive() { + return recipeLogic.isWorking(); } @Override @@ -139,6 +119,9 @@ public boolean isWorkingEnabled() { return true; } + @Override + public void setWorkingEnabled(boolean isWorkingAllowed) {} + @Override public BlockPattern getPattern() { updateDimensions(); @@ -217,33 +200,29 @@ public BlockPattern getPattern() { .aisle(c) .where('S', Predicates.controller(Predicates.blocks(this.getDefinition().get()))) .where('B', Predicates.blocks(Blocks.BRICKS)) - .where('W', wallPredicate()) + .where('W', Predicates.blockTag(CustomTags.CHARCOAL_PILE_IGNITER_WALLS)) .where('L', logPredicate()) .where('A', Predicates.any()) .build(); } - private TraceabilityPredicate wallPredicate() { + protected static TraceabilityPredicate logPredicate() { return new TraceabilityPredicate(multiblockState -> { - boolean match = false; - for (var b : WALL_BLOCKS) { - if (multiblockState.getBlockState().getBlock() == b) { - match = true; - break; - } - } - return match; - }, null); - } - - private TraceabilityPredicate logPredicate() { - return new TraceabilityPredicate(multiblockState -> { - if (multiblockState.getBlockState().is(BlockTags.LOGS_THAT_BURN)) { - logPos.add(multiblockState.getPos()); + BlockState state = multiblockState.getBlockState(); + long pos = multiblockState.getPos().asLong(); + boolean log = state.is(BlockTags.LOGS_THAT_BURN); + if (log || state.isAir()) { + multiblockState.getMatchContext().getOrCreate("logPos", Long2BooleanOpenHashMap::new).put(pos, log); return true; } return false; - }, null); + // copied from PredicateBlockTag to display the preview logs properly + }, () -> BuiltInRegistries.BLOCK.getTag(BlockTags.LOGS_THAT_BURN) + .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(BlockInfo::fromBlock) + .toArray(BlockInfo[]::new)); } public void updateDimensions() { @@ -251,13 +230,15 @@ public void updateDimensions() { if (level == null) return; Direction front = getFrontFacing(); Direction back = front.getOpposite(); - Direction left = front.getCounterClockWise(); - Direction right = left.getOpposite(); + Direction left = RelativeDirection.LEFT.getRelativeFacing(front, getUpwardsFacing(), false); + Direction right = RelativeDirection.RIGHT.getRelativeFacing(front, getUpwardsFacing(), false); + + BlockPos down = getPos().relative(Direction.DOWN); - BlockPos.MutableBlockPos lPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos rPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos fPos = getPos().mutable().move(Direction.DOWN); - BlockPos.MutableBlockPos bPos = getPos().mutable().move(Direction.DOWN); + BlockPos.MutableBlockPos lPos = down.mutable(); + BlockPos.MutableBlockPos rPos = down.mutable(); + BlockPos.MutableBlockPos fPos = down.mutable(); + BlockPos.MutableBlockPos bPos = down.mutable(); BlockPos.MutableBlockPos hPos = getPos().mutable(); int lDist = 0; @@ -293,26 +274,18 @@ public void updateDimensions() { } private static boolean isBlockWall(Level level, BlockPos.MutableBlockPos pos, Direction direction) { - return WALL_BLOCKS.contains(level.getBlockState(pos.move(direction)).getBlock()); + return level.getBlockState(pos.move(direction)).is(CustomTags.CHARCOAL_PILE_IGNITER_WALLS); } private static boolean isBlockFloor(Level level, BlockPos.MutableBlockPos pos) { - return level.getBlockState(pos.move(Direction.DOWN)).getBlock() == Blocks.BRICKS; - } - - public void setActive(boolean active) { - isActive = active; - } - - private void updateMaxProgessTime() { - this.maxTime = Math.max(1, (int) Math.sqrt(logPos.size() * 240_000)); + return level.getBlockState(pos.move(Direction.DOWN)).is(Blocks.BRICKS); } @Override @OnlyIn(Dist.CLIENT) public void clientTick() { super.clientTick(); - if (isActive) { + if (isActive()) { var pos = this.getPos(); var facing = Direction.UP; float xPos = facing.getStepX() * 0.76F + pos.getX() + 0.25F + GTValues.RNG.nextFloat() / 2.0F; @@ -337,21 +310,10 @@ public void clientTick() { } } - public void tick() { - if (isActive && maxTime > 0) { - if (++progressTime == maxTime) { - progressTime = 0; - maxTime = 0; - convertLogBlocks(); - isActive = false; - } - } - } - private void convertLogBlocks() { Level level = getLevel(); for (BlockPos pos : logPos) { - level.setBlock(pos, GTBlocks.BRITTLE_CHARCOAL.getDefaultState(), Block.UPDATE_ALL); + level.setBlockAndUpdate(pos, GTBlocks.BRITTLE_CHARCOAL.getDefaultState()); } logPos.clear(); } @@ -359,38 +321,69 @@ private void convertLogBlocks() { @Override public InteractionResult onUse(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - ItemStack stack = player.getItemInHand(hand); - if (!stack.is(ItemTags.CREEPER_IGNITERS)) { + if (!isFormed() || hasAir) { return super.onUse(state, level, pos, player, hand, hit); } + ItemStack stack = player.getItemInHand(hand); + if (!stack.is(CustomTags.TOOLS_IGNITER)) { + return InteractionResult.PASS; + } - BlockEntity be = level.getBlockEntity(pos); - if (be instanceof IMachineBlockEntity machineBe) { - MetaMachine mte = machineBe.getMetaMachine(); - if (mte instanceof CharcoalPileIgniterMachine cpi && cpi.isFormed() && !cpi.isActive()) { - boolean isLighter = false; - SoundEvent sound = stack.is(Items.FIRE_CHARGE) ? SoundEvents.FIRECHARGE_USE : - SoundEvents.FLINTANDSTEEL_USE; - - if (stack.getItem() instanceof ComponentItem compItem) { - for (var component : compItem.getComponents()) { - if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { - isLighter = true; - break; - } + if (level.isClientSide && !isActive()) { + return InteractionResult.SUCCESS; + } else if (!isActive()) { + boolean shouldActivate = false; + if (stack.getItem() instanceof ComponentItem compItem) { + for (var component : compItem.getComponents()) { + if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { + shouldActivate = true; + break; } } - if (!isLighter && stack.isDamageableItem()) { - stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); - } else if (!isLighter) { - stack.shrink(1); - } + } else if (stack.isDamageableItem()) { + stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(hand)); + shouldActivate = true; + } else { + stack.shrink(1); + shouldActivate = true; + } + + if (shouldActivate) { + getRecipeLogic().setStatus(RecipeLogic.Status.WORKING); - level.playSound(null, pos, sound, SoundSource.PLAYERS, 1.0f, 1.0f); - cpi.setActive(true); - return InteractionResult.sidedSuccess(level.isClientSide); + level.playSound(null, pos, + stack.is(Items.FIRE_CHARGE) ? SoundEvents.FIRECHARGE_USE : SoundEvents.FLINTANDSTEEL_USE, + SoundSource.BLOCKS, 1.0f, 1.0f); + return InteractionResult.CONSUME; } } return super.onUse(state, level, pos, player, hand, hit); } + + public static class CharcoalRecipeLogic extends RecipeLogic { + + private final CharcoalPileIgniterMachine machine; + + public CharcoalRecipeLogic(CharcoalPileIgniterMachine machine) { + super(machine); + this.machine = machine; + } + + @Override + public void serverTick() { + super.serverTick(); + if (isWorking() && duration > 0) { + if (++progress >= duration) { + progress = 0; + duration = 0; + this.machine.convertLogBlocks(); + setStatus(Status.IDLE); + } + } + } + + public void setDuration(int max) { + this.duration = max; + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java deleted file mode 100644 index 974d1243a36..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/CreeperMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.item.ComponentItem; -import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; - -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.monster.Creeper; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(Creeper.class) -public abstract class CreeperMixin { - - @Shadow - public abstract void ignite(); - - @Inject(method = "mobInteract", at = @At(value = "HEAD")) - protected void gtceu$mobInteract(Player player, InteractionHand hand, - CallbackInfoReturnable cir) { - ItemStack stack = player.getItemInHand(hand); - if (stack.getItem() instanceof ComponentItem compItem) { - for (var component : compItem.getComponents()) { - if (component instanceof LighterBehavior lighter && lighter.consumeFuel(player, stack)) { - player.level().playSound(null, player.getOnPos(), SoundEvents.FLINTANDSTEEL_USE, - SoundSource.PLAYERS, 1.0F, GTValues.RNG.nextFloat() * 0.4F + 0.8F); - player.swing(hand); - ignite(); - return; - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 11155682b1a..99944412a72 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -142,6 +142,8 @@ public class CustomTags { public static final TagKey NEEDS_NEUTRONIUM_TOOL = TagUtil.createBlockTag("needs_neutronium_tool"); // Tool tags + public static final TagKey TOOLS_IGNITER = TagUtil.createItemTag("tools/igniter"); + public static final TagKey BUTCHERY_KNIVES = TagUtil.createItemTag("tools/butchery_knives"); public static final TagKey BUZZSAWS = TagUtil.createItemTag("tools/buzzsaws"); public static final TagKey CHAINSAWS = TagUtil.createItemTag("tools/chainsaws"); @@ -190,6 +192,8 @@ public class CustomTags { public static final TagKey CONCRETE_BLOCK = TagUtil.createBlockTag("concretes"); public static final TagKey CONCRETE_POWDER_BLOCK = TagUtil.createBlockTag("concrete_powders"); public static final TagKey CLEANROOM_FLOORS = TagUtil.createModBlockTag("cleanroom_floors"); + public static final TagKey CHARCOAL_PILE_IGNITER_WALLS = TagUtil.createModBlockTag( + "charcoal_pile_igniter_walls"); public static final TagKey IS_SWAMP = TagUtil.createTag(Registries.BIOME, "is_swamp", false); public static final TagKey IS_SANDY = TagUtil.createModTag(Registries.BIOME, "is_sandy"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java index 5fc45949dcb..9b4a932259f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java @@ -1,18 +1,14 @@ package com.gregtechceu.gtceu.data.tags; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraftforge.common.Tags; import com.tterrag.registrate.providers.RegistrateTagsProvider; @@ -58,24 +54,12 @@ public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { .addOptional(new ResourceLocation("rftoolsutility:matter_receiver")) .addOptional(new ResourceLocation("rftoolsutility:dialing_device")) .addOptional(new ResourceLocation("travelanchors:travel_anchor")); - } - - private static void create(RegistrateTagsProvider provider, TagPrefix prefix, Material material, - Block... rls) { - create(provider, ChemicalHelper.getBlockTag(prefix, material), rls); - } - - public static void create(RegistrateTagsProvider provider, TagKey tagKey, Block... rls) { - var builder = provider.addTag(tagKey); - for (Block block : rls) { - builder.add(BuiltInRegistries.BLOCK.getResourceKey(block).get()); - } - } - public static void create(RegistrateTagsProvider provider, TagKey tagKey, ResourceLocation... rls) { - var builder = provider.addTag(tagKey); - for (ResourceLocation rl : rls) { - builder.addOptional(rl); - } + provider.addTag(CustomTags.CHARCOAL_PILE_IGNITER_WALLS) + .addTag(BlockTags.DIRT) // any dirt blocks + .remove(Blocks.MOSS_BLOCK, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS) // except moss and mud + .add(Blocks.DIRT_PATH) // path blocks + .addTag(Tags.Blocks.SAND).addTag(BlockTags.SAND) // any sand blocks + .addTag(BlockTags.TERRACOTTA); // any terracotta } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java index e7594d1ce31..9ef9f2efedf 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java @@ -181,5 +181,8 @@ public static void init(RegistrateItemTagsProvider provider) { .addOptional(GTItems.SENSOR_UIV.getId()) .addOptional(GTItems.SENSOR_UXV.getId()) .addOptional(GTItems.SENSOR_OpV.getId()); + + provider.addTag(CustomTags.TOOLS_IGNITER) + .addTag(ItemTags.CREEPER_IGNITERS); } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index cee2fad1dc0..b48c184c47c 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -478,7 +478,7 @@ public static ItemStack loadItemStack(CompoundTag compoundTag) { } } - if (stack.getItem().canBeDepleted()) { + if (stack.isDamageableItem()) { stack.setDamageValue(stack.getDamageValue()); } return stack; diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 292a0b3d3dd..0805a5f3e3a 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -32,7 +32,6 @@ "BlockPropertiesAccessor", "ChunkGeneratorMixin", "ChunkMixin", - "CreeperMixin", "EntityMixin", "IFoliagePlacerTypeAccessor", "IngredientAccessor", From 7ce3cdd32b0157df08ced9cb2bd9c3c1df650037 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:27:04 +0300 Subject: [PATCH 060/270] Add API for using custom blocks/items in `TagPrefix`es (#3251) --- .../gregtechceu/gtceu/api/block/OreBlock.java | 4 +-- .../gtceu/api/data/tag/TagPrefix.java | 33 +++++++++++++++++++ .../gtceu/api/item/MaterialBlockItem.java | 32 ++++++++---------- .../gtceu/api/item/TagPrefixItem.java | 11 ++----- .../api/registry/registrate/GTRegistrate.java | 23 ++++++++++++- .../gtceu/common/data/GTMaterialBlocks.java | 25 +++++++------- .../gtceu/common/data/GTMaterialItems.java | 13 ++++---- .../gtceu/forge/ForgeCommonEventListener.java | 10 +++--- 8 files changed, 97 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java index 257a0d46114..9a12a21339d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/OreBlock.java @@ -18,9 +18,9 @@ public class OreBlock extends MaterialBlock { - public OreBlock(Properties properties, TagPrefix tagPrefix, Material material, boolean registerModel) { + public OreBlock(Properties properties, TagPrefix tagPrefix, Material material) { super(properties, tagPrefix, material, false); - if (registerModel && GTCEu.isClientSide()) { + if (GTCEu.isClientSide()) { OreBlockRenderer.create(this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index 793d155890a..507f8a2c909 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -4,12 +4,16 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; +import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; +import com.gregtechceu.gtceu.api.item.MaterialBlockItem; +import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; @@ -30,6 +34,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; @@ -998,10 +1003,19 @@ public record BlockProperties(Supplier> renderType, private boolean generateRecycling = false; @Setter private boolean generateItem; + @Getter + @Setter + private ItemConstructor itemConstructor = TagPrefixItem::new; @Setter private boolean generateBlock; @Getter @Setter + private BlockConstructor blockConstructor = MaterialBlock::new; + @Getter + @Setter + private BlockItemConstructor blockItemConstructor = MaterialBlockItem::new; + @Getter + @Setter private BlockProperties blockProperties = new BlockProperties(() -> RenderType::translucent, UnaryOperator.identity()); @@ -1055,6 +1069,7 @@ public static TagPrefix oreTagPrefix(String name, TagKey miningToolTag) { .materialIconType(MaterialIconType.ore) .miningToolTag(miningToolTag) .unificationEnabled(true) + .blockConstructor(OreBlock::new) .generationCondition(hasOreProperty); } @@ -1320,4 +1335,22 @@ public static Collection values() { public String toString() { return name; } + + @FunctionalInterface + public interface ItemConstructor { + + Item create(Item.Properties properties, TagPrefix prefix, Material material); + } + + @FunctionalInterface + public interface BlockConstructor { + + Block create(Block.Properties properties, TagPrefix prefix, Material material); + } + + @FunctionalInterface + public interface BlockItemConstructor { + + BlockItem create(Block block, Item.Properties properties, TagPrefix prefix, Material material); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java index df34a8b4e92..6c8addb7469 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MaterialBlockItem.java @@ -2,8 +2,10 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.DustProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; @@ -12,9 +14,9 @@ import net.minecraft.client.color.item.ItemColor; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -23,12 +25,13 @@ public class MaterialBlockItem extends BlockItem implements IItemRendererProvider { - protected MaterialBlockItem(MaterialBlock block, Properties properties) { - super(block, properties); - } + public final TagPrefix tagPrefix; + public final Material material; - public static MaterialBlockItem create(MaterialBlock block, Item.Properties properties) { - return new MaterialBlockItem(block, properties); + public MaterialBlockItem(Block block, Properties properties, TagPrefix tagPrefix, Material material) { + super(block, properties); + this.tagPrefix = tagPrefix; + this.material = material; } @Override @@ -36,8 +39,6 @@ public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) return getItemBurnTime(); } - public void onRegister() {} - @Override @NotNull public MaterialBlock getBlock() { @@ -45,13 +46,8 @@ public MaterialBlock getBlock() { } @OnlyIn(Dist.CLIENT) - public static ItemColor tintColor() { - return (itemStack, index) -> { - if (itemStack.getItem() instanceof MaterialBlockItem materialBlockItem) { - return materialBlockItem.getBlock().material.getLayerARGB(index); - } - return -1; - }; + public static ItemColor tintColor(Material material) { + return (itemStack, index) -> material.getLayerARGB(index); } @Nullable @@ -85,10 +81,10 @@ public Component getName(ItemStack stack) { } public int getItemBurnTime() { - var material = getBlock().material; DustProperty property = material.isNull() ? null : material.getProperty(PropertyKey.DUST); - if (property != null) - return (int) (property.getBurnTime() * getBlock().tagPrefix.getMaterialAmount(material) / GTValues.M); + if (property != null) { + return (int) (property.getBurnTime() * tagPrefix.getMaterialAmount(material) / GTValues.M); + } return -1; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java index bfabe2f56ff..7a201d29084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/TagPrefixItem.java @@ -51,16 +51,9 @@ public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) return getItemBurnTime(); } - public void onRegister() {} - @OnlyIn(Dist.CLIENT) - public static ItemColor tintColor() { - return (itemStack, index) -> { - if (itemStack.getItem() instanceof TagPrefixItem tagPrefixItem) { - return tagPrefixItem.material.getLayerARGB(index); - } - return -1; - }; + public static ItemColor tintColor(Material material) { + return (itemStack, index) -> material.getLayerARGB(index); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 064f9063918..6a63a23c11f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; +import com.gregtechceu.gtceu.core.mixins.AbstractRegistrateAccessor; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.MethodsReturnNonnullByDefault; @@ -28,8 +29,12 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegistryObject; import com.tterrag.registrate.Registrate; @@ -37,6 +42,7 @@ import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.builders.NoConfigBuilder; import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.util.OneTimeEventReceiver; import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; @@ -89,7 +95,22 @@ public void registerRegistrate() { @Override public Registrate registerEventListeners(IEventBus bus) { if (!registered.getAndSet(true)) { - return super.registerEventListeners(bus); + // recreate the super method so we can register the event listener with LOW priority. + Consumer onRegister = this::onRegister; + Consumer onRegisterLate = this::onRegisterLate; + bus.addListener(EventPriority.LOW, onRegister); + bus.addListener(EventPriority.LOWEST, onRegisterLate); + + // Fired multiple times when ever tabs need contents rebuilt (changing op tab perms for example) + bus.addListener(this::onBuildCreativeModeTabContents); + // Register events fire multiple times, so clean them up on common setup + OneTimeEventReceiver.addModListener(this, FMLCommonSetupEvent.class, $ -> { + OneTimeEventReceiver.unregister(this, onRegister, RegisterEvent.class); + OneTimeEventReceiver.unregister(this, onRegisterLate, RegisterEvent.class); + }); + if (((AbstractRegistrateAccessor) this).getDoDatagen().get()) { + OneTimeEventReceiver.addModListener(this, GatherDataEvent.class, this::onData); + } } return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 2734bc32767..e31cc3063f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.block.MaterialBlock; import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; -import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; @@ -20,6 +19,7 @@ import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.client.renderer.RenderType; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import com.google.common.collect.ImmutableMap; @@ -31,10 +31,11 @@ import java.util.Map; +@SuppressWarnings("removal") public class GTMaterialBlocks { // Reference Table Builders - static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable + static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable .builder(); static ImmutableMap.Builder> SURFACE_ROCK_BLOCKS_BUILDER = ImmutableMap .builder(); @@ -46,7 +47,7 @@ public class GTMaterialBlocks { .builder(); // Reference Tables - public static Table> MATERIAL_BLOCKS; + public static Table> MATERIAL_BLOCKS; public static Map> SURFACE_ROCK_BLOCKS; public static Table> CABLE_BLOCKS; public static Table> FLUID_PIPE_BLOCKS; @@ -74,7 +75,7 @@ public static void generateMaterialBlocks() { private static void registerMaterialBlock(TagPrefix tagPrefix, Material material, GTRegistrate registrate) { MATERIAL_BLOCKS_BUILDER.put(tagPrefix, material, registrate .block(tagPrefix.idPattern().formatted(material.getName()), - properties -> new MaterialBlock(properties, tagPrefix, material)) + properties -> tagPrefix.blockConstructor().create(properties, tagPrefix, material)) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> tagPrefix.blockProperties().properties().apply(p).noLootTable()) .transform(GTBlocks.unificationBlock(tagPrefix, material)) @@ -83,10 +84,9 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .color(() -> MaterialBlock::tintedColor) - .item(MaterialBlockItem::create) - .onRegister(MaterialBlockItem::onRegister) + .item((b, p) -> tagPrefix.blockItemConstructor().create(b, p, tagPrefix, material)) .model(NonNullBiConsumer.noop()) - .color(() -> MaterialBlockItem::tintColor) + .color(() -> () -> MaterialBlockItem.tintColor(material)) .build() .register()); } @@ -119,10 +119,10 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.name) + "_"; } var entry = registrate.block("%s%s_ore".formatted(typePrefix, material.getName()), - properties -> new OreBlock(properties, oreTag, material, true)) + properties -> oreTag.blockConstructor().create(properties, oreTag, material)) .initialProperties(() -> { - if (oreType.stoneType().get().isAir()) { // if the block is not registered (yet), fallback to - // stone + if (oreType.stoneType().get().isAir()) { + // if the block is not registered (yet), fallback to stone return Blocks.IRON_ORE; } return oreType.stoneType().get().getBlock(); @@ -133,10 +133,9 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .color(() -> MaterialBlock::tintedColor) - .item(MaterialBlockItem::create) - .onRegister(MaterialBlockItem::onRegister) + .item((b, p) -> oreTag.blockItemConstructor().create(b, p, oreTag, material)) .model(NonNullBiConsumer.noop()) - .color(() -> MaterialBlockItem::tintColor) + .color(() -> () -> MaterialBlockItem.tintColor(material)) .build() .register(); MATERIAL_BLOCKS_BUILDER.put(oreTag, material, entry); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index cf60fbcc78b..a1bec68bdd0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -33,7 +34,7 @@ public class GTMaterialItems { // Reference Table Builders - static ImmutableTable.Builder> MATERIAL_ITEMS_BUILDER = ImmutableTable + static ImmutableTable.Builder> MATERIAL_ITEMS_BUILDER = ImmutableTable .builder(); // Reference Maps @@ -46,8 +47,8 @@ public class GTMaterialItems { } // Reference Tables - public static Table> MATERIAL_ITEMS; - public final static Table> TOOL_ITEMS = ArrayTable.create( + public static Table> MATERIAL_ITEMS; + public static final Table> TOOL_ITEMS = ArrayTable.create( GTCEuAPI.materialManager.getRegisteredMaterials().stream() .filter(mat -> mat.hasProperty(PropertyKey.TOOL)) .toList(), @@ -74,13 +75,12 @@ public static void generateMaterialItems() { private static void generateMaterialItem(TagPrefix tagPrefix, Material material, GTRegistrate registrate) { MATERIAL_ITEMS_BUILDER.put(tagPrefix, material, registrate .item(tagPrefix.idPattern().formatted(material.getName()), - properties -> new TagPrefixItem(properties, tagPrefix, material)) - .onRegister(TagPrefixItem::onRegister) + properties -> tagPrefix.itemConstructor().create(properties, tagPrefix, material)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .transform(GTItems.unificationItem(tagPrefix, material)) .properties(p -> p.stacksTo(tagPrefix.maxStackSize())) .model(NonNullBiConsumer.noop()) - .color(() -> TagPrefixItem::tintColor) + .color(() -> () -> TagPrefixItem.tintColor(material)) .onRegister(GTItems::cauldronInteraction) .register()); } @@ -103,6 +103,7 @@ public static void generateTools() { } } + @SuppressWarnings("unchecked") private static void generateTool(Material material, GTToolType toolType, GTRegistrate registrate) { var tier = material.getToolTier(); TOOL_ITEMS.put(material, toolType, (ItemProviderEntry) (ItemProviderEntry) registrate diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 5a58f57c75f..81aca10e2e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.MaterialBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; @@ -17,7 +16,6 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.DrumMachineItem; import com.gregtechceu.gtceu.api.item.IComponentItem; -import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -71,11 +69,13 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.PotionItem; import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -638,7 +638,7 @@ public static void remapIds(MissingMappingsEvent event) { event.getMappings(Registries.BLOCK, GTCEu.MOD_ID).forEach(mapping -> { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, + BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (block != null && block.isPresent()) { mapping.remap(block.get()); @@ -648,12 +648,12 @@ public static void remapIds(MissingMappingsEvent event) { event.getMappings(Registries.ITEM, GTCEu.MOD_ID).forEach(mapping -> { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { - BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, + BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (block != null && block.isPresent()) { mapping.remap(block.asItem()); } else { - ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, + ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); if (item != null && item.isPresent()) { mapping.remap(item.asItem()); From d7e5dc9831c623600555b79dac95ff6d1f8007ce Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 22 Jun 2025 03:35:54 -0600 Subject: [PATCH 061/270] Cleanroom Logic & Balance Tweaks (#3182) Co-authored-by: screret <68943070+screret@users.noreply.github.com> Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_ud.json | 5 +-- .../resources/assets/gtceu/lang/en_us.json | 3 +- .../multiblock/electric/CleanroomMachine.java | 27 +++++++++++++--- .../common/machine/trait/CleanroomLogic.java | 32 ++++++++----------- .../gtceu/data/lang/MachineLang.java | 2 ++ 5 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 44123cebd7c..66771ff9e14 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3185,8 +3185,9 @@ "gtceu.multiblock.cracker.description": "˙sʇuɐıɹɐʌ pǝʞɔɐɹƆ ɹıǝɥʇ oʇuı ןǝnℲ ʎʌɐǝH puɐ ʇɥbıꞀ buıuɹnʇ ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʇıu∩ buıʞɔɐɹƆ ןıO ǝɥ⟘", "gtceu.multiblock.cracking_unit.energy": "%s%% :ǝbɐs∩ ʎbɹǝuƎ", "gtceu.multiblock.data_bank.description": "˙sǝןnpoW ɐʇɐᗡ uo ɐʇɐp ɥɔɹɐǝsǝɹ xǝןdɯoɔ ǝɹoɯ pɐǝɹ oʇ sǝuıꞀ ʎןqɯǝssⱯ sǝןqɐuǝ ʇı 'ʎןןɐuoıʇıppⱯ ˙sǝuıꞀ ʎןqɯǝssⱯ ǝןdıʇןnɯ uǝǝʍʇǝq ɐʇɐᗡ ɥɔɹɐǝsǝᴚ ǝuıꞀ ʎןqɯǝssⱯ buıɹɐɥs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʞuɐᗺ ɐʇɐᗡ ǝɥ⟘", - "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ", - "gtceu.multiblock.dimension": "%sx%sx%sɹ§ :suoısuǝɯıᗡǝ§", + "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ + "gtceu.multiblock.dimensions.0": " :suoısuǝɯıᗡ", + "gtceu.multiblock.dimensions.1": " %s :ɹ§ɥʇdǝᗡן§6§ '%s :ɹ§ʇɥbıǝHן§ɐ§ '%s :ɹ§ɥʇpıMן§ɔ§ ", "gtceu.multiblock.distillation_tower.description": "˙uoıʇısod ʎuɐ uı spınןɟ ʇɹǝsuı puɐ sɯǝʇı ʇndʇno uɐɔ ɹǝʎɐן ɯoʇʇoq ǝɥ⟘ ˙ǝuo puoɔǝs ǝɥʇ ɯoɹɟ buıʇɹɐʇs 'ɥɔʇɐɥ ʇndʇno ǝuo ʎןʇɔɐxǝ ǝʌɐɥ ʇsnɯ ɹǝʎɐן ɥɔɐƎ ˙sʇɔnpoɹdʎq ɹıǝɥʇ ɟo ǝɯos puɐ ןıO ɟo sǝdʎʇ snoıɹɐʌ ǝɥʇ buıןןıʇsıp ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ ǝɥ⟘", "gtceu.multiblock.distillation_tower.distilling_fluid": "%s buıןןıʇsıᗡ", "gtceu.multiblock.electric_blast_furnace.description": "˙ʎoןןɐ ɥɐpɐnbɐu puɐ 'ɯnıuɐʇıʇ 'ןǝǝʇs ssǝןuıɐʇs 'ɯnıuıɯnןɐ sɐ ɥɔns 'sןɐʇǝɯ puɐ sʎoןןɐ ɹǝıʇ-ɥbıɥ buıuıɐʇqo ɹoɟ pǝɹınbǝɹ sı ʇI ˙sǝɹo buıuıɟǝɹ puɐ sןɐʇǝɯ buıʞooɔ 'sʎoןןɐ buıʇןǝɯs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı )ℲᗺƎ( ǝɔɐuɹnℲ ʇsɐןᗺ ɔıɹʇɔǝןƎ ǝɥ⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 20d3c1fb08b..641167a1786 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3186,7 +3186,8 @@ "gtceu.multiblock.cracking_unit.energy": "Energy Usage: %s%%", "gtceu.multiblock.data_bank.description": "The Data Bank is a multiblock structure used for sharing Assembly Line Research Data between multiple Assembly Lines. Additionally, it enables Assembly Lines to read more complex research data on Data Modules.", "gtceu.multiblock.data_bank.providing": "Providing data.", - "gtceu.multiblock.dimension": "§eDimensions: §r%sx%sx%s", + "gtceu.multiblock.dimensions.0": "Dimensions: ", + "gtceu.multiblock.dimensions.1": " §c§lWidth§r: %s, §a§lHeight§r: %s, §9§lDepth§r: %s ", "gtceu.multiblock.distillation_tower.description": "The Distillation Tower is a multiblock structure used for distilling the various types of Oil and some of their byproducts. Each layer must have exactly one output hatch, starting from the second one. The bottom layer can output items and insert fluids in any position.", "gtceu.multiblock.distillation_tower.distilling_fluid": "Distilling %s", "gtceu.multiblock.electric_blast_furnace.description": "The Electric Blast Furnace (EBF) is a multiblock structure used for smelting alloys, cooking metals and refining ores. It is required for obtaining high-tier alloys and metals, such as aluminium, stainless steel, titanium, and naquadah alloy.", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index e2b19ba69bd..e4b117ff0f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -83,7 +83,7 @@ public class CleanroomMachine extends WorkableElectricMultiblockMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CleanroomMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - public static final int CLEAN_AMOUNT_THRESHOLD = 90; + public static final int CLEAN_AMOUNT_THRESHOLD = 95; public static final int MIN_CLEAN_AMOUNT = 0; public static final int MIN_RADIUS = 2; @@ -151,11 +151,14 @@ public void onStructureFormed() { this.cleanroomReceivers = ImmutableSet.copyOf(receivers); this.cleanroomReceivers.forEach(receiver -> receiver.setCleanroom(this)); - // max progress is based on the dimensions of the structure: (x^3)-(x^2) + // max progress is based roughly on the dimensions of the structure: ((w * d) ^ .8 * h) // taller cleanrooms take longer than wider ones // minimum of 100 is a 5x5x5 cleanroom: 125-25=100 ticks - this.getRecipeLogic().setDuration((Math.max(100, - ((lDist + rDist + 1) * (bDist + fDist + 1) * hDist) - ((lDist + rDist + 1) * (bDist + fDist + 1))))); + // max sized CR is around 1142 ticks per progression + + var area = (lDist + rDist + 1) * (bDist + fDist + 1); + var duration = Math.pow(area, 0.8) * (hDist + 1); + this.getRecipeLogic().setDuration(Math.max(100, (int) duration)); } @Override @@ -372,13 +375,15 @@ public BlockPattern getPattern() { c[i] = ceilingLayer[i].toString(); } + var area = (lDist + rDist + 1) * (bDist + fDist + 1); TraceabilityPredicate wallPredicate = states(getCasingState(), getGlassState()); TraceabilityPredicate basePredicate = Predicates.abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1) .setMaxGlobalLimited(2) .or(blocks(GTMachines.MAINTENANCE_HATCH.get(), GTMachines.AUTO_MAINTENANCE_HATCH.get()) .setMinGlobalLimited(ConfigHolder.INSTANCE.machines.enableMaintenance ? 1 : 0) .setMaxGlobalLimited(1)) - .or(abilities(PartAbility.PASSTHROUGH_HATCH).setMaxGlobalLimited(30)); + // limit pass through hatches to a quarter of the floor area + .or(abilities(PartAbility.PASSTHROUGH_HATCH).setMaxGlobalLimited(area / 4)); return FactoryBlockPattern.start(LEFT, FRONT, UP) .aisle(f) @@ -508,6 +513,9 @@ public void addDisplayText(List textList) { if (isClean()) textList.add(Component.translatable("gtceu.multiblock.cleanroom.clean_state")); else textList.add(Component.translatable("gtceu.multiblock.cleanroom.dirty_state")); textList.add(Component.translatable("gtceu.multiblock.cleanroom.clean_amount", this.cleanAmount)); + textList.add(Component.translatable("gtceu.multiblock.dimensions.0")); + textList.add(Component.translatable("gtceu.multiblock.dimensions.1", lDist + rDist + 1, hDist + 1, + fDist + bDist + 1)); } else { Component tooltip = Component.translatable("gtceu.multiblock.invalid_structure.tooltip") .withStyle(ChatFormatting.GRAY); @@ -553,4 +561,13 @@ public long getMaxVoltage() { if (inputEnergyContainers == null) return GTValues.LV; return inputEnergyContainers.getInputVoltage(); } + + // Do not allow cleanroom to be paused due to custom recipe logic + @Override + public boolean isWorkingEnabled() { + return true; + } + + @Override + public void setWorkingEnabled(boolean ignored) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java index e12299ede6a..9f17bb636ac 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java @@ -15,6 +15,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; import lombok.Getter; import lombok.Setter; @@ -24,7 +25,7 @@ public class CleanroomLogic extends RecipeLogic implements IWorkable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CleanroomLogic.class, RecipeLogic.MANAGED_FIELD_HOLDER); - public static final int BASE_CLEAN_AMOUNT = 5; + public static final int BASE_CLEAN_AMOUNT = 2; @Setter @Nullable private IMaintenanceMachine maintenanceMachine; @@ -58,7 +59,8 @@ public ManagedFieldHolder getFieldHolder() { * Call this method every tick in update */ public void serverTick() { - if (!isSuspend() && duration > 0) { + // always run this logic + if (duration > 0) { EnvironmentalHazardSavedData environmentalHazards = EnvironmentalHazardSavedData .getOrCreate((ServerLevel) this.getMachine().getLevel()); var zone = environmentalHazards.getZoneByContainedPos(getMachine().getPos()); @@ -109,18 +111,11 @@ public void serverTick() { machine.afterWorking(); } } - - if (isSuspend()) { - // machine isn't working enabled - if (subscription != null) { - subscription.unsubscribe(); - subscription = null; - } - } } protected void adjustCleanAmount(boolean declined) { - int amountToClean = BASE_CLEAN_AMOUNT * (getTierDifference() + 1); + // range from 5 - ~44 % per cycle instead of the 5 - 70% it was previously + int amountToClean = BASE_CLEAN_AMOUNT + (3 * (getTierDifference() + 1)); if (declined) amountToClean *= -1; // each maintenance problem lowers gain by 1 @@ -132,8 +127,11 @@ protected void adjustCleanAmount(boolean declined) { protected boolean consumeEnergy() { var cleanroom = getMachine(); - long energyToDrain = cleanroom.isClean() ? (long) Math.min(4, Math.pow(4, cleanroom.getTier())) : - GTValues.VA[cleanroom.getTier()]; + // clamp to max for VA indexing + var tier = Mth.clamp(cleanroom.getTier(), GTValues.ULV, GTValues.MAX); + // use 3/16th an amp when fully clean otherwise 15/16th an amp during cleaning + long energyToDrain = cleanroom.isClean() ? Math.max(8, (3 * GTValues.V[tier] / 16)) : + GTValues.VA[tier]; if (energyContainer != null) { long resultEnergy = energyContainer.getEnergyStored() - energyToDrain; if (resultEnergy >= 0L && resultEnergy <= energyContainer.getEnergyCapacity()) { @@ -146,14 +144,10 @@ protected boolean consumeEnergy() { protected int getTierDifference() { int minEnergyTier = GTValues.LV; - return getMachine().getTier() - minEnergyTier; + // clamp for ULV + return Math.max(0, getMachine().getTier() - minEnergyTier); } - /** - * max progress is based on the dimensions of the structure: (x^3)-(x^2) - * /* taller cleanrooms take longer than wider ones - * /* minimum of 100 is a 5x5x5 cleanroom: 125-25=100 ticks - **/ public void setDuration(int max) { this.duration = max; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index b991f3eaf28..3977f276a98 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -515,6 +515,8 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.multiblock.cleanroom.clean_state", "Status: §aCLEAN"); provider.add("gtceu.multiblock.cleanroom.dirty_state", "Status: §4CONTAMINATED"); provider.add("gtceu.multiblock.cleanroom.clean_amount", "Cleanliness: §a%s%%"); + multilineLang(provider, "gtceu.multiblock.dimensions", "Dimensions: \n" + + " §c§lWidth§r: %s, §a§lHeight§r: %s, §9§lDepth§r: %s "); multiLang(provider, "gtceu.machine.charcoal_pile.tooltip", "Turns Logs into §aCharcoal§7 when §cignited§7.", From 4176fbbd851864495d886d47dd3b19fcf74165eb Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:52:50 +0300 Subject: [PATCH 062/270] clean up RelativeDirection and rename its methods to be more consistent with vanilla (#3198) --- .../recipe/ItemRecipeCapability.java | 8 +- .../capability/recipe/RecipeCapability.java | 7 +- .../machine/MultiblockMachineDefinition.java | 4 +- .../feature/multiblock/IMultiController.java | 5 + .../MultiblockControllerMachine.java | 2 +- .../gtceu/api/pattern/BlockPattern.java | 4 +- .../api/pattern/util/RelativeDirection.java | 250 ++++++++++++------ .../gtceu/api/recipe/GTRecipeSerializer.java | 4 +- .../registrate/MultiblockMachineBuilder.java | 11 +- .../machine/FusionReactorRenderer.java | 4 +- .../renderer/machine/HPCAPartRenderer.java | 2 +- .../renderer/machine/LargeBoilerRenderer.java | 4 +- .../PrimitiveBlastFurnaceRenderer.java | 4 +- .../gcym/LargeChemicalBathRenderer.java | 2 +- .../machine/gcym/LargeMixerRenderer.java | 2 +- .../common/data/machines/GCYMMachines.java | 3 +- .../common/data/machines/GTMultiMachines.java | 3 +- .../MetaMachineConfigCopyBehaviour.java | 225 ++++++++-------- .../electric/AssemblyLineMachine.java | 16 +- .../electric/DistillationTowerMachine.java | 2 - .../gcym/LargeChemicalBathMachine.java | 2 +- .../electric/gcym/LargeMixerMachine.java | 2 +- .../electric/research/HPCAMachine.java | 2 +- .../PrimitiveBlastFurnaceMachine.java | 2 +- .../ConcurrentWeakIdentityHashMap.java | 235 ++++++++++++++++ .../gtceu/utils/memoization/GTMemoizer.java | 17 ++ 26 files changed, 583 insertions(+), 239 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 74a3389c3b6..d15b295bca1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -191,7 +191,7 @@ public List compressIngredients(Collection ingredients) { } } if (isEqual) continue; - //@formatter:off + // spotless:off if (ingredient instanceof IntCircuitIngredient) { list.add(0, ingredient); } else if (ingredient instanceof SizedIngredient sized && @@ -203,7 +203,7 @@ public List compressIngredients(Collection ingredients) { } else { list.add(ingredient); } - //@formatter:on + // spotless:on } else if (item instanceof ItemStack stack) { boolean isEqual = false; for (Object obj : list) { @@ -510,7 +510,7 @@ public void applyWidgetInfo(@NotNull Widget widget, GTRecipeWidget.setConsumedChance(content, recipe.getChanceLogicForCapability(this, io, isTickSlot(index, io, recipe)), tooltips, recipeTier, chanceTier, recipeType.getChanceFunction()); - //@formatter:off + // spotless:off if (this.of(content.content) instanceof IntProviderIngredient ingredient) { IntProvider countProvider = ingredient.getCountProvider(); tooltips.add(Component.translatable("gtceu.gui.content.count_range", @@ -523,7 +523,7 @@ public void applyWidgetInfo(@NotNull Widget widget, countProvider.getMinValue(), countProvider.getMaxValue()) .withStyle(ChatFormatting.GOLD)); } - //@formatter:on + // spotless:on if (isTickSlot(index, io, recipe)) { tooltips.add(Component.translatable("gtceu.gui.content.per_tick")); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index 86dacea8d1a..b520afd63fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -16,6 +16,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import com.mojang.serialization.Codec; import io.netty.buffer.Unpooled; @@ -99,10 +100,14 @@ public String slotName(IO io, int index) { return "%s_%s_%s".formatted(name, io.name().toLowerCase(Locale.ROOT), index); } - public Component getName() { + public MutableComponent getName() { return Component.translatable("recipe.capability.%s.name".formatted(name)); } + public MutableComponent getColoredName() { + return getName().withStyle(style -> style.withColor(this.color)); + } + public boolean isRecipeSearchFilter() { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index 496c2f36c6c..9178d718991 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; @@ -20,6 +21,7 @@ import java.util.*; import java.util.function.BiConsumer; +import java.util.function.Function; import java.util.function.Supplier; public class MultiblockMachineDefinition extends MachineDefinition { @@ -47,7 +49,7 @@ public class MultiblockMachineDefinition extends MachineDefinition { private Supplier recoveryItems; @Setter @Getter - private Comparator partSorter; + private Function> partSorter; @Getter @Setter private TriFunction partAppearance; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 4ebf14c363a..620ec279285 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -21,6 +21,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.concurrent.locks.Lock; @@ -177,6 +178,10 @@ default BlockState getPartAppearance(IMultiPart part, Direction side, BlockState return null; } + default Comparator getPartSorter() { + return self().getDefinition().getPartSorter().apply(self()); + } + /** * Show the preview of structure. */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 4b97e34b9de..4fd1025a9b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -179,7 +179,7 @@ public void onStructureFormed() { this.parts.add(part); } } - this.parts.sort(getDefinition().getPartSorter()); + this.parts.sort(getPartSorter()); for (var part : parts) { if (part instanceof IParallelHatch pHatch) { parallelHatch = pHatch; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java index 6a4e558392e..1bac08ce084 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/BlockPattern.java @@ -552,7 +552,7 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, if (facing == Direction.UP || facing == Direction.DOWN) { Direction of = facing == Direction.DOWN ? upwardsFacing : upwardsFacing.getOpposite(); for (int i = 0; i < 3; i++) { - switch (structureDir[i].getActualFacing(of)) { + switch (structureDir[i].getActualDirection(of)) { case UP -> c1[1] = c0[i]; case DOWN -> c1[1] = -c0[i]; case WEST -> c1[0] = -c0[i]; @@ -582,7 +582,7 @@ private BlockPos setActualRelativeOffset(int x, int y, int z, Direction facing, } } else { for (int i = 0; i < 3; i++) { - switch (structureDir[i].getActualFacing(facing)) { + switch (structureDir[i].getActualDirection(facing)) { case UP -> c1[1] = c0[i]; case DOWN -> c1[1] = -c0[i]; case WEST -> c1[0] = -c0[i]; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index e4c23e855e0..3b9671ea344 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -4,122 +4,147 @@ import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; -import java.util.function.Function; -import java.util.function.ToIntFunction; +import org.jetbrains.annotations.ApiStatus; + +import java.util.Comparator; +import java.util.function.UnaryOperator; -/** - * Relative direction when facing horizontally - */ public enum RelativeDirection { - UP(f -> Direction.UP, Direction.Axis.Y), - DOWN(f -> Direction.DOWN, Direction.Axis.Y), - LEFT(Direction::getCounterClockWise, Direction.Axis.X), - RIGHT(Direction::getClockWise, Direction.Axis.X), - FRONT(Function.identity(), Direction.Axis.Z), - BACK(Direction::getOpposite, Direction.Axis.Z); + UP(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.NORTH : Direction.UP, Direction.UP), + DOWN(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.SOUTH : Direction.DOWN, Direction.DOWN), + LEFT(dir -> { + if (dir == Direction.UP) return Direction.EAST; + else if (dir == Direction.DOWN) return Direction.WEST; + else return dir.getCounterClockWise(); + }, Direction.WEST), + RIGHT(dir -> { + if (dir == Direction.UP) return Direction.WEST; + else if (dir == Direction.DOWN) return Direction.EAST; + else return dir.getClockWise(); + }, Direction.EAST), + FRONT(UnaryOperator.identity(), Direction.NORTH), + BACK(Direction::getOpposite, Direction.SOUTH); - final Function actualFacing; - public final Direction.Axis axis; + private final UnaryOperator actualDirection; + /** + * Equivalent global direction to this relative direction + * with {@link Direction#NORTH NORTH} as the "forward" direction. + */ + public final Direction equivalentGlobal; - RelativeDirection(Function actualFacing, Direction.Axis axis) { - this.actualFacing = actualFacing; - this.axis = axis; + RelativeDirection(UnaryOperator actualDirection, Direction equivalentGlobal) { + this.actualDirection = actualDirection; + this.equivalentGlobal = equivalentGlobal; } - public Direction getActualFacing(Direction facing) { - return getRelativeFacing(facing, Direction.NORTH, false); + public Direction getActualDirection(Direction direction) { + return actualDirection.apply(direction); } - public boolean isSameAxis(RelativeDirection dir) { - return this.axis == dir.axis; + public RelativeDirection getOpposite() { + return switch (this) { + case UP -> DOWN; + case DOWN -> UP; + case LEFT -> RIGHT; + case RIGHT -> LEFT; + case FRONT -> BACK; + case BACK -> FRONT; + }; } public Vec3i applyVec3i(Direction facing) { - return getActualFacing(facing).getNormal(); + return getActualDirection(facing).getNormal(); } + /** + * @deprecated Renamed to {@link RelativeDirection#getRelative(Direction, Direction, boolean) getRelative}. + */ + @ApiStatus.ScheduledForRemoval(inVersion = "8.0.0") + @Deprecated(since = "7.0.0", forRemoval = true) public Direction getRelativeFacing(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { - Direction.Axis frontAxis = frontFacing.getAxis(); + return getRelative(frontFacing, upwardsFacing, isFlipped); + } + + public Direction getRelative(Direction frontDir, Direction upwardsDir, boolean isFlipped) { + Direction.Axis frontAxis = frontDir.getAxis(); return switch (this) { case UP -> { if (frontAxis == Direction.Axis.Y) { // same direction as upwards facing - yield upwardsFacing; + yield upwardsDir; } else { // transform the upwards facing into a real facing - yield switch (upwardsFacing) { + yield switch (upwardsDir) { case NORTH -> Direction.UP; case SOUTH -> Direction.DOWN; - case EAST -> frontFacing.getCounterClockWise(); - default -> frontFacing.getClockWise(); // WEST + case EAST -> frontDir.getCounterClockWise(); + default -> frontDir.getClockWise(); // WEST }; } } case DOWN -> { if (frontAxis == Direction.Axis.Y) { // opposite direction as upwards facing - yield upwardsFacing.getOpposite(); + yield upwardsDir.getOpposite(); } else { // transform the upwards facing into a real facing - yield switch (upwardsFacing) { + yield switch (upwardsDir) { case NORTH -> Direction.DOWN; case SOUTH -> Direction.UP; - case EAST -> frontFacing.getClockWise(); - default -> frontFacing.getCounterClockWise(); // WEST + case EAST -> frontDir.getClockWise(); + default -> frontDir.getCounterClockWise(); // WEST }; } } case LEFT -> { - Direction facing; + Direction direction; if (frontAxis == Direction.Axis.Y) { - facing = frontFacing.getStepY() > 0 ? upwardsFacing.getClockWise() : - upwardsFacing.getCounterClockWise(); + direction = frontDir.getStepY() > 0 ? upwardsDir.getClockWise() : upwardsDir.getCounterClockWise(); } else { - facing = switch (upwardsFacing) { - case NORTH -> frontFacing.getCounterClockWise(); - case SOUTH -> frontFacing.getClockWise(); + direction = switch (upwardsDir) { + case NORTH -> frontDir.getCounterClockWise(); + case SOUTH -> frontDir.getClockWise(); case EAST -> Direction.DOWN; default -> Direction.UP; // WEST }; } - yield isFlipped ? facing.getOpposite() : facing; + yield isFlipped ? direction.getOpposite() : direction; } case RIGHT -> { - Direction facing; + Direction direction; if (frontAxis == Direction.Axis.Y) { - facing = frontFacing.getStepY() > 0 ? upwardsFacing.getCounterClockWise() : - upwardsFacing.getClockWise(); + direction = frontDir.getStepY() > 0 ? upwardsDir.getCounterClockWise() : upwardsDir.getClockWise(); } else { - facing = switch (upwardsFacing) { - case NORTH -> frontFacing.getClockWise(); - case SOUTH -> frontFacing.getCounterClockWise(); + direction = switch (upwardsDir) { + case NORTH -> frontDir.getClockWise(); + case SOUTH -> frontDir.getCounterClockWise(); case EAST -> Direction.UP; default -> Direction.DOWN; // WEST }; } // invert if flipped - yield isFlipped ? facing.getOpposite() : facing; + yield isFlipped ? direction.getOpposite() : direction; } // same direction as front facing, upwards facing doesn't matter - case FRONT -> frontFacing; + case FRONT -> frontDir; // opposite direction as front facing, upwards facing doesn't matter - case BACK -> frontFacing.getOpposite(); + case BACK -> frontDir.getOpposite(); }; } - public ToIntFunction getSorter(Direction frontFacing, Direction upwardsFacing, boolean isFlipped) { + public Comparator getSorter(Direction frontDir, Direction upwardsDir, boolean isFlipped) { // get the direction to go in for the part sorter - Direction sorterDirection = getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + Direction sorterDirection = getRelative(frontDir, upwardsDir, isFlipped); // Determined by Direction.Axis + Direction.AxisDirection return switch (sorterDirection) { - case UP -> BlockPos::getY; - case DOWN -> pos -> -pos.getY(); - case EAST -> BlockPos::getX; - case WEST -> pos -> -pos.getX(); - case NORTH -> pos -> -pos.getZ(); - case SOUTH -> BlockPos::getZ; + case UP -> Comparator.comparingInt(BlockPos::getY); + case DOWN -> Comparator.comparingInt(pos -> -pos.getY()); + case EAST -> Comparator.comparingInt(BlockPos::getX); + case WEST -> Comparator.comparingInt(pos -> -pos.getX()); + case NORTH -> Comparator.comparingInt(BlockPos::getZ); + case SOUTH -> Comparator.comparingInt(pos -> -pos.getZ()); }; } @@ -128,43 +153,42 @@ public ToIntFunction getSorter(Direction frontFacing, Direction upward * * @return Returns the new upwards facing. */ - public static Direction simulateAxisRotation(Direction newFrontFacing, Direction oldFrontFacing, - Direction upwardsFacing) { - if (newFrontFacing == oldFrontFacing) return upwardsFacing; + public static Direction simulateAxisRotation(Direction newFrontDir, Direction oldFrontDir, Direction upwardsDir) { + if (newFrontDir == oldFrontDir) return upwardsDir; - Direction.Axis newAxis = newFrontFacing.getAxis(); - Direction.Axis oldAxis = oldFrontFacing.getAxis(); + Direction.Axis newAxis = newFrontDir.getAxis(); + Direction.Axis oldAxis = oldFrontDir.getAxis(); if (newAxis != Direction.Axis.Y && oldAxis != Direction.Axis.Y) { // no change needed - return upwardsFacing; + return upwardsDir; } else if (newAxis == Direction.Axis.Y && oldAxis != Direction.Axis.Y) { // going from horizontal to vertical axis - Direction newUpwardsFacing = switch (upwardsFacing) { - case NORTH -> oldFrontFacing.getOpposite(); - case SOUTH -> oldFrontFacing; - case EAST -> oldFrontFacing.getCounterClockWise(); - default -> oldFrontFacing.getClockWise(); // WEST + Direction newUpwardsDir = switch (upwardsDir) { + case NORTH -> oldFrontDir.getOpposite(); + case SOUTH -> oldFrontDir; + case EAST -> oldFrontDir.getCounterClockWise(); + default -> oldFrontDir.getClockWise(); // WEST }; - return newFrontFacing == Direction.DOWN && upwardsFacing.getAxis() == Direction.Axis.Z ? - newUpwardsFacing.getOpposite() : newUpwardsFacing; + return newFrontDir == Direction.DOWN && upwardsDir.getAxis() == Direction.Axis.Z ? + newUpwardsDir.getOpposite() : newUpwardsDir; } else if (newAxis != Direction.Axis.Y) { // going from vertical to horizontal axis - Direction newUpwardsFacing; - if (upwardsFacing == newFrontFacing.getOpposite()) { - newUpwardsFacing = Direction.NORTH; - } else if (upwardsFacing == newFrontFacing) { - newUpwardsFacing = Direction.SOUTH; - } else if (upwardsFacing == newFrontFacing.getClockWise()) { - newUpwardsFacing = Direction.WEST; + Direction newUpwardsDir; + if (upwardsDir == newFrontDir) { + newUpwardsDir = Direction.SOUTH; + } else if (upwardsDir == newFrontDir.getOpposite()) { + newUpwardsDir = Direction.NORTH; + } else if (upwardsDir == newFrontDir.getClockWise()) { + newUpwardsDir = Direction.WEST; } else { // getCounterClockWise - newUpwardsFacing = Direction.EAST; + newUpwardsDir = Direction.EAST; } - return oldFrontFacing == Direction.DOWN && newUpwardsFacing.getAxis() == Direction.Axis.Z ? - newUpwardsFacing.getOpposite() : newUpwardsFacing; + return oldFrontDir == Direction.DOWN && newUpwardsDir.getAxis() == Direction.Axis.Z ? + newUpwardsDir.getOpposite() : newUpwardsDir; } else { // was on vertical axis and still is. Must have flipped from up to down or vice versa - return upwardsFacing.getOpposite(); + return upwardsDir.getOpposite(); } } @@ -172,28 +196,90 @@ public static Direction simulateAxisRotation(Direction newFrontFacing, Direction * Offset a BlockPos relatively in any direction by any amount. Pass negative values to offset down, right or * backwards. */ - public static BlockPos offsetPos(BlockPos pos, Direction frontFacing, Direction upwardsFacing, boolean isFlipped, + public static BlockPos offsetPos(BlockPos pos, Direction frontDir, Direction upwardsDir, boolean isFlipped, int upOffset, int leftOffset, int forwardOffset) { if (upOffset == 0 && leftOffset == 0 && forwardOffset == 0) { return pos; } int oX = 0, oY = 0, oZ = 0; - final Direction relUp = UP.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relUp = UP.getRelative(frontDir, upwardsDir, isFlipped); oX += relUp.getStepX() * upOffset; oY += relUp.getStepY() * upOffset; oZ += relUp.getStepZ() * upOffset; - final Direction relLeft = LEFT.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relLeft = LEFT.getRelative(frontDir, upwardsDir, isFlipped); oX += relLeft.getStepX() * leftOffset; oY += relLeft.getStepY() * leftOffset; oZ += relLeft.getStepZ() * leftOffset; - final Direction relForward = FRONT.getRelativeFacing(frontFacing, upwardsFacing, isFlipped); + final Direction relForward = FRONT.getRelative(frontDir, upwardsDir, isFlipped); oX += relForward.getStepX() * forwardOffset; oY += relForward.getStepY() * forwardOffset; oZ += relForward.getStepZ() * forwardOffset; return pos.offset(oX, oY, oZ); } + + public static Direction getActualDirection(Direction original, Direction current, Direction direction) { + return findRelativeOf(original, current).getActualDirection(direction); + } + + /** + * Finds the relative rotation between {@code base} and {@code relative}. + *
+ * If {@code base} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), + * the rotation is calculated with {@link Direction#NORTH NORTH} as the "forward" direction. + * + * @param base the direction to offset + * @param relative the direction to offset by + * @return The relative rotation between {@code base} and {@code relative} + */ + public static RelativeDirection findRelativeOf(Direction base, Direction relative) { + return findRelativeOf(base, relative, Direction.NORTH); + } + + /** + * Finds the relative rotation between {@code base} and {@code relative}. + *
+ * If {@code base} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), + * the rotation is calculated with {@code forward} as the "forward" direction. + * + * @param base the direction to offset + * @param relative the direction to offset by + * @param forward the direction to use as "forward" + * @return The relative rotation between {@code base} and {@code relative} + */ + public static RelativeDirection findRelativeOf(Direction base, Direction relative, Direction forward) { + // Check simple cases first + if (base == relative) return RelativeDirection.FRONT; + if (base.getOpposite() == relative) return RelativeDirection.BACK; + + if (base.getAxis().isHorizontal()) { // base is one of N,S,W,E + if (relative == Direction.UP) return RelativeDirection.UP; + else if (relative == Direction.DOWN) return RelativeDirection.DOWN; + else if (relative == base.getCounterClockWise()) return RelativeDirection.LEFT; + else return RelativeDirection.RIGHT; // getClockWise + } else { // base is UP or DOWN + if (forward.getAxis() == Direction.Axis.Y) { + throw new IllegalStateException("forward must be a horizontal direction! is %s".formatted(forward)); + } + Direction globalLeft = forward.getCounterClockWise(); + Direction globalRight = forward.getClockWise(); + Direction globalBack = forward.getOpposite(); + + if (relative == globalLeft) { + return RelativeDirection.LEFT; + } else if (relative == globalRight) { + return RelativeDirection.RIGHT; + } else { // relative is NORTH or SOUTH (assuming forward is NORTH) + RelativeDirection dir; + if (relative == globalBack) dir = RelativeDirection.UP; + else dir = RelativeDirection.DOWN; // relative == NORTH + + if (base == Direction.DOWN) dir = dir.getOpposite(); + return dir; + } + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index 4f46dedf6b2..a345b4c681f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -188,7 +188,7 @@ public void toNetwork(FriendlyByteBuf buf, GTRecipe recipe) { } private static Codec makeCodec(boolean isKubeLoaded) { - // @formatter:off + // spotless:off if (!isKubeLoaded) { return RecordCodecBuilder.create(instance -> instance.group( GTRegistries.RECIPE_TYPES.codec().fieldOf("type").forGetter(val -> val.recipeType), @@ -237,7 +237,7 @@ private static Codec makeCodec(boolean isKubeLoaded) { GTRegistries.RECIPE_CATEGORIES.codec().optionalFieldOf("category", GTRecipeCategory.DEFAULT).forGetter(val -> val.recipeCategory)) .apply(instance, GTRecipe::new)); } - // @formatter:on + // spotless:on } public static class KJSCallWrapper { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 7748358375a..4d0ea6177c9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -47,6 +47,7 @@ import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import lombok.experimental.Tolerate; import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.Nullable; @@ -72,7 +73,7 @@ public class MultiblockMachineBuilder extends MachineBuilder> recoveryItems = new ArrayList<>(); @Setter - private Comparator partSorter = (a, b) -> 0; + private Function> partSorter = (c) -> (a, b) -> 0; @Setter private TriFunction partAppearance; @Getter @@ -296,6 +297,12 @@ public MultiblockMachineBuilder conditionalTooltip(Component component, boolean return (MultiblockMachineBuilder) super.conditionalTooltip(component, condition); } + @Tolerate + public MultiblockMachineBuilder partSorter(Comparator sorter) { + this.partSorter = $ -> sorter; + return this; + } + @Override public MultiblockMachineBuilder abilities(PartAbility... abilities) { return (MultiblockMachineBuilder) super.abilities(abilities); @@ -391,7 +398,7 @@ public MultiblockMachineDefinition register() { definition.setRecoveryItems( () -> recoveryItems.stream().map(Supplier::get).flatMap(Arrays::stream).toArray(ItemStack[]::new)); } - definition.setPartSorter(partSorter); + definition.setPartSorter(GTMemoizer.memoizeFunctionWeakIdent(partSorter)); if (partAppearance == null) { partAppearance = (controller, part, side) -> definition.getAppearance().get(); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java index 559e9b69bf9..90d77ca8dc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java @@ -69,8 +69,8 @@ private void renderLightRing(FusionReactorMachine machine, float partialTicks, P var front = machine.getFrontFacing(); var upwards = machine.getUpwardsFacing(); var flipped = machine.isFlipped(); - var back = RelativeDirection.BACK.getRelativeFacing(front, upwards, flipped); - var axis = RelativeDirection.UP.getRelativeFacing(front, upwards, flipped).getAxis(); + var back = RelativeDirection.BACK.getRelative(front, upwards, flipped); + var axis = RelativeDirection.UP.getRelative(front, upwards, flipped).getAxis(); var r = Mth.lerp(lerpFactor, red(lastColor), 255) / 255f; var g = Mth.lerp(lerpFactor, green(lastColor), 255) / 255f; var b = Mth.lerp(lerpFactor, blue(lastColor), 255) / 255f; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java index 0f52c6298b4..d1681943b68 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java @@ -91,7 +91,7 @@ public void renderMachine(List quads, MachineDefinition definition, @ // Always render this outwards in the HPCA, in case it is not placed outwards in structure. // Check for HPCA specifically since these components could potentially be used in other multiblocks. if (controller instanceof HPCAMachine hpca) { - facing = RelativeDirection.RIGHT.getRelativeFacing(hpca.getFrontFacing(), hpca.getUpwardsFacing(), + facing = RelativeDirection.RIGHT.getRelative(hpca.getFrontFacing(), hpca.getUpwardsFacing(), hpca.isFlipped()); } facing = ModelFactory.modelFacing(frontFacing, facing); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java index 9663f72fe69..958b2aad979 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java @@ -48,7 +48,7 @@ public void renderPartModel(List quads, IMultiController machine, IMu var multiState = GTMatrixUtils.createRotationState(multiFront, Direction.NORTH); var multiFacing = ModelFactory.modelFacing(side, multiFront); var flipped = machine.self().isFlipped(); - var relativeDown = RelativeDirection.DOWN.getRelativeFacing(multiFront, multiUpward, flipped); + var relativeDown = RelativeDirection.DOWN.getRelative(multiFront, multiUpward, flipped); // the rest of the owl if (machine.self().getPos().relative(relativeDown).get(relativeDown.getAxis()) != part.self().getPos().get(relativeDown.getAxis())) { @@ -59,7 +59,7 @@ public void renderPartModel(List quads, IMultiController machine, IMu if (side == relativeDown) { quads.add( StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.bottom()), multiState)); - } else if (side == RelativeDirection.UP.getRelativeFacing(multiFacing, multiUpward, flipped)) { + } else if (side == RelativeDirection.UP.getRelative(multiFacing, multiUpward, flipped)) { quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.top()), multiState)); } else { quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.side()), multiState)); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java index 0878029582e..b2eb5faa7a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java @@ -55,9 +55,9 @@ public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, pose.translate(opposite.getStepX(), opposite.getStepY(), opposite.getStepZ()); var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(lavaRenderType, true)); - var up = RelativeDirection.UP.getRelativeFacing(pbf.getFrontFacing(), pbf.getUpwardsFacing(), + var up = RelativeDirection.UP.getRelative(pbf.getFrontFacing(), pbf.getUpwardsFacing(), pbf.isFlipped()); - if (up != Direction.UP && up != Direction.DOWN) up = up.getOpposite(); + if (up.getAxis() != Direction.Axis.Y) up = up.getOpposite(); fluidBlockRenderer.drawFace(up, pose, consumer, Fluids.LAVA.getSource(), RenderUtil.FluidTextureType.STILL, combinedOverlay, combinedLight); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java index 144f96b1131..52297846c51 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java @@ -80,7 +80,7 @@ public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - var up = RelativeDirection.UP.getRelativeFacing(lcb.getFrontFacing(), lcb.getUpwardsFacing(), + var up = RelativeDirection.UP.getRelative(lcb.getFrontFacing(), lcb.getUpwardsFacing(), lcb.isFlipped()); if (up.getAxis() != Direction.Axis.Y) up = up.getOpposite(); fluidBlockRenderer.drawPlane(up, lcb.getFluidBlockOffsets(), pose, consumer, cachedFluid, diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java index 41ca25e4ce3..d4619bef38f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java @@ -80,7 +80,7 @@ public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - var up = RelativeDirection.UP.getRelativeFacing(lm.getFrontFacing(), lm.getUpwardsFacing(), + var up = RelativeDirection.UP.getRelative(lm.getFrontFacing(), lm.getUpwardsFacing(), lm.isFlipped()); if (up != Direction.UP && up != Direction.DOWN) up = up.getOpposite(); fluidBlockRenderer.drawPlane(up, lm.getFluidBlockOffsets(), pose, consumer, cachedFluid, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 0a23895b400..8f23bd1fa31 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -703,7 +703,8 @@ public static void init() {} } return shapeInfos; }) - .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) + .allowExtendedFacing(false) + .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_distillery")) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index f2743c0e2f9..c779b35d305 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -494,7 +494,7 @@ public class GTMultiMachines { return shapeInfos; }) .allowExtendedFacing(false) - .partSorter(Comparator.comparingInt(a -> a.self().getPos().getY())) + .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/distillation_tower")) .register(); @@ -551,6 +551,7 @@ public class GTMultiMachines { .where('D', dataHatchPredicate(blocks(CASING_GRATE.get()))) .where('#', Predicates.any()) .build()) + .partSorter(AssemblyLineMachine::partSorter) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), GTCEu.id("block/multiblock/assembly_line")) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java index 62827d41b6a..2d52bb34cec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/MetaMachineConfigCopyBehaviour.java @@ -1,18 +1,25 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NumericTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -24,12 +31,17 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; +import it.unimi.dsi.fastutil.booleans.BooleanConsumer; +import joptsimple.internal.Strings; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.function.Consumer; public class MetaMachineConfigCopyBehaviour implements IInteractionItem, IAddInformation { + public static final String NONE_DIRECTION = "null"; + public static final String CONFIG_DATA = "config_data"; public static final String ORIGINAL_FRONT = "front"; public static final String ITEM_CONFIG = "item"; @@ -39,57 +51,48 @@ public class MetaMachineConfigCopyBehaviour implements IInteractionItem, IAddInf public static final String INPUT_FROM_OUTPUT_SIDE = "in_from_out"; public static final String MUFFLED = "muffled"; - public static int directionToInt(@Nullable Direction direction) { - return direction == null ? 0 : direction.ordinal() + 1; - } - - public static Direction intToDirection(int ordinal) { - return ordinal <= 0 || ordinal > Direction.values().length ? null : Direction.values()[ordinal - 1]; + public static final Component ENABLED = Component.translatable("cover.voiding.label.enabled") + .withStyle(ChatFormatting.GREEN); + public static final Component DISABLED = Component.translatable("cover.voiding.label.disabled") + .withStyle(ChatFormatting.RED); + + public static final Component[] DIRECTION_TOOLTIPS = { + Component.translatable("gtceu.direction.tooltip.up").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.down").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.left").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.right").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.front").withStyle(ChatFormatting.YELLOW), + Component.translatable("gtceu.direction.tooltip.back").withStyle(ChatFormatting.YELLOW), + }; + + public static String directionToString(@Nullable Direction direction) { + if (direction == null) return NONE_DIRECTION; + return direction.getSerializedName(); } - public static Component relativeDirectionComponent(Direction origFront, Direction origDirection) { - if (origFront == origDirection) { - return Component.translatable("gtceu.direction.tooltip.front").withStyle(ChatFormatting.YELLOW); - } - if (Direction.UP == origDirection) { - return Component.translatable("gtceu.direction.tooltip.up").withStyle(ChatFormatting.YELLOW); + public static @Nullable Direction tagToDirection(@Nullable Tag tag) { + if (tag instanceof StringTag string) { + String name = string.getAsString(); + if (Strings.isNullOrEmpty(name) || NONE_DIRECTION.equalsIgnoreCase(name)) return null; + return Direction.byName(name); + } else if (tag instanceof NumericTag number) { + // backwards compatibility + int ordinal = number.getAsInt(); + return ordinal <= 0 || ordinal > Direction.values().length ? null : Direction.values()[ordinal - 1]; } - if (Direction.DOWN == origDirection) { - return Component.translatable("gtceu.direction.tooltip.down").withStyle(ChatFormatting.YELLOW); - } - var face = origFront; - int i; - for (i = 0; i < 3; i++) { - face = face.getClockWise(); - if (face == origDirection) break; - } - return switch (i) { - case 0 -> Component.translatable("gtceu.direction.tooltip.right").withStyle(ChatFormatting.YELLOW); - case 1 -> Component.translatable("gtceu.direction.tooltip.back").withStyle(ChatFormatting.YELLOW); - case 2 -> Component.translatable("gtceu.direction.tooltip.left").withStyle(ChatFormatting.YELLOW); - default -> Component.literal(""); - }; + return null; } - public static Direction getRelativeDirection(Direction originalFront, Direction currentFacing, Direction face) { - if ((currentFacing == null || originalFront == null) || (currentFacing == originalFront) || - (face == Direction.UP || face == Direction.DOWN)) - return face; - - Direction newFace = originalFront; - int i; - for (i = 0; i < 4 && newFace != currentFacing; i++) newFace = newFace.getClockWise(); - - newFace = face; - for (int j = 0; j < i; j++) newFace = newFace.getClockWise(); - return newFace; + public static Component relativeDirectionComponent(Direction origFront, Direction origDirection) { + RelativeDirection relative = RelativeDirection.findRelativeOf(origFront, origDirection); + return DIRECTION_TOOLTIPS[relative.ordinal()]; } @Override public InteractionResultHolder use(Item item, Level level, Player player, InteractionHand usedHand) { var stack = player.getItemInHand(usedHand); if (player.isShiftKeyDown()) { - stack.setTag(null); + stack.removeTagKey(CONFIG_DATA); return InteractionResultHolder.success(stack); } return IInteractionItem.super.use(item, level, player, usedHand); @@ -97,39 +100,35 @@ public InteractionResultHolder use(Item item, Level level, Player pla @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { - if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof MetaMachineBlockEntity blockEntity) { + // spotless:off + if (context.getLevel().getBlockEntity(context.getClickedPos()) instanceof IMachineBlockEntity blockEntity) { var machine = blockEntity.getMetaMachine(); if (!MachineOwner.canOpenOwnerMachine(context.getPlayer(), machine)) { return InteractionResult.FAIL; } - if (context.isSecondaryUseActive()) + if (context.isSecondaryUseActive()) { return handleCopy(stack, machine); - else if (stack.hasTag() && stack.getTag().contains(CONFIG_DATA)) + } else if (stack.getTagElement(CONFIG_DATA) != null) { return handlePaste(stack, machine); - } else - if (context.isSecondaryUseActive() && context.getLevel().getBlockState(context.getClickedPos()).isAir()) { - stack.setTag(null); - return InteractionResult.SUCCESS; } + } else if (context.isSecondaryUseActive() && context.getLevel().getBlockState(context.getClickedPos()).isAir()) { + stack.removeTagKey(CONFIG_DATA); + return InteractionResult.SUCCESS; + } + // spotless:on return InteractionResult.SUCCESS; } public static InteractionResult handleCopy(ItemStack stack, MetaMachine machine) { CompoundTag configData = new CompoundTag(); - configData.putInt(ORIGINAL_FRONT, directionToInt(machine.getFrontFacing())); + configData.putString(ORIGINAL_FRONT, directionToString(machine.getFrontFacing())); if (machine instanceof IAutoOutputItem autoOutputItem && autoOutputItem.getOutputFacingItems() != null) { - CompoundTag itemTag = new CompoundTag(); - itemTag.putInt(DIRECTION, directionToInt(autoOutputItem.getOutputFacingItems())); - itemTag.putBoolean(AUTO, autoOutputItem.isAutoOutputItems()); - itemTag.putBoolean(INPUT_FROM_OUTPUT_SIDE, autoOutputItem.isAllowInputFromOutputSideItems()); - configData.put(ITEM_CONFIG, itemTag); + configData.put(ITEM_CONFIG, copyOutputConfig(autoOutputItem.getOutputFacingItems(), + autoOutputItem.isAutoOutputItems(), autoOutputItem.isAllowInputFromOutputSideItems())); } if (machine instanceof IAutoOutputFluid autoOutputFluid && autoOutputFluid.getOutputFacingFluids() != null) { - CompoundTag fluidTag = new CompoundTag(); - fluidTag.putInt(DIRECTION, directionToInt(autoOutputFluid.getOutputFacingFluids())); - fluidTag.putBoolean(AUTO, autoOutputFluid.isAutoOutputFluids()); - fluidTag.putBoolean(INPUT_FROM_OUTPUT_SIDE, autoOutputFluid.isAllowInputFromOutputSideFluids()); - configData.put(FLUID_CONFIG, fluidTag); + configData.put(FLUID_CONFIG, copyOutputConfig(autoOutputFluid.getOutputFacingFluids(), + autoOutputFluid.isAutoOutputFluids(), autoOutputFluid.isAllowInputFromOutputSideFluids())); } if (machine instanceof IMufflableMachine mufflableMachine) { configData.putBoolean(MUFFLED, mufflableMachine.isMuffled()); @@ -141,23 +140,18 @@ public static InteractionResult handleCopy(ItemStack stack, MetaMachine machine) } public static InteractionResult handlePaste(ItemStack stack, MetaMachine machine) { - if (!stack.hasTag() || !stack.getTag().contains(CONFIG_DATA)) return InteractionResult.PASS; - CompoundTag root = stack.getOrCreateTag(); - CompoundTag configData = root.getCompound(CONFIG_DATA); - Direction originalFront = intToDirection(configData.getInt(ORIGINAL_FRONT)); + CompoundTag configData = stack.getTagElement(CONFIG_DATA); + if (configData == null) return InteractionResult.PASS; + Direction originalFront = tagToDirection(configData.get(ORIGINAL_FRONT)); if (configData.contains(ITEM_CONFIG) && machine instanceof IAutoOutputItem autoOutputItem) { - CompoundTag itemData = configData.getCompound(ITEM_CONFIG); - autoOutputItem.setOutputFacingItems(getRelativeDirection(originalFront, machine.getFrontFacing(), - intToDirection(itemData.getInt(DIRECTION)))); - autoOutputItem.setAutoOutputItems(itemData.getBoolean(AUTO)); - autoOutputItem.setAllowInputFromOutputSideItems(itemData.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + pasteOutputConfig(originalFront, machine.getFrontFacing(), configData.getCompound(ITEM_CONFIG), + autoOutputItem::setOutputFacingItems, autoOutputItem::setAutoOutputItems, + autoOutputItem::setAllowInputFromOutputSideItems); } if (configData.contains(FLUID_CONFIG) && machine instanceof IAutoOutputFluid autoOutputFluid) { - CompoundTag fluidData = configData.getCompound(FLUID_CONFIG); - autoOutputFluid.setOutputFacingFluids(getRelativeDirection(originalFront, machine.getFrontFacing(), - intToDirection(fluidData.getInt(DIRECTION)))); - autoOutputFluid.setAutoOutputFluids(fluidData.getBoolean(AUTO)); - autoOutputFluid.setAllowInputFromOutputSideFluids(fluidData.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + pasteOutputConfig(originalFront, machine.getFrontFacing(), configData.getCompound(FLUID_CONFIG), + autoOutputFluid::setOutputFacingFluids, autoOutputFluid::setAutoOutputFluids, + autoOutputFluid::setAllowInputFromOutputSideFluids); } if (configData.contains(MUFFLED) && machine instanceof IMufflableMachine mufflableMachine) { mufflableMachine.setMuffled(configData.getBoolean(MUFFLED)); @@ -170,54 +164,53 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List cap : GTRegistries.RECIPE_CAPABILITIES) { + if (!data.contains(cap.name)) continue; + var configData = data.getCompound(cap.name); + var component = cap.getColoredName(); + addConfigTypeTooltips(tooltipComponents, component, configData, origFront); } } + if (data.contains(MUFFLED)) { + tooltipComponents.add(Component.translatable("behaviour.setting.muffled.tooltip", + data.getBoolean(MUFFLED) ? ENABLED : DISABLED)); + } } else { tooltipComponents.add(Component.translatable("item.toggle.advanced.info.tooltip")); } } + + private static void addConfigTypeTooltips(List tooltip, Component baseComponent, + CompoundTag data, Direction origFront) { + tooltip.add(Component.translatable("behaviour.setting.output.direction.tooltip", + baseComponent, relativeDirectionComponent(origFront, tagToDirection(data.get(DIRECTION))))); + tooltip.add(Component.translatable("behaviour.setting.item_auto_output.tooltip", baseComponent, + data.getBoolean(AUTO) ? ENABLED : DISABLED)); + tooltip.add(Component.translatable("behaviour.setting.allow.input.from.output.tooltip", baseComponent, + data.getBoolean(INPUT_FROM_OUTPUT_SIDE) ? ENABLED : DISABLED)); + } + + private static CompoundTag copyOutputConfig(Direction outputSide, boolean autoOutput, + boolean allowInputFromOutputSide) { + CompoundTag tag = new CompoundTag(); + tag.putString(DIRECTION, directionToString(outputSide)); + tag.putBoolean(AUTO, autoOutput); + tag.putBoolean(INPUT_FROM_OUTPUT_SIDE, allowInputFromOutputSide); + return tag; + } + + private static void pasteOutputConfig(Direction originalFront, Direction currentFront, CompoundTag data, + Consumer outputSide, BooleanConsumer autoOutput, + BooleanConsumer allowInputFromOutputSide) { + outputSide.accept(RelativeDirection.getActualDirection(originalFront, currentFront, + tagToDirection(data.get(DIRECTION)))); + autoOutput.accept(data.getBoolean(AUTO)); + allowInputFromOutputSide.accept(data.getBoolean(INPUT_FROM_OUTPUT_SIDE)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index d3e6bb1a2f6..516ef580f56 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -5,6 +5,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -13,7 +15,6 @@ import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.fluids.FluidStack; @@ -26,7 +27,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.Optional; -import java.util.function.ToIntFunction; public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @@ -57,15 +57,9 @@ public boolean beforeWorking(@Nullable GTRecipe recipe) { return checkFluidInputs(recipe); } - @Override - public void onStructureFormed() { - getDefinition() - .setPartSorter(Comparator.comparingInt(it -> multiblockPartSorter().applyAsInt(it.self().getPos()))); - super.onStructureFormed(); - } - - private ToIntFunction multiblockPartSorter() { - return RelativeDirection.RIGHT.getSorter(getFrontFacing(), getUpwardsFacing(), isFlipped()); + public static Comparator partSorter(MultiblockControllerMachine mc) { + return Comparator.comparing(p -> p.self().getPos(), + RelativeDirection.RIGHT.getSorter(mc.getFrontFacing(), mc.getUpwardsFacing(), mc.isFlipped())); } private boolean checkItemInputs(@NotNull GTRecipe recipe) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index a13c1933d39..811ee5be9e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -75,8 +75,6 @@ public DistillationTowerLogic getRecipeLogic() { @Override public void onStructureFormed() { - getDefinition().setPartSorter(Comparator.comparingInt(p -> p.self().getPos().getY())); - getDefinition().setAllowExtendedFacing(false); super.onStructureFormed(); final int startY = getPos().getY() + yOffset; List parts = getParts().stream() diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 25abd49f5df..e04f998393a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -54,7 +54,7 @@ public void onStructureInvalid() { } protected void saveOffsets() { - Direction up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); Direction clockWise; Direction counterClockWise; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index fccb0e4bb5f..cc09295b12c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -54,7 +54,7 @@ public void onStructureInvalid() { } protected void saveOffsets() { - Direction up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); Direction clockWise; Direction counterClockWise; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index 9a9b9dd28f4..ef5d4b2d71f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -714,7 +714,7 @@ public ResourceTexture getComponentTexture(int index) { public void tryGatherClientComponents(Level world, BlockPos pos, Direction frontFacing, Direction upwardsFacing, boolean flip) { - Direction relativeUp = RelativeDirection.UP.getRelativeFacing(frontFacing, upwardsFacing, flip); + Direction relativeUp = RelativeDirection.UP.getRelative(frontFacing, upwardsFacing, flip); if (components.isEmpty()) { BlockPos testPos = pos diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 477e7c944a0..8e5fd17cc21 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -83,7 +83,7 @@ public void clientTick() { float yPos = facing.getStepY() * 0.76F + pos.getY() + 0.25F; float zPos = facing.getStepZ() * 0.76F + pos.getZ() + 0.5F; - var up = RelativeDirection.UP.getRelativeFacing(getFrontFacing(), getUpwardsFacing(), isFlipped()); + var up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); var sign = up.getAxisDirection().getStep(); var shouldX = up.getAxis() == Direction.Axis.X; var shouldY = up.getAxis() == Direction.Axis.Y; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java new file mode 100644 index 00000000000..42b1a1ab3f6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java @@ -0,0 +1,235 @@ +package com.gregtechceu.gtceu.utils.memoization; + +import org.jetbrains.annotations.NotNullByDefault; +import org.jetbrains.annotations.Nullable; + +import java.io.Serial; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +@NotNullByDefault +public class ConcurrentWeakIdentityHashMap extends AbstractMap implements ConcurrentMap { + + private final ConcurrentMap, V> map; + private final ReferenceQueue queue = new ReferenceQueue<>(); + private transient @Nullable Set> entrySet; + + public ConcurrentWeakIdentityHashMap(int initialCapacity) { + this.map = new ConcurrentHashMap<>(initialCapacity); + } + + public ConcurrentWeakIdentityHashMap() { + this.map = new ConcurrentHashMap<>(); + } + + @Override + public @Nullable V get(Object key) { + purgeKeys(); + return map.get(new Key<>(key, null)); + } + + @Override + public @Nullable V put(K key, V value) { + purgeKeys(); + return map.put(new Key<>(key, queue), value); + } + + @Override + public int size() { + purgeKeys(); + return map.size(); + } + + @SuppressWarnings({ "ReassignedVariable", "SuspiciousMethodCalls" }) + private void purgeKeys() { + Reference reference; + while ((reference = queue.poll()) != null) { + map.remove(reference); + } + } + + @Override + public Set> entrySet() { + Set> entrySet = this.entrySet; + return entrySet == null ? this.entrySet = new EntrySet() : entrySet; + } + + @Override + public @Nullable V putIfAbsent(K key, V value) { + purgeKeys(); + return map.putIfAbsent(new Key<>(key, queue), value); + } + + @Override + public V remove(Object key) { + return map.remove(new Key<>(key, null)); + } + + @Override + public boolean remove(Object key, Object value) { + purgeKeys(); + return map.remove(new Key<>(key, null), value); + } + + @Override + public boolean replace(K key, V oldValue, V newValue) { + purgeKeys(); + return map.replace(new Key<>(key, null), oldValue, newValue); + } + + @Override + public @Nullable V replace(K key, V value) { + purgeKeys(); + return map.replace(new Key<>(key, null), value); + } + + @Override + public boolean containsKey(Object key) { + purgeKeys(); + return map.containsKey(new Key<>(key, null)); + } + + @SuppressWarnings("StatementWithEmptyBody") + @Override + public void clear() { + while (queue.poll() != null); + map.clear(); + } + + @Override + public boolean containsValue(Object value) { + purgeKeys(); + return map.containsValue(value); + } + + private static class Key extends WeakReference { + + private final int hash; + + Key(T t, @Nullable ReferenceQueue queue) { + super(t, queue); + hash = System.identityHashCode(Objects.requireNonNull(t)); + } + + @Override + public boolean equals(Object obj) { + return obj == this || obj instanceof Key key && key.get() == this.get(); + } + + @Override + public int hashCode() { + return hash; + } + } + + private class Iter implements Iterator> { + + private final Iterator, V>> it; + private @Nullable Map.Entry nextValue; + + Iter(Iterator, V>> it) { + this.it = it; + } + + @Override + public boolean hasNext() { + if (nextValue != null) { + return true; + } + while (it.hasNext()) { + Map.Entry, V> entry = it.next(); + K key = entry.getKey().get(); + if (key != null) { + nextValue = new Entry(key, entry.getValue()); + return true; + } else { + it.remove(); + } + } + return false; + } + + @Override + public @Nullable Map.Entry next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + Map.Entry entry = nextValue; + nextValue = null; + return entry; + } + + @Override + public void remove() { + it.remove(); + nextValue = null; + } + } + + private class EntrySet extends AbstractSet> { + + @Override + public Iterator> iterator() { + return new Iter(map.entrySet().iterator()); + } + + @Override + public int size() { + return ConcurrentWeakIdentityHashMap.this.size(); + } + + @Override + public void clear() { + ConcurrentWeakIdentityHashMap.this.clear(); + } + + @Override + public boolean contains(Object o) { + if (!(o instanceof Map.Entry e)) { + return false; + } + return ConcurrentWeakIdentityHashMap.this.get(e.getKey()) == e.getValue(); + } + + @Override + public boolean remove(Object o) { + if (!(o instanceof Map.Entry e)) { + return false; + } + return ConcurrentWeakIdentityHashMap.this.remove(e.getKey(), e.getValue()); + } + } + + private class Entry extends AbstractMap.SimpleEntry { + + @Serial + private static final long serialVersionUID = 1L; + + Entry(K key, V value) { + super(key, value); + } + + @Override + public V setValue(V value) { + ConcurrentWeakIdentityHashMap.this.put(getKey(), value); + return super.setValue(value); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Map.Entry e) { + return getKey() == e.getKey() && getValue() == e.getValue(); + } + return false; + } + + @Override + public int hashCode() { + return System.identityHashCode(getKey()) ^ System.identityHashCode(getValue()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java b/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java index 13781ca44a5..2fd12f106df 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/memoization/GTMemoizer.java @@ -2,6 +2,8 @@ import net.minecraft.world.level.block.Block; +import java.util.Map; +import java.util.function.Function; import java.util.function.Supplier; public class GTMemoizer { @@ -20,4 +22,19 @@ public static MemoizedSupplier memoize(Supplier delegate) { public static MemoizedBlockSupplier memoizeBlockSupplier(Supplier delegate) { return new MemoizedBlockSupplier<>(delegate); } + + public static Function memoizeFunctionWeakIdent(final Function memoFunction) { + return new Function<>() { + + private final Map cache = new ConcurrentWeakIdentityHashMap<>(); + + public R apply(T key) { + return this.cache.computeIfAbsent(key, memoFunction); + } + + public String toString() { + return "memoizeFunctionWeakIdent/1[function=" + memoFunction + ", size=" + this.cache.size() + "]"; + } + }; + } } From 02ecc49c0b1b3f3b6f085d69992b4cc83d6b56e2 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:55:39 +0300 Subject: [PATCH 063/270] Item Capability initialization cleanup & pre-emptive potion bottle bugfixes (#3207) --- .../gtceu/api/item/ComponentItem.java | 17 ---- .../gtceu/api/item/DrumMachineItem.java | 31 +++---- .../gtceu/api/item/IComponentItem.java | 27 ++++++- .../api/item/armor/ArmorComponentItem.java | 21 +---- .../api/item/component/ElectricStats.java | 7 +- .../component/FilteredFluidContainer.java | 22 ++--- .../forge/FilteredFluidHandlerItemStack.java | 2 +- .../FilteredFluidHandlerItemStackSimple.java | 29 +++++++ .../gtceu/common/data/GTItems.java | 6 +- .../fluid/potion/BottleItemFluidHandler.java | 25 ++++++ .../fluid/potion/PotionItemFluidHandler.java | 25 ++++++ .../gtceu/forge/ForgeCommonEventListener.java | 81 ++----------------- 12 files changed, 135 insertions(+), 158 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java index 2b42d8dbf36..b45213e753e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/ComponentItem.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.item.capability.ElectricItem; import com.gregtechceu.gtceu.api.item.component.*; -import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; @@ -36,12 +35,9 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; import com.google.common.collect.Multimap; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -360,19 +356,6 @@ public boolean doesSneakBypassUse(ItemStack stack, LevelReader level, BlockPos p return result; } - @Override - public LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - for (IItemComponent component : components) { - if (component instanceof IComponentCapability componentCapability) { - var value = componentCapability.getCapability(itemStack, cap); - if (value.isPresent()) { - return value; - } - } - } - return LazyOptional.empty(); - } - @Override public int getBurnTime(ItemStack itemStack, @Nullable RecipeType recipeType) { return burnTime; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java index 2bcc25b6bb5..399ac3c30cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/DrumMachineItem.java @@ -8,12 +8,12 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.capabilities.ICapabilityProvider; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class DrumMachineItem extends MetaMachineItem { @@ -29,22 +29,15 @@ public static DrumMachineItem create(IMachineBlock block, Properties properties, return new DrumMachineItem(block, properties, mat); } - public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap) { - FluidPipeProperties property; - if (mat.hasProperty(PropertyKey.FLUID_PIPE)) { - property = mat.getProperty(PropertyKey.FLUID_PIPE); - } else { - property = null; + @Override + public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + final FluidPipeProperties property = mat.getProperty(PropertyKey.FLUID_PIPE); + if (property == null) { + return null; } - - if (cap == ForgeCapabilities.FLUID_HANDLER_ITEM && property != null) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, LazyOptional.of( - () -> new ThermalFluidHandlerItemStack( - itemStack, - GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition()), - property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), - property.isCryoProof(), property.isPlasmaProof()))); - } - return LazyOptional.empty(); + return new ThermalFluidHandlerItemStack(stack, + GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition()), + property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), + property.isCryoProof(), property.isPlasmaProof()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java index 95596c63d7c..7e50f647f82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IComponentItem.java @@ -1,26 +1,47 @@ package com.gregtechceu.gtceu.api.item; import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; +import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.extensions.IForgeItem; import net.minecraftforge.common.util.LazyOptional; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; -public interface IComponentItem extends ItemLike { +public interface IComponentItem extends ItemLike, IForgeItem { List getComponents(); void attachComponents(IItemComponent... components); - default LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - return LazyOptional.empty(); + @Override + default @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + return new ICapabilityProvider() { + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { + for (IItemComponent component : getComponents()) { + if (component instanceof IComponentCapability componentCapability) { + var value = componentCapability.getCapability(stack, cap); + if (value.isPresent()) { + return value; + } + } + } + return LazyOptional.empty(); + } + }; } default void fillItemCategory(CreativeModeTab category, NonNullList items) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java index 94b2b75519a..428b2a658df 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorComponentItem.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.*; -import com.gregtechceu.gtceu.api.item.component.forge.IComponentCapability; import com.gregtechceu.gtceu.common.data.GTItems; import net.minecraft.client.model.HumanoidModel; @@ -21,13 +20,12 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; import com.google.common.base.Preconditions; import com.google.common.collect.*; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.NotNullByDefault; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -35,6 +33,7 @@ import java.util.List; import java.util.function.Consumer; +@NotNullByDefault public class ArmorComponentItem extends ArmorItem implements IComponentItem { @Getter @@ -144,7 +143,8 @@ public void initializeClient(Consumer consumer) { @Nullable @Override public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { - return armorLogic.getArmorTexture(stack, entity, slot, type).toString(); + var textureId = armorLogic.getArmorTexture(stack, entity, slot, type); + return textureId == null ? null : textureId.toString(); } /////////////////////////////////////////// @@ -321,19 +321,6 @@ public boolean hasCraftingRemainingItem(ItemStack stack) { return super.hasCraftingRemainingItem(stack); } - @Override - public LazyOptional getCapability(@NotNull final ItemStack itemStack, @NotNull final Capability cap) { - for (IItemComponent component : components) { - if (component instanceof IComponentCapability componentCapability) { - var value = componentCapability.getCapability(itemStack, cap); - if (value.isPresent()) { - return value; - } - } - } - return LazyOptional.empty(); - } - @Override public boolean canWalkOnPowderedSnow(ItemStack stack, LivingEntity wearer) { return stack.is(GTItems.NANO_BOOTS.asItem()) || stack.is(GTItems.QUANTUM_BOOTS.asItem()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java index 9f089646924..0d79562c552 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/ElectricStats.java @@ -65,11 +65,8 @@ public static ElectricStats create(long maxCharge, int tier, boolean chargeable, @Override public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability capability) { - if (capability == GTCapability.CAPABILITY_ELECTRIC_ITEM) { - return GTCapability.CAPABILITY_ELECTRIC_ITEM.orEmpty(capability, - LazyOptional.of(() -> new ElectricItem(itemStack, maxCharge, tier, chargeable, dischargeable))); - } - return LazyOptional.empty(); + return GTCapability.CAPABILITY_ELECTRIC_ITEM.orEmpty(capability, + LazyOptional.of(() -> new ElectricItem(itemStack, maxCharge, tier, chargeable, dischargeable))); } public static float getStoredPredicate(ItemStack itemStack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java index 80370d5248f..04279911f02 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/FilteredFluidContainer.java @@ -23,35 +23,25 @@ public class FilteredFluidContainer implements IItemComponent, IComponentCapabil public final int capacity; public final boolean allowPartialFill; - @Nullable public Predicate filter; - protected FilteredFluidContainer(int capacity, boolean allowPartialFill, Predicate filter) { + public FilteredFluidContainer(int capacity, boolean allowPartialFill, Predicate filter) { this.allowPartialFill = allowPartialFill; this.capacity = capacity; this.filter = filter; } - public static FilteredFluidContainer create(int capacity, boolean allowPartialFill, Predicate filter) { - return new FilteredFluidContainer(capacity, allowPartialFill, filter); - } - @Override public @NotNull LazyOptional getCapability(ItemStack itemStack, @NotNull Capability cap) { - if (cap == ForgeCapabilities.FLUID_HANDLER_ITEM) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, - LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, capacity, filter))); - } - return LazyOptional.empty(); + return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, + LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, capacity, filter))); } @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { - if (stack.hasTag()) { - FluidUtil.getFluidContained(stack).ifPresent(tank -> tooltipComponents - .add(Component.translatable("gtceu.universal.tooltip.fluid_stored", tank.getDisplayName(), - tank.getAmount()))); - } + FluidUtil.getFluidContained(stack).ifPresent(fluid -> tooltipComponents + .add(Component.translatable("gtceu.universal.tooltip.fluid_stored", fluid.getDisplayName(), + fluid.getAmount()))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java index e1a2479c87f..3ad31910d16 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStack.java @@ -10,7 +10,7 @@ public class FilteredFluidHandlerItemStack extends FluidHandlerItemStack { - Predicate filter; + protected final Predicate filter; /** * @param container The container itemStack, data is stored on it directly as NBT. diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java new file mode 100644 index 00000000000..52fa2fe0c8c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/FilteredFluidHandlerItemStackSimple.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.api.misc.forge; + +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; + +import org.jetbrains.annotations.NotNull; + +import java.util.function.Predicate; + +public class FilteredFluidHandlerItemStackSimple extends FluidHandlerItemStackSimple { + + protected final Predicate filter; + + /** + * @param container The container itemStack, data is stored on it directly as NBT. + * @param capacity The maximum capacity of this fluid tank. + */ + public FilteredFluidHandlerItemStackSimple(@NotNull ItemStack container, int capacity, + Predicate filter) { + super(container, capacity); + this.filter = filter; + } + + @Override + public boolean canFillFluidType(FluidStack fluid) { + return filter.test(fluid); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 628cdc97708..4ab51c302ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -406,8 +406,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit .properties(p -> p.stacksTo(1)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(true, true, true))) - .onRegister(attach(FilteredFluidContainer.create(100, true, - x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), + .onRegister(attach(new FilteredFluidContainer(100, true, x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) @@ -419,8 +418,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit .properties(p -> p.stacksTo(1).rarity(Rarity.UNCOMMON)) .setData(ProviderType.ITEM_MODEL, NonNullBiConsumer.noop()) .onRegister(attach(new LighterBehavior(true, true, true))) - .onRegister(attach(FilteredFluidContainer.create(1000, true, - x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), + .onRegister(attach(new FilteredFluidContainer(1000, true, x -> x.getFluid().is(CustomTags.LIGHTER_FLUIDS)), new ItemFluidContainer())) .onRegister(modelPredicate(GTCEu.id("lighter_open"), (itemStack) -> itemStack.getOrCreateTag().getBoolean(LighterBehavior.LIGHTER_OPEN) ? 1.0f : 0.0f)) diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java new file mode 100644 index 00000000000..536db05f0d1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/BottleItemFluidHandler.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.common.fluid.potion; + +import com.gregtechceu.gtceu.api.misc.forge.FilteredFluidHandlerItemStackSimple; +import com.gregtechceu.gtceu.data.recipe.CustomTags; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraftforge.fluids.FluidStack; + +import org.jetbrains.annotations.NotNull; + +public class BottleItemFluidHandler extends FilteredFluidHandlerItemStackSimple { + + public BottleItemFluidHandler(@NotNull ItemStack container) { + super(container, PotionFluidHelper.BOTTLE_AMOUNT, s -> s.getFluid().is(CustomTags.POTION_FLUIDS)); + } + + @Override + protected void setFluid(FluidStack fluid) { + if (!fluid.isEmpty()) { + container = PotionUtils.setPotion(new ItemStack(Items.POTION), PotionUtils.getPotion(fluid.getTag())); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java new file mode 100644 index 00000000000..21ea6b62ec4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionItemFluidHandler.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.common.fluid.potion; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStackSimple; + +import org.jetbrains.annotations.NotNull; + +public class PotionItemFluidHandler extends FluidHandlerItemStackSimple.SwapEmpty { + + public PotionItemFluidHandler(ItemStack potion) { + super(potion, new ItemStack(Items.GLASS_BOTTLE), PotionFluidHelper.BOTTLE_AMOUNT); + } + + @Override + protected void setFluid(FluidStack fluid) { + // no-op + } + + @Override + public @NotNull FluidStack getFluid() { + return PotionFluidHelper.getFluidFromPotionItem(getContainer(), PotionFluidHelper.BOTTLE_AMOUNT); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 81aca10e2e0..60c8388aa44 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -14,13 +14,10 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.item.DrumMachineItem; -import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; -import com.gregtechceu.gtceu.api.misc.forge.FilteredFluidHandlerItemStack; import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -33,7 +30,8 @@ import com.gregtechceu.gtceu.common.commands.MedicalConditionCommands; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GTAEMachines; -import com.gregtechceu.gtceu.common.fluid.potion.PotionFluidHelper; +import com.gregtechceu.gtceu.common.fluid.potion.BottleItemFluidHandler; +import com.gregtechceu.gtceu.common.fluid.potion.PotionItemFluidHandler; import com.gregtechceu.gtceu.common.item.ToggleEnergyConsumerBehavior; import com.gregtechceu.gtceu.common.item.armor.IJetpack; import com.gregtechceu.gtceu.common.item.armor.QuarkTechSuite; @@ -73,13 +71,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.PotionItem; -import net.minecraft.world.item.alchemy.PotionUtils; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; -import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.*; @@ -95,10 +91,6 @@ import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.items.IItemHandler; @@ -120,73 +112,10 @@ public class ForgeCommonEventListener { @SubscribeEvent public static void registerItemStackCapabilities(AttachCapabilitiesEvent event) { final ItemStack itemStack = event.getObject(); - if (itemStack.getItem() instanceof IComponentItem componentItem) { - event.addCapability(GTCEu.id("capability"), new ICapabilityProvider() { - - @NotNull - @Override - public LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { - return componentItem.getCapability(itemStack, cap); - } - }); - } else if (itemStack.getItem() instanceof DrumMachineItem drumMachineItem) { - event.addCapability(GTCEu.id("fluid"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability capability, - @Nullable Direction arg) { - return drumMachineItem.getCapability(itemStack, capability); - } - }); - } else if (itemStack.getItem() instanceof PotionItem) { - LazyOptional handler = LazyOptional.of(() -> { - var fluidHandler = new FluidHandlerItemStack.SwapEmpty(itemStack, new ItemStack(Items.GLASS_BOTTLE), - PotionFluidHelper.BOTTLE_AMOUNT) { - - @Override - protected void setFluid(FluidStack fluid) { - // do nada - } - - @Override - public @NotNull FluidStack getFluid() { - return PotionFluidHelper.getFluidFromPotionItem(itemStack, PotionFluidHelper.BOTTLE_AMOUNT); - } - }; - fluidHandler.fill(PotionFluidHelper.getFluidFromPotionItem(itemStack, PotionFluidHelper.BOTTLE_AMOUNT), - IFluidHandler.FluidAction.EXECUTE); - return fluidHandler; - }); - event.addCapability(GTCEu.id("potion_item_handler"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, - @Nullable Direction side) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, handler); - } - }); + if (itemStack.getItem() instanceof PotionItem) { + event.addCapability(GTCEu.id("potion_item_handler"), new PotionItemFluidHandler(itemStack)); } else if (itemStack.is(Items.GLASS_BOTTLE)) { - LazyOptional handler = LazyOptional.of(() -> new FilteredFluidHandlerItemStack(itemStack, - 250, s -> s.getFluid().is(CustomTags.POTION_FLUIDS)) { - - @Override - protected void setFluid(FluidStack fluid) { - super.setFluid(fluid); - if (!fluid.isEmpty()) { - container = PotionUtils.setPotion(new ItemStack(Items.POTION), - PotionUtils.getPotion(fluid.getTag())); - } - } - }); - event.addCapability(GTCEu.id("bottle_item_handler"), new ICapabilityProvider() { - - @Override - public @NotNull LazyOptional getCapability(@NotNull Capability cap, - @Nullable Direction side) { - return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(cap, handler); - } - }); - + event.addCapability(GTCEu.id("bottle_item_handler"), new BottleItemFluidHandler(itemStack)); } } From 99dbc2da9ecb7ce05f55ef2cc71a744e2dd7267f Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 22 Jun 2025 12:56:11 +0300 Subject: [PATCH 064/270] Add Capes (#3242) --- .../resources/assets/gtceu/lang/en_ud.json | 9 + .../resources/assets/gtceu/lang/en_us.json | 9 + .../gtceu/api/cosmetics/CapeRegistry.java | 288 ++++++++++++++++++ .../cosmetics/event/RegisterGTCapesEvent.java | 49 +++ .../forge/ForgeClientEventListener.java | 35 +++ .../common/commands/GTClientCommands.java | 2 +- .../gtceu/common/commands/GTCommands.java | 232 +++++++++++++- .../gtceu/common/commands/HazardCommands.java | 30 +- .../commands/MedicalConditionCommands.java | 72 ++--- .../gtceu/common/cosmetics/GTCapes.java | 86 ++++++ .../gtceu/common/network/GTNetwork.java | 1 + .../packets/SPacketNotifyCapeChange.java | 44 +++ .../gtceu/config/ConfigHolder.java | 6 +- .../mixins/AbstractClientPlayerAccessor.java | 14 + .../gtceu/core/mixins/PlayerInfoAccessor.java | 17 ++ .../gtceu/data/lang/LangHandler.java | 10 + .../gtceu/forge/ForgeCommonEventListener.java | 20 +- .../assets/gtceu/textures/capes/ace_cape.png | Bin 0 -> 295 bytes .../gtceu/textures/capes/agender_cape.png | Bin 0 -> 313 bytes .../gtceu/textures/capes/aromantic_cape.png | Bin 0 -> 329 bytes .../assets/gtceu/textures/capes/bi_cape.png | Bin 0 -> 307 bytes .../gtceu/textures/capes/debug_cape.png | Bin 0 -> 293 bytes .../gtceu/textures/capes/genderfluid_cape.png | Bin 0 -> 331 bytes .../gtceu/textures/capes/genderqueer_cape.png | Bin 0 -> 302 bytes .../capes/{greencape.png => green_cape.png} | Bin .../{gregtechcape.png => gregtech_cape.png} | Bin .../gtceu/textures/capes/intersex_cape.png | Bin 0 -> 333 bytes .../gtceu/textures/capes/lesbian_cape.png | Bin 0 -> 336 bytes .../gtceu/textures/capes/nonbinary_cape.png | Bin 0 -> 318 bytes .../assets/gtceu/textures/capes/pan_cape.png | Bin 0 -> 305 bytes .../gtceu/textures/capes/rainbow_cape.png | Bin 0 -> 349 bytes .../capes/{redcape.png => red_cape.png} | Bin .../gtceu/textures/capes/trans_cape.png | Bin 0 -> 324 bytes .../capes/{yellowcape.png => yellow_cape.png} | Bin src/main/resources/gtceu.mixins.json | 4 +- 35 files changed, 855 insertions(+), 73 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java create mode 100644 src/main/resources/assets/gtceu/textures/capes/ace_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/agender_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/bi_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/debug_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png rename src/main/resources/assets/gtceu/textures/capes/{greencape.png => green_cape.png} (100%) rename src/main/resources/assets/gtceu/textures/capes/{gregtechcape.png => gregtech_cape.png} (100%) create mode 100644 src/main/resources/assets/gtceu/textures/capes/intersex_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/nonbinary_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/pan_cape.png create mode 100644 src/main/resources/assets/gtceu/textures/capes/rainbow_cape.png rename src/main/resources/assets/gtceu/textures/capes/{redcape.png => red_cape.png} (100%) create mode 100644 src/main/resources/assets/gtceu/textures/capes/trans_cape.png rename src/main/resources/assets/gtceu/textures/capes/{yellowcape.png => yellow_cape.png} (100%) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 66771ff9e14..9d75e520590 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1703,6 +1703,15 @@ "block.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "button.gtceu.mark_as_depleted.name": "pǝʇǝןdǝᗡ sɐ ʞɹɐW", "button.gtceu.toggle_waypoint.name": "ʇuıodʎɐM ǝןbbo⟘", + "command.gtceu.cape.give.failed": "pǝʞɔoןun ǝɹǝʍ sǝdɐɔ ʍǝu oN", + "command.gtceu.cape.give.success.multiple": "sɹǝʎɐןd %s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", + "command.gtceu.cape.give.success.single": "%s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", + "command.gtceu.cape.take.failed": "pǝʌoɯǝɹ ǝq pןnoɔ sǝdɐɔ oN", + "command.gtceu.cape.take.success.multiple": "sɹǝʎɐןd %s ɯoɹɟ sǝdɐɔ %s ʞoo⟘", + "command.gtceu.cape.take.success.single": "%s ɯoɹɟ sǝdɐɔ %s ʞoo⟘", + "command.gtceu.cape.use.failed": "¡)ʇsıxǝ ʇ,usǝop ʇı ɹo( ʇı ǝʌɐɥ ʇ,uop ʎǝɥʇ ǝsnɐɔǝq %s ǝdɐɔ ǝsn ʇ,uɐɔ %s", + "command.gtceu.cape.use.success": "%s ǝdɐɔ buısn ʍou sı %s", + "command.gtceu.cape.use.success.none": "ǝdɐɔ ɐ buısn ɹǝbuoן ou sı %s", "command.gtceu.dump_data.success": "%s oʇ %s ʎɹʇsıbǝɹ ɯoɹɟ sǝɔɹnosǝɹ %s pǝdɯnᗡ", "command.gtceu.medical_condition.get": ":suoıʇıpuoɔ ןɐɔıpǝɯ ǝsǝɥʇ sɐɥ %s ɹǝʎɐןԀ", "command.gtceu.medical_condition.get.element": "spuoɔǝs %s sǝʇnuıɯ %s :ɹ§%s uoıʇıpuoƆ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 641167a1786..6f6f9945c57 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1703,6 +1703,15 @@ "block.surface_rock": "%s Surface Rock", "button.gtceu.mark_as_depleted.name": "Mark as Depleted", "button.gtceu.toggle_waypoint.name": "Toggle Waypoint", + "command.gtceu.cape.give.failed": "No new capes were unlocked", + "command.gtceu.cape.give.success.multiple": "Unlocked %s capes for %s players", + "command.gtceu.cape.give.success.single": "Unlocked %s capes for %s", + "command.gtceu.cape.take.failed": "No capes could be removed", + "command.gtceu.cape.take.success.multiple": "Took %s capes from %s players", + "command.gtceu.cape.take.success.single": "Took %s capes from %s", + "command.gtceu.cape.use.failed": "%s can't use cape %s because they don't have it (or it doesn't exist)!", + "command.gtceu.cape.use.success": "%s is now using cape %s", + "command.gtceu.cape.use.success.none": "%s is no longer using a cape", "command.gtceu.dump_data.success": "Dumped %s resources from registry %s to %s", "command.gtceu.medical_condition.get": "Player %s has these medical conditions:", "command.gtceu.medical_condition.get.element": "Condition %s§r: %s minutes %s seconds", diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java new file mode 100644 index 00000000000..55f9ba12bcf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java @@ -0,0 +1,288 @@ +package com.gregtechceu.gtceu.api.cosmetics; + +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SPacketNotifyCapeChange; + +import net.minecraft.nbt.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.saveddata.SavedData; +import net.minecraftforge.common.MinecraftForge; + +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +@SuppressWarnings("DeprecatedIsStillUsed") +public class CapeRegistry extends SavedData { + + /** + * pseudo-registry lookup map of ID->texture. + */ + public static final Map ALL_CAPES = new HashMap<>(); + /** + * Set of all the free capes' IDs + */ + private static final Set FREE_CAPES = new HashSet<>(); + + // This map should always have TreeSet values for iteration consistency. + private static final Map> UNLOCKED_CAPES = new HashMap<>(); + private static final Map CURRENT_CAPES = new HashMap<>(); + + private static final CapeRegistry INSTANCE = new CapeRegistry(); + + private CapeRegistry() {} + + private static void initCapes() { + MinecraftForge.EVENT_BUS.post(new RegisterGTCapesEvent()); + save(); + } + + public static void registerToServer(ServerLevel level) { + level.getDataStorage().computeIfAbsent(CapeRegistry.INSTANCE::load, CapeRegistry.INSTANCE::init, "gtceu_capes"); + } + + private CapeRegistry init() { + clearMaps(); + initCapes(); + return this; + } + + public static void save() { + INSTANCE.setDirty(); + } + + @Override + public @NotNull CompoundTag save(@NotNull CompoundTag tag) { + ListTag unlockedCapesTag = new ListTag(); + for (Map.Entry> entry : UNLOCKED_CAPES.entrySet()) { + CompoundTag entryTag = new CompoundTag(); + entryTag.putUUID("owner", entry.getKey()); + + ListTag capesTag = new ListTag(); + for (ResourceLocation cape : entry.getValue()) { + capesTag.add(StringTag.valueOf(cape.toString())); + } + entryTag.put("capes", capesTag); + + unlockedCapesTag.add(entryTag); + } + tag.put("unlocked_capes", unlockedCapesTag); + + ListTag currentCapesTag = new ListTag(); + for (Map.Entry entry : CURRENT_CAPES.entrySet()) { + if (entry.getValue() == null) + continue; + String capeLocation = entry.getValue().toString(); + + CompoundTag entryTag = new CompoundTag(); + + entryTag.putString("cape", capeLocation); + entryTag.putUUID("owner", entry.getKey()); + + currentCapesTag.add(entryTag); + } + tag.put("current_capes", currentCapesTag); + + return tag; + } + + private CapeRegistry load(CompoundTag tag) { + init(); + + ListTag unlockedCapesTag = tag.getList("unlocked_capes", Tag.TAG_COMPOUND); + for (int i = 0; i < unlockedCapesTag.size(); i++) { + CompoundTag entryTag = unlockedCapesTag.getCompound(i); + UUID uuid = entryTag.getUUID("owner"); + + Set capes = UNLOCKED_CAPES.computeIfAbsent(uuid, CapeRegistry::makeSet); + + ListTag capesTag = entryTag.getList("capes", Tag.TAG_STRING); + for (int j = 0; j < capesTag.size(); j++) { + String capeId = capesTag.getString(j); + if (capeId.isEmpty()) + continue; + capes.add(new ResourceLocation(capeId)); + } + UNLOCKED_CAPES.put(uuid, capes); + } + + ListTag currentCapesTag = tag.getList("current_capes", Tag.TAG_COMPOUND); + for (int i = 0; i < currentCapesTag.size(); i++) { + CompoundTag entryTag = currentCapesTag.getCompound(i); + String capeId = entryTag.getString("cape"); + if (capeId.isEmpty()) + continue; + UUID uuid = entryTag.getUUID("owner"); + CURRENT_CAPES.put(uuid, new ResourceLocation(capeId)); + } + + return this; + } + + @Nullable + public static ResourceLocation getPlayerCapeId(UUID uuid) { + return CURRENT_CAPES.get(uuid); + } + + @Nullable + public static ResourceLocation getPlayerCapeTexture(UUID uuid) { + return ALL_CAPES.getOrDefault(getPlayerCapeId(uuid), null); + } + + /** + * Allows one to check what capes a specific player has unlocked through CapesRegistry. + * + * @param uuid The player data used to get what capes the player has through internal maps. + * @return A list of ResourceLocations containing the cape textures that the player has unlocked. + */ + public static Set getUnlockedCapes(UUID uuid) { + return UNLOCKED_CAPES.getOrDefault(uuid, Collections.emptySet()); + } + + /** + * Makes a cape available to the {@code /gtceu cape} command, allowing it to be used in advancements etc. + * + * @param id An identifier for giving the cape with commands etc. + * @param cape The ResourceLocation that points to the cape that can be unlocked through the advancement. + * + * @deprecated use the {@link com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent} event. + */ + @ApiStatus.Internal + public static void registerCape(ResourceLocation id, ResourceLocation cape) { + ALL_CAPES.put(id, cape); + } + + /** + * Adds a cape that will always be unlocked for all players. + * + * @param id An identifier for giving the cape with commands etc. + * @param cape A ResourceLocation pointing to the cape texture. + * + * @deprecated use the {@link com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent} event. + */ + @ApiStatus.Internal + public static void registerFreeCape(ResourceLocation id, ResourceLocation cape) { + registerCape(id, cape); + FREE_CAPES.add(id); + } + + /** + * Automatically gives a cape to a player. may be used for a reward etc. + *
+ * DOES NOT SAVE AUTOMATICALLY; PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * + * @param owner The UUID of the player to be given the cape. + * @param capeId The ResourceLocation that holds the cape used here. + */ + public static boolean unlockCape(UUID owner, ResourceLocation capeId) { + Set capes = UNLOCKED_CAPES.computeIfAbsent(owner, CapeRegistry::makeSet); + if (capes.contains(capeId)) { + return false; + } + capes.add(capeId); + UNLOCKED_CAPES.put(owner, capes); + return true; + } + + /** + * Automatically removes a cape from a player + *
+ * DOES NOT SAVE AUTOMATICALLY; PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * + * @param uuid The UUID of the player to be given the cape. + * @param cape The ResourceLocation that holds the cape used here. + */ + public static boolean removeCape(UUID uuid, ResourceLocation cape) { + if (FREE_CAPES.contains(cape)) { + return false; + } + Set capes = UNLOCKED_CAPES.get(uuid); + if (capes == null || !capes.contains(cape)) { + return false; + } + capes.remove(cape); + UNLOCKED_CAPES.put(uuid, capes); + if (cape.equals(getPlayerCapeId(uuid))) { + setActiveCape(uuid, null); + } + return true; + } + + public static void clearMaps() { + UNLOCKED_CAPES.clear(); + CURRENT_CAPES.clear(); + } + + public static void giveRawCape(UUID uuid, ResourceLocation cape) { + CURRENT_CAPES.put(uuid, cape); + } + + /** + * Sets the current cape for a player. + * + * @param uuid The UUID of the player to be given the cape. + * @param cape The ResourceLocation that holds the cape used here. {@code null} to remove cape. + */ + public static boolean setActiveCape(UUID uuid, @Nullable ResourceLocation cape) { + Set capes = UNLOCKED_CAPES.get(uuid); + if (capes == null || cape != null && !capes.contains(cape)) { + return false; + } + CURRENT_CAPES.put(uuid, cape); + GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(uuid, cape)); + save(); + return true; + } + + // For loading capes when the player logs in, so that it's synced to the clients. + public static void loadCurrentCapesOnLogin(Player player) { + if (player instanceof ServerPlayer serverPlayer) { + UUID uuid = player.getUUID(); + // sync to others + GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); + // sync to the one who's logging in + for (ServerPlayer otherPlayer : serverPlayer.getServer().getPlayerList().getPlayers()) { + uuid = otherPlayer.getUUID(); + GTNetwork.NETWORK.sendToPlayer(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid)), + serverPlayer); + } + } + } + + // Runs on login and gives the player all free capes & capes they've already unlocked. + public static void detectNewCapes(Player player) { + if (player instanceof ServerPlayer) { + var playerCapes = UNLOCKED_CAPES.get(player.getUUID()); + if (playerCapes == null || !new HashSet<>(playerCapes).containsAll(FREE_CAPES)) { + for (ResourceLocation cape : FREE_CAPES) { + unlockCape(player.getUUID(), cape); + } + save(); + } + } + } + + private static final Comparator SET_COMPARATOR = (o1, o2) -> { + int result = o1.compareTo(o2); + boolean isFirstFree = FREE_CAPES.contains(o1); + if (isFirstFree ^ FREE_CAPES.contains(o2)) { + if (isFirstFree) { + return -1; + } else { + return 1; + } + } else { + return result; + } + }; + + private static Set makeSet(UUID ignored) { + return new TreeSet<>(SET_COMPARATOR); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java new file mode 100644 index 00000000000..ef4655b3441 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.api.cosmetics.event; + +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; + +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.Event; + +import org.jetbrains.annotations.ApiStatus; + +import java.util.UUID; + +/** + * RegisterGTCapesEvent is fired when the server is first loaded.
+ * It can be used to make additional capes available to the player in + * {@link CapeRegistry#registerCape(ResourceLocation, ResourceLocation)} + *
+ * This event is fired on the {@link MinecraftForge#EVENT_BUS}. + **/ +@SuppressWarnings("deprecation") // why does JavaDoc not have an "internal" tag? +public class RegisterGTCapesEvent extends Event { + + @ApiStatus.Internal + public RegisterGTCapesEvent() {} + + /** + * Makes a cape available to the {@code /gtceu cape} command, allowing it to be used in advancements etc. + * + * @param id An identifier for giving the cape with commands etc. + * @param texture The ResourceLocation that points to the texture of the cape accessible via {@code id} + */ + public void registerCape(ResourceLocation id, ResourceLocation texture) { + CapeRegistry.registerCape(id, texture); + } + + /** + * Adds a cape that will always be unlocked for all players. + * + * @param id An identifier for giving the cape with commands etc. + * @param texture A ResourceLocation pointing to the cape texture. + */ + public void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + CapeRegistry.registerFreeCape(id, texture); + } + + public void unlockCapeFor(UUID owner, ResourceLocation capeId) { + CapeRegistry.unlockCape(owner, capeId); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index b2206cb88f7..b9ea555bc4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -2,14 +2,19 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighlightRenderer; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.commands.GTClientCommands; +import com.gregtechceu.gtceu.core.mixins.AbstractClientPlayerAccessor; +import com.gregtechceu.gtceu.core.mixins.PlayerInfoAccessor; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.*; @@ -19,6 +24,12 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; + +import java.util.Map; +import java.util.UUID; + @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) @OnlyIn(Dist.CLIENT) public class ForgeClientEventListener { @@ -33,6 +44,30 @@ public static void onRenderLevelStageEvent(RenderLevelStageEvent event) { } } + private static final Map DEFAULT_CAPES = new Object2ObjectOpenHashMap<>(); + + @SubscribeEvent + public static void onPlayerRender(RenderPlayerEvent.Pre event) { + Player player = event.getEntity(); + AbstractClientPlayerAccessor clientPlayer = (AbstractClientPlayerAccessor) player; + if (clientPlayer.gtceu$getPlayerInfo() != null) { + PlayerInfoAccessor playerInfo = ((PlayerInfoAccessor) clientPlayer.gtceu$getPlayerInfo()); + Map playerTextures = playerInfo.getTextureLocations(); + + UUID uuid = player.getUUID(); + ResourceLocation defaultPlayerCape; + if (!DEFAULT_CAPES.containsKey(uuid)) { + defaultPlayerCape = playerTextures.get(MinecraftProfileTexture.Type.CAPE); + DEFAULT_CAPES.put(uuid, defaultPlayerCape); + } else { + defaultPlayerCape = DEFAULT_CAPES.get(uuid); + } + + ResourceLocation cape = CapeRegistry.getPlayerCapeTexture(uuid); + playerTextures.put(MinecraftProfileTexture.Type.CAPE, cape == null ? defaultPlayerCape : cape); + } + } + @SubscribeEvent public static void onBlockHighlightEvent(RenderHighlightEvent.Block event) { BlockHighlightRenderer.renderBlockHighlight(event.getPoseStack(), event.getCamera(), event.getTarget(), diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java index e68b85ba549..bf628334abc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java @@ -25,7 +25,7 @@ public static void register(CommandDispatcher dispatcher, Co .executes(ctx -> { Player player = EntityArgument.getPlayer(ctx, "player"); Thread sendThread = new Thread(new ProspectingShareTask( - ctx.getSource().getPlayer().getUUID(), player.getUUID())); + ctx.getSource().getPlayerOrException().getUUID(), player.getUUID())); sendThread.start(); return 1; })))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index c0d518b5790..7137054ee82 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.commands; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; @@ -16,43 +17,64 @@ import com.gregtechceu.gtceu.data.loader.GTOreLoader; import com.gregtechceu.gtceu.data.pack.GTDynamicDataPack; -import net.minecraft.commands.CommandBuildContext; -import net.minecraft.commands.CommandRuntimeException; -import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.*; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.commands.arguments.ResourceLocationArgument; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.BulkSectionAccess; import net.minecraft.world.level.levelgen.structure.templatesystem.AlwaysTrueTest; +import com.google.common.collect.Sets; import com.google.gson.JsonElement; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; +import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; import java.nio.file.Path; +import java.util.*; import static net.minecraft.commands.Commands.*; public class GTCommands { + public static final SuggestionProvider OWNED_CAPES = (ctx, builder) -> { + return SharedSuggestionProvider.suggestResource(findOwnedCapesFor(ctx), builder); + }; + public static final SuggestionProvider NOT_OWNED_CAPES = (ctx, builder) -> { + return SharedSuggestionProvider.suggestResource(findNotOwnedCapesFor(ctx), builder); + }; + private static final SimpleCommandExceptionType ERROR_GIVE_FAILED = new SimpleCommandExceptionType( + Component.translatable("command.gtceu.cape.give.failed")); + private static final SimpleCommandExceptionType ERROR_TAKE_FAILED = new SimpleCommandExceptionType( + Component.translatable("command.gtceu.cape.take.failed")); + private static final Dynamic2CommandExceptionType ERROR_USE_FAILED = new Dynamic2CommandExceptionType( + (player, cape) -> Component.translatable("command.gtceu.cape.use.failed", player, cape)); + + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("gtceu") - .requires(source -> source.hasPermission(3)) .then(literal("ui_editor") + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) .executes(context -> { - GTUIEditorFactory.INSTANCE.openUI(GTUIEditorFactory.INSTANCE, - context.getSource().getPlayerOrException()); + GTUIEditorFactory.INSTANCE.openUI(GTUIEditorFactory.INSTANCE, context.getSource().getPlayerOrException()); return 1; })) .then(literal("dump_data") + .requires(ctx -> ctx.hasPermission(LEVEL_OWNERS)) .then(literal("bedrock_fluid_veins") .executes(context -> dumpDataRegistry(context, GTRegistries.BEDROCK_FLUID_DEFINITIONS, @@ -69,13 +91,199 @@ public static void register(CommandDispatcher dispatcher, Co GTOreDefinition.FULL_CODEC, GTOreLoader.FOLDER)))) .then(literal("place_vein") - .then(argument("vein", - GTRegistryArgument.registry(GTRegistries.ORE_VEINS, ResourceLocation.class)) - .executes(context -> GTCommands.placeVein(context, - BlockPos.containing(context.getSource().getPosition()))) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .then(argument("vein", GTRegistryArgument.registry(GTRegistries.ORE_VEINS, ResourceLocation.class)) + .executes(context -> { + return GTCommands.placeVein(context, BlockPos.containing(context.getSource().getPosition())); + }) .then(argument("position", BlockPosArgument.blockPos()) - .executes(context -> GTCommands.placeVein(context, - BlockPosArgument.getBlockPos(context, "position"))))))); + .executes(context -> { + return GTCommands.placeVein(context, BlockPosArgument.getBlockPos(context, "position")); + })))) + .then(literal("cape") + .then(literal("give") + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) + .then(argument("targets", EntityArgument.players()) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(NOT_OWNED_CAPES) + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + Collection cape = Collections.singleton(ResourceLocationArgument.getId(ctx, "cape")); + return giveCapes(ctx.getSource(), players, cape); + })) + .then(literal("*") + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + return giveCapes(ctx.getSource(), players, CapeRegistry.ALL_CAPES.keySet()); + })))) + .then(literal("take") + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) + .then(argument("targets", EntityArgument.players()) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + Collection cape = Collections.singleton(ResourceLocationArgument.getId(ctx, "cape")); + return takeCapes(ctx.getSource(), players, cape); + })) + .then(literal("*") + .executes(ctx -> { + Collection players = EntityArgument.getPlayers(ctx, "targets"); + return takeCapes(ctx.getSource(), players, CapeRegistry.ALL_CAPES.keySet()); + })))) + .then(literal("use") + .then(argument("target", EntityArgument.player()) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + ServerPlayer player = EntityArgument.getPlayer(ctx, "target"); + ResourceLocation cape = ResourceLocationArgument.getId(ctx, "cape"); + return setActiveCape(ctx.getSource(), player, cape); + })) + .then(literal("none") + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + return setActiveCape(ctx.getSource(), player, null); + }))) + .then(argument("cape", ResourceLocationArgument.id()) + .suggests(OWNED_CAPES) + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + ResourceLocation cape = ResourceLocationArgument.getId(ctx, "cape"); + return setActiveCape(ctx.getSource(), player, cape); + })) + .then(literal("none") + .executes(ctx -> { + ServerPlayer player = ctx.getSource().getPlayerOrException(); + return setActiveCape(ctx.getSource(), player, null); + }))))); + } + // spotless:on + + public static Collection findPlayersFrom(CommandContext ctx) throws CommandSyntaxException { + // go through all variants of the used player target selectors to find the targeted players + try { + return Collections.singleton(ctx.getSource().getPlayerOrException()); + } catch (CommandSyntaxException ignored) { + try { + return EntityArgument.getPlayers(ctx, "targets"); + } catch (CommandSyntaxException e) { + return EntityArgument.getPlayers(ctx, "target"); + } + } + } + + public static Collection findOwnedCapesFor(CommandContext ctx) throws CommandSyntaxException { + Collection players = findPlayersFrom(ctx); + if (players.isEmpty()) { + return CapeRegistry.ALL_CAPES.keySet(); + } + + Set validCapes = new HashSet<>(); + for (ServerPlayer player : players) { + validCapes.addAll(CapeRegistry.getUnlockedCapes(player.getUUID())); + } + return validCapes; + } + + public static Collection findNotOwnedCapesFor(CommandContext ctx) throws CommandSyntaxException { + Collection players = findPlayersFrom(ctx); + if (players.isEmpty()) { + return CapeRegistry.ALL_CAPES.keySet(); + } + + Set allCapes = CapeRegistry.ALL_CAPES.keySet(); + Set validCapes = new HashSet<>(); + for (ServerPlayer player : players) { + Set unlockedCapes = new HashSet<>(CapeRegistry.getUnlockedCapes(player.getUUID())); + // find all capes this player *doesn't* have + validCapes.addAll(Sets.difference(allCapes, unlockedCapes)); + } + return validCapes; + } + + public static int giveCapes(CommandSourceStack source, + Collection targets, Collection capes) + throws CommandSyntaxException { + int successes = 0; + + for (var player : targets) { + int playerSuccesses = 0; + for (var cape : capes) { + if (CapeRegistry.unlockCape(player.getUUID(), cape)) { + successes++; + playerSuccesses++; + } + } + if (playerSuccesses > 0) { + player.sendSystemMessage(Component.translatable("gtceu.chat.cape")); + } + } + + if (successes == 0) { + throw ERROR_GIVE_FAILED.create(); + } + if (targets.size() == 1) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.give.success.single", capes.size(), + targets.iterator().next().getDisplayName()), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.give.success.multiple", capes.size(), targets.size()), + true); + } + CapeRegistry.save(); + return successes; + } + + private static int takeCapes(CommandSourceStack source, + Collection targets, Collection capes) + throws CommandSyntaxException { + int successes = 0; + + for (var player : targets) { + for (var cape : capes) { + if (CapeRegistry.removeCape(player.getUUID(), cape)) { + successes++; + } + } + } + + if (successes == 0) { + throw ERROR_TAKE_FAILED.create(); + } + if (targets.size() == 1) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.take.success.single", capes.size(), + targets.iterator().next().getDisplayName()), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.take.success.multiple", capes.size(), targets.size()), + true); + } + CapeRegistry.save(); + return successes; + } + + private static int setActiveCape(CommandSourceStack source, ServerPlayer player, ResourceLocation cape) + throws CommandSyntaxException { + if (CapeRegistry.setActiveCape(player.getUUID(), cape)) { + if (cape != null) { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.use.success", player.getDisplayName(), cape), + true); + } else { + source.sendSuccess(() -> Component.translatable( + "command.gtceu.cape.use.success.none", player.getDisplayName()), + true); + } + return 1; + } else { + throw ERROR_USE_FAILED.create(player.getDisplayName(), cape); + } } private static int dumpDataRegistry(CommandContext context, diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java index b622ef5e2a1..91d3d67dc6f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/HazardCommands.java @@ -18,32 +18,25 @@ import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.context.CommandContext; -import static net.minecraft.commands.Commands.argument; -import static net.minecraft.commands.Commands.literal; +import static net.minecraft.commands.Commands.*; public class HazardCommands { + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("environmental_hazard") - .requires(source -> source.hasPermission(2)) + .requires(source -> source.hasPermission(LEVEL_ADMINS)) .then(argument("condition", MedicalConditionArgument.medicalCondition()) .then(argument("can_spread", BoolArgumentType.bool()) .then(argument("source", BlockPosArgument.blockPos()) .then(literal("chunk") - .then(Commands - .argument("strength", - IntegerArgumentType.integer(1)) - .executes( - HazardCommands::spawnChunkEnvironmentalHazard))) + .then(Commands.argument("strength", IntegerArgumentType.integer(1)) + .executes(HazardCommands::spawnChunkEnvironmentalHazard))) .then(literal("local") - .then(Commands - .argument("from", BlockPosArgument.blockPos()) - .then(Commands - .argument("to", - BlockPosArgument.blockPos()) - .executes( - HazardCommands::spawnLocalEnvironmentalHazard))))))) + .then(Commands.argument("from", BlockPosArgument.blockPos()) + .then(Commands.argument("to", BlockPosArgument.blockPos()) + .executes(HazardCommands::spawnLocalEnvironmentalHazard))))))) .then(literal("clear") .then(argument("source", BlockPosArgument.blockPos()) .executes(context -> { @@ -52,13 +45,12 @@ public static void register(CommandDispatcher dispatcher, Co }) .then(argument("condition", MedicalConditionArgument.medicalCondition()) .executes(context -> { - BlockPos source = BlockPosArgument.getBlockPos(context, - "source"); - MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + BlockPos source = BlockPosArgument.getBlockPos(context, "source"); + MedicalCondition condition = MedicalConditionArgument.getCondition(context, "condition"); return clearEnvironmentalHazard(context, source, condition); }))))); } + // spotless:on private static int spawnChunkEnvironmentalHazard(CommandContext context) { ServerLevel serverLevel = context.getSource().getLevel(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java index e9bcf7321a0..602408e1666 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/MedicalConditionCommands.java @@ -20,8 +20,7 @@ import java.util.Collection; import java.util.Collections; -import static net.minecraft.commands.Commands.argument; -import static net.minecraft.commands.Commands.literal; +import static net.minecraft.commands.Commands.*; public class MedicalConditionCommands { @@ -30,58 +29,61 @@ public class MedicalConditionCommands { private static final SimpleCommandExceptionType ERROR_GIVE_FAILED = new SimpleCommandExceptionType( Component.translatable("commands.effect.give.failed")); + // spotless:off public static void register(CommandDispatcher dispatcher, CommandBuildContext buildContext) { dispatcher.register( literal("medical_condition") .then(literal("query") - .executes(context -> queryMedicalConditions( - context.getSource().getPlayerOrException())) + .executes(ctx -> { + return queryMedicalConditions(ctx.getSource().getPlayerOrException()); + }) .then(argument("target", EntityArgument.player()) - .requires(source -> source.hasPermission(2)) - .executes(context -> queryMedicalConditions( - EntityArgument.getPlayer(context, "target"))))) + .requires(source -> source.hasPermission(LEVEL_GAMEMASTERS)) + .executes(context -> { + return queryMedicalConditions(EntityArgument.getPlayer(context, "target")); + }))) .then(literal("clear") - .requires(source -> source.hasPermission(2)) - .executes(context -> clearMedicalConditions( - Collections.singleton(context.getSource().getPlayerOrException()), - null)) + .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) + .executes(ctx -> { + return clearMedicalConditions( + Collections.singleton(ctx.getSource().getPlayerOrException()), null); + }) .then(argument("targets", EntityArgument.players()) - .executes(context -> clearMedicalConditions( - EntityArgument.getPlayers(context, "targets"), null)) - .then(argument("condition", - MedicalConditionArgument.medicalCondition()) - .executes(context -> { - Collection targets = EntityArgument - .getPlayers(context, "targets"); + .executes(ctx -> { + return clearMedicalConditions(EntityArgument.getPlayers(ctx, "targets"), + null); + }) + .then(argument("condition", MedicalConditionArgument.medicalCondition()) + .executes(ctx -> { + Collection targets = EntityArgument.getPlayers(ctx, + "targets"); MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + .getCondition(ctx, "condition"); return clearMedicalConditions(targets, condition); })))) .then(literal("apply") - .requires(source -> source.hasPermission(2)) + .requires(ctx -> ctx.hasPermission(LEVEL_GAMEMASTERS)) .then(argument("targets", EntityArgument.players()) - .then(argument("condition", - MedicalConditionArgument.medicalCondition()) - .executes(context -> { + .then(argument("condition", MedicalConditionArgument.medicalCondition()) + .executes(ctx -> { MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); - Collection players = EntityArgument - .getPlayers(context, "targets"); + .getCondition(ctx, "condition"); + Collection players = EntityArgument.getPlayers(ctx, + "targets"); return applyMedicalConditions(players, condition, 1); - }).then(argument("progression_multiplier", - FloatArgumentType.floatArg(0)) - .executes(context -> { + }) + .then(argument("progression_multiplier", FloatArgumentType.floatArg(0)) + .executes(ctx -> { MedicalCondition condition = MedicalConditionArgument - .getCondition(context, "condition"); + .getCondition(ctx, "condition"); Collection players = EntityArgument - .getPlayers(context, "targets"); - float strength = FloatArgumentType.getFloat( - context, + .getPlayers(ctx, "targets"); + float strength = FloatArgumentType.getFloat(ctx, "progression_multiplier"); - return applyMedicalConditions(players, - condition, strength); + return applyMedicalConditions(players, condition, strength); })))))); } + // spotless:off private static int queryMedicalConditions(ServerPlayer target) throws CommandSyntaxException { IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker(target); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java new file mode 100644 index 00000000000..f866beb4f39 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.common.cosmetics; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; + +import net.minecraft.resources.ResourceLocation; + +import java.util.UUID; + +public class GTCapes { + + public static final ResourceLocation GREGTECH_CAPE = GTCEu.id("gregtech"); + public static final ResourceLocation GREEN_CAPE = GTCEu.id("green"); + public static final ResourceLocation YELLOW_CAPE = GTCEu.id("yellow"); + public static final ResourceLocation RED_CAPE = GTCEu.id("red"); + public static final ResourceLocation DEBUG_CAPE = GTCEu.id("debug"); + + public static final ResourceLocation RAINBOW_CAPE = GTCEu.id("rainbow"); + public static final ResourceLocation ACE_CAPE = GTCEu.id("ace"); + public static final ResourceLocation AGENDER_CAPE = GTCEu.id("agender"); + public static final ResourceLocation AROMANTIC_CAPE = GTCEu.id("aromantic"); + public static final ResourceLocation BI_CAPE = GTCEu.id("bi"); + public static final ResourceLocation GENDERFLUID_CAPE = GTCEu.id("genderfluid"); + public static final ResourceLocation GENDERQUEER_CAPE = GTCEu.id("genderqueer"); + public static final ResourceLocation INTERSEX_CAPE = GTCEu.id("intersex"); + public static final ResourceLocation LESBIAN_CAPE = GTCEu.id("lesbian"); + public static final ResourceLocation NONBINARY_CAPE = GTCEu.id("nonbinary"); + public static final ResourceLocation PAN_CAPE = GTCEu.id("pan"); + public static final ResourceLocation TRANS_CAPE = GTCEu.id("trans"); + + public static void registerGTCapes(RegisterGTCapesEvent event) { + // TODO add the advancements to unlock these + // Reference + // https://github.com/GregTechCEu/GregTech/blob/master/src/main/java/gregtech/api/util/CapesRegistry.java#L151-L156 + // for correct advancement IDs + event.registerCape(GREGTECH_CAPE, GTCEu.id("textures/capes/gregtech_cape.png")); + event.registerCape(GREEN_CAPE, GTCEu.id("textures/capes/green_cape.png")); + event.registerCape(YELLOW_CAPE, GTCEu.id("textures/capes/yellow_cape.png")); + event.registerCape(RED_CAPE, GTCEu.id("textures/capes/red_cape.png")); + // don't link this to anything (except easter egg? april fools? TBD) + event.registerCape(DEBUG_CAPE, GTCEu.id("textures/capes/debug_cape.png")); + + event.registerFreeCape(RAINBOW_CAPE, GTCEu.id("textures/capes/rainbow_cape.png")); + event.registerFreeCape(ACE_CAPE, GTCEu.id("textures/capes/ace_cape.png")); + event.registerFreeCape(AGENDER_CAPE, GTCEu.id("textures/capes/agender_cape.png")); + event.registerFreeCape(AROMANTIC_CAPE, GTCEu.id("textures/capes/aromantic_cape.png")); + event.registerFreeCape(BI_CAPE, GTCEu.id("textures/capes/bi_cape.png")); + event.registerFreeCape(GENDERFLUID_CAPE, GTCEu.id("textures/capes/genderfluid_cape.png")); + event.registerFreeCape(GENDERQUEER_CAPE, GTCEu.id("textures/capes/genderqueer_cape.png")); + event.registerFreeCape(INTERSEX_CAPE, GTCEu.id("textures/capes/intersex_cape.png")); + event.registerFreeCape(LESBIAN_CAPE, GTCEu.id("textures/capes/lesbian_cape.png")); + event.registerFreeCape(NONBINARY_CAPE, GTCEu.id("textures/capes/nonbinary_cape.png")); + event.registerFreeCape(PAN_CAPE, GTCEu.id("textures/capes/pan_cape.png")); + event.registerFreeCape(TRANS_CAPE, GTCEu.id("textures/capes/trans_cape.png")); + } + + public static void giveDevCapes(RegisterGTCapesEvent event) { + // updated on 8.4.2025 - screret + event.unlockCapeFor(UUID.fromString("a24a9108-23d2-43fc-8db7-43f809d017db"), GREGTECH_CAPE); // ALongStringOfNumbers + event.unlockCapeFor(UUID.fromString("fbd96f69-60f9-481c-b71e-4b190cd5fc72"), GREGTECH_CAPE); // Anne-Marie + event.unlockCapeFor(UUID.fromString("77e2129d-8f68-4025-9394-df946f1f3aee"), GREGTECH_CAPE); // Brachy84 + event.unlockCapeFor(UUID.fromString("c1377a67-4585-46b6-b70e-dfaa419f1e71"), GREGTECH_CAPE); // BraggestSage833 + event.unlockCapeFor(UUID.fromString("aaf70ec1-ac70-494f-9966-ea5933712750"), GREGTECH_CAPE); // Bruberu + event.unlockCapeFor(UUID.fromString("c43b3c3d-7da6-4c2b-b335-703fce2ed795"), GREGTECH_CAPE); // Ghostipedia + event.unlockCapeFor(UUID.fromString("88374b6a-4710-46cd-bb04-a1580905a918"), GREGTECH_CAPE); // Ghzdude + event.unlockCapeFor(UUID.fromString("5d7073e3-882f-4c4a-94b3-0e5ba1c11e02"), GREGTECH_CAPE); // htmlcsjs + event.unlockCapeFor(UUID.fromString("29f1e04c-58d8-4a3b-9eff-f85be7825256"), GREGTECH_CAPE); // kross000 + event.unlockCapeFor(UUID.fromString("2fa297a6-7803-4629-8360-7059155cf43e"), GREGTECH_CAPE); // KilaBash + event.unlockCapeFor(UUID.fromString("44f38ff8-aad7-49c3-acb3-d92317af9078"), GREGTECH_CAPE); // LAGIdiot + event.unlockCapeFor(UUID.fromString("3dbb689e-edcf-41b9-9c09-6ae4ebb6ca5b"), GREGTECH_CAPE); // M_W_K + // todo Mikerooni (when he gets a new account) + event.unlockCapeFor(UUID.fromString("5cb66945-2ca4-498d-8c9a-29a676769363"), GREGTECH_CAPE); // omergunr100 + event.unlockCapeFor(UUID.fromString("4a57640e-c1b1-4413-a6ab-e9a8b60ec167"), GREGTECH_CAPE); // PrototypeTrousers + event.unlockCapeFor(UUID.fromString("12892f29-9eef-47ed-b8fb-df3e0e90db0c"), GREGTECH_CAPE); // Quarri6343 + event.unlockCapeFor(UUID.fromString("1184eb79-5831-4f7d-b8f4-3a46fccf7a1d"), GREGTECH_CAPE); // screret + event.unlockCapeFor(UUID.fromString("a82fb558-64f9-4dd6-a87d-84040e84bb43"), GREGTECH_CAPE); // serenibyss + event.unlockCapeFor(UUID.fromString("f76fc8b3-ac6b-44b9-9023-76edaf3d5909"), GREGTECH_CAPE); // spicierspace153 + event.unlockCapeFor(UUID.fromString("5c2933b3-5340-4356-81e7-783c53bd7845"), GREGTECH_CAPE); // Tech22 + event.unlockCapeFor(UUID.fromString("30628e4c-f7ac-427f-8ca7-aab2c0572be8"), GREGTECH_CAPE); // TheLastKumquat + event.unlockCapeFor(UUID.fromString("e6e784af-bd04-46ad-8141-47b8b9102cb9"), GREGTECH_CAPE); // Tictim + event.unlockCapeFor(UUID.fromString("60057953-6a71-4f11-9e72-bb0c81fa0085"), GREGTECH_CAPE); // ursamina + event.unlockCapeFor(UUID.fromString("3a27782d-6864-4814-a9fe-7c6931f29a8a"), GREGTECH_CAPE); // YoungOnion + event.unlockCapeFor(UUID.fromString("56bd41d0-06ef-4ed7-ab48-926ce45651f9"), GREGTECH_CAPE); // Zalgo239 + event.unlockCapeFor(UUID.fromString("2c69579f-a7fa-46ad-814e-9837e01215c1"), GREGTECH_CAPE); // Zorbatron + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java index 9018e4c8b15..a2c1e0c3deb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java @@ -31,6 +31,7 @@ public static void init() { NETWORK.registerS2C(SPacketProspectBedrockFluid.class); NETWORK.registerS2C(SPacketProspectBedrockOre.class); NETWORK.registerS2C(SPacketSendWorldID.class); + NETWORK.registerS2C(SPacketNotifyCapeChange.class); NETWORK.registerBoth(SCPacketShareProspection.class); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java new file mode 100644 index 00000000000..9a817109a24 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java @@ -0,0 +1,44 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; + +import com.lowdragmc.lowdraglib.networking.IHandlerContext; +import com.lowdragmc.lowdraglib.networking.IPacket; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; + +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; + +import java.util.UUID; + +@NoArgsConstructor +@AllArgsConstructor +public class SPacketNotifyCapeChange implements IPacket { + + public UUID uuid; + public ResourceLocation cape; + + @Override + public void encode(FriendlyByteBuf buf) { + buf.writeUUID(this.uuid); + buf.writeBoolean(this.cape != null); + if (this.cape != null) { + buf.writeResourceLocation(this.cape); + } + } + + @Override + public void decode(FriendlyByteBuf buf) { + this.uuid = buf.readUUID(); + this.cape = buf.readBoolean() ? buf.readResourceLocation() : null; + } + + @Override + public void execute(IHandlerContext handler) { + if (handler.isClient()) { + CapeRegistry.giveRawCape(uuid, cape); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index cda55315805..6ee82d90984 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -3,6 +3,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; +import net.minecraft.commands.Commands; + import dev.toma.configuration.Configuration; import dev.toma.configuration.config.Config; import dev.toma.configuration.config.Configurable; @@ -515,8 +517,8 @@ public static class MachineConfigs { public boolean onlyOwnerBreak = false; @Configurable @Configurable.Comment({ "Minimum op level to bypass the ownership checks", "Default: 2" }) - @Configurable.Range(min = 0, max = 4) - public int ownerOPBypass = 2; + @Configurable.Range(min = Commands.LEVEL_ALL, max = Commands.LEVEL_OWNERS) + public int ownerOPBypass = Commands.LEVEL_GAMEMASTERS; /** * Addons mods should not reference this config directly. diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java new file mode 100644 index 00000000000..87a1d8dafa7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java @@ -0,0 +1,14 @@ +package com.gregtechceu.gtceu.core.mixins; + +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.player.AbstractClientPlayer; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(AbstractClientPlayer.class) +public interface AbstractClientPlayerAccessor { + + @Invoker("getPlayerInfo") + PlayerInfo gtceu$getPlayerInfo(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java new file mode 100644 index 00000000000..e391af2d465 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.core.mixins; + +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.resources.ResourceLocation; + +import com.mojang.authlib.minecraft.MinecraftProfileTexture; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(PlayerInfo.class) +public interface PlayerInfoAccessor { + + @Accessor + Map getTextureLocations(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 97816f0633c..c287ad4926e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -133,6 +133,16 @@ public static void init(RegistrateLangProvider provider) { provider.add("command.gtceu.place_vein.failure", "Failed to place vein %s at position %s"); provider.add("command.gtceu.place_vein.success", "Placed vein %s at position %s"); provider.add("command.gtceu.share_prospection_data.notification", "%s is sharing prospecting data with you!"); + provider.add("command.gtceu.cape.give.failed", "No new capes were unlocked"); + provider.add("command.gtceu.cape.give.success.multiple", "Unlocked %s capes for %s players"); + provider.add("command.gtceu.cape.give.success.single", "Unlocked %s capes for %s"); + provider.add("command.gtceu.cape.take.failed", "No capes could be removed"); + provider.add("command.gtceu.cape.take.success.multiple", "Took %s capes from %s players"); + provider.add("command.gtceu.cape.take.success.single", "Took %s capes from %s"); + provider.add("command.gtceu.cape.use.failed", + "%s can't use cape %s because they don't have it (or it doesn't exist)!"); + provider.add("command.gtceu.cape.use.success", "%s is now using cape %s"); + provider.add("command.gtceu.cape.use.success.none", "%s is no longer using a cape"); provider.add("gtceu.medical_condition.description", "§l§cHAZARDOUS §7Hold Shift to show details"); provider.add("gtceu.medical_condition.description_shift", "§l§cHAZARDOUS:"); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 60c8388aa44..ed0870f3449 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -9,6 +9,8 @@ import com.gregtechceu.gtceu.api.capability.IMedicalConditionTracker; import com.gregtechceu.gtceu.api.capability.compat.EUToFEProvider; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -28,6 +30,7 @@ import com.gregtechceu.gtceu.common.commands.GTCommands; import com.gregtechceu.gtceu.common.commands.HazardCommands; import com.gregtechceu.gtceu.common.commands.MedicalConditionCommands; +import com.gregtechceu.gtceu.common.cosmetics.GTCapes; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GTAEMachines; import com.gregtechceu.gtceu.common.fluid.potion.BottleItemFluidHandler; @@ -146,10 +149,16 @@ public void deserializeNBT(CompoundTag arg) { } @SubscribeEvent - public static void attachCapabilities(AttachCapabilitiesEvent event) { + public static void registerBlockEntityCapabilities(AttachCapabilitiesEvent event) { event.addCapability(GTCEu.id("fe_capability"), new EUToFEProvider(event.getObject())); } + @SubscribeEvent + public static void registerCapes(RegisterGTCapesEvent event) { + GTCapes.registerGTCapes(event); + GTCapes.giveDevCapes(event); + } + @SubscribeEvent public static void tickPlayerInventoryHazards(TickEvent.PlayerTickEvent event) { if (event.side == LogicalSide.CLIENT || event.phase != TickEvent.Phase.END) { @@ -280,7 +289,9 @@ public static void worldUnload(LevelEvent.Unload event) { @SubscribeEvent public static void serverStarting(ServerStartingEvent event) { - WorldIDSaveData.init(event.getServer().overworld()); + ServerLevel mainLevel = event.getServer().overworld(); + WorldIDSaveData.init(mainLevel); + CapeRegistry.registerToServer(mainLevel); } @SubscribeEvent @@ -301,7 +312,8 @@ public static void serverStopping(ServerStoppingEvent event) { @SubscribeEvent public static void onPlayerJoinServer(PlayerEvent.PlayerLoggedInEvent event) { - if (event.getEntity() instanceof ServerPlayer serverPlayer) { + Player player = event.getEntity(); + if (player instanceof ServerPlayer serverPlayer) { GTNetwork.NETWORK.sendToPlayer(new SPacketSendWorldID(), serverPlayer); if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) @@ -311,6 +323,8 @@ public static void onPlayerJoinServer(PlayerEvent.PlayerLoggedInEvent event) { var data = EnvironmentalHazardSavedData.getOrCreate(level); GTNetwork.NETWORK.sendToPlayer(new SPacketSyncLevelHazards(data.getHazardZones()), serverPlayer); } + CapeRegistry.detectNewCapes(player); + CapeRegistry.loadCurrentCapesOnLogin(player); } @SubscribeEvent diff --git a/src/main/resources/assets/gtceu/textures/capes/ace_cape.png b/src/main/resources/assets/gtceu/textures/capes/ace_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..24e335230b6a537554b83ad2cae04f6b27885a92 GIT binary patch literal 295 zcmV+?0oeYDP)Px#;Ymb6RA_r3iGg*L<%obo|7dYpfbI!RtdIHwUD@=8-suTbK002ovPDHLkV1o2;cJ}}P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/agender_cape.png b/src/main/resources/assets/gtceu/textures/capes/agender_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..934674a4feeb1f57ffa9ddcb520cb0b743b4267c GIT binary patch literal 313 zcmV-90mlA`P)Px#^GQTORA_%0TTi#LQi6!0@+#+Eci+w;-Zg zS#IG#?;n0z5H$>60-948uGBweKr(y=TzLbU%m@v`Fbu;mj8RwsG8;ny+Z^TV00000 LNkvXXu0mjfmYsc6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png b/src/main/resources/assets/gtceu/textures/capes/aromantic_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..912e2fafa064d335b039bfa693eba96a48cb77f0 GIT binary patch literal 329 zcmV-P0k-~$P)Px$14%?dRA_8ji zcV2#ypZ&=M0)VQm83M*;kdy%cNeid3KWK}!QgG7613=Z*(o!CqA$H=b3k~7+7s({27jUt->0UxS;)AXfu6BWDA4`A29NhG7_n bVU)rPs~JbRIo6$f00000NkvXXu0mjf0sD%S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/bi_cape.png b/src/main/resources/assets/gtceu/textures/capes/bi_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..eb73c9354755e0401859fd9ece5e5f5c24aacc4a GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4a^8BnIEG|2 zzMa02_mF{r>-mZ53lf>Tcp5gbEJ|%O36X5=Qscgm#-XBig3qMKVMPN+qeb+;Z=U7r z_x;(t|NXf>WhJTAc}i?wcRg$oj4kUE|8eebu(g9W+wr?K8ejh&i28AwA+08>rgKU0 zJn8@C0vgR)EgDQAOS=pkiVtxJACU;)`pWj>b6RVloWZ8#tG=4-i+*th<=F|EtSQ z6DZle#4V0B#cdg*o=@)~mIYSkS}g)<4EmA{<;-c){RiK(ZrI3kU^ip_Ri+0O z=I2-a60JI1tWXY=y=TPmo^8)j?gf{^@6T$AbkS?m-txBh)O?+DkKQ&MOJciFzyl-# n?l4Hnw`ne&66E#rz71pHX|<}29Y1A&US;rf^>bP0l+XkKQgLy~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png b/src/main/resources/assets/gtceu/textures/capes/genderfluid_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..53e87bb46f7bedc4e39f9bd8e46a67ee7c8524de GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4vROS{978f1 z-_9`PJ7mD)ntP>j=bD&?waU)oRRVnn6)o7{hr!d;&t;ucLK6U!+=BH0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png b/src/main/resources/assets/gtceu/textures/capes/genderqueer_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..5faefcd172bac920d33212141b090e8b4650843e GIT binary patch literal 302 zcmV+}0nz@6P)Px#=t)FDRA_(#q z(8gQ>N@LQ1l4D@ffRdOsp!8+vIF92uj^j*?54MCu&2Xj)N&o-=07*qoM6N<$f&)r^ AQ~&?~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/greencape.png b/src/main/resources/assets/gtceu/textures/capes/green_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/greencape.png rename to src/main/resources/assets/gtceu/textures/capes/green_cape.png diff --git a/src/main/resources/assets/gtceu/textures/capes/gregtechcape.png b/src/main/resources/assets/gtceu/textures/capes/gregtech_cape.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/capes/gregtechcape.png rename to src/main/resources/assets/gtceu/textures/capes/gregtech_cape.png diff --git a/src/main/resources/assets/gtceu/textures/capes/intersex_cape.png b/src/main/resources/assets/gtceu/textures/capes/intersex_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..6b77f30fde8dfdb372e74c6f2fed1d98b72f09b6 GIT binary patch literal 333 zcmV-T0kZyyP)Px$2T4RhRA_9L9l++i*`9I6*;MXkx#_2ei`mw-wX? zfZbq0i216|epd=XI_D-*s?j9)!S|FBKs_aT^CBybD0NmTY zx_GYM0aROKu>t_+tH3J+pq@L1xK*I`XK~Nvkh8KV5my1V5h*~;HV`R5O~eY&>K~z^ fD2k#eit-kI5TX$g?xN-z00000NkvXXu0mjf_34uK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png b/src/main/resources/assets/gtceu/textures/capes/lesbian_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..d70c3e786aa535abcc6b08c166571e54a00aff4d GIT binary patch literal 336 zcmV-W0k8gvP)Px$3Q0skRA_o;KXytZk`)Kt6xr_H@Rs*Z>CO7(r;dkbXW0CTS{ zL)Xwk%91X!pMc~VFt1iopT$P%!{Gr7k?S=yVsC+8&X$P)Px#_(?=TRA_88YI*9PVv$#2V22bHBoCL4p@HXi|1ed~dQF#uJ zmzJi9G~XQlq<_hb0_4Y{#gAjrv1&(r0X{TuA;HZmF1y?<(@K1hfd}&Z3 z=}!Ugh0kpSmq7~-Q4Y8|RgD3Z9p*3rVRNe(MfliVS#(QdGeEikY1A2TxNNFE zi`kNS?}yya4DbEylrQyBqOJpKqtXEGZ?G{c4XBA)18R1GVHk#C7>3azFJ=2l#IOQe QuK)l507*qoM6N<$g0}yI761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/capes/pan_cape.png b/src/main/resources/assets/gtceu/textures/capes/pan_cape.png new file mode 100644 index 0000000000000000000000000000000000000000..18f904012b9aa45f0e694c621a43e6a329c79eaf GIT binary patch literal 305 zcmV-10nYx3P)Px#>q$gGRA_Px$7fD1xRA_MRsGE=F0FV~m*QdrylP^(pNWbx^ zgU}Mlg}Y7%xKrGMDV?YxLMEM%3uSW}c1=crrEuY+WPyEryHe~JYpp3(*8$QqYjpxh zPx#{z*hZRA_q!b(C^ z0x74u_I{Jlg)aUT1c2Eln_;BfPWT%KNKt$bn8I;mg0p5pA`;0KB1T*F(O+1#Y>tO) zF;E`?^#iCX0^C|sv_rV(`I<}X4I-l0LJ^VmK~l6ssE>g90l3q4FCyF~MoTJ^A=Epd zx&h=o=CkY6np2AE99whG7_np@kPg WYfe51{d&Iu0000 Date: Sun, 22 Jun 2025 13:55:56 +0200 Subject: [PATCH 065/270] Disable diode/battery buffer output when working is disabled (#3249) --- .../machine/electric/BatteryBufferMachine.java | 18 ++++++++++++++++-- .../multiblock/part/DiodePartMachine.java | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 2d7d8e2d2f1..886c1eab6a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -28,7 +28,6 @@ import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; -import lombok.Setter; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -48,7 +47,6 @@ public class BatteryBufferMachine extends TieredEnergyMachine @Persisted @Getter - @Setter private boolean isWorkingEnabled; @Getter private final int inventorySize; @@ -143,6 +141,12 @@ public Widget createUIWidget() { // ****** Battery Logic ******// ////////////////////////////////////// + @Override + public void setWorkingEnabled(boolean workingEnabled) { + isWorkingEnabled = workingEnabled; + energyContainer.checkOutputSubscription(); + } + private List getNonFullBatteries() { List batteries = new ArrayList<>(); for (int i = 0; i < batteryInventory.getSlots(); i++) { @@ -209,6 +213,16 @@ protected EnergyBatteryTrait(int inventorySize) { this.setSideOutputCondition(side -> side == getFrontFacing() && isWorkingEnabled()); } + @Override + public void checkOutputSubscription() { + if (isWorkingEnabled()) { + super.checkOutputSubscription(); + } else if (outputSubs != null) { + outputSubs.unsubscribe(); + outputSubs = null; + } + } + @Override public void serverTick() { var outFacing = getFrontFacing(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 818f1d6b9d5..bd89057d41d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -78,7 +78,7 @@ protected void reinitializeEnergyContainer() { this.energyContainer.resetBasicInfo(tierVoltage * MAX_AMPS * 2, tierVoltage, amps, tierVoltage, amps); this.energyContainer.setSideInputCondition(s -> s != getFrontFacing()); - this.energyContainer.setSideOutputCondition(s -> s == getFrontFacing()); + this.energyContainer.setSideOutputCondition(s -> s == getFrontFacing() && isWorkingEnabled()); } @Override From 8eefec0796a9f3f37d3d42ef21865167a2347c0f Mon Sep 17 00:00:00 2001 From: Karthi <75553966+JuiceyBeans@users.noreply.github.com> Date: Mon, 23 Jun 2025 10:30:38 +0100 Subject: [PATCH 066/270] Fix the lighter model referencing a nonexistent texture (#3257) --- src/main/resources/assets/gtceu/models/item/invar_lighter.json | 2 +- .../resources/assets/gtceu/models/item/platinum_lighter.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/gtceu/models/item/invar_lighter.json b/src/main/resources/assets/gtceu/models/item/invar_lighter.json index a777fd4faf2..5f1d62453d8 100644 --- a/src/main/resources/assets/gtceu/models/item/invar_lighter.json +++ b/src/main/resources/assets/gtceu/models/item/invar_lighter.json @@ -1,7 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "gtceu:items/invar_lighter" + "layer0": "gtceu:item/invar_lighter" }, "overrides": [ { diff --git a/src/main/resources/assets/gtceu/models/item/platinum_lighter.json b/src/main/resources/assets/gtceu/models/item/platinum_lighter.json index fb1913edac6..2b01e7f817c 100644 --- a/src/main/resources/assets/gtceu/models/item/platinum_lighter.json +++ b/src/main/resources/assets/gtceu/models/item/platinum_lighter.json @@ -1,7 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "gtceu:items/platinum_lighter" + "layer0": "gtceu:item/platinum_lighter" }, "overrides": [ { From 23ec0066585fac5fd5776bd7d0b2a2b659cb4a05 Mon Sep 17 00:00:00 2001 From: NegaNote Date: Mon, 23 Jun 2025 18:00:46 -0400 Subject: [PATCH 067/270] Add back isSameAxis() to RelativeDirection (#3260) --- .../gtceu/api/pattern/util/RelativeDirection.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index 3b9671ea344..2b6ae70ca62 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -282,4 +282,12 @@ public static RelativeDirection findRelativeOf(Direction base, Direction relativ } } } + + /** + * @param other The other direction to check + * @return Whether both directions are on the same axis + */ + public boolean isSameAxis(RelativeDirection other) { + return this.equivalentGlobal.getAxis() == other.equivalentGlobal.getAxis(); + } } From 738d1b0743e92a532b1d1def4c8b65ad10e28244 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Tue, 24 Jun 2025 09:56:25 +0200 Subject: [PATCH 068/270] Sort ME2 stocking busses and hatches by amount (#3259) --- .../ae2/machine/MEStockingBusPartMachine.java | 41 ++++++++++++++++--- .../machine/MEStockingHatchPartMachine.java | 39 +++++++++++++++--- 2 files changed, 69 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 3feffb05054..864d93499c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -38,6 +38,8 @@ import lombok.Setter; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; +import java.util.PriorityQueue; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -179,7 +181,7 @@ public void setAutoPull(boolean autoPull) { /** * Refresh the configuration list in auto-pull mode. - * Sets the config to the first 16 valid items found in the network. + * Sets the config to the CONFIG_SIZE items with the highest amount in the ME system. */ private void refreshList() { IGrid grid = this.getMainNode().getGrid(); @@ -190,11 +192,16 @@ private void refreshList() { MEStorage networkStorage = grid.getStorageService().getInventory(); var counter = networkStorage.getAvailableStacks(); - int index = 0; + + // Use a PriorityQueue to sort the stacks on size, take the first CONFIG_SIZE + // biggest stacks. + PriorityQueue> topItems = new PriorityQueue<>( + Comparator.comparingLong(Object2LongMap.Entry::getLongValue)); + for (Object2LongMap.Entry entry : counter) { - if (index >= CONFIG_SIZE) break; - AEKey what = entry.getKey(); long amount = entry.getLongValue(); + if (!topItems.isEmpty() && amount < topItems.peek().getLongValue()) continue; + AEKey what = entry.getKey(); if (amount <= 0) continue; if (!(what instanceof AEItemKey itemKey)) continue; @@ -205,10 +212,32 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(itemKey, amount))) continue; - var slot = this.aeItemHandler.getInventory()[index]; + if (topItems.size() < CONFIG_SIZE) { + topItems.offer(entry); + } else if (amount > topItems.peek().getLongValue()) { + topItems.poll(); + topItems.offer(entry); + } + } + + // Now, topItems is a PQ with CONFIG_SIZE highest amount items in the system. + int index; + int itemAmount = topItems.size(); + for (index = 0; index < CONFIG_SIZE; index++) { + if (topItems.isEmpty()) break; + Object2LongMap.Entry entry = topItems.poll(); + + AEKey what = entry.getKey(); + long amount = entry.getLongValue(); + + // If we get here, the item has already been checked by the PQ. + long request = networkStorage.extract(what, amount, Actionable.SIMULATE, actionSource); + + // Since we want our items to be displayed from highest to lowest, but poll() returns + // the lowest first, we fill in the slots starting at itemAmount-1 + var slot = this.aeItemHandler.getInventory()[itemAmount - index - 1]; slot.setConfig(new GenericStack(what, 1)); slot.setStock(new GenericStack(what, request)); - index++; } aeItemHandler.clearInventory(index); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 27b70b4ac3d..8f16fbb9d87 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -39,6 +39,8 @@ import lombok.Setter; import org.jetbrains.annotations.Nullable; +import java.util.Comparator; +import java.util.PriorityQueue; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -173,11 +175,17 @@ private void refreshList() { MEStorage networkStorage = grid.getStorageService().getInventory(); var counter = networkStorage.getAvailableStacks(); - int index = 0; + + // Use a PriorityQueue to sort the stacks on size, take the first CONFIG_SIZE + // biggest stacks. + PriorityQueue> topFluids = new PriorityQueue<>( + Comparator.comparingLong(Object2LongMap.Entry::getLongValue)); + for (Object2LongMap.Entry entry : counter) { - if (index >= CONFIG_SIZE) break; - AEKey what = entry.getKey(); long amount = entry.getLongValue(); + if (!topFluids.isEmpty() && amount < topFluids.peek().getLongValue()) continue; + + AEKey what = entry.getKey(); if (amount <= 0) continue; if (!(what instanceof AEFluidKey fluidKey)) continue; @@ -188,10 +196,31 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(fluidKey, amount))) continue; - var slot = this.aeFluidHandler.getInventory()[index]; + if (topFluids.size() < CONFIG_SIZE) { + topFluids.offer(entry); + } else if (amount > topFluids.peek().getLongValue()) { + topFluids.poll(); + topFluids.offer(entry); + } + } + + // Now, topFluids is a PQ with CONFIG_SIZE highest amount fluids in the system. + int index; + int fluidAmount = topFluids.size(); + for (index = 0; index < CONFIG_SIZE; index++) { + if (topFluids.isEmpty()) break; + Object2LongMap.Entry entry = topFluids.poll(); + AEKey what = entry.getKey(); + long amount = entry.getLongValue(); + + // If we get here, the fluid has already been checked by the PQ. + long request = networkStorage.extract(what, amount, Actionable.SIMULATE, actionSource); + + // Since we want our fluids to be displayed from highest to lowest, but poll() returns + // the lowest first, we fill in the slots starting at fluidAmount-1 + var slot = this.aeFluidHandler.getInventory()[fluidAmount - index - 1]; slot.setConfig(new GenericStack(what, 1)); slot.setStock(new GenericStack(what, request)); - index++; } aeFluidHandler.clearInventory(index); From 9c2a2d2c7e58db047358124d43281074a4c046d4 Mon Sep 17 00:00:00 2001 From: Karthi <75553966+JuiceyBeans@users.noreply.github.com> Date: Tue, 24 Jun 2025 08:56:36 +0100 Subject: [PATCH 069/270] Fix KJS recipe types' slot overlays not working (#3258) --- .../gtceu/api/recipe/GTRecipeType.java | 5 ----- .../kjs/builders/GTRecipeTypeBuilder.java | 15 ++------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index a53ddd30e27..8d096bf1cdb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -28,8 +28,6 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SmeltingRecipe; -import it.unimi.dsi.fastutil.bytes.Byte2ObjectArrayMap; -import it.unimi.dsi.fastutil.bytes.Byte2ObjectMap; import it.unimi.dsi.fastutil.objects.*; import lombok.Getter; import lombok.Setter; @@ -57,8 +55,6 @@ public class GTRecipeType implements RecipeType { @Getter @Setter private GTRecipeTypeUI recipeUI = new GTRecipeTypeUI(this); - @Getter - private final Byte2ObjectMap slotOverlays = new Byte2ObjectArrayMap<>(); @Setter @Getter private GTRecipeType smallRecipeMap; @@ -85,7 +81,6 @@ public class GTRecipeType implements RecipeType { private final GTRecipeCategory category; @Getter private final Map> categoryMap = new Object2ObjectOpenHashMap<>(); - private CompoundTag customUICache; @Getter private final GTRecipeLookup lookup = new GTRecipeLookup(this); @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java index c000a2e58ca..09a4ac02889 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java @@ -12,9 +12,6 @@ import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Rect; -import com.lowdragmc.lowdraglib.utils.Size; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -28,6 +25,7 @@ import java.util.function.BiConsumer; import java.util.function.Supplier; +@SuppressWarnings("unused") public class GTRecipeTypeBuilder extends BuilderBase { public transient String name, category; @@ -36,8 +34,6 @@ public class GTRecipeTypeBuilder extends BuilderBase { private ProgressTexture progressBarTexture; private SteamTexture steamProgressBarTexture; private ProgressTexture.FillDirection steamMoveType; - private transient IGuiTexture specialTexture; - private transient Rect specialTexturePosition; private transient final Byte2ObjectMap slotOverlays; @Nullable protected SoundEntry sound; @@ -98,13 +94,6 @@ public GTRecipeTypeBuilder setMaxSize(IO io, RecipeCapability cap, int max) { return this; } - @Deprecated - public GTRecipeTypeBuilder setSpecialTexture(int x, int y, int width, int height, IGuiTexture area) { - this.specialTexturePosition = Rect.of(new Position(x, y), new Size(width, height)); - this.specialTexture = area; - return this; - } - public GTRecipeTypeBuilder setSlotOverlay(boolean isOutput, boolean isFluid, IGuiTexture slotOverlay) { return this.setSlotOverlay(isOutput, isFluid, false, slotOverlay).setSlotOverlay(isOutput, isFluid, true, slotOverlay); @@ -163,7 +152,7 @@ public GTRecipeType register() { var type = GTRecipeTypes.register(name, category); type.maxInputs.putAll(maxInputs); type.maxOutputs.putAll(maxOutputs); - type.getSlotOverlays().putAll(slotOverlays); + type.getRecipeUI().getSlotOverlays().putAll(slotOverlays); type.getRecipeUI().setProgressBarTexture(progressBarTexture); type.getRecipeUI().setSteamProgressBarTexture(steamProgressBarTexture); type.getRecipeUI().setSteamMoveType(steamMoveType); From c50625fae28cd8e1b13334b524a2b336a7bc6931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Jelin=C4=8Di=C4=87?= <72603953+GirixK@users.noreply.github.com> Date: Tue, 24 Jun 2025 13:45:39 +0200 Subject: [PATCH 070/270] Remove unused shader (#3262) Co-authored-by: GirixK --- .../gtceu/shaders/compass_background.fsh | 222 ------------------ 1 file changed, 222 deletions(-) delete mode 100644 src/main/resources/assets/gtceu/shaders/compass_background.fsh diff --git a/src/main/resources/assets/gtceu/shaders/compass_background.fsh b/src/main/resources/assets/gtceu/shaders/compass_background.fsh deleted file mode 100644 index 0312d1fdccc..00000000000 --- a/src/main/resources/assets/gtceu/shaders/compass_background.fsh +++ /dev/null @@ -1,222 +0,0 @@ -#version 150 - -uniform vec2 iResolution; -uniform float iTime; -uniform vec2 iMouse; - -uniform vec4 baseTexture; -uniform vec4 topTexture; -uniform vec4 sideTexture; -uniform vec4 frontTexture; -uniform vec4 backTexture; - -uniform sampler2D BLOCK_ATLAS; - -in vec2 texCoord; - -out vec4 fragColor; - -const float pi = 3.14159; - -mat3 xrot(float t) -{ - return mat3(1.0, 0.0, 0.0, - 0.0, cos(t), -sin(t), - 0.0, sin(t), cos(t)); -} - -mat3 yrot(float t) -{ - return mat3(cos(t), 0.0, -sin(t), - 0.0, 1.0, 0.0, - sin(t), 0.0, cos(t)); -} - -mat3 zrot(float t) -{ - return mat3(cos(t), -sin(t), 0.0, - sin(t), cos(t), 0.0, - 0.0, 0.0, 1.0); -} - -float sphereDistance(vec3 pos) -{ - return length(pos) - 0.6; -} - -float sdBox( vec3 p, vec3 b ) -{ - vec3 d = abs(p) - b; - return min(max(d.x,max(d.y,d.z)),0.0) + - length(max(d,0.0)); -} - -float planeDistance(vec3 pos) -{ - vec3 origin = vec3(0.0, -2, 0.0); - vec3 normal = vec3(0.0, 1.0, 0.0); - vec3 delta = pos - origin; - float prod = dot(delta, normal); - return prod; -} - - -float cubeSDF(vec3 p) { - // If d.x < 0, then -1 < p.x < 1, and same logic applies to p.y, p.z - // So if all components of d are negative, then p is inside the unit cube - vec3 d = abs(p) - vec3(0.4,0.4,0.4); - - // Assuming p is inside the cube, how far is it from the surface? - // Result will be negative or zero. - float insideDistance = min(max(d.x, max(d.y, d.z)), 0.0); - - // Assuming p is outside the cube, how far is it from the surface? - // Result will be positive or zero. - float outsideDistance = length(max(d, 0.0)); - - return insideDistance + outsideDistance; -} - -float map(vec3 pos) -{ - - vec3 rpos = (pos - vec3(0.0,0.5,0.0)); - rpos *= yrot(pi*0.25+iTime * .5); - return min(cubeSDF(rpos), planeDistance(pos)); -} - -vec3 normal(vec3 p) -{ - vec3 o = vec3(0.01, 0.0, 0.0); - vec3 n = vec3(0.0); - n.x = map(p+o) - map(p-o); - n.y = map(p+o.zxy) - map(p-o.zyx); - n.z = map(p+o.yzx) - map(p-o.yzx); - return normalize(n); -} - -float trace(vec3 o, vec3 r) -{ - float t = 0.0; - for (int i = 0; i < 32; ++i) { - vec3 pos = o + r * t; - float d = map(pos); - if (d < 0.001) { - return t; - } - t += d; - } - return t; -} - -vec2 ltrace(vec3 o, vec3 r) -{ - /* http://iquilezles.org/www/articles/rmshadows/rmshadows.htm */ - float t = 0.0; - float md = 1000.0; - float lt = 0.0; - for (int i = 0; i < 32; ++i) { - vec3 pos = o + r * t; - float d = map(pos); - md = min(md, 16.0*d/t); - t += min(d, 0.1); /* <-- you need to clamp the distance for it to work :) */ - } - return vec2(t,clamp(md,0.0,1.0)); -} - -float light(vec3 world, vec3 sn, vec3 lpos) -{ - vec3 ldel = world + sn * 0.01 - lpos; - float ldist = length(ldel); - ldel /= ldist; - vec2 lt = ltrace(lpos, ldel); - float lm = 1.0; - if (lt.x < ldist) { - lm = lt.y; - } - float lp = max(dot(ldel, -sn), 0.0); - float fl = lp * lm / (1.0 + ldist * ldist * 0.1); - return fl; -} - -vec2 uvMapping(vec4 uvs, vec2 uv) { - // uvs(u0, v0, u1, v1) - return vec2(uvs.x + (uvs.z - uvs.x) * uv.x, uvs.y + (uvs.w - uvs.y) * uv.y); -} - -void mainImage( out vec4 fragColor, in vec2 fragCoord ) { - vec2 uv = fragCoord.xy / iResolution.xy * 2.0 - 1.0; - uv.x *= iResolution.x / iResolution.y; - - vec3 ray = normalize(vec3(uv, 1.3)); - ray *= xrot(pi*0.27); - - mat3 rotr = mat3(1.0);//yrot(iTime); - vec2 mp = iMouse.xy / iResolution.xy; - // mp.y += 0.5; - rotr = xrot(-mp.y) * yrot(-mp.x*3.0); - - ray *= rotr; - vec3 origin = vec3(0.0, 0.0, -1.4) * rotr; - origin.y += 2.0; - - float t = trace(origin, ray); - vec3 world = origin + ray * t; - - vec3 rpos = (world - vec3(0.0,0.5,0.0)); - rpos *= yrot(pi*0.25+iTime * .5); - float cubeD = cubeSDF(rpos); - - vec3 bg = vec3(0.1); - - if(cubeD < 0.1) { - float dx = min(abs(rpos.x - 0.4), abs(rpos.x + 0.4)); - float dy = min(abs(rpos.y - 0.4), abs(rpos.y + 0.4)); - float dz = min(abs(rpos.z - 0.4), abs(rpos.z + 0.4)); - - if (rpos.y >= 0.4) { // top - vec2 _uv = vec2((rpos.x + 0.4) / 0.8, (rpos.z + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(topTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else if (abs(rpos.x) >= 0.4) { // side - vec2 _uv = vec2((rpos.z + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(sideTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else if (rpos.z >= 0.4) { // back - vec2 _uv = vec2((rpos.x + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(backTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } else { // front - vec2 _uv = vec2(1. - (rpos.x + 0.4) / 0.8, (rpos.y + 0.4) / 0.8); - bg = texture(BLOCK_ATLAS, uvMapping(baseTexture, _uv)).rgb; - vec4 overlay = texture(BLOCK_ATLAS, uvMapping(frontTexture, _uv)); - bg = mix(bg, overlay.rgb, overlay.a); - } - } - - vec3 sn = normal(world); - float fd = map(world); - - float la = light(world, sn, vec3(-2.0, 1.5, 0.0)); - float lb = light(world, sn, vec3(2.0, 1.5, 0.0)); - - - float fog = 1.0 / (1.0 + t * t * 0.01 + fd * 5.0); - - vec3 diff = bg; - float dp = max(dot(ray,-sn),0.0); - - vec3 rc = diff * dp; - rc += la * abs(sin(vec3(1.0, 0.5, 0.3) + iTime * 0.2) - 0.2); - rc += lb * abs(sin(vec3(0.0, 0.5, 0.7) + iTime * 0.2) + 0.2); - - rc *= fog; - fragColor = vec4(rc, 1.0); -} - -void main() { - mainImage(fragColor, vec2(texCoord.x * iResolution.x, texCoord.y * iResolution.y)); -} From 858bcb40e1285ce737d530ac55a4299c7b8936f5 Mon Sep 17 00:00:00 2001 From: htmlcsjs <46023024+htmlcsjs@users.noreply.github.com> Date: Tue, 24 Jun 2025 13:28:25 +0100 Subject: [PATCH 071/270] Add recipes to oxidise and wax copper decorative blocks in the chem bath (#3263) --- .../data/recipe/misc/DecorationRecipes.java | 133 +++++++++++++++++- 1 file changed, 129 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java index 91e9edc676e..67c2a54e871 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/DecorationRecipes.java @@ -4,18 +4,18 @@ import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import java.util.function.Consumer; +import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.block; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.plate; import static com.gregtechceu.gtceu.common.data.GTBlocks.LARGE_METAL_SHEETS; import static com.gregtechceu.gtceu.common.data.GTBlocks.METAL_SHEETS; import static com.gregtechceu.gtceu.common.data.GTBlocks.STUDS; -import static com.gregtechceu.gtceu.common.data.GTMaterials.CHEMICAL_DYES; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Concrete; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Iron; -import static com.gregtechceu.gtceu.common.data.GTMaterials.Rubber; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.ASSEMBLER_RECIPES; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.CHEMICAL_BATH_RECIPES; @@ -26,6 +26,7 @@ private DecorationRecipes() {} public static void init(Consumer provider) { assemblerRecipes(provider); dyeRecipes(provider); + copperOxidationRecipes(provider); } private static void assemblerRecipes(Consumer provider) { @@ -83,4 +84,128 @@ private static void dyeRecipes(Consumer provider) { .save(provider); } } + + private static void copperOxidationRecipes(Consumer provider) { + registerOxidationChain(provider, "copper_block", Items.COPPER_BLOCK, Items.EXPOSED_COPPER, + Items.WEATHERED_COPPER, Items.OXIDIZED_COPPER); + registerOxidationChain(provider, "cut_copper", Items.CUT_COPPER, Items.EXPOSED_CUT_COPPER, + Items.WEATHERED_CUT_COPPER, Items.OXIDIZED_CUT_COPPER); + registerOxidationChain(provider, "cut_copper_stairs", Items.CUT_COPPER_STAIRS, Items.EXPOSED_CUT_COPPER_STAIRS, + Items.WEATHERED_CUT_COPPER_STAIRS, Items.OXIDIZED_CUT_COPPER_STAIRS); + registerOxidationChain(provider, "cut_copper_slab", Items.CUT_COPPER_SLAB, Items.EXPOSED_CUT_COPPER_SLAB, + Items.WEATHERED_CUT_COPPER_SLAB, Items.OXIDIZED_CUT_COPPER_SLAB); + + // Waxing recipes + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_copper_block") + .inputItems(Items.COPPER_BLOCK) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_COPPER_BLOCK) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_copper") + .inputItems(Items.EXPOSED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_copper") + .inputItems(Items.WEATHERED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_copper") + .inputItems(Items.OXIDIZED_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper") + .inputItems(Items.CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper") + .inputItems(Items.EXPOSED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper") + .inputItems(Items.WEATHERED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper") + .inputItems(Items.OXIDIZED_CUT_COPPER) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper_stairs") + .inputItems(Items.CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper_stairs") + .inputItems(Items.EXPOSED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper_stairs") + .inputItems(Items.WEATHERED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper_stairs") + .inputItems(Items.OXIDIZED_CUT_COPPER_STAIRS) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER_STAIRS) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_cut_copper_slab") + .inputItems(Items.CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_exposed_cut_copper_slab") + .inputItems(Items.EXPOSED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_EXPOSED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_weathered_cut_copper_slab") + .inputItems(Items.WEATHERED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_WEATHERED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + CHEMICAL_BATH_RECIPES.recipeBuilder("waxing_oxidized_cut_copper_slab") + .inputItems(Items.OXIDIZED_CUT_COPPER_SLAB) + .inputFluids(Wax, L / 2) + .outputItems(Items.WAXED_OXIDIZED_CUT_COPPER_SLAB) + .EUt(VA[ULV]).duration(10) + .save(provider); + } + + private static final String[] OXIDATION_STAGES = { "raw", "exposed", "weathered", "oxidized" }; + + private static void registerOxidationChain(Consumer provider, String name, Item... items) { + for (int i = 0; i < items.length - 1; i++) { + CHEMICAL_BATH_RECIPES + .recipeBuilder( + "%s_to_%s_%s_oxidation".formatted(OXIDATION_STAGES[i], OXIDATION_STAGES[i + 1], name)) + .inputItems(items[i]) + .inputFluids(Oxygen, 100) + .outputItems(items[i + 1]) + .EUt(VA[ULV]).duration(10) + .save(provider); + } + } } From 32ed665a9f9eb2da94b4ff2ce96ce984eae1b8d7 Mon Sep 17 00:00:00 2001 From: DilithiumThoride Date: Wed, 25 Jun 2025 00:10:40 -0500 Subject: [PATCH 072/270] Fix GTRecipeBuilder ranged item outputs (#3268) --- .../data/recipe/builder/GTRecipeBuilder.java | 65 +++++++++++++++---- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 5a7066a4115..c2db726b6e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -386,6 +386,11 @@ public GTRecipeBuilder inputItems(Ingredient... inputs) { return input(ItemRecipeCapability.CAP, inputs); } + public GTRecipeBuilder inputItems(Ingredient inputs, int count) { + Ingredient countedInput = Ingredient.of(inputs.getItems()); + return input(ItemRecipeCapability.CAP, countedInput); + } + public GTRecipeBuilder inputItems(ItemStack input) { if (input.isEmpty()) { GTCEu.LOGGER.error("Input items is empty, id: {}", id); @@ -503,16 +508,22 @@ public GTRecipeBuilder inputItems(MachineDefinition machine, int count) { return inputItems(machine.asStack(count)); } - public GTRecipeBuilder outputItems(Object input) { - if (input instanceof Item item) { + public GTRecipeBuilder outputItems(Object output) { + if (output instanceof Item item) { return outputItems(item); - } else if (input instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { + } else if (output instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { return outputItems(item.asItem()); - } else if (input instanceof ItemStack stack) { + } else if (output instanceof ItemStack stack) { return outputItems(stack); - } else if (input instanceof MaterialEntry entry) { + } else if (output instanceof IntProviderIngredient provider) { + return outputItems(provider); + } else if (output instanceof Ingredient ingredient) { + return outputItems(ingredient); + } else if (output instanceof MaterialEntry entry) { return outputItems(entry); - } else if (input instanceof MachineDefinition machine) { + } else if (output instanceof TagKey tag) { + return outputItems((TagKey) tag); + } else if (output instanceof MachineDefinition machine) { return outputItems(machine); } else { GTCEu.LOGGER.error("Output item is not one of:\n" + @@ -522,16 +533,22 @@ public GTRecipeBuilder outputItems(Object input) { } } - public GTRecipeBuilder outputItems(Object input, int count) { - if (input instanceof Item item) { + public GTRecipeBuilder outputItems(Object output, int count) { + if (output instanceof Item item) { return outputItems(item, count); - } else if (input instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { + } else if (output instanceof Supplier supplier && supplier.get() instanceof ItemLike item) { return outputItems(item.asItem(), count); - } else if (input instanceof ItemStack stack) { + } else if (output instanceof ItemStack stack) { return outputItems(stack.copyWithCount(count)); - } else if (input instanceof MaterialEntry entry) { + } else if (output instanceof IntProviderIngredient provider) { + return outputItems(provider); + } else if (output instanceof Ingredient ingredient) { + return outputItems(ingredient, count); + } else if (output instanceof MaterialEntry entry) { return outputItems(entry, count); - } else if (input instanceof MachineDefinition machine) { + } else if (output instanceof TagKey tag) { + return outputItems((TagKey) tag, count); + } else if (output instanceof MachineDefinition machine) { return outputItems(machine, count); } else { GTCEu.LOGGER.error("Output item is not one of:\n" + @@ -541,6 +558,19 @@ public GTRecipeBuilder outputItems(Object input, int count) { } } + public GTRecipeBuilder outputItems(Ingredient output) { + return output(ItemRecipeCapability.CAP, output); + } + + public GTRecipeBuilder outputItems(Ingredient output, int amount) { + Ingredient countedOutput = Ingredient.of(output.getItems()); + return input(ItemRecipeCapability.CAP, countedOutput); + } + + public GTRecipeBuilder outputItems(IntProviderIngredient output) { + return output(ItemRecipeCapability.CAP, output); + } + public GTRecipeBuilder outputItems(Ingredient... inputs) { return output(ItemRecipeCapability.CAP, inputs); } @@ -620,6 +650,17 @@ public GTRecipeBuilder outputItems(MachineDefinition machine, int count) { return outputItems(machine.asStack(count)); } + public GTRecipeBuilder outputItems(TagKey tag, int amount) { + if (amount == 0) { + GTCEu.LOGGER.error("Item Count is 0, id: {}", id); + } + return outputItems(SizedIngredient.create(tag, amount)); + } + + public GTRecipeBuilder outputItems(TagKey tag) { + return outputItems(tag, 1); + } + public GTRecipeBuilder outputItemsRanged(ItemStack output, IntProvider intProvider) { return outputItems(IntProviderIngredient.of(SizedIngredient.create(output), intProvider)); } From bab33f80b0f750a6eb77070eb49b93c06a4400f7 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Wed, 25 Jun 2025 15:48:52 +0200 Subject: [PATCH 073/270] Add a tag for valid cleanroom doors (#3264) --- .../resources/data/gtceu/tags/blocks/cleanroom_doors.json | 6 ++++++ .../machine/multiblock/electric/CleanroomMachine.java | 2 +- .../java/com/gregtechceu/gtceu/data/recipe/CustomTags.java | 2 ++ .../com/gregtechceu/gtceu/data/tags/BlockTagLoader.java | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json diff --git a/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json b/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json new file mode 100644 index 00000000000..065692498ac --- /dev/null +++ b/src/generated/resources/data/gtceu/tags/blocks/cleanroom_doors.json @@ -0,0 +1,6 @@ +{ + "values": [ + "minecraft:iron_door", + "#minecraft:wooden_doors" + ] +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index e4b117ff0f6..51ddb521f98 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -416,7 +416,7 @@ protected BlockState getGlassState() { @NotNull protected static TraceabilityPredicate doorPredicate() { - return Predicates.custom(blockWorldState -> blockWorldState.getBlockState().getBlock() instanceof DoorBlock, + return Predicates.custom(blockWorldState -> blockWorldState.getBlockState().is(CustomTags.CLEANROOM_DOORS), () -> new BlockInfo[] { new BlockInfo(Blocks.IRON_DOOR.defaultBlockState()), new BlockInfo( Blocks.IRON_DOOR.defaultBlockState().setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER)) }); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 99944412a72..127a804d5b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -120,6 +120,8 @@ public class CustomTags { public static final TagKey STEP_BOOTS = TagUtil.createModItemTag("step_boots"); public static final TagKey RUBBER_LOGS = TagUtil.createModItemTag("rubber_logs"); + public static final TagKey CLEANROOM_DOORS = TagUtil.createModBlockTag("cleanroom_doors"); + public static final TagKey CHEM_BATH_WASHABLE = TagUtil.createModItemTag("chemical_bath_washable"); // Mineability tags diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java index 9b4a932259f..1d78464c339 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/BlockTagLoader.java @@ -61,5 +61,7 @@ public static void init(RegistrateTagsProvider.IntrinsicImpl provider) { .add(Blocks.DIRT_PATH) // path blocks .addTag(Tags.Blocks.SAND).addTag(BlockTags.SAND) // any sand blocks .addTag(BlockTags.TERRACOTTA); // any terracotta + + provider.addTag(CustomTags.CLEANROOM_DOORS).add(Blocks.IRON_DOOR).addTag(BlockTags.WOODEN_DOORS); } } From a799009fe9068a73101b72c43e52553a69cea031 Mon Sep 17 00:00:00 2001 From: omergunr100 <24607757+omergunr100@users.noreply.github.com> Date: Fri, 27 Jun 2025 09:06:30 +0300 Subject: [PATCH 074/270] Feature: colour machine/cable highlights based on tier (#3067) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../com/gregtechceu/gtceu/api/GTValues.java | 19 ++ .../gregtechceu/gtceu/api/item/IGTTool.java | 12 +- .../api/item/tool/IGTToolDefinition.java | 2 +- .../api/item/tool/ToolDefinitionBuilder.java | 2 +- .../gtceu/api/item/tool/ToolHelper.java | 172 ++++++++--------- .../api/item/tool/aoe/AoESymmetrical.java | 12 +- .../tool/behavior/AOEConfigUIBehavior.java | 2 +- .../item/tool/behavior/GrassPathBehavior.java | 84 +++----- .../tool/behavior/HarvestCropsBehavior.java | 111 ++++------- .../item/tool/behavior/HoeGroundBehavior.java | 91 ++++----- .../item/tool/behavior/LogStripBehavior.java | 77 +++----- .../item/tool/behavior/ScrapeBehavior.java | 84 +++----- .../item/tool/behavior/WaxOffBehavior.java | 86 +++------ .../gtceu/config/ConfigHolder.java | 10 + .../gtceu/core/mixins/LevelRendererMixin.java | 182 ++++++++++++------ .../core/mixins/MultiPlayerGameModeMixin.java | 3 +- .../com/gregtechceu/gtceu/utils/GTUtil.java | 12 ++ 17 files changed, 437 insertions(+), 524 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index f8fb218bec9..c73fb9f3d61 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -267,6 +267,25 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { public static final int[] VC = new int[] { 0xC80000, 0xDCDCDC, 0xFF6400, 0xFFFF1E, 0x808080, 0xF0F0F5, 0xE99797, 0x7EC3C4, 0x7EB07E, 0xBF74C0, 0x0B5CFE, 0x914E91, 0x488748, 0x8C0000, 0x2828F5 }; + // Main colour for each tier + public static final int[] VCM = new int[] { + DARK_GRAY.getColor(), + GRAY.getColor(), + AQUA.getColor(), + GOLD.getColor(), + DARK_PURPLE.getColor(), + BLUE.getColor(), + LIGHT_PURPLE.getColor(), + RED.getColor(), + DARK_AQUA.getColor(), + DARK_RED.getColor(), + GREEN.getColor(), + DARK_GREEN.getColor(), + YELLOW.getColor(), + BLUE.getColor(), + RED.getColor() + }; + /** * The long names for the voltages */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index 9c2b92a8531..f849bd5a7cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -159,7 +159,7 @@ default ItemStack get() { CompoundTag behaviourTag = getBehaviorsTag(stack); getToolStats().getBehaviors().forEach(behavior -> behavior.addBehaviorNBT(stack, behaviourTag)); - if (aoeDefinition != AoESymmetrical.none()) { + if (!aoeDefinition.isZero()) { behaviourTag.putInt(MAX_AOE_COLUMN_KEY, aoeDefinition.column); behaviourTag.putInt(MAX_AOE_ROW_KEY, aoeDefinition.row); behaviourTag.putInt(MAX_AOE_LAYER_KEY, aoeDefinition.layer); @@ -359,10 +359,10 @@ default int getTotalHarvestLevel(ItemStack stack) { getToolStats().getBehaviors().forEach(behavior -> behavior.onBlockStartBreak(stack, pos, player)); if (!player.isShiftKeyDown()) { - ServerPlayer playerMP = (ServerPlayer) player; + ServerPlayer serverPlayer = (ServerPlayer) player; int result = -1; if (isTool(stack, GTToolType.SHEARS)) { - result = shearBlockRoutine(playerMP, stack, pos); + result = shearBlockRoutine(serverPlayer, stack, pos); } if (result != 0) { // prevent exploits with instantly breakable blocks @@ -378,7 +378,7 @@ default int getTotalHarvestLevel(ItemStack stack) { effective |= isToolEffective(state, getToolClasses(stack), getTotalHarvestLevel(stack)); if (effective) { - if (areaOfEffectBlockBreakRoutine(stack, playerMP)) { + if (areaOfEffectBlockBreakRoutine(stack, serverPlayer, pos)) { if (playSoundOnBlockDestroy()) playSound(player); } else { if (result == -1) { @@ -687,7 +687,7 @@ default int getTotalHarvestLevel(ItemStack stack) { boolean addedBehaviorNewLine = false; AoESymmetrical aoeDefinition = getAoEDefinition(stack); - if (aoeDefinition != AoESymmetrical.none()) { + if (!aoeDefinition.isZero()) { addedBehaviorNewLine = tooltip.add(CommonComponents.EMPTY); tooltip.add(Component.translatable("item.gtceu.tool.behavior.aoe_mining", aoeDefinition.column * 2 + 1, aoeDefinition.row * 2 + 1, aoeDefinition.layer + 1)); @@ -767,7 +767,7 @@ default int getTotalHarvestLevel(ItemStack stack) { case "enchantment.cofhcore.smelting": // cofhcore case "enchantment.as.smelting": // astral sorcery // block autosmelt enchants from AoE and Tree-Felling tools - return getToolStats().getAoEDefinition(stack) == AoESymmetrical.none() && + return getToolStats().getAoEDefinition(stack).isZero() && !getBehaviorsTag(stack).contains(TREE_FELLING_KEY); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java index 1c55f4a01cb..bd1f7663ec5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IGTToolDefinition.java @@ -83,7 +83,7 @@ default float getAttackSpeed(ItemStack stack) { } default AoESymmetrical getAoEDefinition(ItemStack stack) { - return AoESymmetrical.none(); + return AoESymmetrical.ZERO; } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java index faf0b6fab90..9dff082b2bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolDefinitionBuilder.java @@ -58,7 +58,7 @@ public class ToolDefinitionBuilder { @Setter private Supplier brokenStack = () -> ItemStack.EMPTY; @Setter - private AoESymmetrical aoe = AoESymmetrical.none(); + private AoESymmetrical aoe = AoESymmetrical.ZERO; private final Set effectiveBlocks = new ObjectOpenHashSet<>(); private Predicate effectiveStates; private final Object2IntMap defaultEnchantments = new Object2IntArrayMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index a28de32eb7e..e0631f37856 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -38,6 +38,7 @@ import net.minecraft.stats.Stats; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -48,6 +49,7 @@ import net.minecraft.world.item.enchantment.DigDurabilityEnchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.*; @@ -56,7 +58,6 @@ import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.IForgeShearable; @@ -68,12 +69,12 @@ import it.unimi.dsi.fastutil.chars.CharSet; import it.unimi.dsi.fastutil.chars.CharSets; import it.unimi.dsi.fastutil.objects.Object2IntMaps; -import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; import java.util.*; +import java.util.function.Predicate; import java.util.function.Supplier; public class ToolHelper { @@ -266,15 +267,14 @@ public static ItemStack getAndSetToolData(GTToolType toolType, Material material /** * AoE Block Breaking Routine. */ - public static boolean areaOfEffectBlockBreakRoutine(ItemStack stack, ServerPlayer player) { + public static boolean areaOfEffectBlockBreakRoutine(ItemStack stack, ServerPlayer player, BlockPos targeted) { int currentDurability = stack.getDamageValue(); int maximumDurability = stack.getMaxDamage(); int remainingUses = maximumDurability - currentDurability; - Set harvestableBlocks = getHarvestableBlocks(stack, player); + var harvestableBlocks = getHarvestableBlocks(stack, player); if (!harvestableBlocks.isEmpty()) { - int blocksBroken = 0; for (BlockPos pos : harvestableBlocks) { - if (!breakBlockRoutine(player, stack, pos, blocksBroken++ == 0)) { + if (!breakBlockRoutine(player, stack, pos, pos == targeted)) { return true; } @@ -292,12 +292,6 @@ else if (!ItemStack.isSameItem(player.getMainHandItem(), stack)) { return false; } - @FunctionalInterface - public interface AOEFunction { - - boolean apply(ItemStack stack, Level level, Player player, BlockPos start, UseOnContext context); - } - public static AoESymmetrical getMaxAoEDefinition(ItemStack stack) { return AoESymmetrical.readMax(getBehaviorsTag(stack)); } @@ -306,80 +300,69 @@ public static AoESymmetrical getAoEDefinition(ItemStack stack) { return AoESymmetrical.read(getBehaviorsTag(stack), getMaxAoEDefinition(stack)); } - public static Set iterateAoE(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult, - AOEFunction function) { - if (aoeDefinition != AoESymmetrical.none() && rayTraceResult instanceof BlockHitResult blockHit && - blockHit.getDirection() != null) { - int column = aoeDefinition.column; - int row = aoeDefinition.row; - int layer = aoeDefinition.layer; - Direction playerFacing = player.getDirection(); - Direction.Axis playerAxis = playerFacing.getAxis(); - Direction.Axis sideHitAxis = blockHit.getDirection().getAxis(); - Direction.AxisDirection sideHitAxisDir = blockHit.getDirection().getAxisDirection(); - Set validPositions = new ObjectOpenHashSet<>(); - if (sideHitAxis.isVertical()) { - boolean isX = playerAxis == Direction.Axis.X; - boolean isDown = sideHitAxisDir == Direction.AxisDirection.NEGATIVE; - for (int y = 0; y <= layer; y++) { - for (int x = isX ? -row : -column; x <= (isX ? row : column); x++) { - for (int z = isX ? -column : -row; z <= (isX ? column : row); z++) { - if (!(x == 0 && y == 0 && z == 0)) { - BlockPos pos = blockHit.getBlockPos().offset(x, isDown ? y : -y, z); - if (player.mayUseItemAt(pos.relative(blockHit.getDirection()), blockHit.getDirection(), - stack)) { - if (function.apply(stack, world, player, pos, new UseOnContext(player.level(), - player, player.getUsedItemHand(), stack, blockHit))) { - validPositions.add(pos); - } - } - } - } + public static List iterateAoE(AoESymmetrical aoeDefinition, Predicate predicate, + UseOnContext context) { + Level level = context.getLevel(); + Player player = context.getPlayer(); + Direction hitFace = context.getClickedFace(); + ItemStack stack = context.getItemInHand(); + Direction playerFacing = player != null ? player.getDirection() : Direction.NORTH; + + Direction depthDirection = hitFace.getOpposite(); + Direction topDirection = Direction.UP; + Direction sideDirection = hitFace; + // Special case for any additional row > 1: https://i.imgur.com/Dvcx7Vg.png + // Same behaviour as the Flux Bore + int aoeRowStart = aoeDefinition.row == 0 ? 0 : -1; + int aoeRowEnd = aoeDefinition.row == 0 ? 0 : aoeDefinition.row * 2 - 1; + + if (hitFace.getAxis().isVertical()) { + topDirection = playerFacing; + sideDirection = playerFacing; + aoeRowStart = -aoeDefinition.row; + aoeRowEnd = aoeDefinition.row; + } + sideDirection = sideDirection.getClockWise(); + + List validPositions = new ArrayList<>(); + for (int depth = 0; depth <= aoeDefinition.layer; depth++) { + for (int top = aoeRowEnd; top >= aoeRowStart; top--) { + for (int side = -aoeDefinition.column; side <= aoeDefinition.column; side++) { + var pos = context.getClickedPos() + .relative(depthDirection, depth) + .relative(topDirection, top) + .relative(sideDirection, side); + if (player != null && !player.mayUseItemAt(pos.relative(hitFace), hitFace, stack)) { + continue; } - } - } else { - boolean isX = sideHitAxis == Direction.Axis.X; - boolean isNegative = sideHitAxisDir == Direction.AxisDirection.NEGATIVE; - for (int x = 0; x <= layer; x++) { - // Special case for any additional column > 1: https://i.imgur.com/Dvcx7Vg.png - // Same behaviour as the Flux Bore - for (int y = (row == 0 ? 0 : -1); y <= (row == 0 ? 0 : row * 2 - 1); y++) { - for (int z = -column; z <= column; z++) { - if (!(x == 0 && y == 0 && z == 0)) { - BlockPos pos = blockHit.getBlockPos().offset( - isX ? (isNegative ? x : -x) : (isNegative ? z : -z), y, - isX ? (isNegative ? z : -z) : (isNegative ? x : -x)); - if (function.apply(stack, world, player, pos, new UseOnContext(player.level(), player, - player.getUsedItemHand(), stack, blockHit))) { - validPositions.add(pos); - } - } - } + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(pos)); + if (predicate.test(posContext)) { + validPositions.add(pos); } } } - return validPositions; } - return Collections.emptySet(); + return validPositions; } - public static Set getHarvestableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, ToolHelper::isBlockAoEHarvestable); + public static List getHarvestableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return iterateAoE(aoeDefinition, ToolHelper::isBlockAoEHarvestable, context); } - private static boolean isBlockAoEHarvestable(ItemStack stack, Level world, Player player, BlockPos pos, - UseOnContext context) { - if (world.getBlockState(pos).isAir()) return false; + private static boolean isBlockAoEHarvestable(UseOnContext context) { + Level level = context.getLevel(); + ItemStack stack = context.getItemInHand(); + BlockPos pos = context.getClickedPos(); + if (level.getBlockState(pos).isAir()) return false; - BlockState state = world.getBlockState(pos); + BlockState state = level.getBlockState(pos); if (state.getBlock() instanceof LiquidBlock) return false; BlockPos hitBlockPos = context.getClickedPos(); - BlockState hitBlockState = world.getBlockState(hitBlockPos); - if (state.getDestroySpeed(world, pos) < 0 || - state.getDestroySpeed(world, pos) - hitBlockState.getDestroySpeed(world, hitBlockPos) > 8) { + BlockState hitBlockState = level.getBlockState(hitBlockPos); + if (state.getDestroySpeed(level, pos) < 0 || + state.getDestroySpeed(level, pos) - hitBlockState.getDestroySpeed(level, hitBlockPos) > 8) { // If mining a block takes significantly longer than the center block, do not mine it. // Originally this was just a check for if it is at all harder of a block, however that // would cause some annoyances, like Grass Block not being broken if a Dirt Block was the @@ -396,10 +379,8 @@ private static boolean isBlockAoEHarvestable(ItemStack stack, Level world, Playe public static void applyHammerDropConversion(ServerLevel world, BlockPos pos, ItemStack tool, BlockState state, List drops, int fortune, float dropChance, RandomSource random) { - if (is(tool, GTToolType.HARD_HAMMER) || /* - * EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, - * tool) - */ -1 > 0) { + // EnchantmentHelper.getEnchantmentLevel(EnchantmentHardHammer.INSTANCE, tool) + if (is(tool, GTToolType.HARD_HAMMER)) { List silktouchDrops = getSilkTouchDrop(world, pos, state); for (ItemStack silktouchDrop : silktouchDrops) { if (silktouchDrop.isEmpty()) continue; @@ -527,8 +508,7 @@ public static boolean removeBlockRoutine(@Nullable BlockState state, Level world boolean successful = world.removeBlock(pos, false); - if (playSound) - world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(state)); + if (playSound) world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(state)); if (successful) { state.getBlock().destroy(world, pos, state); @@ -536,25 +516,31 @@ public static boolean removeBlockRoutine(@Nullable BlockState state, Level world return successful; } - public static Set getHarvestableBlocks(ItemStack stack, Level world, Player player, - HitResult rayTraceResult) { - return getHarvestableBlocks(stack, getAoEDefinition(stack), world, player, rayTraceResult); - } - - public static Set getHarvestableBlocks(ItemStack stack, Player player) { - if (!hasBehaviorsTag(stack)) return Collections.emptySet(); + public static List getHarvestableBlocks(ItemStack stack, Player player) { + if (!hasBehaviorsTag(stack)) return List.of(); - AoESymmetrical aoeDefiniton = getAoEDefinition(stack); - if (aoeDefiniton == AoESymmetrical.none()) { - return Collections.emptySet(); + var aoeDefinition = getAoEDefinition(stack); + if (aoeDefinition.isZero()) { + return List.of(); } - HitResult rayTraceResult = getPlayerDefaultRaytrace(player); - return getHarvestableBlocks(stack, aoeDefiniton, player.level(), player, rayTraceResult); + BlockHitResult hitResult = getPlayerDefaultRaytrace(player); + UseOnContext context = new UseOnContext(player, player.getUsedItemHand(), hitResult); + return getHarvestableBlocks(aoeDefinition, context); + } + + public static BlockHitResult getPlayerDefaultRaytrace(@NotNull Player player) { + return entityPickBlock(player, getPlayerBlockReach(player), 1.0f, false); } - public static HitResult getPlayerDefaultRaytrace(@NotNull Player player) { - return player.pick(getPlayerBlockReach(player), 1.0f, false); + public static BlockHitResult entityPickBlock(Entity entity, double hitDistance, float partialTicks, + boolean hitFluids) { + Vec3 eyePos = entity.getEyePosition(partialTicks); + Vec3 lookVec = entity.getViewVector(partialTicks); + Vec3 maxDistance = eyePos.add(lookVec.x * hitDistance, lookVec.y * hitDistance, lookVec.z * hitDistance); + ClipContext context = new ClipContext(eyePos, maxDistance, ClipContext.Block.OUTLINE, + hitFluids ? ClipContext.Fluid.ANY : ClipContext.Fluid.NONE, entity); + return entity.level().clip(context); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java index 3ed0412da96..b64a3cf5138 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/aoe/AoESymmetrical.java @@ -24,17 +24,17 @@ private AoESymmetrical(int column, int row, int layer) { this.layer = layer; } - private static final AoESymmetrical NONE = new AoESymmetrical(); + public static final AoESymmetrical ZERO = new AoESymmetrical(); - public static AoESymmetrical none() { - return NONE; + public boolean isZero() { + return this == ZERO; } public static AoESymmetrical of(int column, int row, int layer) { Preconditions.checkArgument(column >= 0, "Height cannot be negative."); Preconditions.checkArgument(row >= 0, "Width cannot be negative."); Preconditions.checkArgument(layer >= 0, "Depth cannot be negative."); - return column == 0 && row == 0 && layer == 0 ? NONE : new AoESymmetrical(column, row, layer); + return column == 0 && row == 0 && layer == 0 ? ZERO : new AoESymmetrical(column, row, layer); } public static AoESymmetrical readMax(CompoundTag tag) { @@ -48,7 +48,7 @@ public static AoESymmetrical readMax(CompoundTag tag) { if (tag.contains(ToolHelper.MAX_AOE_LAYER_KEY, Tag.TAG_INT)) { layer = tag.getInt(ToolHelper.MAX_AOE_LAYER_KEY); } - return column == 0 && row == 0 && layer == 0 ? NONE : AoESymmetrical.of(column, row, layer); + return column == 0 && row == 0 && layer == 0 ? ZERO : AoESymmetrical.of(column, row, layer); } public static AoESymmetrical read(CompoundTag tag, @Nullable AoESymmetrical defaultDefinition) { @@ -69,7 +69,7 @@ public static AoESymmetrical read(CompoundTag tag, @Nullable AoESymmetrical defa layer = defaultDefinition == null ? 0 : defaultDefinition.layer; } if (column == 0 && row == 0 && layer == 0) { - return NONE; + return ZERO; } tag.putInt(ToolHelper.AOE_COLUMN_KEY, column); tag.putInt(ToolHelper.AOE_ROW_KEY, row); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index 611ce38d463..261f013aff3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -24,7 +24,7 @@ public class AOEConfigUIBehavior implements IToolUIBehavior { @Override public boolean openUI(@NotNull Player player, @NotNull InteractionHand hand) { - return player.isShiftKeyDown() && getMaxAoEDefinition(player.getItemInHand(hand)) != AoESymmetrical.none(); + return player.isShiftKeyDown() && !getMaxAoEDefinition(player.getItemInHand(hand)).isZero(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java index afe621ba97e..dbd835286ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java @@ -9,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,106 +17,79 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class GrassPathBehavior implements IToolBehavior { - public static final GrassPathBehavior INSTANCE = create(); + public static final GrassPathBehavior INSTANCE = new GrassPathBehavior(); protected GrassPathBehavior() {/**/} - protected static GrassPathBehavior create() { - return new GrassPathBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { - if (context.getClickedFace() == Direction.DOWN) - return InteractionResult.PASS; + if (context.getClickedFace() == Direction.DOWN) return InteractionResult.PASS; Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to till if the center block is tillable - if (level.getBlockState(pos.above()).isAir() && isBlockPathConvertible(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (level.isEmptyBlock(pos.above()) && isBlockPathConvertible(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getPathConvertibleBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getPathConvertibleBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } boolean pathed = false; for (BlockPos blockPos : blocks) { - BlockState newState = getFlattened(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))); - if (newState == null) { - continue; - } + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getFlattened(level.getBlockState(blockPos), posContext); + if (newState == null) continue; pathed |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (pathed) { - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.SHOVEL_FLATTEN, - SoundSource.PLAYERS, 1.0F, 1.0F); + level.playSound(player, blocks.get(0), SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getPathConvertibleBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, - GrassPathBehavior.INSTANCE::isBlockPathConvertible); + public static List getPathConvertibleBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, GrassPathBehavior::isBlockPathConvertible, context); } - protected boolean isBlockPathConvertible(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - if (level.getBlockState(pos.above()).isAir()) { + protected static boolean isBlockPathConvertible(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + if (level.isEmptyBlock(pos.above())) { BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); + BlockState newState = state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, true); return newState != null && newState != state; } return false; } - protected BlockState getFlattened(BlockState unFlattenedState, UseOnContext context) { - return unFlattenedState.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); + protected static BlockState getFlattened(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.SHOVEL_FLATTEN, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java index 7b5912f4a12..b65bfc9ea46 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.common.item.tool.behavior; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; @@ -8,9 +7,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -19,15 +16,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CropBlock; import net.minecraft.world.level.block.LevelEvent; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.block.state.BlockState; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class HarvestCropsBehavior implements IToolBehavior { @@ -38,102 +32,69 @@ protected HarvestCropsBehavior() {/**/} @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { - if (context.getLevel().isClientSide) { - return InteractionResult.PASS; - } - - Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); - + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; - - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + List blocks; + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = ToolHelper.iterateAoE(stack, aoeDefinition, player.level(), player, rayTraceResult, - HarvestCropsBehavior::isBlockCrops); - if (isBlockCrops(stack, context.getLevel(), player, blockHitResult.getBlockPos(), context)) { - blocks.add(blockHitResult.getBlockPos()); + blocks = ToolHelper.iterateAoE(aoeDefinition, HarvestCropsBehavior::isBlockCrops, context); + if (isBlockCrops(context)) { + blocks.add(0, context.getClickedPos()); } } boolean harvested = false; for (BlockPos blockPos : blocks) { - if (harvestBlockRoutine(stack, blockPos, player)) { - harvested = true; - } + harvested |= harvestBlockRoutine(blockPos, context); + if (stack.isEmpty()) break; } - - return harvested ? InteractionResult.SUCCESS : InteractionResult.PASS; + return harvested ? InteractionResult.sidedSuccess(context.getLevel().isClientSide) : InteractionResult.PASS; } - private static boolean isBlockCrops(ItemStack stack, Level world, Player player, BlockPos pos, - @Nullable UseOnContext context) { - if (world.getBlockState(pos.above()).isAir()) { - Block block = world.getBlockState(pos).getBlock(); + private static boolean isBlockCrops(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + if (level.getBlockState(pos.above()).isAir()) { + Block block = level.getBlockState(pos).getBlock(); return block instanceof CropBlock; } return false; } - private static boolean harvestBlockRoutine(ItemStack stack, BlockPos pos, Player player) { - var level = player.level(); - var blockState = level.getBlockState(pos); - var block = blockState.getBlock(); - var cropBlock = (CropBlock) block; - final var seed = cropBlock.getCloneItemStack(level, pos, blockState).getItem(); + private static boolean harvestBlockRoutine(BlockPos pos, UseOnContext context) { + Level level = context.getLevel(); + ItemStack stack = context.getItemInHand(); + Player player = context.getPlayer(); + + BlockState blockState = level.getBlockState(pos); + if (!(blockState.getBlock() instanceof CropBlock cropBlock)) return false; + + ItemStack seed = blockState.getCloneItemStack(context.getHitResult().withPosition(pos), level, pos, player); if (cropBlock.isMaxAge(blockState)) { - var drops = Block.getDrops(blockState, (ServerLevel) level, pos, null); - var iterator = drops.listIterator(); - while (iterator.hasNext()) { - var drop = iterator.next(); - if (drop.is(seed)) { - drop.shrink(1); - if (drop.isEmpty()) { - iterator.remove(); + if (!level.isClientSide) { + var drops = Block.getDrops(blockState, (ServerLevel) level, pos, null); + boolean removedSeed = false; + for (ItemStack drop : drops) { + if (!removedSeed && ItemStack.isSameItemSameTags(drop, seed)) { + drop.shrink(1); + removedSeed = true; + if (drop.isEmpty()) continue; } - break; + Block.popResource(level, pos, drop); } } - dropListOfItems(level, pos, drops); level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(blockState)); - level.setBlock(pos, cropBlock.getStateForAge(0), Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(stack, player); - } + level.setBlock(pos, cropBlock.getStateForAge(0), Block.UPDATE_ALL_IMMEDIATE); + ToolHelper.damageItem(stack, player); return true; } return false; } - private static void dropListOfItems(Level world, BlockPos pos, List drops) { - for (ItemStack stack : drops) { - float f = 0.7F; - double offX = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - double offY = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - double offZ = (GTValues.RNG.nextFloat() * f) + (1.0F - f) * 0.5D; - ItemEntity entityItem = new ItemEntity(world, pos.getX() + offX, pos.getY() + offY, pos.getZ() + offZ, - stack); - entityItem.setDefaultPickUpDelay(); - world.addFreshEntity(entityItem); - } - } - @Override public void addInformation(@NotNull ItemStack stack, @Nullable Level world, @NotNull List tooltip, @NotNull TooltipFlag flag) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java index 40c6dba91dd..cd41d323450 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java @@ -9,7 +9,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -19,16 +18,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; /** * Used to allow a tool to hoe the ground, only if it cannot extend the @@ -37,90 +32,70 @@ */ public class HoeGroundBehavior implements IToolBehavior { - public static final HoeGroundBehavior INSTANCE = create(); + public static final HoeGroundBehavior INSTANCE = new HoeGroundBehavior(); protected HoeGroundBehavior() {/**/} - protected static HoeGroundBehavior create() { - return new HoeGroundBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { if (context.getClickedFace() == Direction.DOWN) return InteractionResult.PASS; - Level world = context.getLevel(); + Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to till if the center block is tillable - if (isBlockTillable(stack, world, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockTillable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getTillableBlocks(stack, aoeDefinition, world, player, blockHitResult); - if (isBlockTillable(stack, world, player, blockHitResult.getBlockPos(), context)) { - blocks.add(blockHitResult.getBlockPos()); - } + blocks = getTillableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else return InteractionResult.PASS; + } else { + return InteractionResult.PASS; + } boolean tilled = false; for (BlockPos blockPos : blocks) { - BlockState state = world.getBlockState(blockPos); - tilled |= tillGround(new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos)), state); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + tilled |= tillGround(posContext); + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (tilled) { - world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.HOE_TILL, - SoundSource.PLAYERS, 1.0F, 1.0F); - return InteractionResult.sidedSuccess(player.level().isClientSide); + level.playSound(player, blocks.get(0), SoundEvents.HOE_TILL, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getTillableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level world, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, world, player, rayTraceResult, - HoeGroundBehavior.INSTANCE::isBlockTillable); + public static List getTillableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, HoeGroundBehavior::isBlockTillable, context); } - protected boolean isBlockTillable(ItemStack stack, Level world, Player player, BlockPos pos, UseOnContext context) { - if (world.getBlockState(pos.above()).isAir()) { - BlockState state = world.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, false); - return newState != null && newState != state; - } - return false; + protected static boolean isBlockTillable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, true); + return newState != null && newState != state; } - protected boolean tillGround(UseOnContext context, BlockState state) { + protected boolean tillGround(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + BlockState state = level.getBlockState(pos); + BlockState newState = state.getToolModifiedState(context, ToolActions.HOE_TILL, false); if (newState != null && newState != state) { - context.getLevel().gameEvent(GameEvent.BLOCK_CHANGE, context.getClickedPos(), - GameEvent.Context.of(context.getPlayer(), state)); - return context.getLevel().setBlock(context.getClickedPos(), newState, Block.UPDATE_ALL_IMMEDIATE); + level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(context.getPlayer(), newState)); + return level.setBlock(pos, newState, Block.UPDATE_ALL_IMMEDIATE); } return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java index b0b4fef9c48..b5ef7127e1c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -17,98 +16,72 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class LogStripBehavior implements IToolBehavior { - public static final LogStripBehavior INSTANCE = create(); + public static final LogStripBehavior INSTANCE = new LogStripBehavior(); protected LogStripBehavior() {/**/} - protected static LogStripBehavior create() { - return new LogStripBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockStrippable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockStrippable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getStrippableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getStrippableBlocks(aoeDefinition, context); + blocks.add(context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } boolean stripped = false; for (BlockPos blockPos : blocks) { - stripped |= level.setBlock(blockPos, - getStripped(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getStripped(level.getBlockState(blockPos), posContext); + stripped |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } if (stripped) { - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_STRIP, - SoundSource.PLAYERS, 1.0F, 1.0F); + level.playSound(player, blocks.get(0), SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getStrippableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - LogStripBehavior.INSTANCE::isBlockStrippable); + public static List getStrippableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, LogStripBehavior::isBlockStrippable, context); } - protected boolean isBlockStrippable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_STRIP, false); + protected static boolean isBlockStrippable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_STRIP, true); return newState != null && newState != state; } - protected BlockState getStripped(BlockState unscrapedState, UseOnContext context) { - return unscrapedState.getToolModifiedState(context, ToolActions.AXE_STRIP, false); + protected BlockState getStripped(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_STRIP, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java index b9002464ca6..60bb928a3f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,101 +17,72 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class ScrapeBehavior implements IToolBehavior { - public static final ScrapeBehavior INSTANCE = create(); + public static final ScrapeBehavior INSTANCE = new ScrapeBehavior(); protected ScrapeBehavior() {/**/} - protected static ScrapeBehavior create() { - return new ScrapeBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockScrapable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockScrapable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getScrapableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getScrapableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } - boolean pathed = false; + boolean scraped = false; for (BlockPos blockPos : blocks) { - pathed |= level.setBlock(blockPos, - getScraped(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getScraped(level.getBlockState(blockPos), posContext); + scraped |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); level.levelEvent(player, LevelEvent.PARTICLES_SCRAPE, blockPos, 0); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; + + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } - if (pathed) { - level.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, - SoundSource.PLAYERS, 1.0F, 1.0F); + if (scraped) { + level.playSound(player, blocks.get(0), SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); return InteractionResult.sidedSuccess(level.isClientSide); } - return InteractionResult.PASS; } - public static Set getScrapableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - ScrapeBehavior.INSTANCE::isBlockScrapable); + public static List getScrapableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, ScrapeBehavior::isBlockScrapable, context); } - protected boolean isBlockScrapable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); + protected static boolean isBlockScrapable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, true); return newState != null && newState != state; } - protected BlockState getScraped(BlockState unscrapedState, UseOnContext context) { - // just assume it exists. - BlockState newState = unscrapedState.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); - return newState != null ? newState : unscrapedState; + protected BlockState getScraped(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_SCRAPE, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java index c78823a3aa8..fe449e53f20 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,99 +17,74 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; +import net.minecraft.world.level.gameevent.GameEvent; import net.minecraftforge.common.ToolActions; -import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; public class WaxOffBehavior implements IToolBehavior { - public static final WaxOffBehavior INSTANCE = create(); + public static final WaxOffBehavior INSTANCE = new WaxOffBehavior(); protected WaxOffBehavior() {/**/} - protected static WaxOffBehavior create() { - return new WaxOffBehavior(); - } - @NotNull @Override public InteractionResult onItemUse(UseOnContext context) { Level level = context.getLevel(); Player player = context.getPlayer(); BlockPos pos = context.getClickedPos(); - InteractionHand hand = context.getHand(); - - ItemStack stack = player.getItemInHand(hand); + ItemStack stack = context.getItemInHand(); AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(stack); - Set blocks; + List blocks; // only attempt to strip if the center block is strippable - if (isBlockUnWaxable(stack, level, player, pos, context)) { - if (aoeDefinition == AoESymmetrical.none()) { - blocks = ImmutableSet.of(pos); + if (isBlockUnwaxable(context)) { + if (aoeDefinition.isZero()) { + blocks = List.of(pos); } else { - HitResult rayTraceResult = ToolHelper.getPlayerDefaultRaytrace(player); - - if (rayTraceResult == null) - return InteractionResult.PASS; - if (rayTraceResult.getType() != HitResult.Type.BLOCK) - return InteractionResult.PASS; - if (!(rayTraceResult instanceof BlockHitResult blockHitResult)) - return InteractionResult.PASS; - if (blockHitResult.getDirection() == null) - return InteractionResult.PASS; - - blocks = getUnWaxableBlocks(stack, aoeDefinition, level, player, rayTraceResult); - blocks.add(blockHitResult.getBlockPos()); + blocks = getUnwaxableBlocks(aoeDefinition, context); + blocks.add(0, context.getClickedPos()); } - } else + } else { return InteractionResult.PASS; + } - boolean waxed = false; + boolean unwaxed = false; for (BlockPos blockPos : blocks) { - waxed |= level.setBlock(blockPos, - getUnWaxed(level.getBlockState(blockPos), - new UseOnContext(player, hand, context.getHitResult().withPosition(blockPos))), - Block.UPDATE_ALL); + UseOnContext posContext = new UseOnContext(level, player, context.getHand(), stack, + context.getHitResult().withPosition(blockPos)); + BlockState newState = getUnwaxed(level.getBlockState(blockPos), posContext); + unwaxed |= level.setBlock(blockPos, newState, Block.UPDATE_ALL); level.levelEvent(player, LevelEvent.PARTICLES_WAX_OFF, blockPos, 0); - if (!player.isCreative()) { - ToolHelper.damageItem(context.getItemInHand(), context.getPlayer()); - } - if (stack.isEmpty()) - break; - } + level.gameEvent(GameEvent.BLOCK_CHANGE, pos, GameEvent.Context.of(player, newState)); - if (waxed) { - level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.AXE_WAX_OFF, - SoundSource.PLAYERS, 1.0F, 1.0F); - return InteractionResult.sidedSuccess(player.level().isClientSide); + ToolHelper.damageItem(stack, player); + if (stack.isEmpty()) break; } + if (unwaxed) { + level.playSound(player, blocks.get(0), SoundEvents.AXE_WAX_OFF, SoundSource.BLOCKS, 1.0F, 1.0F); + return InteractionResult.sidedSuccess(level.isClientSide); + } return InteractionResult.PASS; } - public static Set getUnWaxableBlocks(ItemStack stack, AoESymmetrical aoeDefinition, Level Level, - Player player, HitResult rayTraceResult) { - return ToolHelper.iterateAoE(stack, aoeDefinition, Level, player, rayTraceResult, - WaxOffBehavior.INSTANCE::isBlockUnWaxable); + public static List getUnwaxableBlocks(AoESymmetrical aoeDefinition, UseOnContext context) { + return ToolHelper.iterateAoE(aoeDefinition, WaxOffBehavior::isBlockUnwaxable, context); } - protected boolean isBlockUnWaxable(ItemStack stack, Level level, Player player, BlockPos pos, - UseOnContext context) { - BlockState state = level.getBlockState(pos); - BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); + protected static boolean isBlockUnwaxable(UseOnContext context) { + BlockState state = context.getLevel().getBlockState(context.getClickedPos()); + BlockState newState = state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, true); return newState != null && newState != state; } - protected BlockState getUnWaxed(BlockState unscrapedState, UseOnContext context) { - return unscrapedState.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); + protected BlockState getUnwaxed(BlockState state, UseOnContext context) { + return state.getToolModifiedState(context, ToolActions.AXE_WAX_OFF, false); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 6ee82d90984..47ff4c97bf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -791,5 +791,15 @@ public static class RendererConfigs { @Configurable @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) public boolean renderFluids = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", + "Default: true" }) + public boolean coloredTieredMachineOutline = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", + "Default: true" }) + public boolean coloredWireOutline = true; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java index 0b4168ef3a9..34c8def4bee 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java @@ -1,19 +1,31 @@ package com.gregtechceu.gtceu.core.mixins; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.*; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.core.BlockPos; import net.minecraft.server.level.BlockDestructionProgress; import net.minecraft.util.FastColor; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; @@ -21,11 +33,15 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator; import com.mojang.blaze3d.vertex.VertexConsumer; import it.unimi.dsi.fastutil.longs.Long2ObjectMap; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; @@ -38,7 +54,7 @@ import java.util.*; -@Mixin(LevelRenderer.class) +@Mixin(value = LevelRenderer.class, priority = 500) @OnlyIn(Dist.CLIENT) public abstract class LevelRendererMixin { @@ -57,29 +73,33 @@ public abstract class LevelRendererMixin { @Shadow private @Nullable ClientLevel level; - @Inject( - method = { "renderLevel" }, - at = { @At("HEAD") }) + @Unique + private final RandomSource gtceu$modelRandom = RandomSource.create(); + + @Inject(method = "renderLevel", at = @At("HEAD")) private void renderLevel(PoseStack poseStack, float partialTick, long finishNanoTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightTexture lightTexture, Matrix4f projectionMatrix, CallbackInfo ci) { - if (minecraft.player == null || minecraft.level == null) return; + if (minecraft.player == null || level == null) return; ItemStack mainHandItem = minecraft.player.getMainHandItem(); - if (!ToolHelper.hasBehaviorsTag(mainHandItem) || - ToolHelper.getAoEDefinition(mainHandItem) == AoESymmetrical.none() || - !(minecraft.hitResult instanceof BlockHitResult result) || minecraft.player.isShiftKeyDown()) + if (minecraft.player.isShiftKeyDown() || + !ToolHelper.hasBehaviorsTag(mainHandItem) || + !(minecraft.hitResult instanceof BlockHitResult hitResult)) { return; + } + AoESymmetrical aoeDefinition = ToolHelper.getAoEDefinition(mainHandItem); + if (aoeDefinition.isZero()) return; - BlockPos hitResultPos = result.getBlockPos(); - BlockState hitResultState = minecraft.level.getBlockState(hitResultPos); + BlockPos hitPos = hitResult.getBlockPos(); + BlockState hitState = level.getBlockState(hitPos); - SortedSet progresses = destructionProgress.get(hitResultPos.asLong()); - if (progresses == null || progresses.isEmpty() || !mainHandItem.isCorrectToolForDrops(hitResultState)) return; + SortedSet progresses = destructionProgress.get(hitPos.asLong()); + if (progresses == null || progresses.isEmpty() || !mainHandItem.isCorrectToolForDrops(hitState)) return; BlockDestructionProgress progress = progresses.last(); - Set positions = ToolHelper.getHarvestableBlocks(mainHandItem, - ToolHelper.getAoEDefinition(mainHandItem), level, minecraft.player, result); + UseOnContext context = new UseOnContext(minecraft.player, InteractionHand.MAIN_HAND, hitResult); + var positions = ToolHelper.getHarvestableBlocks(aoeDefinition, context); Vec3 vec3 = camera.getPosition(); double camX = vec3.x(); @@ -88,78 +108,120 @@ private void renderLevel(PoseStack poseStack, float partialTick, long finishNano for (BlockPos pos : positions) { poseStack.pushPose(); - poseStack.translate((double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ); + poseStack.translate(pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ); PoseStack.Pose last = poseStack.last(); VertexConsumer breakProgressDecal = new SheetedDecalTextureGenerator( this.renderBuffers.crumblingBufferSource() .getBuffer(ModelBakery.DESTROY_TYPES.get(progress.getProgress())), - last.pose(), - last.normal(), - 1.0f); - this.minecraft.getBlockRenderer().renderBreakingTexture(minecraft.level.getBlockState(pos), pos, - minecraft.level, poseStack, breakProgressDecal); + last.pose(), last.normal(), 1.0f); + ModelData modelData = level.getModelDataManager().getAt(pos); + this.minecraft.getBlockRenderer().renderBreakingTexture(level.getBlockState(pos), pos, + level, poseStack, breakProgressDecal, modelData != null ? modelData : ModelData.EMPTY); poseStack.popPose(); } } @Shadow - public static void renderShape(PoseStack poseStack, VertexConsumer consumer, VoxelShape shape, double x, double y, - double z, float red, float green, float blue, float alpha) { + private static void renderShape(PoseStack poseStack, VertexConsumer consumer, VoxelShape shape, + double x, double y, double z, + float red, float green, float blue, float alpha) { throw new AssertionError(); } - @Inject(method = "renderHitOutline", at = @At("HEAD"), cancellable = true) - private void gtceu$handleAOEOutline(PoseStack poseStack, VertexConsumer consumer, Entity entity, double camX, - double camY, - double camZ, BlockPos pos, BlockState state, CallbackInfo ci) { + @WrapOperation(method = "renderLevel", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/LevelRenderer;renderHitOutline(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/world/entity/Entity;DDDLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V")) + private void gtceu$handleAOEOutline(LevelRenderer instance, PoseStack poseStack, VertexConsumer consumer, + Entity entity, double camX, double camY, double camZ, + BlockPos pos, BlockState state, Operation original) { if (minecraft.player == null || level == null) return; ItemStack mainHandItem = minecraft.player.getMainHandItem(); - if (state.isAir() || !level.isInWorldBounds(pos) || !mainHandItem.isCorrectToolForDrops(state) || - minecraft.player.isShiftKeyDown() || !ToolHelper.hasBehaviorsTag(mainHandItem)) { - gtceu$renderContextAwareOutline(poseStack, consumer, entity, camX, camY, camZ, pos, state); - ci.cancel(); + if (state.isAir() || minecraft.player.isShiftKeyDown() || !level.isInWorldBounds(pos) || + !mainHandItem.isCorrectToolForDrops(state) || !ToolHelper.hasBehaviorsTag(mainHandItem) || + !(minecraft.hitResult instanceof BlockHitResult hitResult)) { + gtceu$renderContextAwareOutline(instance, poseStack, consumer, entity, camX, camY, camZ, + pos, state, original); return; } - ToolHelper - .getHarvestableBlocks(mainHandItem, ToolHelper.getAoEDefinition(mainHandItem), level, minecraft.player, - minecraft.hitResult) - .forEach(position -> gtceu$renderContextAwareOutline(poseStack, consumer, entity, camX, camY, camZ, - position, level.getBlockState(position))); - ci.cancel(); + UseOnContext context = new UseOnContext(minecraft.player, InteractionHand.MAIN_HAND, hitResult); + var blocks = ToolHelper.getHarvestableBlocks(ToolHelper.getAoEDefinition(mainHandItem), context); + blocks.sort((o1, o2) -> { + if (level.getBlockState(o1).getBlock() instanceof MaterialBlock) { + if (level.getBlockState(o2).getBlock() instanceof MaterialBlock) { + return 0; + } + return 1; + } + if (level.getBlockState(o2).getBlock() instanceof MaterialBlock) { + return -1; + } + return 0; + }); + blocks.forEach(blockPos -> gtceu$renderContextAwareOutline(instance, poseStack, consumer, entity, + camX, camY, camZ, blockPos, level.getBlockState(blockPos), original)); } @Unique - private void gtceu$renderContextAwareOutline(PoseStack poseStack, VertexConsumer consumer, Entity entity, - double camX, double camY, double camZ, BlockPos pos, - BlockState state) { + private void gtceu$renderContextAwareOutline(LevelRenderer instance, PoseStack poseStack, VertexConsumer consumer, + Entity entity, double camX, double camY, double camZ, + BlockPos pos, BlockState state, Operation original) { assert level != null; - if (state.getBlock() instanceof MaterialBlock matBlock) { - int rgb = matBlock.material.getMaterialRGB(); - float red = (float) FastColor.ARGB32.red(rgb) / 255f; - float green = (float) FastColor.ARGB32.green(rgb) / 255f; - float blue = (float) FastColor.ARGB32.blue(rgb) / 255f; - renderShape(poseStack, consumer, state.getShape(level, pos, CollisionContext.of(entity)), - (double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ, - red, green, blue, 1F); + var rendererCfg = ConfigHolder.INSTANCE.client.renderer; + int rgb = 0; + boolean doRenderColoredOutline = false; + + // spotless:off + // if it's translucent and a material block, always do the colored outline + MaterialEntry materialEntry = gtceu$getTranslucentBlockMaterial(state, pos); + if (!materialEntry.isEmpty()) { + doRenderColoredOutline = true; + rgb = materialEntry.material().getMaterialRGB(); + } else if (level.getBlockEntity(pos) instanceof IMachineBlockEntity mbe) { + if (rendererCfg.coloredTieredMachineOutline && mbe.getMetaMachine() instanceof ITieredMachine tiered) { + doRenderColoredOutline = true; + rgb = GTValues.VCM[tiered.getTier()]; + } + } else if (rendererCfg.coloredWireOutline && level.getBlockEntity(pos) instanceof CableBlockEntity cbe) { + doRenderColoredOutline = true; + rgb = GTValues.VCM[GTUtil.getTierByVoltage(cbe.getNodeData().getVoltage())]; + } + + VoxelShape blockShape = state.getShape(level, pos, CollisionContext.of(entity)); + // spotless:on + if (doRenderColoredOutline) { + float red = FastColor.ARGB32.red(rgb) / 255f; + float green = FastColor.ARGB32.green(rgb) / 255f; + float blue = FastColor.ARGB32.blue(rgb) / 255f; + renderShape(poseStack, consumer, blockShape, + pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ, + red, green, blue, 1f); return; } - var blockShape = state.getShape(level, pos); - var materialNeighbor = false; - for (int dY = -1; dY <= 1; dY++) { - for (int dX = -1; dX <= 1; dX++) { - for (int dZ = -1; dZ <= 1; dZ++) { - if (level.getBlockState(pos.offset(dX, dY, dZ)).getBlock() instanceof MaterialBlock) { - materialNeighbor = true; - break; - } - } + BlockPos.MutableBlockPos mutable = pos.mutable(); + for (BlockPos o : GTUtil.NON_CORNER_NEIGHBOURS) { + BlockPos offset = mutable.setWithOffset(pos, o); + if (!gtceu$getTranslucentBlockMaterial(level.getBlockState(offset), offset).isEmpty()) { + renderShape(poseStack, consumer, blockShape, + pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ, + 0, 0, 0, 1f); + return; } } - renderShape(poseStack, consumer, blockShape, - (double) pos.getX() - camX, (double) pos.getY() - camY, (double) pos.getZ() - camZ, - 0, 0, 0, materialNeighbor ? 1f : 0.4f); + original.call(instance, poseStack, consumer, entity, camX, camY, camZ, pos, state); + } + + @Unique + private @NotNull MaterialEntry gtceu$getTranslucentBlockMaterial(BlockState state, BlockPos pos) { + BakedModel blockModel = minecraft.getBlockRenderer().getBlockModel(state); + ModelData modelData = level.getModelDataManager().getAt(pos); + if (modelData == null) modelData = ModelData.EMPTY; + gtceu$modelRandom.setSeed(state.getSeed(pos)); + if (blockModel.getRenderTypes(state, gtceu$modelRandom, modelData).contains(RenderType.translucent())) { + return ChemicalHelper.getMaterialEntry(state.getBlock()); + } + return MaterialEntry.NULL_ENTRY; } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java index 3e5ba62f0a5..712c7c45fd9 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.core.mixins; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; -import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.MultiPlayerGameMode; @@ -31,7 +30,7 @@ public class MultiPlayerGameModeMixin { if (minecraft.player == null || minecraft.level == null || !ToolHelper.hasBehaviorsTag(mainHandItem) || - ToolHelper.getAoEDefinition(mainHandItem) == AoESymmetrical.none() || + ToolHelper.getAoEDefinition(mainHandItem).isZero() || minecraft.player.isShiftKeyDown() || !mainHandItem.isCorrectToolForDrops(minecraft.level.getBlockState(pos))) return; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index b48c184c47c..f4792a1520d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; import net.minecraft.ChatFormatting; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -40,6 +41,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; +import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.datafixers.util.Pair; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -58,6 +60,16 @@ public class GTUtil { public static final Direction[] DIRECTIONS = Direction.values(); + @SuppressWarnings("UnstableApiUsage") + public static final ImmutableList NON_CORNER_NEIGHBOURS = Util.make(() -> { + var builder = ImmutableList.builderWithExpectedSize(18); + BlockPos.betweenClosedStream(-1, -1, -1, 1, 1, 1) + .filter((pos) -> (pos.getX() == 0 || pos.getY() == 0 || pos.getZ() == 0) && !pos.equals(BlockPos.ZERO)) + .map(BlockPos::immutable) + .forEach(builder::add); + return builder.build(); + }); + private static final Object2IntMap RVN = new Object2IntArrayMap<>(GTValues.VN, GTValues.ALL_TIERS); /** From 40ce3493e0f05b229406e3fc4f0d29ad017df940 Mon Sep 17 00:00:00 2001 From: nutant <65939836+nutant233@users.noreply.github.com> Date: Fri, 27 Jun 2025 14:35:23 +0800 Subject: [PATCH 075/270] Fix Multiblock Tanks functioning when unformed (#3271) --- .../multiblock/electric/MultiblockTankMachine.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java index 5130572eacf..b84bf2bf1b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/MultiblockTankMachine.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -18,6 +19,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -67,6 +69,15 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play return InteractionResult.PASS; // Otherwise let MetaMachineBlock.use() open the UI } + @Override + @Nullable + public IFluidHandlerModifiable getFluidHandlerCap(@Nullable Direction side, boolean useCoverCapability) { + if (isFormed) { + return super.getFluidHandlerCap(side, useCoverCapability); + } + return null; + } + ///////////////////////////////////// // *********** GUI ***********// ///////////////////////////////////// From 82f725e5f817fff48fda4e9f97276b1975099a6d Mon Sep 17 00:00:00 2001 From: nutant <65939836+nutant233@users.noreply.github.com> Date: Fri, 27 Jun 2025 21:21:55 +0800 Subject: [PATCH 076/270] Fast ingredient (#3270) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../trait/NotifiableItemStackHandler.java | 3 +- .../recipe/ingredient/FluidIngredient.java | 28 ++++--------- .../ingredient/IntCircuitIngredient.java | 8 +--- .../recipe/ingredient/SizedIngredient.java | 42 +++++++++++++------ 4 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index 94d4159cfa4..4ae1cf6af96 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -110,7 +110,8 @@ public static List handleRecipe(IO io, GTRecipe recipe, List { dynamic -> FluidIngredient.fromJson(dynamic.convert(JsonOps.INSTANCE).getValue()), ingredient -> new Dynamic<>(JsonOps.INSTANCE, ingredient.toJson())); - public static final FluidIngredient EMPTY = new FluidIngredient(Stream.empty(), 0, null); + public static final FluidIngredient EMPTY = new FluidIngredient(new Value[0], 0, null); public FluidIngredient.Value[] values; @Nullable public FluidStack[] stacks; @@ -43,15 +43,15 @@ public class FluidIngredient implements Predicate { private CompoundTag nbt; private boolean changed = true; - public FluidIngredient(Stream empty, int amount, @Nullable CompoundTag nbt) { - this.values = empty.toArray(Value[]::new); + protected FluidIngredient(Value[] values, int amount, @Nullable CompoundTag nbt) { + this.values = values; this.amount = amount; this.nbt = nbt; } public static FluidIngredient fromValues(Stream stream, int amount, @Nullable CompoundTag nbt) { - FluidIngredient ingredient = new FluidIngredient(stream, amount, nbt); + FluidIngredient ingredient = new FluidIngredient(stream.toArray(Value[]::new), amount, nbt); return ingredient.isEmpty() ? EMPTY : ingredient; } @@ -79,7 +79,7 @@ public JsonElement toJson() { } public FluidIngredient copy() { - return new FluidIngredient(Arrays.stream(this.values).map(Value::copy), this.amount, + return new FluidIngredient(values, this.amount, this.nbt == null ? null : this.nbt.copy()); } @@ -262,13 +262,11 @@ private static FluidIngredient.Value valueFromJson(JsonObject json) { throw new JsonParseException("A fluid ingredient entry needs either a tag or a fluid"); } - public static interface Value { + public interface Value { - public Collection getFluids(); + Collection getFluids(); - public JsonObject serialize(); - - public Value copy(); + JsonObject serialize(); } public static class TagValue implements Value { @@ -296,11 +294,6 @@ public JsonObject serialize() { return jsonObject; } - @Override - public Value copy() { - return new TagValue(this.tag); - } - @Override public int hashCode() { return tag.hashCode(); @@ -327,11 +320,6 @@ public JsonObject serialize() { return jsonObject; } - @Override - public Value copy() { - return new FluidValue(this.fluid); - } - @Override public int hashCode() { return fluid.hashCode(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java index 5ce690bc587..9b77d167875 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java @@ -60,10 +60,6 @@ public ItemStack[] getItems() { return stacks; } - public IntCircuitIngredient copy() { - return new IntCircuitIngredient(this.configuration); - } - @Override public JsonElement toJson() { JsonObject json = new JsonObject(); @@ -87,13 +83,13 @@ public static IntCircuitIngredient fromJson(JsonObject json) { @Override public @NotNull IntCircuitIngredient parse(FriendlyByteBuf buffer) { int configuration = buffer.readVarInt(); - return new IntCircuitIngredient(configuration); + return circuitInput(configuration); } @Override public @NotNull IntCircuitIngredient parse(JsonObject json) { int configuration = json.get("configuration").getAsInt(); - return new IntCircuitIngredient(configuration); + return circuitInput(configuration); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java index c6a23b6337f..0c195723fa5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java @@ -1,6 +1,9 @@ package com.gregtechceu.gtceu.api.recipe.ingredient; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; +import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; @@ -30,11 +33,21 @@ public class SizedIngredient extends Ingredient { protected final Ingredient inner; protected ItemStack[] itemStacks = null; private boolean changed = true; + @Getter + private final boolean isEmpty; + private final Value value; protected SizedIngredient(Ingredient inner, int amount) { super(Stream.empty()); this.amount = amount; this.inner = inner; + this.isEmpty = inner.isEmpty(); + if (isEmpty || inner.getClass() != Ingredient.class) { + this.value = null; + } else { + var values = ((IngredientAccessor) inner).getValues(); + this.value = values.length == 1 ? values[0] : null; + } } protected SizedIngredient(@NotNull TagKey tag, int amount) { @@ -68,14 +81,9 @@ public static Ingredient copy(Ingredient ingredient) { return copy(intProviderIngredient); } - var copied = SizedIngredient.create(sizedIngredient.inner, sizedIngredient.amount); - if (sizedIngredient.itemStacks != null) { - copied.itemStacks = Arrays.stream(sizedIngredient.itemStacks).map(ItemStack::copy) - .toArray(ItemStack[]::new); - } - return copied; + return SizedIngredient.create(sizedIngredient.inner, sizedIngredient.amount); } else if (ingredient instanceof IntCircuitIngredient circuit) { - return circuit.copy(); + return circuit; } else if (ingredient instanceof IntProviderIngredient intProviderIngredient) { var copied = IntProviderIngredient.of(intProviderIngredient.inner, intProviderIngredient.countProvider); if (intProviderIngredient.itemStacks != null) { @@ -111,6 +119,14 @@ public static SizedIngredient fromJson(JsonObject json) { @Override public boolean test(@Nullable ItemStack stack) { + if (stack == null) return false; + if (this.isEmpty) return stack.isEmpty(); + + if (this.value instanceof TagValueAccessor tagValue) { + return stack.is(tagValue.getTag()); + } else if (this.value instanceof ItemValueAccessor itemValue) { + return ItemStack.isSameItem(stack, itemValue.getItem()); + } return inner.test(stack); } @@ -140,11 +156,6 @@ public void setAmount(int amount) { return inner.getStackingIds(); } - @Override - public boolean isEmpty() { - return inner.isEmpty(); - } - @Override public int hashCode() { int result = amount; @@ -152,6 +163,13 @@ public int hashCode() { return result; } + public static Ingredient getInner(Ingredient ingredient) { + if (ingredient instanceof SizedIngredient sizedIngredient) { + return sizedIngredient.inner; + } + return ingredient; + } + public static final IIngredientSerializer SERIALIZER = new IIngredientSerializer<>() { @Override From cc555432e3885684f73c1fc9dd7393e9b623615b Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Sat, 28 Jun 2025 10:45:26 -0400 Subject: [PATCH 077/270] Remove the simulated circuit inventory from the Pattern Buffer (#3285) --- .../multiblock/part/ItemBusPartMachine.java | 2 ++ .../machine/MEPatternBufferPartMachine.java | 20 ++++--------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 80eba890fad..a793eab1d81 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -41,6 +41,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; +import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -61,6 +62,7 @@ public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinct protected TickableSubscription autoIOSubs; @Nullable protected ISubscription inventorySubs; + @Getter(AccessLevel.PROTECTED) private boolean hasCircuitSlot = true; @Getter @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index 72af850138a..a70e5889f16 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -115,11 +115,6 @@ public void setItemDirect(int slotIndex, ItemStack stack) { @DescSynced // Maybe an Expansion Option in the future? a bit redundant for rn. Maybe Packdevs want to add their own // version. private final CustomItemStackHandler patternInventory = new CustomItemStackHandler(MAX_PATTERN_COUNT); - // DO NOT remove this and use a default circuitInventory. It will cause the circuit inventory to vanish entirely and - // crash clients as well as cause unintended behaviors. - @Getter - @Persisted - protected final NotifiableItemStackHandler circuitInventorySimulated; @Getter @Persisted @@ -159,9 +154,6 @@ public MEPatternBufferPartMachine(IMachineBlockEntity holder, Object... args) { this.internalInventory[i] = new InternalSlot(); } getMainNode().addService(ICraftingProvider.class, this); - this.circuitInventorySimulated = new NotifiableItemStackHandler(this, 1, IO.IN, IO.NONE) - .setFilter(IntCircuitBehaviour::isIntegratedCircuit) - .shouldSearchContent(false); this.shareInventory = new NotifiableItemStackHandler(this, 9, IO.IN, IO.NONE); this.shareTank = new NotifiableFluidTank(this, 9, 8 * FluidType.BUCKET_VOLUME, IO.IN, IO.NONE); this.internalRecipeHandler = new InternalSlotRecipeHandler(this, internalInventory); @@ -188,11 +180,6 @@ public List getRecipeHandlers() { return internalRecipeHandler.getSlotHandlers(); } - @Override - public NotifiableItemStackHandler getCircuitInventory() { - return getCircuitInventorySimulated(); - } - @Override public boolean isWorkingEnabled() { return true; @@ -286,8 +273,8 @@ public void attachConfigurators(ConfiguratorPanel configuratorPanel) { configuratorPanel.attachConfigurators(new ButtonConfigurator( new GuiTextureGroup(GuiTextures.BUTTON, GuiTextures.REFUND_OVERLAY), this::refundAll) .setTooltips(List.of(Component.translatable("gui.gtceu.refund_all.desc")))); - if (isCircuitSlotEnabled()) { - configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventorySimulated.storage)); + if (isHasCircuitSlot() && isCircuitSlotEnabled()) { + configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventory.storage)); } configuratorPanel.attachConfigurators(new FancyInvConfigurator( shareInventory.storage, Component.translatable("gui.gtceu.share_inventory.title")) @@ -404,7 +391,8 @@ public PatternContainerGroup getTerminalGroup() { Component.literal(customName), Collections.emptyList()); } else { - ItemStack circuitStack = circuitInventorySimulated.storage.getStackInSlot(0); + ItemStack circuitStack = isHasCircuitSlot() ? circuitInventory.storage.getStackInSlot(0) : + ItemStack.EMPTY; int circuitConfiguration = circuitStack.isEmpty() ? -1 : IntCircuitBehaviour.getCircuitConfiguration(circuitStack); From 3c13c1e2b1aeb26138c8c28ecb9ad25fc3ea443d Mon Sep 17 00:00:00 2001 From: Zorbatron <46525467+Zorbatron@users.noreply.github.com> Date: Sat, 28 Jun 2025 11:07:39 -0400 Subject: [PATCH 078/270] Fix iTNT dropping itself after being broken (#3286) --- .../common/block/explosive/GTExplosiveBlock.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java index 9a5a379dca2..b9b33f4dd09 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/explosive/GTExplosiveBlock.java @@ -24,11 +24,14 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.storage.loot.LootParams; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collections; import java.util.List; import javax.annotation.ParametersAreNonnullByDefault; @@ -141,6 +144,18 @@ public void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldS } } + @Override + public List getDrops(BlockState state, LootParams.Builder params) { + if (explodeOnMine) { + Entity player = params.getOptionalParameter(LootContextParams.THIS_ENTITY); + if (player != null && !player.isShiftKeyDown()) { + return Collections.emptyList(); + } + } + + return super.getDrops(state, params); + } + @Override public void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, BlockPos neighborPos, boolean movedByPiston) { From 854ec9b14a0cec5772bbc9ff744a7601cfe3071b Mon Sep 17 00:00:00 2001 From: Spicierspace153 Date: Sat, 28 Jun 2025 13:23:57 -0600 Subject: [PATCH 079/270] fix magnetic tools crashing the server when `drops` is immutable (#3288) --- .../gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java index 4c7ea817002..9dc9039ad1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java @@ -36,6 +36,7 @@ import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -135,6 +136,7 @@ public static List onHarvestDrops(Player player, ItemStack tool, Serv } } if (behaviorTag.getBoolean(ToolHelper.RELOCATE_MINED_BLOCKS_KEY)) { + drops = new ArrayList<>(drops); Iterator dropItr = drops.iterator(); while (dropItr.hasNext()) { ItemStack dropStack = dropItr.next(); From a3219f035db5dd194a33a5eb162c9120e548fd67 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sat, 28 Jun 2025 22:07:34 +0200 Subject: [PATCH 080/270] Edit gitattribute text tag to auto (#3289) --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 8f038291eac..cafaa26b057 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ # Set the default behavior, in case people don't have core.autocrlf set. -* text=autolf +* text=auto # Explicitly declare text files you want to always be normalized and converted # to native line endings on checkout. From db6fe320b03ddfe7897c314021315bb12ae1ff4b Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sat, 28 Jun 2025 22:29:56 +0200 Subject: [PATCH 081/270] Fix cover behavior on busses and hatches (#3287) --- src/generated/resources/assets/gtceu/lang/en_ud.json | 5 ++++- src/generated/resources/assets/gtceu/lang/en_us.json | 3 +++ .../java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java | 6 +++--- .../gregtechceu/gtceu/api/machine/MachineDefinition.java | 3 +++ .../gtceu/api/registry/registrate/MachineBuilder.java | 3 +++ .../api/registry/registrate/MultiblockMachineBuilder.java | 6 ++++++ .../java/com/gregtechceu/gtceu/common/data/GTMachines.java | 5 +++++ .../gtceu/common/data/machines/GTMachineUtils.java | 3 ++- 8 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 9d75e520590..83019a4b669 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1734,6 +1734,8 @@ "config.gtceu.option.casingsPerCraft": "ʇɟɐɹƆɹǝԀsbuısɐɔ", "config.gtceu.option.cleanMultiblocks": "sʞɔoןqıʇןnWuɐǝןɔ", "config.gtceu.option.client": "ʇuǝıןɔ", + "config.gtceu.option.coloredTieredMachineOutline": "ǝuıןʇnOǝuıɥɔɐWpǝɹǝı⟘pǝɹoןoɔ", + "config.gtceu.option.coloredWireOutline": "ǝuıןʇnOǝɹıMpǝɹoןoɔ", "config.gtceu.option.compat": "ʇɐdɯoɔ", "config.gtceu.option.debug": "bnqǝp", "config.gtceu.option.debugWorldgen": "uǝbpןɹoMbnqǝp", @@ -3194,7 +3196,8 @@ "gtceu.multiblock.cracker.description": "˙sʇuɐıɹɐʌ pǝʞɔɐɹƆ ɹıǝɥʇ oʇuı ןǝnℲ ʎʌɐǝH puɐ ʇɥbıꞀ buıuɹnʇ ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʇıu∩ buıʞɔɐɹƆ ןıO ǝɥ⟘", "gtceu.multiblock.cracking_unit.energy": "%s%% :ǝbɐs∩ ʎbɹǝuƎ", "gtceu.multiblock.data_bank.description": "˙sǝןnpoW ɐʇɐᗡ uo ɐʇɐp ɥɔɹɐǝsǝɹ xǝןdɯoɔ ǝɹoɯ pɐǝɹ oʇ sǝuıꞀ ʎןqɯǝssⱯ sǝןqɐuǝ ʇı 'ʎןןɐuoıʇıppⱯ ˙sǝuıꞀ ʎןqɯǝssⱯ ǝןdıʇןnɯ uǝǝʍʇǝq ɐʇɐᗡ ɥɔɹɐǝsǝᴚ ǝuıꞀ ʎןqɯǝssⱯ buıɹɐɥs ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ʞuɐᗺ ɐʇɐᗡ ǝɥ⟘", - "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ + "gtceu.multiblock.data_bank.providing": "˙ɐʇɐp buıpıʌoɹԀ", + "gtceu.multiblock.dimension": "%sx%sx%sɹ§ :suoısuǝɯıᗡǝ§", "gtceu.multiblock.dimensions.0": " :suoısuǝɯıᗡ", "gtceu.multiblock.dimensions.1": " %s :ɹ§ɥʇdǝᗡן§6§ '%s :ɹ§ʇɥbıǝHן§ɐ§ '%s :ɹ§ɥʇpıMן§ɔ§ ", "gtceu.multiblock.distillation_tower.description": "˙uoıʇısod ʎuɐ uı spınןɟ ʇɹǝsuı puɐ sɯǝʇı ʇndʇno uɐɔ ɹǝʎɐן ɯoʇʇoq ǝɥ⟘ ˙ǝuo puoɔǝs ǝɥʇ ɯoɹɟ buıʇɹɐʇs 'ɥɔʇɐɥ ʇndʇno ǝuo ʎןʇɔɐxǝ ǝʌɐɥ ʇsnɯ ɹǝʎɐן ɥɔɐƎ ˙sʇɔnpoɹdʎq ɹıǝɥʇ ɟo ǝɯos puɐ ןıO ɟo sǝdʎʇ snoıɹɐʌ ǝɥʇ buıןןıʇsıp ɹoɟ pǝsn ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ɐ sı ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ ǝɥ⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 6f6f9945c57..da94075e462 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1734,6 +1734,8 @@ "config.gtceu.option.casingsPerCraft": "casingsPerCraft", "config.gtceu.option.cleanMultiblocks": "cleanMultiblocks", "config.gtceu.option.client": "client", + "config.gtceu.option.coloredTieredMachineOutline": "coloredTieredMachineOutline", + "config.gtceu.option.coloredWireOutline": "coloredWireOutline", "config.gtceu.option.compat": "compat", "config.gtceu.option.debug": "debug", "config.gtceu.option.debugWorldgen": "debugWorldgen", @@ -3195,6 +3197,7 @@ "gtceu.multiblock.cracking_unit.energy": "Energy Usage: %s%%", "gtceu.multiblock.data_bank.description": "The Data Bank is a multiblock structure used for sharing Assembly Line Research Data between multiple Assembly Lines. Additionally, it enables Assembly Lines to read more complex research data on Data Modules.", "gtceu.multiblock.data_bank.providing": "Providing data.", + "gtceu.multiblock.dimension": "§eDimensions: §r%sx%sx%s", "gtceu.multiblock.dimensions.0": "Dimensions: ", "gtceu.multiblock.dimensions.1": " §c§lWidth§r: %s, §a§lHeight§r: %s, §9§lDepth§r: %s ", "gtceu.multiblock.distillation_tower.description": "The Distillation Tower is a multiblock structure used for distilling the various types of Oil and some of their byproducts. Each layer must have exactly one output hatch, starting from the second one. The bottom layer can output items and insert fluids in any position.", diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index 2cfcd5a12c6..1480c9170b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; @@ -100,8 +99,9 @@ public void onChanged() { @MustBeInvokedByOverriders public boolean canAttach() { var machine = MetaMachine.getMachine(coverHolder.getLevel(), coverHolder.getPos()); - return machine == null || !machine.hasFrontFacing() || coverHolder.getFrontFacing() != attachedSide || - machine instanceof IMultiController; + return machine == null || + (machine.getDefinition().isAllowCoverOnFront() || !machine.hasFrontFacing() || + coverHolder.getFrontFacing() != attachedSide); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index af582a118cf..fb27d294c06 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -112,6 +112,9 @@ public class MachineDefinition implements Supplier { @Getter @Setter private Supplier appearance; + @Getter + @Setter + private boolean allowCoverOnFront; @Nullable @Getter @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 494c19de82f..a15b9334a93 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -151,6 +151,8 @@ public class MachineBuilder extends Builde @Setter private boolean regressWhenWaiting = true; + @Setter + private boolean allowCoverOnFront = false; @Setter private Supplier appearance; @Getter // getter for KJS @@ -379,6 +381,7 @@ public DEFINITION register() { definition.setOnWaiting(this.onWaiting); definition.setAfterWorking(this.afterWorking); definition.setRegressWhenWaiting(this.regressWhenWaiting); + definition.setAllowCoverOnFront(this.allowCoverOnFront); if (renderer == null) { renderer = () -> new MachineRenderer(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 4d0ea6177c9..f5ccba661d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -88,6 +88,7 @@ protected MultiblockMachineBuilder(Registrate registrate, String name, super(registrate, name, MultiblockMachineDefinition::createDefinition, metaMachine::apply, blockFactory, itemFactory, blockEntityFactory); allowExtendedFacing(true); + allowCoverOnFront(true); } public static MultiblockMachineBuilder createMulti(Registrate registrate, String name, @@ -382,6 +383,11 @@ public MultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) return (MultiblockMachineBuilder) super.allowExtendedFacing(allowExtendedFacing); } + @Override + public MultiblockMachineBuilder allowCoverOnFront(boolean allowCoverOnFront) { + return (MultiblockMachineBuilder) super.allowCoverOnFront(allowCoverOnFront); + } + @Override @HideFromJS public MultiblockMachineDefinition register() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 0472182791d..835490172ae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -656,6 +656,7 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) + .allowCoverOnFront(true) .register(), ALL_TIERS); @@ -669,6 +670,7 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) + .allowCoverOnFront(true) .register(), ALL_TIERS); @@ -870,6 +872,7 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", 4)) + .allowCoverOnFront(true) .register(); public static final MachineDefinition STEAM_EXPORT_BUS = REGISTRATE @@ -881,6 +884,7 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", 4)) + .allowCoverOnFront(true) .register(); public static final MachineDefinition STEAM_HATCH = REGISTRATE @@ -891,6 +895,7 @@ public class GTMachines { .tooltips(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", SteamHatchPartMachine.INITIAL_TANK_CAPACITY), Component.translatable("gtceu.machine.steam.steam_hatch.tooltip")) + .allowCoverOnFront(true) .register(); public static final MachineDefinition COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 2ce5c99e36f..5013700ff5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -199,7 +199,8 @@ public static MachineDefinition[] registerFluidHatches(String name, String displ .rotationState(RotationState.ALL) .overlayTieredHullRenderer(model) .abilities(abilities) - .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")); + .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")) + .allowCoverOnFront(true); if (slots == 1) { builder.tooltips(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", From 4db0fef3afa6968c1e7c2b9317cab775c7b80caa Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 29 Jun 2025 01:27:41 +0300 Subject: [PATCH 082/270] add material armors (#2656) Co-authored-by: Ghostipedia <46772882+Ghostipedia@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_ud.json | 4 + .../resources/assets/gtceu/lang/en_us.json | 4 + .../api/data/chemical/material/Material.java | 8 + .../material/properties/ArmorProperty.java | 223 ++++++++++++++++++ .../properties/MaterialProperties.java | 15 +- .../material/properties/PropertyKey.java | 9 +- .../gtceu/api/item/tool/ToolHelper.java | 11 + .../renderer/item/ArmorItemRenderer.java | 49 ++++ .../gtceu/common/data/GTItems.java | 1 + .../gtceu/common/data/GTMaterialItems.java | 49 ++++ .../data/materials/ElementMaterials.java | 3 + .../data/materials/FirstDegreeMaterials.java | 5 + .../UnknownCompositionMaterials.java | 2 +- .../gtceu/common/item/armor/GTArmorItem.java | 76 ++++++ .../common/item/armor/GTDyeableArmorItem.java | 20 ++ .../gregtechceu/gtceu/core/MixinHelpers.java | 23 +- .../core/mixins/HumanoidArmorLayerMixin.java | 84 +++++++ .../gtceu/core/mixins/ModelManagerMixin.java | 2 + .../gtceu/data/lang/LangHandler.java | 6 + .../gtceu/data/pack/GTDynamicDataPack.java | 11 +- .../data/pack/GTDynamicResourcePack.java | 11 +- .../gtceu/data/pack/GTPackSource.java | 9 +- .../recipe/generated/ToolRecipeHandler.java | 30 ++- .../integration/kjs/GregTechKubeJSPlugin.java | 2 + .../assets/gtceu/models/item/armor/boots.json | 68 ++++++ .../gtceu/models/item/armor/chestplate.json | 68 ++++++ .../gtceu/models/item/armor/helmet.json | 68 ++++++ .../gtceu/models/item/armor/leggings.json | 68 ++++++ .../armor/trimmed/boots_amethyst_trim.json | 7 + .../item/armor/trimmed/boots_copper_trim.json | 7 + .../armor/trimmed/boots_diamond_trim.json | 7 + .../armor/trimmed/boots_emerald_trim.json | 7 + .../item/armor/trimmed/boots_gold_trim.json | 7 + .../item/armor/trimmed/boots_iron_trim.json | 7 + .../item/armor/trimmed/boots_lapis_trim.json | 7 + .../armor/trimmed/boots_netherite_trim.json | 7 + .../item/armor/trimmed/boots_quartz_trim.json | 7 + .../armor/trimmed/boots_redstone_trim.json | 7 + .../trimmed/chestplate_amethyst_trim.json | 7 + .../armor/trimmed/chestplate_copper_trim.json | 7 + .../trimmed/chestplate_diamond_trim.json | 7 + .../trimmed/chestplate_emerald_trim.json | 7 + .../armor/trimmed/chestplate_gold_trim.json | 7 + .../armor/trimmed/chestplate_iron_trim.json | 7 + .../armor/trimmed/chestplate_lapis_trim.json | 7 + .../trimmed/chestplate_netherite_trim.json | 7 + .../armor/trimmed/chestplate_quartz_trim.json | 7 + .../trimmed/chestplate_redstone_trim.json | 7 + .../item/armor/trimmed/chestplate_trim.json | 7 + .../armor/trimmed/helmet_amethyst_trim.json | 7 + .../armor/trimmed/helmet_copper_trim.json | 7 + .../armor/trimmed/helmet_diamond_trim.json | 7 + .../armor/trimmed/helmet_emerald_trim.json | 7 + .../item/armor/trimmed/helmet_gold_trim.json | 7 + .../item/armor/trimmed/helmet_iron_trim.json | 7 + .../item/armor/trimmed/helmet_lapis_trim.json | 7 + .../armor/trimmed/helmet_netherite_trim.json | 7 + .../armor/trimmed/helmet_quartz_trim.json | 7 + .../armor/trimmed/helmet_redstone_trim.json | 7 + .../armor/trimmed/leggings_amethyst_trim.json | 7 + .../armor/trimmed/leggings_copper_trim.json | 7 + .../armor/trimmed/leggings_diamond_trim.json | 7 + .../armor/trimmed/leggings_emerald_trim.json | 7 + .../armor/trimmed/leggings_gold_trim.json | 7 + .../armor/trimmed/leggings_iron_trim.json | 7 + .../armor/trimmed/leggings_lapis_trim.json | 7 + .../trimmed/leggings_netherite_trim.json | 7 + .../armor/trimmed/leggings_quartz_trim.json | 7 + .../armor/trimmed/leggings_redstone_trim.json | 7 + .../gtceu/textures/item/armor/boots.png | Bin 0 -> 167 bytes .../gtceu/textures/item/armor/chestplate.png | Bin 0 -> 197 bytes .../gtceu/textures/item/armor/helmet.png | Bin 0 -> 157 bytes .../gtceu/textures/item/armor/leggings.png | Bin 0 -> 172 bytes .../textures/models/armor/metal_layer_1.png | Bin 0 -> 15093 bytes .../models/armor/metal_layer_1_overlay.png | Bin 0 -> 13043 bytes .../textures/models/armor/metal_layer_2.png | Bin 0 -> 13558 bytes .../models/armor/metal_layer_2_overlay.png | Bin 0 -> 6028 bytes src/main/resources/gtceu.mixins.json | 1 + 78 files changed, 1189 insertions(+), 28 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java create mode 100644 src/main/resources/assets/gtceu/models/item/armor/boots.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/chestplate.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/helmet.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/leggings.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json create mode 100644 src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/boots.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/chestplate.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/helmet.png create mode 100644 src/main/resources/assets/gtceu/textures/item/armor/leggings.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png create mode 100644 src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 83019a4b669..e661761f8b2 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3695,6 +3695,10 @@ "item.gtceu.aluminium_fluid_cell": "ןןǝƆ ɯnıuıɯnןⱯ %s", "item.gtceu.anvil_casting_mold": ")ןıʌuⱯ( pןoW buıʇsɐƆ", "item.gtceu.anvil_casting_mold.tooltip": "sןıʌuⱯ buıdɐɥs ɹoɟ pןoWㄥ§", + "item.gtceu.armor.boots": "sʇooᗺ %s", + "item.gtceu.armor.chestplate": "ǝʇɐןdʇsǝɥƆ %s", + "item.gtceu.armor.helmet": "ʇǝɯןǝH %s", + "item.gtceu.armor.leggings": "sbuıbbǝꞀ %s", "item.gtceu.ash_dust": "sǝɥsⱯ", "item.gtceu.axe_extruder_mold.tooltip": "sǝxⱯ buıʞɐɯ ɹoɟ ǝdɐɥS ɹǝpnɹʇxƎㄥ§", "item.gtceu.ball_casting_mold": ")ןןɐᗺ( pןoW buıʇsɐƆ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index da94075e462..97fd3bacf35 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3695,6 +3695,10 @@ "item.gtceu.aluminium_fluid_cell": "%s Aluminium Cell", "item.gtceu.anvil_casting_mold": "Casting Mold (Anvil)", "item.gtceu.anvil_casting_mold.tooltip": "§7Mold for shaping Anvils", + "item.gtceu.armor.boots": "%s Boots", + "item.gtceu.armor.chestplate": "%s Chestplate", + "item.gtceu.armor.helmet": "%s Helmet", + "item.gtceu.armor.leggings": "%s Leggings", "item.gtceu.ash_dust": "Ashes", "item.gtceu.axe_extruder_mold.tooltip": "§7Extruder Shape for making Axes", "item.gtceu.ball_casting_mold": "Casting Mold (Ball)", diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 7b1947a8799..dd38d4f5cb2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -1061,6 +1061,14 @@ public Builder toolStats(ToolProperty toolProperty) { return this; } + /** + * Use {@link ArmorProperty.Builder} to create an Armor Property. + */ + public Builder armorStats(ArmorProperty armorProperty) { + properties.setProperty(PropertyKey.ARMOR, armorProperty); + return this; + } + public Builder rotorStats(int power, int efficiency, float damage, int durability) { properties.setProperty(PropertyKey.ROTOR, new RotorProperty(power, efficiency, damage, durability)); return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java new file mode 100644 index 00000000000..19fa4ef8cf2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java @@ -0,0 +1,223 @@ +package com.gregtechceu.gtceu.api.data.chemical.material.properties; + +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; + +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import com.google.common.base.Preconditions; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Range; + +import java.util.EnumMap; +import java.util.Map; +import java.util.function.Supplier; + +// TODO document +public class ArmorProperty implements IMaterialProperty { + + @Setter + @Range(from = 0, to = Integer.MAX_VALUE) + private int durabilityMultiplier; + @Setter + private Map protectionValues; + @Setter + private int enchantability; + private Supplier sound; + @Setter + private float toughness; + @Setter + private float knockbackResistance; + + @Nullable + @Setter + private Supplier<@NotNull Ingredient> repairIngredient; + private boolean noRepair; + + @Setter + private String name = "gtceu:metal"; + @Getter + @Setter + private CustomTextureGetter customTextureGetter = (stack, entity, slot, overlay) -> null; + + @Getter + @Setter + private boolean dyeable; + + @Getter + private final ArmorMaterial armorMaterial; + private Material material; + + public ArmorProperty(int durabilityMultiplier, int[] protectionValues) { + this.durabilityMultiplier = durabilityMultiplier; + this.protectionValues = Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + for (int i = 0; i < ArmorItem.Type.values().length; i++) { + map.put(ArmorItem.Type.values()[i], protectionValues[i]); + } + }); + this.sound = GTMemoizer.memoize(() -> SoundEvents.ARMOR_EQUIP_IRON); + this.toughness = 0; + this.knockbackResistance = 0; + this.armorMaterial = new ArmorMaterial(); + } + + public void setSound(Supplier sound) { + this.sound = GTMemoizer.memoize(sound); + } + + @Override + public void verifyProperty(MaterialProperties properties) { + if (this.material == null) { + this.material = properties.getMaterial(); + } + if (this.repairIngredient == null && !noRepair) { + this.repairIngredient = GTMemoizer + .memoize(() -> Ingredient.of(ChemicalHelper.getTag(TagPrefix.plate, material))); + } + } + + public static class Builder { + + private final ArmorProperty armorProperty; + + public static ArmorProperty.Builder of(int durabilityMultiplier, int[] protectionValues) { + Preconditions.checkArgument(protectionValues != null && protectionValues.length == 4, + "protectionValues must have 4 entries!"); + return new ArmorProperty.Builder(durabilityMultiplier, protectionValues); + } + + private Builder(int durabilityMultiplier, int[] protectionValues) { + armorProperty = new ArmorProperty(durabilityMultiplier, protectionValues); + } + + public ArmorProperty.Builder unbreakable() { + armorProperty.durabilityMultiplier = 0; + return this; + } + + public ArmorProperty.Builder enchantability(int enchantability) { + armorProperty.enchantability = enchantability; + return this; + } + + public ArmorProperty.Builder protectionValue(ArmorItem.Type type, int value) { + armorProperty.protectionValues.put(type, value); + return this; + } + + public ArmorProperty.Builder protectionValues(Map protectionValues) { + armorProperty.protectionValues = protectionValues; + return this; + } + + public ArmorProperty.Builder repairIngredient(@Nullable Supplier<@NotNull Ingredient> repairIngredient) { + if (repairIngredient == null) { + armorProperty.repairIngredient = null; + armorProperty.noRepair = true; + } else { + armorProperty.repairIngredient = GTMemoizer.memoize(repairIngredient); + } + return this; + } + + public ArmorProperty.Builder toughness(float toughness) { + armorProperty.toughness = toughness; + return this; + } + + public ArmorProperty.Builder knockbackResistance(float knockbackResistance) { + armorProperty.knockbackResistance = knockbackResistance; + return this; + } + + public ArmorProperty.Builder dyeable(boolean dyeable) { + armorProperty.dyeable = dyeable; + return this; + } + + public ArmorProperty.Builder customTexture(ArmorProperty.@NotNull CustomTextureGetter textureGetter) { + armorProperty.customTextureGetter = textureGetter; + return this; + } + + public ArmorProperty build() { + return armorProperty; + } + } + + @FunctionalInterface + public interface CustomTextureGetter { + + ResourceLocation getCustomTexture(ItemStack stack, Entity entity, EquipmentSlot slot, boolean overlay); + } + + public class ArmorMaterial implements net.minecraft.world.item.ArmorMaterial { + + private static final EnumMap HEALTH_FUNCTION_FOR_TYPE = Util + .make(new EnumMap<>(ArmorItem.Type.class), (map) -> { + map.put(ArmorItem.Type.BOOTS, 13); + map.put(ArmorItem.Type.LEGGINGS, 15); + map.put(ArmorItem.Type.CHESTPLATE, 16); + map.put(ArmorItem.Type.HELMET, 11); + }); + + @Override + public int getDurabilityForType(ArmorItem.@NotNull Type type) { + return HEALTH_FUNCTION_FOR_TYPE.get(type) * ArmorProperty.this.durabilityMultiplier; + } + + @Override + public int getDefenseForType(ArmorItem.@NotNull Type type) { + return ArmorProperty.this.protectionValues.get(type); + } + + @Override + public int getEnchantmentValue() { + return ArmorProperty.this.enchantability; + } + + @Override + public @NotNull SoundEvent getEquipSound() { + return ArmorProperty.this.sound.get(); + } + + @Override + public @NotNull Ingredient getRepairIngredient() { + return ArmorProperty.this.repairIngredient != null ? + ArmorProperty.this.repairIngredient.get() : + Ingredient.EMPTY; + } + + @Override + public @NotNull String getName() { + return ArmorProperty.this.name; + } + + @Override + public float getToughness() { + return ArmorProperty.this.toughness; + } + + @Override + public float getKnockbackResistance() { + return ArmorProperty.this.knockbackResistance; + } + + public ArmorProperty getArmorProperty() { + return ArmorProperty.this; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java index f559c304f95..fe535cf43c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java @@ -3,6 +3,9 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import lombok.Getter; +import lombok.Setter; + import java.util.*; public class MaterialProperties { @@ -17,6 +20,8 @@ public static void addBaseType(PropertyKey baseTypeKey) { } private final Map, IMaterialProperty> propertyMap; + @Getter + @Setter private Material material; public MaterialProperties() { @@ -37,6 +42,8 @@ public boolean hasProperty(PropertyKey key) { public void setProperty(PropertyKey key, IMaterialProperty value) { if (value == null) throw new IllegalArgumentException("Material Property must not be null!"); + if (!key.getType().isInstance(value)) + throw new IllegalArgumentException("Material Property must be of the same type as the property key!"); if (hasProperty(key)) throw new IllegalArgumentException("Material Property " + key.toString() + " already registered!"); propertyMap.put(key, value); @@ -81,14 +88,6 @@ public void verify() { } } - public void setMaterial(Material material) { - this.material = material; - } - - public Material getMaterial() { - return material; - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java index 4778fe9182c..7ed5ab0e053 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material.properties; +import lombok.Getter; + public class PropertyKey { public static final PropertyKey BLAST = new PropertyKey<>("blast", BlastProperty.class); @@ -16,6 +18,7 @@ public class PropertyKey { ItemPipeProperties.class); public static final PropertyKey ORE = new PropertyKey<>("ore", OreProperty.class); public static final PropertyKey TOOL = new PropertyKey<>("tool", ToolProperty.class); + public static final PropertyKey ARMOR = new PropertyKey<>("armor", ArmorProperty.class); public static final PropertyKey ROTOR = new PropertyKey<>("rotor", RotorProperty.class); public static final PropertyKey WIRE = new PropertyKey<>("wire", WireProperties.class); public static final PropertyKey WOOD = new PropertyKey<>("wood", WoodProperty.class); @@ -25,7 +28,9 @@ public class PropertyKey { // Empty property used to allow property-less Materials without removing base type enforcement public static final PropertyKey EMPTY = new PropertyKey<>("empty", EmptyProperty.class); + @Getter private final String key; + @Getter private final Class type; public PropertyKey(String key, Class type) { @@ -33,10 +38,6 @@ public PropertyKey(String key, Class type) { this.type = type; } - protected String getKey() { - return key; - } - protected T constructDefault() { try { return type.newInstance(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index e0631f37856..03fe648f7b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -42,6 +42,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tiers; @@ -173,6 +174,16 @@ public static ItemStack get(GTToolType toolType, Material material) { return ItemStack.EMPTY; } + public static ItemStack getArmor(ArmorItem.Type armorType, Material material) { + if (material.hasProperty(PropertyKey.ARMOR)) { + var entry = GTMaterialItems.ARMOR_ITEMS.get(material, armorType); + if (entry != null) { + return entry.get().getDefaultInstance(); + } + } + return ItemStack.EMPTY; + } + public static boolean is(ItemStack stack, GTToolType toolType) { return getToolTypes(stack).contains(toolType); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java new file mode 100644 index 00000000000..aff929e7ac2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/item/ArmorItemRenderer.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.client.renderer.item; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.Item; + +import com.google.gson.JsonObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +public class ArmorItemRenderer { + + private static final Set MODELS = new HashSet<>(); + + public static void reinitModels() { + for (ArmorItemRenderer model : MODELS) { + // read the base armor model JSON + JsonObject original; + try (BufferedReader reader = Minecraft.getInstance().getResourceManager() + .openAsReader(GTCEu.id("models/item/armor/%s.json".formatted(model.armorType.getName())))) { + original = GsonHelper.parse(reader, true); + } catch (IOException e) { + throw new RuntimeException(e); + } + + GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.item), original); + } + } + + private final Item item; + private final ArmorItem.Type armorType; + + protected ArmorItemRenderer(Item item, ArmorItem.Type armorType) { + this.item = item; + this.armorType = armorType; + } + + public static void create(Item item, ArmorItem.Type armorType) { + MODELS.add(new ArmorItemRenderer(item, armorType)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 4ab51c302ba..def2ddd8337 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -2506,6 +2506,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit public static void init() { GTMaterialItems.generateMaterialItems(); GTMaterialItems.generateTools(); + GTMaterialItems.generateArmors(); } public static NonNullConsumer materialInfo(ItemMaterialInfo materialInfo) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index a1bec68bdd0..eae601945b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -10,7 +10,10 @@ import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; +import com.gregtechceu.gtceu.common.item.armor.GTDyeableArmorItem; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -23,6 +26,7 @@ import com.tterrag.registrate.util.entry.ItemProviderEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.function.Supplier; @@ -31,6 +35,7 @@ import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.TOOL; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; +@SuppressWarnings("UnstableApiUsage") public class GTMaterialItems { // Reference Table Builders @@ -40,6 +45,7 @@ public class GTMaterialItems { // Reference Maps public static final Map> toUnify = new HashMap<>(); public static final Map purifyMap = new HashMap<>(); + static { purifyMap.put(TagPrefix.crushed, TagPrefix.crushedPurified); purifyMap.put(TagPrefix.dustImpure, TagPrefix.dust); @@ -53,6 +59,11 @@ public class GTMaterialItems { .filter(mat -> mat.hasProperty(PropertyKey.TOOL)) .toList(), GTToolType.getTypes().values().stream().toList()); + public static final Table> ARMOR_ITEMS = ArrayTable.create( + GTCEuAPI.materialManager.getRegisteredMaterials().stream() + .filter(mat -> mat.hasProperty(PropertyKey.ARMOR)) + .toList(), + Arrays.asList(ArmorItem.Type.values())); // Material Items public static void generateMaterialItems() { @@ -116,4 +127,42 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis .color(() -> IGTTool::tintColor) .register()); } + + // Material Armors + public static void generateArmors() { + REGISTRATE.creativeModeTab(() -> TOOL); + for (ArmorItem.Type type : ArmorItem.Type.values()) { + for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { + GTRegistrate registrate = registry.getRegistrate(); + for (Material material : registry.getAllMaterials()) { + if (material.hasProperty(PropertyKey.ARMOR)) { + generateArmor(material, type, registrate); + } + } + } + } + } + + private static void generateArmor(final Material material, final ArmorItem.Type type, GTRegistrate registrate) { + var property = material.getProperty(PropertyKey.ARMOR); + if (property.isDyeable()) { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTDyeableArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } else { + ARMOR_ITEMS.put(material, type, registrate + .item("%s_%s".formatted(material.getName(), type.getName()), + p -> new GTArmorItem(property.getArmorMaterial(), type, p, + material, property)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) + .model(NonNullBiConsumer.noop()) + .color(() -> GTArmorItem::tintColor) + .register()); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index 418578a2204..0eac38be8a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -861,6 +862,8 @@ public static void register() { .element(GTElements.Ti) .toolStats(ToolProperty.Builder.of(8.0F, 6.0F, 1536, 3) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(48, new int[] { 4, 9, 7, 4 }) + .enchantability(18).toughness(5.0f).knockbackResistance(0.4f).build()) .rotorStats(130, 115, 3.0f, 1600) .fluidPipeProperties(2426, 150, true) .blast(b -> b.temp(1941, GasTier.MID) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index b7183f1262b..c074c9afe7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -105,6 +106,8 @@ public static void register() { .components(Tin, 1, Copper, 3) .toolStats(ToolProperty.Builder.of(3.0F, 2.0F, 192, 2) .enchantability(18).addTypes(GTToolType.MORTAR).build()) + .armorStats(ArmorProperty.Builder.of(17, new int[] { 3, 7, 6, 2 }) + .enchantability(8).build()) .rotorStats(115, 105, 2.5f, 192) .fluidPipeProperties(1696, 20, true) .buildAndRegister(); @@ -628,6 +631,8 @@ public static void register() { .toolStats(ToolProperty.Builder.of(5.0F, 3.0F, 512, 3) .addTypes(GTToolType.MORTAR) .enchantability(14).build()) + .armorStats(ArmorProperty.Builder.of(19, new int[] { 3, 7, 5, 2 }) + .enchantability(14).build()) .rotorStats(130, 105, 3.0f, 512) .fluidPipeProperties(1855, 50, true) .cableProperties(V[EV], 2, 2) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index 29e17eec943..a0021d08e57 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -358,7 +358,7 @@ public static void register() { Netherite = new Material.Builder(GTCEu.id("netherite")) .ingot().color(0x4b4042).secondaryColor(0x474447) - .toolStats(ToolProperty.Builder.of(10.0F, 14.0F, 900, 4) + .toolStats(ToolProperty.Builder.of(10.0F, 4.0F, 2032, 4) .enchantability(21).build()) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java new file mode 100644 index 00000000000..f6943a7d0ed --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorItem.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + +import com.lowdragmc.lowdraglib.Platform; + +import net.minecraft.client.color.item.ItemColor; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Objects; + +public class GTArmorItem extends ArmorItem { + + public final Material material; + public final ArmorProperty armorProperty; + + public GTArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties); + this.material = material; + this.armorProperty = armorProperty; + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } + + @OnlyIn(Dist.CLIENT) + public static ItemColor tintColor() { + return (itemStack, index) -> { + // TODO utilize 2nd material color + if (index == 0 && itemStack.getItem() instanceof GTArmorItem item) { + Material material = item.material; + return material.getLayerARGB(index); + } + return -1; + }; + } + + @Override + public @NotNull String getDescriptionId() { + return "item.gtceu.armor." + type.getName(); + } + + @Override + public @NotNull Component getDescription() { + return Component.translatable(getDescriptionId(), material.getLocalizedName()); + } + + @Override + public Component getName(ItemStack stack) { + return this.getDescription(); + } + + @Override + public @Nullable String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + ResourceLocation id = armorProperty.getCustomTextureGetter() + .getCustomTexture(stack, entity, slot, Objects.equals(type, "overlay")); + if (id != null) { + return id.toString(); + } + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java new file mode 100644 index 00000000000..ea66da0be66 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTDyeableArmorItem.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.common.item.armor; + +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; + +import com.lowdragmc.lowdraglib.Platform; + +import net.minecraft.world.item.*; + +public class GTDyeableArmorItem extends GTArmorItem implements DyeableLeatherItem { + + public GTDyeableArmorItem(ArmorMaterial armorMaterial, ArmorItem.Type type, Item.Properties properties, + Material material, ArmorProperty armorProperty) { + super(armorMaterial, type, properties, material, armorProperty); + if (Platform.isClient()) { + ArmorItemRenderer.create(this, type); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 6da63136d27..767d7d05aca 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -28,10 +28,7 @@ import net.minecraft.data.loot.BlockLootSubProvider; import net.minecraft.data.loot.packs.VanillaBlockLoot; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagEntry; -import net.minecraft.tags.TagKey; -import net.minecraft.tags.TagLoader; +import net.minecraft.tags.*; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -51,6 +48,7 @@ import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.common.Tags; import net.minecraftforge.versions.forge.ForgeVersion; import com.tterrag.registrate.util.entry.BlockEntry; @@ -101,6 +99,23 @@ public static void generateGTDynamicTags(Map { + map.forEach((type, item) -> { + if (item != null) { + var entry = new TagLoader.EntryWithSource(TagEntry.element(item.getId()), + GTValues.CUSTOM_TAG_SOURCE); + tagMap.computeIfAbsent(ItemTags.TRIMMABLE_ARMOR.location(), $ -> new ArrayList<>()) + .add(entry); + tagMap.computeIfAbsent(switch (type) { + case HELMET -> Tags.Items.ARMORS_HELMETS.location(); + case CHESTPLATE -> Tags.Items.ARMORS_CHESTPLATES.location(); + case LEGGINGS -> Tags.Items.ARMORS_LEGGINGS.location(); + case BOOTS -> Tags.Items.ARMORS_BOOTS.location(); + }, $ -> new ArrayList<>()).add(entry); + } + }); + }); + if (!GTCEu.Mods.isAE2Loaded()) { return; } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java new file mode 100644 index 00000000000..3d06992bd66 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java @@ -0,0 +1,84 @@ +package com.gregtechceu.gtceu.core.mixins; + +import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; + +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.util.FastColor; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ArmorItem; + +import com.llamalad7.mixinextras.sugar.Local; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +/// Have to do the ModifyArg calls separately, thanks forge. +/// see [Connector#383](https://github.com/Sinytra/Connector/discussions/383) for an explanation. +@Mixin(HumanoidArmorLayer.class) +public abstract class HumanoidArmorLayerMixin, + A extends HumanoidModel> extends RenderLayer { + + public HumanoidArmorLayerMixin(RenderLayerParent renderer) { + super(renderer); + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 6) + private float gtceu$modifyArmorTintR(float oldR, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float r = FastColor.ARGB32.red(argb) / 255.0F; + + if (oldR != 1.0f) { + return (r + oldR) / 2.0f; + } else { + return r; + } + } + return oldR; + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 7) + private float gtceu$modifyArmorTintsG(float oldG, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float g = FastColor.ARGB32.green(argb) / 255.0F; + + if (oldG != 1.0f) { + return (g + oldG) / 2.0f; + } else { + return g; + } + } + return oldG; + } + + @ModifyArg(method = "renderArmorPiece", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + index = 8) + private float gtceu$modifyArmorTintsB(float oldB, @Local ArmorItem armorItem) { + if (armorItem instanceof GTArmorItem gtArmorItem) { + int argb = gtArmorItem.material.getMaterialARGB(); + float b = FastColor.ARGB32.blue(argb) / 255.0F; + + if (oldB != 1.0f) { + return (b + oldB) / 2.0f; + } else { + return b; + } + } + return oldB; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java index af815c8acd0..3f955ad6765 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.OreBlockRenderer; import com.gregtechceu.gtceu.client.renderer.block.SurfaceRockRenderer; +import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; import com.gregtechceu.gtceu.common.data.GTModels; @@ -38,6 +39,7 @@ public abstract class ModelManagerMixin { TagPrefixItemRenderer.reinitModels(); OreBlockRenderer.reinitModels(); ToolItemRenderer.reinitModels(); + ArmorItemRenderer.reinitModels(); SurfaceRockRenderer.reinitModels(); GTModels.registerMaterialFluidModels(); GTCEu.LOGGER.info("GregTech Model loading took {}ms", System.currentTimeMillis() - startTime); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index c287ad4926e..65c92a3f365 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -264,6 +264,12 @@ public static void init(RegistrateLangProvider provider) { provider.add("item.gtceu.tool.aoe.rows", "Rows"); provider.add("item.gtceu.tool.aoe.columns", "Columns"); provider.add("item.gtceu.tool.aoe.layers", "Layers"); + + provider.add("item.gtceu.armor.helmet", "%s Helmet"); + provider.add("item.gtceu.armor.chestplate", "%s Chestplate"); + provider.add("item.gtceu.armor.leggings", "%s Leggings"); + provider.add("item.gtceu.armor.boots", "%s Boots"); + provider.add("item.gtceu.turbine_rotor.tooltip", "Turbine Rotors for your power station"); provider.add("metaitem.clipboard.tooltip", "Can be written on (without any writing Instrument). Right-click on Wall to place, and Shift-Right-Click to remove"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index 5c41d831090..08b085c8ff7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -96,10 +96,11 @@ public static void writeJson(ResourceLocation id, @Nullable String subdir, Path try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); // assume JSON + // assume JSON + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".json"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { @@ -118,9 +119,13 @@ public static void addAdvancement(ResourceLocation loc, JsonObject obj) { @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } + @Nullable @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.SERVER_DATA) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index c8fac72b802..dd6e1d11645 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -125,10 +125,11 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, try { Path file; if (subdir != null) { - file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); // assume PNG + // assume PNG + file = parent.resolve(id.getNamespace()).resolve(subdir).resolve(id.getPath() + ".png"); } else { - file = parent.resolve(id.getNamespace()).resolve(id.getPath()); // assume the file type is also appended - // if a full path is given. + // assume the file type is also appended if a full path is given. + file = parent.resolve(id.getNamespace()).resolve(id.getPath()); } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { @@ -142,9 +143,13 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, @Nullable @Override public IoSupplier getRootResource(String... elements) { + if (elements.length > 0 && elements[0].equals("pack.png")) { + return () -> GTCEu.class.getResourceAsStream("/icon.png"); + } return null; } + @Nullable @Override public IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.CLIENT_RESOURCES) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java index 93a1b1ba633..49fc310cc5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTPackSource.java @@ -22,7 +22,7 @@ public class GTPackSource implements RepositorySource { @Override public void loadPacks(Consumer onLoad) { - onLoad.accept(Pack.readMetaAndCreate(name, + onLoad.accept(readMetaAndCreate(name, Component.literal(name), true, resources::apply, @@ -30,4 +30,11 @@ public void loadPacks(Consumer onLoad) { position, PackSource.BUILT_IN)); } + + public static Pack readMetaAndCreate(String id, Component title, boolean required, Pack.ResourcesSupplier resources, + PackType packType, Pack.Position defaultPosition, PackSource packSource) { + Pack.Info info = Pack.readPackInfo(id, resources); + return info != null ? Pack.create(id, title, required, resources, + info, packType, defaultPosition, true, packSource) : null; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java index 4a1a4454eb7..d67aa688dd7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/ToolRecipeHandler.java @@ -20,6 +20,7 @@ import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -139,6 +140,19 @@ private static void processTool(@NotNull Consumer provider, @Not addToolRecipe(provider, material, GTToolType.WRENCH, false, "PhP", " P ", " P ", 'P', plate); + + addArmorRecipe(provider, material, ArmorItem.Type.HELMET, + "PPP", "PhP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.CHESTPLATE, + "PhP", "PPP", "PPP", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.LEGGINGS, + "PPP", "PhP", "P P", + 'P', plate); + addArmorRecipe(provider, material, ArmorItem.Type.BOOTS, + "P P", "PhP", + 'P', plate); } else { GTCEu.LOGGER.info( "Did not find plate for {}, skipping mining hammer, spade, saw, axe, hoe, pickaxe, scythe, shovel, sword, hammer, file, knife, wrench recipes", @@ -178,7 +192,7 @@ private static void processTool(@NotNull Consumer provider, @Not "hDS", "DSD", "SDf", 'S', rod); } else if (!ArrayUtils.contains(softMaterials, material)) { - GTCEu.LOGGER.info("Did not find rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find rod for " + material.getName() + ", skipping wirecutter, butchery knife, screwdriver, crowbar recipes"); } } @@ -273,12 +287,12 @@ private static void processElectricTool(@NotNull Consumer provid .EUt(8L * voltageMultiplier) .save(provider); } else { - GTCEu.LOGGER.info("Did not find gear for " + material.getName() + + GTCEu.LOGGER.warn("Did not find gear for " + material.getName() + ", skipping gear -> buzzsaw blade recipe"); } } } else { - GTCEu.LOGGER.info("Did not find plate for " + material.getName() + + GTCEu.LOGGER.warn("Did not find plate for " + material.getName() + ", skipping electric drill, chainsaw, wrench, wirecutter, buzzsaw recipe"); } @@ -293,7 +307,7 @@ private static void processElectricTool(@NotNull Consumer provid "fR", " h", 'R', new MaterialEntry(TagPrefix.rodLong, material)); } else { - GTCEu.LOGGER.info("Did not find long rod for " + material.getName() + + GTCEu.LOGGER.warn("Did not find long rod for " + material.getName() + ", skipping electric screwdriver recipe"); } } @@ -333,6 +347,14 @@ public static void addToolRecipe(@NotNull Consumer provider, @No } } + public static void addArmorRecipe(Consumer provider, @NotNull Material material, + @NotNull ArmorItem.Type armor, Object... recipe) { + ItemStack armorStack = ToolHelper.getArmor(armor, material); + if (armorStack.isEmpty()) return; + VanillaRecipeHelper.addShapedRecipe(provider, String.format("%s_%s", armor.getName(), material.getName()), + armorStack, recipe); + } + /** * {@code D} is inferred as the dye key */ diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 368e5c3d559..5373bab3535 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -14,6 +14,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; @@ -275,6 +276,7 @@ public void registerBindings(BindingsEvent event) { event.add("ChemicalHelper", ChemicalHelper.class); event.add("PropertyKey", PropertyKey.class); event.add("ToolProperty", ToolProperty.class); + event.add("ArmorProperty", ArmorProperty.class); event.add("GTToolType", GTToolType.class); // Block/Item related event.add("GTBlocks", GTBlocks.class); diff --git a/src/main/resources/assets/gtceu/models/item/armor/boots.json b/src/main/resources/assets/gtceu/models/item/armor/boots.json new file mode 100644 index 00000000000..caf4a411921 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/boots.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/boots_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/boots_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/boots" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/chestplate.json b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json new file mode 100644 index 00000000000..ff217abcf35 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/chestplate.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/chestplate_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/chestplate_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/chestplate" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/helmet.json b/src/main/resources/assets/gtceu/models/item/armor/helmet.json new file mode 100644 index 00000000000..6e3d5c3efb4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/helmet.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/helmet_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/helmet_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/helmet" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/leggings.json b/src/main/resources/assets/gtceu/models/item/armor/leggings.json new file mode 100644 index 00000000000..6ee6a5ac71e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/leggings.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "gtceu:item/armor/trimmed/leggings_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "gtceu:item/armor/trimmed/leggings_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "gtceu:item/armor/leggings" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json new file mode 100644 index 00000000000..25d16818453 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json new file mode 100644 index 00000000000..9f4c71ebd96 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json new file mode 100644 index 00000000000..6ea0a1c0222 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json new file mode 100644 index 00000000000..b15e8d80836 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json new file mode 100644 index 00000000000..8880c5a66f0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json new file mode 100644 index 00000000000..de0f2b79f18 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json new file mode 100644 index 00000000000..8ce74625dbb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json new file mode 100644 index 00000000000..d869b31d15a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json new file mode 100644 index 00000000000..0dcdfa4814a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json new file mode 100644 index 00000000000..e4fbfce9ee4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/boots_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/boots", + "layer1": "minecraft:trims/items/boots_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json new file mode 100644 index 00000000000..78d0cf6cf0a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json new file mode 100644 index 00000000000..fcf381af88b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json new file mode 100644 index 00000000000..6def9114201 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json new file mode 100644 index 00000000000..18ee353632f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json new file mode 100644 index 00000000000..c05c67c2dc2 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json new file mode 100644 index 00000000000..a31e2fa111d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json new file mode 100644 index 00000000000..462bd53c69e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json new file mode 100644 index 00000000000..6bc6a74f240 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json new file mode 100644 index 00000000000..3eb4cb6bda1 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json new file mode 100644 index 00000000000..5e48b9c2e2a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json new file mode 100644 index 00000000000..a31e2fa111d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/chestplate_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/chestplate", + "layer1": "minecraft:trims/items/chestplate_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json new file mode 100644 index 00000000000..1b15271bba8 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json new file mode 100644 index 00000000000..6a2a49f8fbc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json new file mode 100644 index 00000000000..9c1ebe3e92a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json new file mode 100644 index 00000000000..d784a90311e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json new file mode 100644 index 00000000000..999ce64c164 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json new file mode 100644 index 00000000000..ab469002334 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json new file mode 100644 index 00000000000..a58ca08f05b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json new file mode 100644 index 00000000000..5ccaee60d70 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json new file mode 100644 index 00000000000..bb73b1d52e5 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json new file mode 100644 index 00000000000..a7297780124 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/helmet_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/helmet", + "layer1": "minecraft:trims/items/helmet_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json new file mode 100644 index 00000000000..ba591e9d89b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_amethyst" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json new file mode 100644 index 00000000000..111a7c16445 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_copper" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json new file mode 100644 index 00000000000..5a35a6afa74 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_diamond" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json new file mode 100644 index 00000000000..6375b5ea9f6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_emerald" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json new file mode 100644 index 00000000000..922984b1e2b --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_gold" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json new file mode 100644 index 00000000000..a8dfdf244fe --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_iron" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json new file mode 100644 index 00000000000..eeae6c4baf4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_lapis" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json new file mode 100644 index 00000000000..4ecf36097ca --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_netherite" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json new file mode 100644 index 00000000000..fdf13010303 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_quartz" + } +} diff --git a/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json new file mode 100644 index 00000000000..dfb4cd01b99 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/armor/trimmed/leggings_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/armor/leggings", + "layer1": "minecraft:trims/items/leggings_trim_redstone" + } +} diff --git a/src/main/resources/assets/gtceu/textures/item/armor/boots.png b/src/main/resources/assets/gtceu/textures/item/armor/boots.png new file mode 100644 index 0000000000000000000000000000000000000000..e96092450e6c490afc45cc5fbbdbf156c4f0ae4c GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`d7dtgAr`0aPB_SWK!L+GwpnpT zPpw3!@*XQ(S0DeTF89Z79_QM>`e)u0hTScZc)8bF@Mm;97egphN!m7b3CAxl zwy}s-=mcCXc5KsP-1Ta$jM&6>hPxp`_D>%29H~voYibDdK6R#O=KWKw4!`za?>cA( PasY#;tDnm{r-UW|KLbAN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png b/src/main/resources/assets/gtceu/textures/item/armor/chestplate.png new file mode 100644 index 0000000000000000000000000000000000000000..bab56132b9b0b0f83aadc5f7038b72baf72c85eb GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J)SO(Ar`%7Ctl<{pupp@yUp2R z=5LEh#yfhS*2Z{d2VL6F#@Dm6+QX(VK4fjF?bnme&Sx#JODMCn$Vu@Ay#Jf_;LO~w zISjl4ZjK_`ip4KP?e3{smC{`C;U2@%DXkJNj-35}Zs!;L6m!eFz_f)~|IFv$1`o}K v?S-wu41e3ybq!edI0hwhf1JWqzgAdoLDE*X8w~e>?qcwC^>bP0l+XkKY8px= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/helmet.png b/src/main/resources/assets/gtceu/textures/item/armor/helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..085dd585e5ac00a01a6f5674f99ea112b59bffbb GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`DV{ElAr`0KPPoWGB9Qsti@(p|gRQ5_K1t)%p|=ZMLek=1y<58KYSVFv)(1-%zDIMi zNU&KP&hc)Tcb|{r_H8Do;&|?;`UATCEK}CBX-u@=F0)>1!T-00FJA%eWAJqKb6Mw< G&;$U&sX7V( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/armor/leggings.png b/src/main/resources/assets/gtceu/textures/item/armor/leggings.png new file mode 100644 index 0000000000000000000000000000000000000000..5ea16729f49f101fa629d19c90132b169c594685 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`#hxyXAr`04PHN<2P~>opUaUB0 zO|8sI$vejmH}eZsm9evP%0KyBJ@x9XLRXhrE5EOMnj{!F&AwlhHM89ZJ6T-G@yGywoCoIol7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3680965237886bf10218470831006ee14029c5a GIT binary patch literal 15093 zcmeHN2{_c-`yZu}B}uO6rio;0j2Xr-*Noke?7DQdjhVs3%!sjMt7s$IlqJ%hrP6{H zl!R8@N@)|4q9U@D-T!;0jyu-uJwp_nh~9&l#faZK)EX z@}ejdO2W$0%n|uELLRipMC9|}-iY-ml=#IEXIGvhEeP%F$Ms& z1wTEJSi&ULZ&fv%8 zRsE7{D2dnBCs}8yk^48uXL*OI-Wl+2tftfz?kjrV8{NwN7}wWbyy}*J*GF%wlWns< zzH1czSkXPbXrc4frcHx`rs0@(H_t^c(+FLB_)Z7GA>8I=^+55Zd0s(oc3H}6s!f)E zBpC)ewiMlSQ*HGa>P~B`i9KGw*R7^^Q&8)D!sRBz8MWQTZ7pH$`@44EX?|7s=n+Hj zWl%(KKRxwH(}c1+#@vjsh~AA4H?=kV@Kf={jon;Z+kKB}YlylLeZ_0CTWh+VmhF4i zH}L(*+S?ts`+93b6T&}~YyM<;o^(;S>vUO1^s2qexjbA_LR$G6MoieU-7f1Y$E%ln z8ti>^s*?2lsqSM|N_F7grc>jkquj1CDSE_IL*kY@+4*%FmfyX_Ni_EB9hY5yS)s5m zw=9j>q+P!F#HsdN@qmOIW}6Hnk`2RGa5qHewKFeVx}w?m(x-f?Ux??7&5sBCRvJth z3=SWX&Q=gURCs)9rrz0FwUFE*{5nIU(1{k=#EI;*laqa=tf{f56@-m$_j<*LpYeb4 z)Ax%}88nj6OOnXr8P%nhvLe`1YPQxLmS;UPwrs81*f&>u`({dyxNfQZiVaii?50eZ zlJ}av8Fw^^9!)s=(#aBcWLNx7_gj=n@pN1L#+}}rvP64#E9FGTm8{A|b``ON$|cq( z@(2%o%AW=2DNwVBN>I$5!Vr5^Y(zu*?lq_5hhnci|i&b2<~1{d$B zIR2fFOI)-Wi><7}UikP~4Tc$)cA-Z|yw{+;+@q6xt>V#R(S4>h~m9if%{5dXpPl*b-F(y6i{xstPRqgPq$5oa6 zm6B^h2(8&oC3Ls4fdCf+Lf^AvR3e(vlHwrrG%vG$(X$(Y9h z5>|m-HJ$5neVp*}=DY3J*{4J}jUR40uRD<^Zl&>IGeNJcwZ`KerIEei+4c8gnI$D; zvzZ4=Z!TYQyH=t*#XC(j$@$p2brDA-lBO2#aGRKLy!p{G?e(_fp4z&pSYEB$mXXst zSB-Mfr%^VH=be1I;R<=jeo;Mc4}Pc9lV$ZrwbOhsO}(5vJW21crSQA0KZLX=1iO{W z`$UpEW*EmP&hV}&oqspLTuSPabz-uD__|`7?JVCkkrVz=8Y_rV_a~jl`O?*l_i9lv zMNcjsSKU@q<~cF;LE<*o8B3Pcuiq39(rQI{THk!>sFi`lit+c=r5~nEsY*1r3{ouZ zjcgQ&e;$~AWjFb4_!(^cv^mzXGP+eV^Y7${wlxHw3Y2gYt;}4Km$rnE!Fv&Mc3Fw$ zE9Rle*No2R$R@{!OXn=sK0kSDPLmu{%#{+PWZj}t*H52aXsyyqD{wGN_Z_I4SCBeM zBAFpJ#pm_ug(lltl6x z{ZWgiCW~*lcm1A}-D^D7rK7D*GP~PMxa3A?Ua*gRrSFF0ZNlRYc1={*m`&RL{(ww( zc#2l~c?HL^e7nU3>Bjhdo0AnEHAi$>_YR0A4ic8!oU3MdX`j9*#iet*%7;3Ky3EP< zsmoRvhzQw{97LCz`l>K1b~J>Vcn^e2HiS#pHFw|oKqUv|_HD@0)5m$L=TzUQ3sQM* z=~8y;u;q+swdPs=F=|KNRXFa;>@~N&@PuY`f7|@k(o5fFk#9>ph;q26B4I3h6O|d@ zc)sH&@`=?7jxt6Txs;5eJpt0Gdve6hpR6Jts3{L@8#-dKhueP8;bO+}E&cag9NA|& z4&SMFd|-T_e8<&9r(zZR`T15>Mh1R9^qVxygcmDSrcG!&vDi}B!TeS5JOxT?kK3L- zYku}jIHF3Jw*9TXwL``VvFwn`*Hqt(4?Fc>`W2a!@2!O5+Y?Jq+pDTNPEHA^5IVB` zr3uNmKQ>}PmFhC3{;o9AHJe?MTYfMcnm?$}ks@KgcJ~X%o(t;|2QnmAVv3FSJbt;* z(rfF$P8S2$S!J=)^5?o7_S)RhZNJPa;n2MeqU6l%*u*{SEoW16q;@rs-?7^}jmVTq z=_d5Ni4Jl3Dn~nx2|r}mnFYyQ{t)9;-)qvkzxDoI*Xm2OwGkGwSe($D(rJAe;)dKF ziu!%*Zk2Xr6YJ#X8A>5LihCVJ`gYaHY!PP+l^XZX-#?xB#%|5`x%kwkg`6GNE-2TC zcvPAfX@n^Dq#cc!DsQ0c96C;TeNxOs5#r9ZZmrvs)@-~{YwA8IH?J0bdTW;Cz}!sC z`N#jQKw5L4TMR_7DrzY$A_K0%e)p_rxXWUxMX*h#MX{x+=>EkSQ zM(>)o$cr2g$-6&>mzF!r+^~1Ci;c*eveh~BLQ8x;%Rl(sGTWVZJE=W~j=qj;Y%@+5 z>!NPlPV7i==t{;S@4=+m7Boj{BgfULkF93=VxM7$(yU~sc{-e;7o0_X2X0+5N_-@n z-M>}+Ek^c8`SthP8@p@@3!bIhd7Qgr(30f1*R+dAN)3#=0Itahjdr#Q+;#%R%8@eflofwk{+1XK@`q|mLy2}nG_L3!} zozWu~lX-*cyi!yl;0qBVMNajT}nsPG&UegaJLrlvXb(bS8}$v3|Kpo9VoW9lUAz z)O>}u+vFhAkBR+9H(w^3RysABhMlZRSWzeQre*0=x2I2iot49u4pI)hFSJYAMvYK8 zzS+W&`e@z8_IG*%ahDa%9W+@-Z1co*d&K9=G1*-~cOu<<|9q;){#)_Z4{}{zB}z(p zJz_}tO?{`VVLv6EbkwU|d{CDW9a-LgY0JRj^sMosk54^ZYSeB0l$k3hZoVok%S$Ks z!uE4-runV6U&QdFEnsJ`-|$c$ua(&H6c$C49?=h^?Ci_C^2Xfb_?n#Eo?Zt`OM*D& zc8$>`Uj47B>E0wimV&u|42?TYBORNd96@Nm8BHWim`!4>xo4#$M|iJZuiaU-q9jPQps1tVS zUHUZkDHVm#4|(Ydq0U1OBRkX_Tqbv&Rt=4)qW*B|e8-MbrK^ql+d678oEY7O6^_yY zvz9WNxQ!N3)W*R13g>Q+E>>-;c^Ia1?%X+v@e`C61#jbBu_d0law)Cp(9x>?*Qc7& zwiu8mzST>qI59rqkV(NKp;bpSq!qG3&BRq#@CeT#j*_XV>*S{I@3eE>G}*sLyD+DFbOfhX7Xt0V73p(pA<}1 z&HavXzFNcVa$VBfp|rVDB8e};X!gVv-oTRX^|DZ zcsySc78?{4q#2~G$@TNZ;`H_Pv08X69*;o~82{BA9xWKd@mB&SKG`s1`qTYbzC0F} zg9bKf?%V(#Sy2&@qoIFnUmKfY^Bn)rQ9$B>4W{{Gahh6KHXAFb;m zlg0MsYazk@6_UsD_$64s@(oD%bOaqi)Q9c<3JtmQ!3fI6hGfR22LSi1%*cvhd=i68 zXE8|pDpQ-TL)6h_U}!`d5u>B)p@VV9Yv~~$bR8O=u1#d<=?a*#;`sAu96A%2LX2y& z5IcH$cpO8YPQws%h&YUnwz~(0hNHP-h}wF1Jr8{vlYr9_Fk$D%LRKZsN6;%^ih-D7 z;&t4$m;?rf;6bBdbeIHvjJv)*9^>wTL!8ml(skEm@J%u3Bnz$|n}$p$i%s)nVtqND zd;thJ$=KeCtcchAG%CNx-iOBXKopQ1U~w4SApc*$&MY?5iAMwR#1XX#cx}9nmcAZA zUyq3Y1@t4+&mUQfz$#8lQ~Og$z{HRcI!I_~V5K4k_!gXOV$EHp?Tw85uI zw`BPvIep--d^iLH0X@Sg7F-B~C64AYA98V^)e|%oB zu%9)`V$fyk>g&2|6EO@ACLW`sr;V&9eLY=_yN-^w2UAyDSD)d*XEkiypXvwWV1uQ>!7{of#eD!%`P>%VaQsR;Zj@PDi8zi|Dj2>dDV zf2-?n3zz6GmnkL(IROPBSEZudIDO=rHPPLgYKDC0qK3ZvZX5-vP4=~1?2kf;NrOiS zwI_83(m9D|Wn(_+wYa<#YI4TO89yR_kV09R89RGT5JIDCYlRTVAC~<5{GqO{E4GsJt&6_t5C72>oQd0c>;^JaH9M}g15N>R29LD|=&Jn`EDd-q{&4E{*jEoHG z>C>lt#|sJy_!v!1O;mGp^DuEp3SgU>nucGKAW(90a(o@QGM+tq#;>H>O#vku-QVBBwAzWPN5UZ&ta z0bilz<>ma~j26WIWl+9)03aE#GQf%e1+0p1O&t35|NeW-6#$nooISW9eyhmAa|;;% z?^sD=-UYxQAb-K`4(k7eVs37Z($Ucwe)IelpT;~2gP8}19PohGmQCt-TPAdTEBAP$=OGkAc7c1P-s z))vH$^|l#v4}cE;(Kk5jgJUur804oQVekr6Qc@Z=F&Z9VfDU*-9bh221q&ANa~>D~ zV*nZ02Vi?NIq>02$`_@;9~lBpf(KrdKpk9$fCGRC(1n*NP#=j0eUKEqi~)UkcYr$J zXbp4$7UaKzg2HecVxb(g!OxFVqQ00ZSC@qiS>1ABlx zxHmuof_D`l|B^ezNFAUzTKUTXfX>6)9%zHvgd|4}IuZ}$Bk_W|V{Kw1?ZfuSO&Io% z{1%3J3TFp62#R2PWF24x`=G;c#(=)yjDj}A2-X1}1_bnj0s{$tlYqW_l6;-dae#>6 zE((SLn-<(ffgJ3*unpu84+8=g000&4z;s7Hkhj>98zyjjn0d*K;fcaX5p8_vm zz8s!0Fev=_3pxztKnD5*+rTlHZ_r^t4v-LB1)vYgN8%w4VE)&I|C1Q_l?QA(kT9H4 zNEo!?OaccX9@Iz6HIP>F^78y301O}oen0%Ze1>NRFg_??+&{weL4VT+{}&-Z9{!LC z?1JC(z{Uh~8juHaP=Ip~4;|(U1U>*!xVOOW-y;v?qXiM_eeG|)qi|_LLU85<2Orr7 ub-tzZg8u!cem1hC1L@QN{|oRN;piQgHdS#yh)=TzQY&*?vuu+Uk^cvpN*Lk* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_1_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..8063736e3c8c95bcce808bb7eb411b7cc1c76422 GIT binary patch literal 13043 zcmeI23se(V8pnfJMJg4lwSulpL#rT8GI@~4NB|*JBMoAV7(lI)$pj*KkqiW)pr{nV zY748?wSq`#MP2bxpCCS}b$w84TVKT$5ur*g>RMD(#Jv+xakuBx9MnVG%sE45?)~on ze&6qY_nS-(IZ=^g++4j}X*8OfWUN>QK109>x%2{miwiR5(`Y>_ta1e@!z_@|WKe6g z1VpA835ZD5sA;s+>Za(p{7byPt(W~wJv|_oTEVR7hF-!9ul!%8&K$P1N*i?3W9`WA z-*)3w4F33sdzbDMWE@z!Xxxb6=*rX1lmAn9^2Fv#<<)nq#t2tko^;J`)@;x5&C8*_ ztk^w!Vk^%CANrNE?-aMWeoYAPT232!@y=+&^>&1O=jzB2T5uDsE~@q$#VXK zyDsTdn`W&%ST;U)%;w2wz4!Q^{d8{n@`R+HoX7uUb*gPya?q{+{NYJoe^vFto=ulx z6xXLi^_;@OWzOGC+cCiV&C1f7zf`WhMO#&KY6Qu=$j`s}#nAk{>$Urp{J9z9&vF!wpx9I=DJ&J7N4vA*~z~O zAM&?5hYS0dnx@>Wg0JsBo>K3$AS;?4o}J*nYTlu7k@Ld#zHX^0IbjTy)+HUCw!Bbr zbJqrMpMna{ltRx4KOe=}i^nYYe(raBvHY-b=hlV(wRG1lPCiQ(4*z6y-fn}e;q8{B zz3;E~4;$U*6QA%Q2XFg}m$iQO`VBuWzPhN=gk0V2Jcq7@X@B>04cS(epBS`cthrZS zuS~BZpUl#*%#oq}p|wzD(V_|3MXM5mmgT#D(Erecs-pQuB8zvJyU+e{bE*;7b2sH(EI+fn zZX!>iD>^^SmzNlrK6#&Vm3fWifkHHHTA#ztLHpWfTAOInGUu2xyyMpWAxDNZzt&f0 z^={GM_bTQ8n0<9<`bCe!Gj!{>*M!LMA$t#?GZzb*n@{gb9x~_iOzj{8V+E^WdM|P9 zE9~+)Zz}K!8>bh2^7W|5^j{*O6A{KNlYIYj31jY^*kc)Dep}G2z0!xq)dQ!+TrA5u z@XyjC1>v5ht3x4a;*E9X(Py@0Uz;L4cNV!K&fQlM9-DV0a?|j6tblrG_glevn?8?q zT{UWKmN#L^mW=7WY}ecct6h92#WVWf+PSk&+h96o73Sr(BqblWJPf?SlqsCI^(*;I zuQ5IxE~|8X1HD@utG*C$q_JvZWRIfl(?<($y``wl7M?q>va)W$o3E)d?q*)O);i<< znarLWAwkLHdKTNd!T<6hSEzK@(9#LBclX}5GWElL%B8}hNw>DRw!J0pJW6(pCCZ;qblOj4D^h1yQ(;21G z$MSk}2L-@`nTi>iEC#~V>6o2In91-IAkyK`Z;mj_!P9^#Bg}?m6HbJu5PH(5vxEwN zJl>dW(%QmN;Y>nH=zysi%*uLd$}tjY)Z-Bpf_RP2Xd4A!KV?a3)K6eNq~vZZif}QYk7n;K`JG60wL*&5x=KxJHHAE(6qRM8#IIVXl(Phq)L_2n)Gf z0%qelf+1=F!DbPiq$GMXiRp2Ik^d14ezn9Lv-DODE2;P7lc)WV=39Do+1G8G8e+CemEn2Eqh zgGp{MXhn3&DTo^RxLXP~lnNs;F-8(V6k&5w78_;r<^55bJ35GtFWK&!nAPr&r? z1gIY!3HzvB^IOTl5-7Pi!GaMEp@g{vpAYf?$6>V!5egAZAmAYUr`62{HEF?2#OQdy z5wHRYYGVcYb}W_O)Ap7Gf?5ZF3}&(6C&&bJW=F70s$x8fHjw#$JOXV7ok|QC*WLz7 z7pR2H$EC1?7gcm#;L))TFK`AR?U=+az7AXtTy_z#%h-`!4qSE-u*=wyUC#}d>ywu$ zLJz(HS-`7OI9 z{2{!2flk_$0WNk~zd)~_qqJQix%BMw9H;IcQh)g^@RtW**A{4Lz0*DN_Bnd-QZqot zg=o~-oen!QplhzXcf+p{c4feg=9VrIpq?V#?MY%+25dihrAq*)8q(bW*p&fYiXIH6 zg70pH^rZsmZoyLvYS$L%Y6i5lc2&VK{<#xy`aQ+}egE%jA^g4hUUvU8)c|OK2kp=J zTL1<7nE>2qp&nl^du?9Me9shCSHA$goKPIII0!fhI0!fhI0!fhI0!fhI0!fhI0yg& kKkaB*3qJg*{{?tPAP1Mf^*)^OQ3ho$36B()g-)OQU-hm+8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..581fcb567f9f773bade28582a35bdc8c4421c01e GIT binary patch literal 13558 zcmeHNd032V8=qEfQd(#njEPQ`+1^<)qm^n(MJQ$aeDBP>Q=?`vGc{8oOA05BI>@0! zc8;>QAWIxut`;RlgiiFy(ovKneeW}Q6Z)?6`OfhN-#phfz0dtTzx#fk-|v2w_jOqr zIEmZW1aE@F;rjaecuqy1?&yzTWQhLF%2hSF8ABLBrUqOYHZ1Z^)H-5Vm3VQxV|8(N*7*5`@Q2>Wzt(_ z=3TR=a9w~ab>8C{8#4#IRxplHlDGWC9==KyH?TFy^7^T@Lk%BHf4uKhBiE*(kQ*l| ze>!;;SCo0-?aMi^i&c7&=Vtm`HB>bVw`Q`h^FeoY{}2n|Q*{zq4P7rXGi=YuxD%4( zSvb_O&}!lM-#T6z97ucKIC|#tA^qR->R%6uAD4M}!Hl|B?Jbw%YhHL~K1`b(>(_GO zb@Tk(25wk5ZQ}C1kGEI&U3g(wu+skiqYZ?a1|=p#=M8-DG;h$!*t0fGGpo*@l9%Y` zIj2R&2ul7)9!*&h8vgy%lNO}=^y<*P*YBUnIiHbX?Spr!D==?b-bnIuz4$U>r($N& zoQz zOUTIA;GRJw{zBQ!toF637Q3t(Qi>NR$Pfe83g+VARcGRlGTKTlHV}!yL7S9z>m&9~ zji|)?&UcLP9W^ufn5e2OZ@t3-miRy`ixcHtzV06NFcaqzlGLKP4t*i0E;JIVuJFJY0aRYazF3B_0mxY@YXK(P^=1!)b;0zm; zK-i%#+@MDzgho3wzd1)PTOCe##myT*%9L&Iw9U6J?Xbvyme*m<`~f;@&Qn<@PN8_W zzzcId#GZ%#VC_0Rv#qf$-n)~Y{9ShF2HGF~UTOL4+j#P?cLL*XO!r@1b|G?4NUf>s zQTM9cW5Lz;f_GgIZn+h9wZIS{HBv3Xi`y6IF?o2y<~@u_!{ z8*^+IaTW>IS&mUJ*|E@`tsWd4IOWtsQsMZ#eMb(L1wL4~d}(<`RCsHO#oFzAb1oNF z^eOPM)R)f}7RNd|8$`|DoRj$IcIBB=IJ4F(zr{6Xe>S5w@`P#mlqaF2y2j(G^bl`l zuC25CZ{IoB9Cw{ro8o{!pYfRb@@U@bYVKK)0*=3!RViHhhH>_IcEQ5!7q6vVE4}_O zA*hsoOR(-_z_9%u#OzyR77ur0Mt zBSL**662y1r_Hr52U>NyTeUHl|72T0K=Ek0*|sZC9(xCg`RGr*tOi zO7G~#CpBzcEJrG8QpQIZ+$W7m&lOits)K4v+qdgITfAFOnec1&mdOLn9$4ND)!`@2 zCG~sd2r0Ln)qnK7V3{gpFMG++q>$p6^c62vW#jB?WV2@(=D+X`-;!ft*?;M#x+S8y z&;Rj8e(xG993Oc^F(pXH+UnIB;=o}XGhSiNUb5}Jc`OZl(*t65E`ptal>*IF8 zrId{k%XHJv%|21&ADUrvC4yUR>)7%0m{X1JHlpEa^M_wOJ9}tD=>o4&ibESksXq$N zwXZNfyvg=oc{%Y*na;$`{vvJ-=}6%lum1Ni_W!q$gDGYHHriyLBAqo z#{qoe>HigK%=s}7!Pc62Zw z((YyOfM+!#Bs6SUzjW^hZ6XMIqGP^Cfw$8?zEoPNv&}C~-ZIW>|Cxs?rbU(5*vPzV zxF*?4tS_>T@)EPj$<7>e_x^VG>=Tb1GKl7FJvn{6?hh5t+#`C$sbw%f0#OopNSH|CLVR}OG?5?@xDZ2_0n`B5 z1SDMK6Dvoi#ZC(1$42nk0-~F%iL;u61`s1kn4lI%N)#Nm3sDo7gVsSag-Fmqlo2k( z(11X~1gRV$FvtutmE@%sMMFea6N0l`AmmK-^nMotwOokdN~MfLp{P_UvWiZY%EKr$ zHk(bMLKFxhp$L*9Mxun(B#FWvgy@Rli75DTkxVI)N(dk(%#%hbU5G@qpMcFzEDH$e z4lhx>Qvub3qK0J@8ktHFizz)l6iTmXG|0ON_3EJrLSG0dQxSzUO3p{Tq7jMGzGnyl zzuR9HC6Cn55%4KUBqBzk3UpN32Sajw0|L7}fCOP8u}tHIiv0mnDH6UH>w~$09u1wI z6G7d(<9>j~xNE>DDjG^uP5W)Byfs`*2a5Pn_0Cr*vo#-Sw1PMtD>R1{H zhEbE|1hJT7sWgbmfO>@Tl_-?3gpYtwXmGL!jl*EmX>=!uN#a35ClX^UTS(#|Og71h zK32eEKu#>GfZ8L(WVr}km2hOwS%FXjG!#tZ@tFvfMWT)s@JS3OK7%xt#bc1zOcsMJ zfcR7)jj0JG;B&mCaxsjiQzVAN5QC#Grm%ZRpX3o`jU{qwt+x;L!Pk-+vMHc+;C(vStCMk{ohjCCjx-X*VotMnwpxvC7%D0i+*oC<>lqQHGh+BI@q2E z>_GNG0ec@5>>R-A;Mube*i)uV`Kr$d%@*j_uODvEph19-h9Ib8HfRHN2M334^1#O9 z@u2IgFZv+MKmbs%>>3#vb=#mHv#}L|*%)2}{!0Jo0}^ItX5G^VB-`5BG&ZP%e#{2- zk45Nq{7NgDLlDa-Mi_8uX=&+R5x~YUJp}>nUwhF7q`{SkWf>3xXb04&%xnEf>i(fu9(2sJl1YnDBhZEVkD*#ZL8D-8_|AM|5*Z1UjM8N5B# z*4AoVyu7?L&u7n`;lK|opda{Pc*jNGMV?J0stnW)a_5bR}PEJlvXU|t>jKIT( z4>j|}Ru8sifB+aC%Qo=o4gVzwe;o6ZZ-I{ie`W&`V9WF*2r>wW_aqPEV1zL|78{W7 z4d2^p#C-m)=U*1!#ful3xc~xh-@e5G8{8<^nF6wnkpq1I0}5!ve1Y8?9tie7m)(b+ iHlog>!T$yLFN6HN-Ze&VgF6kteZ3}mW{>~p(tiW>dQThx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png b/src/main/resources/assets/gtceu/textures/models/armor/metal_layer_2_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..97a7a0b25ded4433d3791af3c99889b712402223 GIT binary patch literal 6028 zcmeHLc~leE8lMPOh)_YWMG+aJJhhl)vM&-u3=mW(t1NY4GMSJ7Sxg3qyow7dRggtl zTF@$Pky^2e8@RQ!v?6T*MNtsZ`l{9qi>*Ij{e`!_CPo-}n1|-@U(k z@0ZN13keReCyygT5M&=H5r=`Z5BS2?R^S*?i5-QY;q0`CXd( zMfcO4zqw9Gm>=eNxHaMA!-Dy-4_q!K&+I-#6rTUo=r#GTXUNvBtUN~T?LVI>e~;-Y zG4e8w-*u@Qm7V0h`q%u%2~C&18EKRC3TJG&%i&DNTctjuGSW+vFUX(nu*KR>o}PZd zG`GpwwC8bg2f4G#=j~f3K7Qg`zd$pbe`@2gjJzg!MYQA!vX-hCc`I}5_%7DWlUv`~ z@HlPTlj_@6?{zj!Ikf1ku|ZMz*YxY}2Um1HGd^1PAE%WaU5_%K9EdNN`D5a#m|b@_ z{c)qMP32yS`q9T!ROE)zof>TJz9n9*n0qaXUOOeO?3T)4A1ZPrr~i<6ZAaq zNItC6CR20zm*cLFb0T2!;@10~w+r=r*92=_lXR>@SvNm2Cu4EvttntCre6P9lK<9s zIi~NGdrH(%2!8+!L}QUa=A=K zlhETZff&m=7gOSa3DF6)b`qPY`EeNwtfF_>{1lKiac%V%&W`2VrRR1=RqUFxFEY`& zw&HV-az$k1`Q7c8)~|~UXC+?zK%KpP+CHx8V(eWv<_v!7y$8{arZX7kM{36l;r zO{s}5npPRSh1+)T(=Belf4z5aDX%l@9baXk$6ngPBdvE_%Z>={AH-YswWYLmZ)ml; zTl|OXo~DdgZ%M81vK?z*TBRQ(xpT}aq4 zmeI$~rpPabd-999fBLiYOz$7_pt@`8d)}#XZd~S6wf|VR9VZu4O!(%(bUWjs?0Z(r zVj3>q_`-C~czV)@M|-w5^<$%*3&At2aTj3rc&Mjf*>ca>!pU+mp*cM~!x! z6R^?uMj>*)J+7cxl=m@mcKq6}rq)m!;tJl58s{;+loGc@aD^GL_t8grLeB>Q@h-(7 zF}**nTX)4XD7&}uDD?0p4ngRHs!|EWbgX= z^;hTA?keB%>yL!uU{Z^JVrXpTj<_GLuo_#l6q|n-XI$y#wqOR?UEEwdan*9?vK^N$ zCbmpQPTYhL{+FTyg-!cv7>mA+`Bvt>{@Sd%_J21QLyzB{pO^nZYoYCuo0rmv?=Ci` z2Q2mSU;Vg8ajE2&ckOOuYIlcbW;_gaQ*5e8uUU>P?v~a3-ud*m7VBKjA^UMyAQYLB zfxWk}#xwY1#4YqliF?QO(T9#+L%Is<+Rv@C|76971#MN^1oEv{0-mo6vgdUi zn_aZ#R8#0NlkHF2HY>%c4oLgzanF9?KS*ego1dOYSNB+%O0~O5 zX#wSe-M2PSm^MxH!X@ft!;IugL;N|@hKRH`jC(KzaOgfWE1qiBsshU6yRJDGRnWC3NjO#I-QcEZ`YS_$)N;S!Zh(ZB= z_<8?S+Mu8p^lE*d3P2CK0oBqOG=#2F(FaE83BMFT($}F^M(88J&k#Kf*K3k>819#X ztBFYiDP-7-cx|#S$ub-nM#qzI6@cnNR>q)|0f9jwFCxqm#4A-=OB4`$5Ry>J`^6g6 zH?zkwoPiwy;V*axp`VZ40tTp{AfZ@;C7Zh!C>Bx7`GqnKrj!YLFXb{8lOyF&*>X%y zWivTEsuV$`R5=6XF$IVKXUpXSr~=h`0##$UnF^58lz>OTLwF3fluMO!xoj#Mm&*VJ zk4@$9_-r1ZgW)U=V*thbIwe?@Xwtx5nW!WV2a30iVMc^n>Q(Iz3p6W>yA5V{t7W^TY_jaDcR^d8GmZ ziye$cI9rFKghm&k(Ikl|=1#%p$QSM)u%Toqfr?QA2c!s-Eo3l-Ol|~2AVd%$o9T%# z!9_n_BU8$kz7B2PKCoBsq)U`~kbkMg)Vrs`@g==?y|+n9%VvUM%eD}rSnm+@XbLW~ zo={qFXkX&!1z#D;wR@abR zZ=}E*frnPt|4c4&|HBln2LFIk!K0E+o!kx{vs^;vMfh1BxS%=HUBcLKEFYG7!3jRo z^pa_tVk0wwk3@t8heJL$FM+pO5J@^WKn#5}+)V;*Y_*aYJp_$(GJi=>$z~T|96Lsly2AtzLv2Wb|33w+kk^cf8~z#q=XHSBrg%+) z=WYsRG=(w|d_a3{8+7&v^N5V}_3#Bp^Na77o0G4HSnNBQF$Nr8_5urKB1i$+Bo>SL aO2B_J+GAv&bJb5Qtbu;P;tJomReuAM%x%2@ literal 0 HcmV?d00001 diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 797b5a7e4c0..4e5a21b54a0 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -13,6 +13,7 @@ "GuiGraphicsAccessor", "GuiGraphicsMixin", "GuiHeartTypeMixin", + "HumanoidArmorLayerMixin", "LevelRendererMixin", "ModelManagerMixin", "MultiPlayerGameModeMixin", From 8496266432a98443c4263f3b70d3ab135ffe104b Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Sun, 29 Jun 2025 03:34:29 -0400 Subject: [PATCH 083/270] Refactor parallel logic in pursuit of TPS (#3088) --- .../capability/recipe/EURecipeCapability.java | 117 ++++++-- .../recipe/FluidRecipeCapability.java | 255 ++++++++-------- .../api/capability/recipe/IRecipeHandler.java | 4 - .../recipe/ItemRecipeCapability.java | 276 ++++++++++-------- .../capability/recipe/RecipeCapability.java | 25 +- .../api/machine/SimpleGeneratorMachine.java | 3 +- .../machine/trait/NotifiableFluidTank.java | 18 +- .../trait/NotifiableItemStackHandler.java | 12 + .../gtceu/api/machine/trait/RecipeLogic.java | 16 +- .../gtceu/api/recipe/GTRecipe.java | 31 ++ .../gtceu/api/recipe/OverclockingLogic.java | 32 +- .../gtceu/api/recipe/RecipeHelper.java | 60 +--- .../api/recipe/content/ContentModifier.java | 4 +- .../ingredient/IntCircuitIngredient.java | 12 +- .../api/recipe/modifier/ModifierFunction.java | 1 + .../api/recipe/modifier/ParallelLogic.java | 22 +- .../api/transfer/fluid/CustomFluidTank.java | 3 +- .../transfer/item/CustomItemStackHandler.java | 2 +- .../common/item/PortableScannerBehavior.java | 7 +- .../electric/DistillationTowerMachine.java | 28 +- .../LargeCombustionEngineMachine.java | 10 +- .../generator/LargeTurbineMachine.java | 5 +- .../steam/SteamParallelMultiblockMachine.java | 2 +- .../machine/trait/BedrockOreMinerLogic.java | 1 - .../common/machine/trait/FluidDrillLogic.java | 1 - .../machine/trait/miner/MinerLogic.java | 2 +- .../data/recipe/builder/GTRecipeBuilder.java | 2 +- .../jade/provider/RecipeLogicProvider.java | 7 +- .../kjs/recipe/GTRecipeSchema.java | 2 +- .../top/provider/RecipeLogicInfoProvider.java | 7 +- .../xei/widgets/GTRecipeWidget.java | 10 +- .../com/gregtechceu/gtceu/utils/FluidKey.java | 56 ---- .../gregtechceu/gtceu/utils/GTHashMaps.java | 42 +-- 33 files changed, 560 insertions(+), 515 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java index bf8b9ee60fa..085cd645345 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java @@ -3,13 +3,15 @@ import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.SerializerLong; +import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.utils.GTMath; +import it.unimi.dsi.fastutil.longs.LongList; + import java.util.Collection; import java.util.List; import java.util.Map; @@ -38,37 +40,93 @@ public List compressIngredients(Collection ingredients) { } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); - - long maxVoltage = Long.MAX_VALUE; - if (holder instanceof IOverclockMachine overclockMachine) { - maxVoltage = overclockMachine.getOverclockVoltage(); - } else if (holder instanceof ITieredMachine tieredMachine) { - maxVoltage = tieredMachine.getMaxVoltage(); - } - - long recipeEUt = RecipeHelper.getOutputEUt(recipe); - if (recipeEUt == 0) { - return Integer.MAX_VALUE; + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitEUParallel(recipe, multiplier, tick); + if (tick) { + long recipeEUt = recipe.getOutputEUt(); + if (recipeEUt == 0) return multiplier; + + long maxVoltage = Long.MAX_VALUE; + if (holder instanceof IOverclockMachine overclockMachine) { + maxVoltage = overclockMachine.getOverclockVoltage(); + } else if (holder instanceof ITieredMachine tieredMachine) { + maxVoltage = tieredMachine.getMaxVoltage(); + } + + return Math.min(multiplier, Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt))); + } else { + var outputs = recipe.getOutputContents(this); + if (outputs.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; + + int minMultiplier = 0; + int maxMultiplier = multiplier; + + long totalEU = 0L; + for (var content : outputs) totalEU += of(content.content); + if (totalEU != 0 && multiplier > Long.MAX_VALUE / totalEU) { + maxMultiplier = multiplier = GTMath.saturatedCast(Long.MAX_VALUE / totalEU); + } + + while (minMultiplier != maxMultiplier) { + List eu = LongList.of(totalEU * multiplier); + for (var handler : handlers) { + // noinspection unchecked + eu = (List) handler.handleRecipe(IO.OUT, recipe, eu, true); + if (eu == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(eu == null, minMultiplier, multiplier, maxMultiplier); + minMultiplier = bin[0]; + multiplier = bin[1]; + maxMultiplier = bin[2]; + } + + return multiplier; } - return Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt)); } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { - long maxVoltage = Long.MAX_VALUE; - if (holder instanceof IOverclockMachine overclockMachine) { - maxVoltage = overclockMachine.getOverclockVoltage(); - } else if (holder instanceof ITieredMachine tieredMachine) { - maxVoltage = tieredMachine.getMaxVoltage(); - } - - long recipeEUt = RecipeHelper.getInputEUt(recipe); - if (recipeEUt == 0) { - return Integer.MAX_VALUE; + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (tick) { + long maxVoltage = Long.MAX_VALUE; + if (holder instanceof IOverclockMachine overclockMachine) { + maxVoltage = overclockMachine.getOverclockVoltage(); + } else if (holder instanceof ITieredMachine tieredMachine) { + maxVoltage = tieredMachine.getMaxVoltage(); + } + + long recipeEUt = recipe.getInputEUt(); + if (recipeEUt == 0) return limit; + return Math.min(limit, Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt))); + } else { + if (!holder.hasCapabilityProxies()) return 0; + var inputs = recipe.getInputContents(this); + if (inputs.isEmpty()) return limit; + + long nonConsumable = 0; + long consumable = 0; + for (Content content : inputs) { + long l = of(content.content); + if (content.chance == 0) nonConsumable += l; + else consumable += l; + } + + if (nonConsumable == 0 && consumable == 0) return limit; + + long sum = 0; + for (var handler : holder.getCapabilitiesFlat(IO.IN, this)) { + for (var content : handler.getContents()) { + if (content instanceof Long l) sum += l; + } + } + + if (sum < nonConsumable) return 0; + sum -= nonConsumable; + return Math.min(GTMath.saturatedCast(sum / consumable), limit); } - return Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt)); } /** @@ -96,11 +154,12 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitEUParallel(GTRecipe recipe, int multiplier, boolean tick); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index e923b8ed0e0..7000db72723 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.capability.recipe; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.Content; @@ -20,9 +20,6 @@ import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidTagList; import com.gregtechceu.gtceu.integration.xei.handlers.fluid.CycleFluidEntryHandler; import com.gregtechceu.gtceu.integration.xei.widgets.GTRecipeWidget; -import com.gregtechceu.gtceu.utils.FluidKey; -import com.gregtechceu.gtceu.utils.GTHashMaps; -import com.gregtechceu.gtceu.utils.OverlayedTankHandler; import com.gregtechceu.gtceu.utils.OverlayingFluidStorage; import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; @@ -35,9 +32,7 @@ import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; -import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2IntMap; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnknownNullability; @@ -140,146 +135,169 @@ public boolean isRecipeSearchFilter() { } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitFluidParallel(recipe, multiplier, tick); + var outputContents = (tick ? recipe.tickOutputs : recipe.outputs).get(this); + if (outputContents == null || outputContents.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; int minMultiplier = 0; int maxMultiplier = multiplier; - OverlayedTankHandler overlayedFluidHandler = new OverlayedTankHandler( - holder.getCapabilitiesFlat(IO.OUT, FluidRecipeCapability.CAP).stream() - .filter(NotifiableFluidTank.class::isInstance) - .map(NotifiableFluidTank.class::cast) - .toList()); - - List recipeOutputs = recipe.getOutputContents(FluidRecipeCapability.CAP) - .stream() - .map(content -> FluidRecipeCapability.CAP.of(content.getContent())) - .filter(ingredient -> !ingredient.isEmpty()) - .map(ingredient -> ingredient.getStacks()[0]) - .toList(); + int maxAmount = 0; + List ingredients = new ArrayList<>(outputContents.size()); + for (var content : outputContents) { + var ing = this.of(content.content); + maxAmount = Math.max(maxAmount, ing.getAmount()); + ingredients.add(ing); + } + if (maxAmount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxAmount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxAmount; + } while (minMultiplier != maxMultiplier) { - overlayedFluidHandler.reset(); - - int returnedAmount = 0; - int amountToInsert = 0; - - for (FluidStack fluidStack : recipeOutputs) { - if (fluidStack.getAmount() <= 0) continue; - if (fluidStack.isEmpty()) continue; - // Since multiplier starts at Int.MAX, check here for integer overflow - if (multiplier > Integer.MAX_VALUE / fluidStack.getAmount()) { - amountToInsert = Integer.MAX_VALUE; - } else { - amountToInsert = fluidStack.getAmount() * multiplier; - } - returnedAmount = amountToInsert - overlayedFluidHandler.tryFill(fluidStack, amountToInsert); - if (returnedAmount > 0) { - break; - } + List copied = new ArrayList<>(); + for (final var ing : ingredients) { + copied.add(this.copyWithModifier(ing, ContentModifier.multiplier(multiplier))); } - int[] bin = ParallelLogic.adjustMultiplier(returnedAmount == 0, minMultiplier, multiplier, maxMultiplier); + for (var handler : handlers) { + // noinspection unchecked + copied = (List) handler.handleRecipe(IO.OUT, recipe, copied, true); + if (copied == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(copied == null, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; multiplier = bin[1]; maxMultiplier = bin[2]; - } + return multiplier; } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { - // Find all the fluids in the combined Fluid Input inventories and create oversized FluidStacks - Map fluidStacks = holder.getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP).stream() - .map(container -> container.getContents().stream().filter(FluidStack.class::isInstance) - .map(FluidStack.class::cast).toList()) - .flatMap(container -> GTHashMaps.fromFluidCollection(container).entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, - Object2IntLinkedOpenHashMap::new)); - - int minMultiplier = Integer.MAX_VALUE; - // map the recipe input fluids to account for duplicated fluids, - // so their sum is counted against the total of fluids available in the input - Map fluidCountMap = new HashMap<>(); - Map notConsumableMap = new HashMap<>(); - for (Content content : recipe.getInputContents(FluidRecipeCapability.CAP)) { - FluidIngredient fluidInput = FluidRecipeCapability.CAP.of(content.content); - int fluidAmount = fluidInput.getAmount(); - if (content.chance == 0) { - notConsumableMap.computeIfPresent(fluidInput, - (k, v) -> v + fluidAmount); - notConsumableMap.putIfAbsent(fluidInput, fluidAmount); - } else { - fluidCountMap.computeIfPresent(fluidInput, - (k, v) -> v + fluidAmount); - fluidCountMap.putIfAbsent(fluidInput, fluidAmount); - } + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (!holder.hasCapabilityProxies()) return 0; + + var inputs = (tick ? recipe.tickInputs : recipe.inputs).get(this); + if (inputs == null || inputs.isEmpty()) return limit; + + List> inventoryGroups = getInputContents(holder); + if (inventoryGroups.isEmpty()) return 0; + + var nonConsumables = new Object2IntOpenHashMap(); + var consumables = new Object2IntOpenHashMap(); + for (Content content : inputs) { + FluidIngredient ingredient = of(content.content); + if (content.chance == 0) nonConsumables.addTo(ingredient, ingredient.getAmount()); + else consumables.addTo(ingredient, ingredient.getAmount()); } - // Iterate through the recipe inputs, excluding the not consumable fluids from the fluid inventory map - for (Map.Entry notConsumableFluid : notConsumableMap.entrySet()) { - int needed = notConsumableFluid.getValue(); - int available = 0; - // For every fluid gathered from the fluid inputs. - for (Map.Entry inputFluid : fluidStacks.entrySet()) { - // Strip the Non-consumable tags here, as FluidKey compares the tags, which causes finding matching - // fluids - // in the input tanks to fail, because there is nothing in those hatches with a non-consumable tag - if (notConsumableFluid.getKey().test( - new FluidStack(inputFluid.getKey().fluid, inputFluid.getValue(), inputFluid.getKey().tag))) { - available = inputFluid.getValue(); - if (available > needed) { - inputFluid.setValue(available - needed); - needed -= available; - break; - } else { - inputFluid.setValue(0); - notConsumableFluid.setValue(needed - available); - needed -= available; + if (consumables.isEmpty() && nonConsumables.isEmpty()) return limit; + + int maxMultiplier = 0; + for (var group : inventoryGroups) { + boolean satisfied = true; + for (var ncEntry : Object2IntMaps.fastIterable(nonConsumables)) { + FluidIngredient ingredient = ncEntry.getKey(); + int needed = ncEntry.getIntValue(); + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + int count = stackEntry.getIntValue(); + int lesser = Math.min(needed, count); + count -= lesser; + needed -= lesser; + stackEntry.setValue(count); + if (needed == 0) break; } } + if (needed > 0) { + satisfied = false; + break; + } } - // We need to check >= available here because of Non-Consumable inputs with stack size. If there is a NC - // input - // with size 1000, and only 500 in the input, needed will be equal to available, but this situation should - // still fail - // as not all inputs are present - if (needed >= available) { - return 0; + // Not enough NC -> skip this inventory + if (!satisfied) continue; + // Satisfied NC + no consumables -> early return + if (consumables.isEmpty()) return limit; + + int invMultiplier = Integer.MAX_VALUE; + // Loop over all consumables + for (var inputEntry : Object2IntMaps.fastIterable(consumables)) { + FluidIngredient ingredient = inputEntry.getKey(); + final int needed = inputEntry.getIntValue(); + final int maxNeeded = needed * limit; + int available = 0; + // Search stacks in our inventory group, summing them up + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + available += stackEntry.getIntValue(); + // We can stop if we already have enough for max parallel + if (available >= maxNeeded) break; + } + } + // ratio will equal 0 if available < needed + int ratio = Math.min(limit, available / needed); + invMultiplier = Math.min(invMultiplier, ratio); + // Not enough of this ingredient in this group -> skip inventory + if (ratio == 0) break; } + // We found an inventory group that can do max parallel -> early return + if (invMultiplier == limit) return limit; + maxMultiplier = Math.max(maxMultiplier, invMultiplier); } - // Return the maximum parallel limit here if there are only non-consumed inputs, which are all found in the - // input bus - // At this point, we would have already returned 0 if we were missing any non-consumable inputs, so we can omit - // that check - if (fluidCountMap.isEmpty() && !notConsumableMap.isEmpty()) { - return parallelAmount; + return maxMultiplier; + } + + private static List> getInputContents(IRecipeCapabilityHolder holder) { + var handlerLists = holder.getCapabilitiesForIO(IO.IN); + if (handlerLists.isEmpty()) return Collections.emptyList(); + List distinct = new ArrayList<>(); + List> indistinct = new ArrayList<>(); + + for (var handlerList : handlerLists) { + if (handlerList.isDistinct() && handlerList.hasCapability(FluidRecipeCapability.CAP)) { + distinct.add(handlerList); + } else if (handlerList.hasCapability(FluidRecipeCapability.CAP)) { + indistinct.addAll(handlerList.getCapability(FluidRecipeCapability.CAP)); + } } - // Iterate through the fluid inputs in the recipe - for (Map.Entry fs : fluidCountMap.entrySet()) { - int needed = fs.getValue(); - int available = 0; - // For every fluid gathered from the fluid inputs. - for (Map.Entry inputFluid : fluidStacks.entrySet()) { - if (fs.getKey().test( - new FluidStack(inputFluid.getKey().fluid, inputFluid.getValue(), inputFluid.getKey().tag))) { - available += inputFluid.getValue(); + List> invs = new ArrayList<>(distinct.size() + 1); + Object2IntOpenHashMap combined = new Object2IntOpenHashMap<>(); + for (var handler : indistinct) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof FluidStack stack && !stack.isEmpty()) { + combined.addTo(stack, stack.getAmount()); } } - if (available >= needed) { - int ratio = (int) Math.min(parallelAmount, (float) available / needed); - if (ratio < minMultiplier) { - minMultiplier = ratio; + } + + for (var handlerList : distinct) { + var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); + // Clone has the desired effect here - it will shallow copy the keys, which we don't change and deep copy + // the values, as they are primitives. + var inventory = combined.clone(); + for (var handler : handlers) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof FluidStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getAmount()); + } } - } else { - return 0; } + if (!inventory.isEmpty()) invs.add(inventory); } - return minMultiplier; + + if (!combined.isEmpty()) invs.add(combined); + return invs; } @Override @@ -386,11 +404,12 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitFluidParallel(GTRecipe recipe, int multiplier, boolean tick); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java index 46323ef360f..69d2261afdc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java @@ -79,8 +79,4 @@ default List handleRecipe(IO io, GTRecipe recipe, List left, boolean simul } return handleRecipeInner(io, recipe, contents, simulate); } - - default void preWorking(IRecipeCapabilityHolder holder, IO io, GTRecipe recipe) {} - - default void postWorking(IRecipeCapabilityHolder holder, IO io, GTRecipe recipe) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index d15b295bca1..cb0eb6357bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -1,10 +1,10 @@ package com.gregtechceu.gtceu.api.capability.recipe; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.ResearchData; @@ -47,7 +47,6 @@ import net.minecraftforge.common.crafting.PartialNBTIngredient; import net.minecraftforge.common.crafting.StrictNBTIngredient; import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; @@ -232,169 +231,189 @@ public boolean isRecipeSearchFilter() { } @Override - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { - if (holder instanceof ICustomParallel p) return p.limitParallel(recipe, multiplier); + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { + if (holder instanceof ICustomParallel p) return p.limitItemParallel(recipe, multiplier, tick); + var outputContents = (tick ? recipe.tickOutputs : recipe.outputs).get(this); + if (outputContents == null || outputContents.isEmpty()) return multiplier; + + if (!holder.hasCapabilityProxies()) return 0; + + var handlers = holder.getCapabilitiesFlat(IO.OUT, this); + if (handlers.isEmpty()) return 0; int minMultiplier = 0; int maxMultiplier = multiplier; - OverlayedItemHandler itemHandler = new OverlayedItemHandler(new CombinedInvWrapper( - holder.getCapabilitiesFlat(IO.OUT, ItemRecipeCapability.CAP).stream() - .filter(IItemHandlerModifiable.class::isInstance) - .map(IItemHandlerModifiable.class::cast) - .toArray(IItemHandlerModifiable[]::new))); + int maxCount = 0; + List ingredients = new ArrayList<>(outputContents.size()); + for (var content : outputContents) { + var ing = of(content.content); - Object2IntMap recipeOutputs = GTHashMaps - .fromItemStackCollection(recipe.getOutputContents(ItemRecipeCapability.CAP) - .stream() - .map(content -> ItemRecipeCapability.CAP.of(content.getContent())) - .filter(ingredient -> !ingredient.isEmpty()) - .map(ingredient -> ingredient.getItems()[0]) - .toList()); + int count; + if (ing instanceof SizedIngredient sized) count = sized.getAmount(); + else if (ing instanceof IntProviderIngredient provider) count = provider.getCountProvider().getMaxValue(); + else count = 1; - while (minMultiplier != maxMultiplier) { - itemHandler.reset(); + maxCount = Math.max(maxCount, count); + ingredients.add(ing); + } - int returnedAmount = 0; - int amountToInsert; + if (maxCount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxCount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxCount; + } - for (Object2IntMap.Entry entry : recipeOutputs.object2IntEntrySet()) { - // Since multiplier starts at Int.MAX, check here for integer overflow - if (entry.getIntValue() != 0 && multiplier > Integer.MAX_VALUE / entry.getIntValue()) { - amountToInsert = Integer.MAX_VALUE; - } else { - amountToInsert = entry.getIntValue() * multiplier; - } - returnedAmount = itemHandler.insertStackedItemStack(entry.getKey(), amountToInsert); - if (returnedAmount > 0) { - break; - } + while (minMultiplier != maxMultiplier) { + List copied = new ArrayList<>(); + for (final var ing : ingredients) { + copied.add(copyWithModifier(ing, ContentModifier.multiplier(multiplier))); } - - int[] bin = ParallelLogic.adjustMultiplier(returnedAmount == 0, minMultiplier, multiplier, maxMultiplier); + for (var handler : handlers) { + // noinspection unchecked + copied = (List) handler.handleRecipe(IO.OUT, recipe, copied, true); + if (copied == null) break; + } + int[] bin = ParallelLogic.adjustMultiplier(copied == null, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; multiplier = bin[1]; maxMultiplier = bin[2]; - } + return multiplier; } @Override - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { + if (!holder.hasCapabilityProxies()) return 0; + + var inputs = (tick ? recipe.tickInputs : recipe.inputs).get(this); + if (inputs == null || inputs.isEmpty()) return limit; + // Find all the items in the combined Item Input inventories and create oversized ItemStacks - Object2IntMap ingredientStacks = getIngredientStacks(holder); + List> inventoryGroups = getInputContents(holder); + if (inventoryGroups.isEmpty()) return 0; - int minMultiplier = Integer.MAX_VALUE; // map the recipe ingredients to account for duplicated and notConsumable ingredients. // notConsumable ingredients are not counted towards the max ratio - Object2IntOpenHashMap notConsumableMap = new Object2IntOpenHashMap<>(); - Object2IntOpenHashMap countableMap = new Object2IntOpenHashMap<>(); - for (Content content : recipe.getInputContents(ItemRecipeCapability.CAP)) { - Ingredient recipeIngredient = ItemRecipeCapability.CAP.of(content.content); - int ingredientCount; - if (recipeIngredient instanceof SizedIngredient sizedIngredient) { - ingredientCount = sizedIngredient.getAmount(); - } else if (recipeIngredient instanceof IntProviderIngredient intProviderIngredient) { - ingredientCount = intProviderIngredient.getSampledCount(GTValues.RNG); - } else { - ingredientCount = 1; - } - if (content.chance == 0) { - notConsumableMap.computeIfPresent(recipeIngredient, (k, v) -> v + ingredientCount); - notConsumableMap.putIfAbsent(recipeIngredient, ingredientCount); - } else { - countableMap.computeIfPresent(recipeIngredient, (k, v) -> v + ingredientCount); - countableMap.putIfAbsent(recipeIngredient, ingredientCount); - } + var nonConsumables = new Object2IntOpenHashMap(); + var consumables = new Object2IntOpenHashMap(); + for (Content content : inputs) { + Ingredient ing = of(content.content); + if (ing instanceof IntCircuitIngredient) continue; + + int count; + if (ing instanceof SizedIngredient sized) count = sized.getAmount(); + else if (ing instanceof IntProviderIngredient provider) count = provider.getCountProvider().getMaxValue(); + else count = 1; + + if (content.chance == 0) nonConsumables.addTo(ing, count); + else consumables.addTo(ing, count); } - // Iterate through the recipe inputs, excluding the not consumable ingredients from the inventory map - for (Object2IntMap.Entry recipeInputEntry : notConsumableMap.object2IntEntrySet()) { - int needed = recipeInputEntry.getIntValue(); - int available = 0; - // For every stack in the ingredients gathered from the input bus. - for (Object2IntMap.Entry inventoryEntry : ingredientStacks.object2IntEntrySet()) { - if (recipeInputEntry.getKey().test(inventoryEntry.getKey())) { - available = inventoryEntry.getIntValue(); - if (available > needed) { - inventoryEntry.setValue(available - needed); - needed -= available; - break; - } else { - inventoryEntry.setValue(0); - recipeInputEntry.setValue(needed - available); - needed -= available; + // is this even possible + if (consumables.isEmpty() && nonConsumables.isEmpty()) return limit; + + int maxMultiplier = 0; + // Check every inventory group + for (var group : inventoryGroups) { + // Check for enough NC in inventory group + boolean satisfied = true; + for (var ncEntry : Object2IntMaps.fastIterable(nonConsumables)) { + Ingredient ingredient = ncEntry.getKey(); + int needed = ncEntry.getIntValue(); + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + int count = stackEntry.getIntValue(); + int lesser = Math.min(needed, count); + count -= lesser; + needed -= lesser; + stackEntry.setValue(count); + if (needed == 0) break; } } - } - // We need to check >= available here because of Non-Consumable inputs with stack size. If there is a NC - // input - // with size 2, and only 1 in the input, needed will be equal to available, but this situation should still - // fail - // as not all inputs are present - if (needed >= available) { - return 0; - } - } - - // Return the maximum parallel limit here if there are only non-consumed inputs, which are all found in the - // input bus - // At this point, we would have already returned 0 if we were missing any non-consumable inputs, so we can omit - // that check - if (countableMap.isEmpty() && !notConsumableMap.isEmpty()) { - return parallelAmount; - } - - // Iterate through the recipe inputs - for (Object2IntMap.Entry recipeInputEntry : countableMap.object2IntEntrySet()) { - int needed = recipeInputEntry.getIntValue(); - int available = 0; - // For every stack in the ingredients gathered from the input bus. - for (Object2IntMap.Entry inventoryEntry : ingredientStacks.object2IntEntrySet()) { - if (recipeInputEntry.getKey().test(inventoryEntry.getKey())) { - available += inventoryEntry.getIntValue(); + if (needed > 0) { + satisfied = false; break; } } - if (available >= needed) { - int ratio = Math.min(parallelAmount, available / needed); - if (ratio < minMultiplier) { - minMultiplier = ratio; + // Not enough NC -> skip this inventory + if (!satisfied) continue; + // Satisfied NC + no consumables -> early return + if (consumables.isEmpty()) return limit; + + int invMultiplier = Integer.MAX_VALUE; + // Loop over all consumables + for (var cEntry : Object2IntMaps.fastIterable(consumables)) { + Ingredient ingredient = cEntry.getKey(); + final int needed = cEntry.getIntValue(); + final int maxNeeded = needed * limit; + int available = 0; + // Search stacks in our inventory group, summing them up + for (var stackEntry : Object2IntMaps.fastIterable(group)) { + if (ingredient.test(stackEntry.getKey())) { + available += stackEntry.getIntValue(); + // We can stop if we already have enough for max parallel + if (available >= maxNeeded) break; + } } - } else { - return 0; + // ratio will equal 0 if available < needed + int ratio = Math.min(limit, available / needed); + invMultiplier = Math.min(invMultiplier, ratio); + // Not enough of this ingredient in this group -> skip inventory + if (ratio == 0) break; } + // We found an inventory group that can do max parallel -> early return + if (invMultiplier == limit) return limit; + maxMultiplier = Math.max(maxMultiplier, invMultiplier); } - return minMultiplier; + return maxMultiplier; } - private Object2IntMap getIngredientStacks(IRecipeCapabilityHolder holder) { - Object2IntMap map = new Object2IntOpenCustomHashMap<>( - ItemStackHashStrategy.comparingAllButCount()); - Object2IntMap result = new Object2IntOpenHashMap<>(); - - var recipeHandlerList = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); + private static List> getInputContents(IRecipeCapabilityHolder holder) { + var handlerLists = holder.getCapabilitiesForIO(IO.IN); + if (handlerLists.isEmpty()) return Collections.emptyList(); + List distinct = new ArrayList<>(); + List> indistinct = new ArrayList<>(); + + for (var handlerList : handlerLists) { + if (handlerList.isDistinct() && handlerList.hasCapability(ItemRecipeCapability.CAP)) { + distinct.add(handlerList); + } else if (handlerList.hasCapability(ItemRecipeCapability.CAP)) { + indistinct.addAll(handlerList.getCapability(ItemRecipeCapability.CAP)); + } + } - for (IRecipeHandler container : recipeHandlerList) { + final var strat = ItemStackHashStrategy.comparingAllButCount(); - var itemMap = container.getContents().stream().filter(ItemStack.class::isInstance) - .map(ItemStack.class::cast) - .flatMap(con -> GTHashMaps.fromItemStackCollection(Collections.singleton(con)).object2IntEntrySet() - .stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Integer::sum, - () -> new Object2IntOpenCustomHashMap<>(ItemStackHashStrategy.comparingAllButCount()))); + List> invs = new ArrayList<>(distinct.size() + 1); + Object2IntOpenCustomHashMap combined = new Object2IntOpenCustomHashMap<>(strat); + for (var handler : indistinct) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof ItemStack stack && !stack.isEmpty()) { + combined.addTo(stack, stack.getCount()); + } + } + } - if (container.isDistinct()) { - result.putAll(itemMap); - } else { - for (Object2IntMap.Entry obj : itemMap.object2IntEntrySet()) { - map.computeInt(obj.getKey(), (k, v) -> v == null ? obj.getIntValue() : v + obj.getIntValue()); + for (var handlerList : distinct) { + var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); + // Clone has the desired effect here - it will shallow copy the keys, which we don't change and deep copy + // the values, as they are primitives. + var inventory = combined.clone(); + for (var handler : handlers) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof ItemStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getCount()); + } } } + if (!inventory.isEmpty()) invs.add(inventory); } - result.putAll(map); - return result; + + if (!combined.isEmpty()) invs.add(combined); + return invs; } @Override @@ -600,11 +619,12 @@ public interface ICustomParallel { /** * Custom impl of the parallel limiter used by ParallelLogic to limit by outputs - * + * * @param recipe Recipe * @param multiplier Initial multiplier + * @param tick Tick or not * @return Limited multiplier */ - int limitParallel(GTRecipe recipe, int multiplier); + int limitItemParallel(GTRecipe recipe, int multiplier, boolean tick); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index b520afd63fc..fac3a2598a0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.IContentSerializer; import com.gregtechceu.gtceu.api.recipe.lookup.AbstractMapIngredient; -import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -143,17 +142,17 @@ public boolean doMatchInRecipe() { } /** - * maximum parallel amount based on the inputs (and possibly outputs) provided. + * Calculate the maximum parallel amount based on the output space of the holder * - * @param recipe the recipe from which we get the input to product ratio - * @param holder the {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. - * @param multiplier the maximum possible multiplied we can get from the input inventory - * see {@link ParallelLogic#limitByInput} + * @param holder the {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. + * @param recipe the recipe from which we get the input to product ratio + * @param maxMultiplier the upper bound on the multiplier, see {@link #getMaxParallelByInput} + * @param tick whether to check regular outputs or tick outputs * @return the amount of times a {@link GTRecipe} outputs can be merged into an inventory without voiding products. */ // returns Integer.MAX_VALUE by default, to skip processing. - // TODO: kross - make it so caps check both regular outputs and tick outputs - public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int multiplier) { + public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int maxMultiplier, + boolean tick) { return Integer.MAX_VALUE; } @@ -161,14 +160,14 @@ public int limitParallel(GTRecipe recipe, IRecipeCapabilityHolder holder, int mu * Finds the maximum number of GTRecipes that can be performed at the same time based on the contents of input * inventories * - * @param holder The {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the - * machine. - * @param recipe The {@link GTRecipe} for which to find the maximum that can be run simultaneously - * @param parallelAmount The limit on the amount of recipes that can be performed at one time + * @param holder The {@link IRecipeCapabilityHolder} that contains all the inputs and outputs of the machine. + * @param recipe The {@link GTRecipe} for which to find the maximum that can be run simultaneously + * @param limit The hard limit on the amount of recipes that can be performed at one time + * @param tick whether to check regular outputs or tick outputs * @return The Maximum number of GTRecipes that can be performed at a single time based on the available Items */ // returns Integer.MAX_VALUE by default, to skip processing. - public int getMaxParallelRatio(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelAmount) { + public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int limit, boolean tick) { return Integer.MAX_VALUE; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index 8e893084da0..13e04aab8a6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; @@ -102,7 +101,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not if (!(machine instanceof SimpleGeneratorMachine generator)) { return RecipeModifier.nullWrongType(SimpleGeneratorMachine.class, machine); } - long EUt = RecipeHelper.getOutputEUt(recipe); + long EUt = recipe.getOutputEUt(); if (EUt <= 0) return ModifierFunction.NULL; int maxParallel = (int) (generator.getOverclockVoltage() / EUt); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 52d83e7a53b..07f55828e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -80,7 +80,6 @@ public NotifiableFluidTank(MetaMachine machine, List storages, this(machine, storages, io, io); } - // TODO Kross: See if this can be decoupled from CustomFluidTank public void onContentsChanged() { isEmpty = null; notifyListeners(); @@ -97,6 +96,14 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List {}); + } + boolean changed = false; + FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; // Store the FluidStack in each slot after an operation // Necessary for simulation since we don't actually modify the slot's contents @@ -126,6 +133,7 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List handleRecipeInner(IO io, GTRecipe recipe, List 0) { visited[tank] = drained.copy(); visited[tank].setAmount(amount - drained.getAmount()); + changed = true; ingredient.shrink(drained.getAmount()); } } @@ -156,6 +165,7 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List 0) { visited[tank] = output.copy(); visited[tank].setAmount(filled); + changed = true; ingredient.shrink(filled); if (!allowSameFluids) { if (ingredient.getAmount() <= 0) it.remove(); @@ -171,6 +181,12 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List handleRecipe(IO io, GTRecipe recipe, List {}); + boolean changed = false; + // Store the ItemStack in each slot after an operation // Necessary for simulation since we don't actually modify the slot's contents // Doesn't hurt for execution, and definitely cheaper than copying the entire storage @@ -131,6 +137,7 @@ public static List handleRecipe(IO io, GTRecipe recipe, List handleRecipe(IO io, GTRecipe recipe, List handleRecipe(IO io, GTRecipe recipe, List, List> inputs, @@ -205,6 +209,33 @@ public ChanceLogic getChanceLogicForCapability(RecipeCapability cap, IO io, b return ChanceLogic.OR; } + // Technically should account for overflow but realistically not an issue. + public @Range(from = 0, to = Long.MAX_VALUE) long getInputEUt() { + if (inputEUt == -1) { + var inputs = tickInputs.get(EURecipeCapability.CAP); + if (inputs == null) return inputEUt = 0; + long eut = 0; + for (var content : inputs) { + eut += EURecipeCapability.CAP.of(content.content); + } + inputEUt = eut; + } + return inputEUt; + } + + public @Range(from = 0, to = Long.MAX_VALUE) long getOutputEUt() { + if (outputEUt == -1) { + var outputs = tickOutputs.get(EURecipeCapability.CAP); + if (outputs == null) return outputEUt = 0; + long eut = 0; + for (var content : outputs) { + eut += EURecipeCapability.CAP.of(content.content); + } + outputEUt = eut; + } + return outputEUt; + } + // Just check id as there *should* only ever be 1 instance of a recipe with this id. // If this doesn't work, fix. @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java index 1129a6eca4f..550532d8e22 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java @@ -5,10 +5,14 @@ import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.GTUtil; +import com.google.common.math.IntMath; import org.jetbrains.annotations.NotNull; +import java.math.RoundingMode; + import javax.annotation.ParametersAreNonnullByDefault; /** @@ -63,8 +67,8 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo * @param shouldParallel whether the OC Logic should parallel or not * @return A {@link ModifierFunction} describing how the OC application should modify the recipe */ - default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, - long maxVoltage, boolean shouldParallel) { + default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, long maxVoltage, + boolean shouldParallel) { long EUt = Math.abs(RecipeHelper.getRealEUt(recipe)); if (EUt == 0) return ModifierFunction.IDENTITY; @@ -77,10 +81,19 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo int maxParallels; if (!shouldParallel || this == PERFECT_OVERCLOCK || this == NON_PERFECT_OVERCLOCK) { // don't parallel maxParallels = 1; - } else if ((Math.pow(PERFECT_DURATION_FACTOR, OCs) * recipe.duration) > 1) { - maxParallels = 512; // if duration probably won't go below 1, give default overhead to save time } else { - maxParallels = ParallelLogic.getParallelAmount(machine, recipe, Integer.MAX_VALUE); + // lg = floor(log_4(duration)), which is how many OCs it takes to get duration < 4 with perfect duration + // factor + // If OCs <= lg, duration probably won't go below 4 + // If OCs > lg, then we could have 4^(OCs - lg) parallels + // Note that 4^x = (2^2)^x = 2^(2x) = 1 << 2x + int lg = IntMath.log2(recipe.duration, RoundingMode.FLOOR) / 2; + if (lg > OCs) { + maxParallels = 16; + } else { + int p = GTMath.saturatedCast((1L << (2 * (OCs - lg))) + 1); + maxParallels = ParallelLogic.getParallelAmount(machine, recipe, p); + } } OCParams params = new OCParams(EUt, recipe.duration, OCs, maxParallels); @@ -88,8 +101,7 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo return result.toModifier(); } - default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, - long maxVoltage) { + default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, long maxVoltage) { return getModifier(machine, recipe, maxVoltage, true); } @@ -109,8 +121,7 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo * @param voltageFactor the factor to multiply voltage by * @return the result of the overclock */ - static OCResult standardOC(OCParams params, long maxVoltage, double durationFactor, - double voltageFactor) { + static OCResult standardOC(OCParams params, long maxVoltage, double durationFactor, double voltageFactor) { double duration = params.duration; double eut = params.eut; int ocAmount = params.ocAmount; @@ -202,8 +213,7 @@ static OCResult subTickNonParallelOC(OCParams params, long maxVoltage, double du * @param voltageFactor the factor to multiply voltage by * @return the result of the overclock */ - static OCResult subTickParallelOC(OCParams params, long maxVoltage, double durationFactor, - double voltageFactor) { + static OCResult subTickParallelOC(OCParams params, long maxVoltage, double durationFactor, double voltageFactor) { double duration = params.duration; double eut = params.eut; int ocAmount = params.ocAmount; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index b9795d2f9db..d20f9333aa3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -24,38 +24,22 @@ public class RecipeHelper { - public static long getInputEUt(GTRecipe recipe) { - return recipe.getTickInputContents(EURecipeCapability.CAP).stream() - .map(Content::getContent) - .mapToLong(EURecipeCapability.CAP::of) - .sum(); - } - - public static long getOutputEUt(GTRecipe recipe) { - return recipe.getTickOutputContents(EURecipeCapability.CAP).stream() - .map(Content::getContent) - .mapToLong(EURecipeCapability.CAP::of) - .sum(); - } - public static long getRealEUt(@NotNull GTRecipe recipe) { - long EUt = getInputEUt(recipe); + long EUt = recipe.getInputEUt(); if (EUt > 0) return EUt; - return -getOutputEUt(recipe); + return -recipe.getOutputEUt(); } public static int getRecipeEUtTier(GTRecipe recipe) { - long EUt = getInputEUt(recipe); - if (EUt == 0) { - EUt = getOutputEUt(recipe); - } + long EUt = recipe.getInputEUt(); + if (EUt == 0) EUt = recipe.getOutputEUt(); if (recipe.parallels > 1) EUt /= recipe.parallels; return GTUtil.getTierByVoltage(EUt); } public static int getPreOCRecipeEuTier(GTRecipe recipe) { - long EUt = getInputEUt(recipe); - if (EUt == 0) EUt = getOutputEUt(recipe); + long EUt = recipe.getInputEUt(); + if (EUt == 0) EUt = recipe.getOutputEUt(); if (recipe.parallels > 1) EUt /= recipe.parallels; EUt >>= (recipe.ocLevel * 2); return GTUtil.getTierByVoltage(EUt); @@ -235,38 +219,6 @@ public static ActionResult matchContents(IRecipeCapabilityHolder holder, GTRecip return matchTickRecipe(holder, recipe); } - public static void preWorking(IRecipeCapabilityHolder holder, GTRecipe recipe) { - handlePre(holder, recipe, IO.IN); - handlePre(holder, recipe, IO.OUT); - } - - public static void postWorking(IRecipeCapabilityHolder holder, GTRecipe recipe) { - handlePost(holder, recipe, IO.IN); - handlePost(holder, recipe, IO.OUT); - } - - public static void handlePre(IRecipeCapabilityHolder holder, GTRecipe recipe, IO io) { - var map = io == IO.IN ? recipe.inputs : recipe.outputs; - for (var cap : map.keySet()) { - var handlers = holder.getCapabilitiesFlat(io, cap); - if (handlers.isEmpty()) handlers = holder.getCapabilitiesFlat(IO.BOTH, cap); - for (var handler : handlers) { - handler.preWorking(holder, io, recipe); - } - } - } - - public static void handlePost(IRecipeCapabilityHolder holder, GTRecipe recipe, IO io) { - var map = io == IO.IN ? recipe.inputs : recipe.outputs; - for (var cap : map.keySet()) { - var handlers = holder.getCapabilitiesFlat(io, cap); - if (handlers.isEmpty()) handlers = holder.getCapabilitiesFlat(IO.BOTH, cap); - for (var handler : handlers) { - handler.postWorking(holder, io, recipe); - } - } - } - /** * Check whether all conditions of a recipe are valid * diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java index 68829368c9b..3ec1fb025fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/ContentModifier.java @@ -12,11 +12,11 @@ public record ContentModifier(double multiplier, double addition) { public static final ContentModifier IDENTITY = new ContentModifier(1, 0); public static ContentModifier multiplier(double multiplier) { - return new ContentModifier(multiplier, 0); + return multiplier == 1 ? IDENTITY : new ContentModifier(multiplier, 0); } public static ContentModifier addition(double addition) { - return new ContentModifier(1, addition); + return addition == 0 ? IDENTITY : new ContentModifier(1, addition); } public int apply(int number) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java index 9b77d167875..0e23911257a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java @@ -26,7 +26,7 @@ public class IntCircuitIngredient extends StrictNBTIngredient { private static final IntCircuitIngredient[] INGREDIENTS = new IntCircuitIngredient[CIRCUIT_MAX + 1]; - public static IntCircuitIngredient circuitInput(int configuration) { + public static IntCircuitIngredient of(int configuration) { if (configuration < CIRCUIT_MIN || configuration > CIRCUIT_MAX) { throw new IndexOutOfBoundsException("Circuit configuration " + configuration + " is out of range"); } @@ -40,7 +40,7 @@ public static IntCircuitIngredient circuitInput(int configuration) { private final int configuration; private ItemStack[] stacks; - protected IntCircuitIngredient(int configuration) { + private IntCircuitIngredient(int configuration) { super(IntCircuitBehaviour.stack(configuration)); this.configuration = configuration; } @@ -53,7 +53,7 @@ public boolean test(@Nullable ItemStack stack) { } @Override - public ItemStack[] getItems() { + public ItemStack @NotNull [] getItems() { if (stacks == null) { stacks = new ItemStack[] { ((StrictNBTIngredientAccessor) this).getStack() }; } @@ -61,7 +61,7 @@ public ItemStack[] getItems() { } @Override - public JsonElement toJson() { + public @NotNull JsonElement toJson() { JsonObject json = new JsonObject(); json.addProperty("type", TYPE.toString()); json.addProperty("configuration", configuration); @@ -83,13 +83,13 @@ public static IntCircuitIngredient fromJson(JsonObject json) { @Override public @NotNull IntCircuitIngredient parse(FriendlyByteBuf buffer) { int configuration = buffer.readVarInt(); - return circuitInput(configuration); + return of(configuration); } @Override public @NotNull IntCircuitIngredient parse(JsonObject json) { int configuration = json.get("configuration").getAsInt(); - return circuitInput(configuration); + return of(configuration); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java index 53baccee4f9..328665da66c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java @@ -175,6 +175,7 @@ public ModifierFunction build() { private static Map, List> applyAllButEU(ContentModifier cm, Map, List> contents) { + if (cm == ContentModifier.IDENTITY) return new HashMap<>(contents); Map, List> copyContents = new HashMap<>(); for (var entry : contents.entrySet()) { var cap = entry.getKey(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java index ecf26e3e50f..c226b7f8309 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ParallelLogic.java @@ -31,7 +31,7 @@ public static int getParallelAmount(MetaMachine machine, GTRecipe recipe, int pa if (parallelLimit <= 1) return parallelLimit; if (!(machine instanceof IRecipeLogicMachine rlm)) return 1; // First check if we are limited by recipe inputs. This can short circuit a lot of consecutive checking - int maxInputMultiplier = limitByInput(rlm, recipe, parallelLimit); + int maxInputMultiplier = getMaxByInput(rlm, recipe, parallelLimit); if (maxInputMultiplier == 0) return 0; // Simulate the merging of the maximum amount of recipes that can be run with these items @@ -45,14 +45,14 @@ public static int getParallelAmount(MetaMachine machine, GTRecipe recipe, int pa * @param parallelLimit hard cap on the amount returned * @return returns the amount of possible time a recipe can be made from a given input inventory */ - public static int limitByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit) { + public static int getMaxByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit) { int minimum = Integer.MAX_VALUE; // non-tick inputs. for (RecipeCapability cap : recipe.inputs.keySet()) { if (cap.doMatchInRecipe()) { // Find the maximum number of recipes that can be performed from the contents of the input inventories - minimum = Math.min(minimum, cap.getMaxParallelRatio(holder, recipe, parallelLimit)); + minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, false)); } } @@ -60,7 +60,7 @@ public static int limitByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, for (RecipeCapability cap : recipe.tickInputs.keySet()) { if (cap.doMatchInRecipe()) { // Find the maximum number of recipes that can be performed from the contents of the input inventories - minimum = Math.min(minimum, cap.getMaxParallelRatio(holder, recipe, parallelLimit)); + minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, true)); } } if (minimum == Integer.MAX_VALUE) return 0; @@ -70,25 +70,25 @@ public static int limitByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, /** * @param holder the inventories * @param recipe The recipe - * @param parallelLimit the maximum expected amount + * @param parallelLimit the maximum allowed amount * @param canVoid predicate for what parallel limits should be ignored * @return returns the amount of recipes that can be merged successfully into a given output inventory */ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit, Predicate> canVoid) { - int minimum = parallelLimit; + int max = parallelLimit; for (RecipeCapability cap : recipe.outputs.keySet()) { if (canVoid.test(cap) || !cap.doMatchInRecipe()) { continue; } // Check both normal item outputs and chanced item outputs if (!recipe.getOutputContents(cap).isEmpty()) { - int limit = cap.limitParallel(recipe, holder, parallelLimit); + int limit = cap.limitMaxParallelByOutput(holder, recipe, parallelLimit, false); // If we are not voiding, and cannot fit any items, return 0 if (limit == 0) { return 0; } - minimum = Math.min(minimum, limit); + max = Math.min(max, limit); } } for (RecipeCapability cap : recipe.tickOutputs.keySet()) { @@ -97,15 +97,15 @@ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe } // Check both normal item outputs and chanced item outputs if (!recipe.getTickOutputContents(cap).isEmpty()) { - int limit = cap.limitParallel(recipe, holder, parallelLimit); + int limit = cap.limitMaxParallelByOutput(holder, recipe, parallelLimit, true); // If we are not voiding, and cannot fit any items, return 0 if (limit == 0) { return 0; } - minimum = Math.min(minimum, limit); + max = Math.min(max, limit); } } - return minimum; + return max; } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java index 6077b044a0a..44e92edcce6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/fluid/CustomFluidTank.java @@ -9,6 +9,7 @@ import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.function.Predicate; @@ -17,7 +18,7 @@ public class CustomFluidTank extends FluidTank @Getter @Setter - protected Runnable onContentsChanged = () -> {}; + protected @NotNull Runnable onContentsChanged = () -> {}; public CustomFluidTank(int capacity) { super(capacity, e -> true); diff --git a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java index dcd3b448626..2bf028384c8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/transfer/item/CustomItemStackHandler.java @@ -19,7 +19,7 @@ public class CustomItemStackHandler extends ItemStackHandler @Getter @Setter - protected Runnable onContentsChanged = () -> {}; + protected @NotNull Runnable onContentsChanged = () -> {}; @Getter @Setter protected Predicate filter = stack -> true; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index e45be2aeff6..6edb4a3523b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -18,7 +18,6 @@ import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.common.blockentity.FluidPipeBlockEntity; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.capability.LocalizedHazardSavedData; @@ -330,11 +329,11 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.addAll(recipeLogic.getFancyTooltip()); } else if (recipe != null) { list.add(Component.translatable("behavior.portable_scanner.divider")); - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; + long EUt = recipe.getInputEUt(); + boolean isInput = true; if (EUt == 0) { isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); + EUt = recipe.getOutputEUt(); } list.add(Component.translatable( diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index 811ee5be9e4..d487b752415 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -14,6 +14,7 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -22,7 +23,6 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; -import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; import net.minecraftforge.fluids.capability.templates.VoidFluidHandler; @@ -128,24 +128,29 @@ public void onStructureInvalid() { super.onStructureInvalid(); } - public int limitParallel(GTRecipe recipe, int multiplier) { + @Override + public int limitFluidParallel(GTRecipe recipe, int multiplier, boolean tick) { int minMultiplier = 0; int maxMultiplier = multiplier; - var maxAmount = recipe.getOutputContents(FluidRecipeCapability.CAP).stream() + var contents = (tick ? recipe.tickInputs : recipe.inputs).get(FluidRecipeCapability.CAP); + if (contents == null || contents.isEmpty()) return multiplier; + + int maxAmount = contents.stream() .map(Content::getContent) .map(FluidRecipeCapability.CAP::of) .filter(i -> !i.isEmpty()) - .map(i -> i.getStacks()[0]) - .mapToInt(FluidStack::getAmount) + .mapToInt(FluidIngredient::getAmount) .max() .orElse(0); if (maxAmount == 0) return multiplier; + if (multiplier > Integer.MAX_VALUE / maxAmount) { + maxMultiplier = multiplier = Integer.MAX_VALUE / maxAmount; + } while (minMultiplier != maxMultiplier) { - if (multiplier > Integer.MAX_VALUE / maxAmount) multiplier = Integer.MAX_VALUE / maxAmount; - GTRecipe copy = recipe.copy(ContentModifier.multiplier(multiplier), false); + GTRecipe copy = modifyOutputs(recipe, ContentModifier.multiplier(multiplier)); boolean filled = getRecipeLogic().applyFluidOutputs(copy, FluidAction.SIMULATE); int[] bin = ParallelLogic.adjustMultiplier(filled, minMultiplier, multiplier, maxMultiplier); minMultiplier = bin[0]; @@ -155,6 +160,15 @@ public int limitParallel(GTRecipe recipe, int multiplier) { return multiplier; } + private static GTRecipe modifyOutputs(GTRecipe recipe, ContentModifier cm) { + return new GTRecipe(recipe.recipeType, recipe.id, recipe.inputs, cm.applyContents(recipe.outputs), + recipe.tickInputs, cm.applyContents(recipe.tickOutputs), recipe.inputChanceLogics, + recipe.outputChanceLogics, + recipe.tickInputChanceLogics, recipe.tickOutputChanceLogics, recipe.conditions, + recipe.ingredientActions, + recipe.data, recipe.duration, recipe.recipeCategory); + } + public static class DistillationTowerLogic extends RecipeLogic { @Nullable diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 2d2d24c2960..25021f8cd97 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -129,7 +129,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not if (!(machine instanceof LargeCombustionEngineMachine engineMachine)) { return RecipeModifier.nullWrongType(LargeCombustionEngineMachine.class, machine); } - long EUt = RecipeHelper.getOutputEUt(recipe); + long EUt = recipe.getOutputEUt(); // has lubricant if (EUt > 0 && !engineMachine.isIntakesObstructed() && RecipeHelper.matchRecipe(engineMachine, engineMachine.getLubricantRecipe()).isSuccess()) { @@ -190,14 +190,14 @@ public void addDisplayText(List textList) { if (isExtreme()) { builder.addEnergyProductionLine(GTValues.V[tier + 1], - recipeLogic.getLastRecipe() != null ? RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0); + recipeLogic.getLastRecipe() != null ? recipeLogic.getLastRecipe().getOutputEUt() : 0); } else { builder.addEnergyProductionAmpsLine(GTValues.V[tier] * 3, 3); } if (isActive() && isWorkingEnabled()) { builder.addCurrentEnergyProductionLine( - recipeLogic.getLastRecipe() != null ? RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0); + recipeLogic.getLastRecipe() != null ? recipeLogic.getLastRecipe().getOutputEUt() : 0); } builder.addFuelNeededLine(getRecipeFluidInputInfo(), recipeLogic.getDuration()); @@ -217,12 +217,12 @@ public String getRecipeFluidInputInfo() { GTRecipe recipe = recipeLogic.getLastRecipe(); if (recipe == null) { Iterator iterator = recipeLogic.searchRecipe(); - recipe = iterator != null && iterator.hasNext() ? iterator.next() : null; + recipe = iterator.hasNext() ? iterator.next() : null; if (recipe == null) return null; } FluidStack requiredFluidInput = RecipeHelper.getInputFluids(recipe).get(0); - long ocAmount = getMaxVoltage() / RecipeHelper.getOutputEUt(recipe); + long ocAmount = getMaxVoltage() / recipe.getOutputEUt(); int neededAmount = GTMath.saturatedCast(ocAmount * requiredFluidInput.getAmount()); return ChatFormatting.RED + FormattingUtil.formatNumbers(neededAmount) + "mB"; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index 716503e2ed7..ee97f409edc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; @@ -101,7 +100,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not var rotorHolder = turbineMachine.getRotorHolder(); if (rotorHolder == null) return ModifierFunction.NULL; - long EUt = RecipeHelper.getOutputEUt(recipe); + long EUt = recipe.getOutputEUt(); long turbineMaxVoltage = turbineMachine.getOverclockVoltage(); double holderEfficiency = rotorHolder.getTotalEfficiency() / 100.0; @@ -150,7 +149,7 @@ public void addDisplayText(List textList) { long maxProduction = getOverclockVoltage(); long currentProduction = isActive() && recipeLogic.getLastRecipe() != null ? - RecipeHelper.getOutputEUt(recipeLogic.getLastRecipe()) : 0; + recipeLogic.getLastRecipe().getOutputEUt() : 0; String voltageName = GTValues.VNF[GTUtil.getTierByVoltage(currentProduction)]; if (isActive()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index a2501b1f60a..d2e86ca97f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -114,7 +114,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not // Duration = 1.5x base duration // EUt (not steam) = (4/3) * (2/3) * parallels * base EUt, up to a max of 32 EUt - long eut = RecipeHelper.getInputEUt(recipe); + long eut = recipe.getInputEUt(); int parallelAmount = ParallelLogic.getParallelAmount(machine, recipe, steamMachine.maxParallels); double eutMultiplier = (eut * 0.8888 * parallelAmount <= 32) ? (0.8888 * parallelAmount) : (32.0 / eut); return ModifierFunction.builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index 25d33de72b1..48b9979aeb6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -141,7 +141,6 @@ public int getOreToProduce() { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { - RecipeHelper.postWorking(this.machine, lastRecipe); RecipeHelper.handleRecipeIO(this.machine, lastRecipe, IO.OUT, this.chanceCaches); } depleteVein(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java index 1dbd4d84d85..8d4f9a2634f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/FluidDrillLogic.java @@ -108,7 +108,6 @@ private int getFluidToProduce(FluidVeinWorldEntry entry) { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { - RecipeHelper.postWorking(this.machine, lastRecipe); RecipeHelper.handleRecipeIO(this.machine, lastRecipe, IO.OUT, this.chanceCaches); } depleteVein(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index aa61bcdb89c..d1608f95c5b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -363,7 +363,7 @@ protected boolean doPostProcessing(NonNullList blockDrops, BlockState GTRecipe match = matches.next(); if (match == null) continue; - var eut = RecipeHelper.getInputEUt(match); + long eut = match.getInputEUt(); if (GTUtil.getTierByVoltage(eut) <= getVoltageTier()) { if (RecipeHelper.handleRecipeIO(this, match, IO.OUT, this.chanceCaches).isSuccess()) { blockDrops.clear(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index c2db726b6e1..5b18087b58e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -751,7 +751,7 @@ public GTRecipeBuilder circuitMeta(int configuration) { if (configuration < 0 || configuration > IntCircuitBehaviour.CIRCUIT_MAX) { GTCEu.LOGGER.error("Circuit configuration must be in the bounds 0 - 32"); } - return notConsumable(IntCircuitIngredient.circuitInput(configuration)); + return notConsumable(IntCircuitIngredient.of(configuration)); } public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceBoost) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 655b9792723..826566485f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -47,11 +46,11 @@ protected void write(CompoundTag data, RecipeLogic capability) { var recipeInfo = new CompoundTag(); var recipe = capability.getLastRecipe(); if (recipe != null) { - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; + long EUt = recipe.getInputEUt(); + boolean isInput = true; if (EUt == 0) { isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); + EUt = recipe.getOutputEUt(); } recipeInfo.putLong("EUt", EUt); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index 40850cde490..94438991896 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -398,7 +398,7 @@ public GTRecipeJS circuit(int configuration) { if (configuration < 0 || configuration > IntCircuitBehaviour.CIRCUIT_MAX) { throw new RecipeExceptionJS(String.format("Circuit configuration must be in the bounds 0 - 32")); } - return notConsumable(InputItem.of(IntCircuitIngredient.circuitInput(configuration), 1)); + return notConsumable(InputItem.of(IntCircuitIngredient.of(configuration), 1)); } public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index e8b46ba7cbd..cec5bf914ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; -import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.utils.LocalizationUtils; @@ -50,11 +49,11 @@ protected void addProbeInfo(RecipeLogic capability, IProbeInfo probeInfo, Player // } var recipe = capability.getLastRecipe(); if (recipe != null) { - var EUt = RecipeHelper.getInputEUt(recipe); - var isInput = true; + long EUt = recipe.getInputEUt(); + boolean isInput = true; if (EUt == 0) { isInput = false; - EUt = RecipeHelper.getOutputEUt(recipe); + EUt = recipe.getOutputEUt(); } long absEUt = Math.abs(EUt); String text = null; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 51195c18a20..3348dd15186 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -102,9 +102,9 @@ private void setRecipeWidget() { addWidget(group); - var EUt = RecipeHelper.getInputEUt(recipe); + long EUt = recipe.getInputEUt(); if (EUt == 0) { - EUt = RecipeHelper.getOutputEUt(recipe); + EUt = recipe.getOutputEUt(); } int yOffset = 5 + size.height; this.yOffset = yOffset; @@ -147,8 +147,8 @@ private void initializeRecipeTextWidget() { String tierText = GTValues.VNF[tier]; int textsY = yOffset - 10; int duration = recipe.duration; - long inputEUt = RecipeHelper.getInputEUt(recipe); - long outputEUt = RecipeHelper.getOutputEUt(recipe); + long inputEUt = recipe.getInputEUt(); + long outputEUt = recipe.getOutputEUt(); List texts = getRecipeParaText(recipe, duration, inputEUt, outputEUt); for (Component text : texts) { textsY += 10; @@ -253,7 +253,7 @@ public void setRecipeOC(int button, boolean isShiftClick) { } private void setRecipeTextWidget(OverclockingLogic logic) { - long inputEUt = RecipeHelper.getInputEUt(recipe); + long inputEUt = recipe.getInputEUt(); int duration = recipe.duration; String tierText = GTValues.VNF[tier]; if (tier > minTier && inputEUt != 0) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java b/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java deleted file mode 100644 index cd4a13b400d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/FluidKey.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; - -import lombok.Getter; - -import java.util.Objects; - -public class FluidKey { - - @Getter - public final Fluid fluid; - // Don't make this final, so we can clear the NBT if we remove the only key, resulting in an NBT of {}. Thanks Forge - public CompoundTag tag; - private final int amount; - - public FluidKey(FluidStack fluidStack) { - this.fluid = fluidStack.getFluid(); - this.tag = fluidStack.getTag(); - this.amount = fluidStack.getAmount(); - } - - public FluidKey copy() { - return new FluidKey(new FluidStack(getFluid(), this.amount, tag)); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof FluidKey fluidKey)) return false; - if (!Objects.equals(fluid, fluidKey.fluid)) - return false; - if (tag == null && fluidKey.tag != null) return false; - else return tag == null || tag.equals(fluidKey.tag); - } - - @Override - public int hashCode() { - int hash = 0; - hash += Objects.hash(fluid); - if (tag != null && !tag.isEmpty()) { - hash += tag.hashCode(); - } - return hash; - } - - @Override - public String toString() { - return "FluidKey{" + - "fluid=" + fluid + - ", tag=" + tag + - '}'; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java b/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java index 57e909fccf4..5d654844e3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTHashMaps.java @@ -10,7 +10,6 @@ import java.util.Collection; import java.util.Map; -import java.util.Set; public final class GTHashMaps { @@ -93,48 +92,39 @@ public static Object2IntMap createItemStackMap(boolean linked) { } /** - * Maps all fluids in the {@link IFluidHandler} into a {@link FluidKey}, {@link Integer} value as amount + * Collects the FluidStacks in an IFluidHandler into a map of FluidStack -> total amount + * Note that FluidStacks are compared by their Fluid and Tag, not their amount * - * @param fluidInputs The combined fluid input inventory handler, in the form of an {@link IFluidHandler} - * @return a {@link Set} of unique {@link FluidKey}s for each fluid in the handler. Will be oversized stacks if - * required + * @param fluidInputs The {@link IFluidHandler} to query from + * @return a map of FluidStack -> amount */ - public static Map fromFluidHandler(IFluidHandler fluidInputs) { - final Object2IntMap map = new Object2IntLinkedOpenHashMap<>(); - + public static Map fromFluidHandler(IFluidHandler fluidInputs) { + Object2IntLinkedOpenHashMap map = new Object2IntLinkedOpenHashMap<>(); // Create a single stack of the combined count for each item - for (int i = 0; i < fluidInputs.getTanks(); i++) { FluidStack fluidStack = fluidInputs.getFluidInTank(i); - if (fluidStack != FluidStack.EMPTY && fluidStack.getAmount() > 0) { - FluidKey key = new FluidKey(fluidStack); - map.put(key, map.getInt(key) + fluidStack.getAmount()); + if (!fluidStack.isEmpty()) { + map.addTo(fluidStack, fluidStack.getAmount()); } } - return map; } /** - * Maps all fluids in the {@link FluidStack} {@link Collection} into a {@link FluidKey}, {@link Integer} value as - * amount + * Collects FluidStacks into a map of FluidStack -> total amount + * Note that FluidStacks are compared by their Fluid and Tag, not their amount * - * @param fluidInputs The combined fluid input inventory handler, in the form of an {@link IFluidHandler} - * @return a {@link Set} of unique {@link FluidKey}s for each fluid in the handler. Will be oversized stacks if - * required + * @param fluidInputs an iterable set of FluidStacks + * @return a map of FluidStack -> amount */ - public static Map fromFluidCollection(Collection fluidInputs) { - final Object2IntMap map = new Object2IntLinkedOpenHashMap<>(); - + public static Map fromFluidCollection(Iterable fluidInputs) { + Object2IntLinkedOpenHashMap map = new Object2IntLinkedOpenHashMap<>(); // Create a single stack of the combined count for each item - for (FluidStack fluidStack : fluidInputs) { - if (fluidStack != null && fluidStack.getAmount() > 0) { - FluidKey key = new FluidKey(fluidStack); - map.put(key, map.getInt(key) + fluidStack.getAmount()); + if (fluidStack != null && !fluidStack.isEmpty()) { + map.addTo(fluidStack, fluidStack.getAmount()); } } - return map; } } From a34418190ab0a05bde385e8ebbf696d7dc8881bf Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Mon, 30 Jun 2025 04:23:29 -0600 Subject: [PATCH 084/270] Fix Recipe Runner Error Reporting (#3296) --- .../gtceu/api/machine/trait/RecipeLogic.java | 15 +++++++++------ .../gtceu/api/recipe/RecipeRunner.java | 4 +--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index f3186f4091a..b87572b189b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -144,8 +144,9 @@ public void resetRecipeLogic() { duration = 0; isActive = false; lastFailedMatches = null; - if (status != Status.SUSPEND) - status = Status.IDLE; + if (status != Status.SUSPEND) { + setStatus(Status.IDLE); + } updateTickSubscription(); } @@ -435,7 +436,8 @@ public void onRecipeFinish() { } } // try it again - if (!recipeDirty && !suspendAfterFinish && checkRecipe(lastRecipe).isSuccess()) { + var recipeCheck = checkRecipe(lastRecipe); + if (!recipeDirty && !suspendAfterFinish && recipeCheck.isSuccess()) { setupRecipe(lastRecipe); } else { if (suspendAfterFinish) { @@ -443,6 +445,7 @@ public void onRecipeFinish() { suspendAfterFinish = false; } else { setStatus(Status.IDLE); + waitingReason = recipeCheck.reason(); } consecutiveRecipes = 0; progress = 0; @@ -509,7 +512,7 @@ public void updateSound() { @Override public IGuiTexture getFancyTooltipIcon() { - if (isWaiting()) { + if (waitingReason != null) { return GuiTextures.INSUFFICIENT_INPUT; } return IGuiTexture.EMPTY; @@ -517,7 +520,7 @@ public IGuiTexture getFancyTooltipIcon() { @Override public List getFancyTooltip() { - if (isWaiting() && waitingReason != null) { + if (waitingReason != null) { return List.of(waitingReason); } return Collections.emptyList(); @@ -525,7 +528,7 @@ public List getFancyTooltip() { @Override public boolean showFancyTooltip() { - return isWaiting(); + return waitingReason != null; } protected Map, Object2IntMap> makeChanceCaches() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 570b28f36ad..4b4bdb20749 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -109,9 +109,7 @@ private void fillContentMatchList(Map, List> entrie } private RecipeHandlingResult handleContents() { - var result = handleContentsInternal(io); - if (result.isSuccess()) return result; - return handleContentsInternal(IO.BOTH); + return handleContentsInternal(io); } private RecipeHandlingResult handleContentsInternal(IO capIO) { From aec031f32d8c17d591c2acd808ca303ed6f982ab Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:38:38 +0300 Subject: [PATCH 085/270] Clarify GTRecipeBuilder's error messages and fix the issues #3268 had (#3293) --- .../java/com/gregtechceu/gtceu/GTCEu.java | 3 +- .../api/data/chemical/ChemicalHelper.java | 25 +- .../material/stack/MaterialStack.java | 8 + .../trait/NotifiableItemStackHandler.java | 3 +- .../ingredient/IntProviderIngredient.java | 19 +- .../api/recipe/ingredient/NBTIngredient.java | 12 - .../recipe/ingredient/SizedIngredient.java | 17 +- .../gtceu/api/registry/GTRegistries.java | 13 +- .../recipe/builder/BlastingRecipeBuilder.java | 8 +- .../recipe/builder/CampfireRecipeBuilder.java | 8 +- .../data/recipe/builder/GTRecipeBuilder.java | 428 +++++++++--------- .../ShapedEnergyTransferRecipeBuilder.java | 8 +- .../recipe/builder/ShapedRecipeBuilder.java | 8 +- .../builder/ShapelessRecipeBuilder.java | 8 +- .../recipe/builder/SmeltingRecipeBuilder.java | 8 +- .../recipe/builder/SmokingRecipeBuilder.java | 8 +- .../kjs/recipe/GTRecipeSchema.java | 161 ++++--- .../recipe/components/ExtendedOutputItem.java | 106 +++-- .../recipe/components/GTRecipeComponents.java | 6 +- .../gtceu/utils/IngredientEquality.java | 24 +- 20 files changed, 434 insertions(+), 447 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index e82439c4533..bba3525cc2d 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -15,6 +15,7 @@ import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.loading.FMLPaths; +import net.minecraftforge.fml.util.thread.EffectiveSide; import net.minecraftforge.server.ServerLifecycleHooks; import dev.emi.emi.config.EmiConfig; @@ -116,7 +117,7 @@ public static boolean isModLoaded(String modId) { * @return if the current thread is the client thread */ public static boolean isClientThread() { - return isClientSide() && Minecraft.getInstance().isSameThread(); + return isClientSide() && EffectiveSide.get().isClient(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 459900ade99..ae7d984611e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -43,22 +43,27 @@ @MethodsReturnNonnullByDefault public class ChemicalHelper { - public static MaterialStack getMaterialStack(@Nullable Object object) { - if (object instanceof MaterialStack materialStack) { - return materialStack; - } else if (object instanceof MaterialEntry entry) { - return getMaterialStack(entry); + public static @Nullable ItemMaterialInfo getMaterialInfo(@Nullable Object object) { + if (object instanceof ItemMaterialInfo materialInfo) { + return materialInfo; + } else if (object instanceof MaterialStack materialStack) { + return new ItemMaterialInfo(materialStack); } else if (object instanceof ItemStack itemStack) { - return getMaterialStack(itemStack); + return ItemMaterialData.getMaterialInfo(itemStack.getItem()); } else if (object instanceof ItemLike item) { - return getMaterialStack(item); + return ItemMaterialData.getMaterialInfo(item); + } else if (object instanceof MaterialEntry entry) { + var items = getItems(entry); + if (!items.isEmpty()) { + return ItemMaterialData.getMaterialInfo(items.get(0)); + } } else if (object instanceof Ingredient ing) { for (var stack : ing.getItems()) { - var ms = getMaterialStack(stack); - if (!ms.isEmpty()) return ms; + var ms = ItemMaterialData.getMaterialInfo(stack.getItem()); + if (ms != null) return ms; } } - return MaterialStack.EMPTY; + return null; } public static MaterialStack getMaterialStack(ItemStack itemStack) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java index 7e053c33c6d..27cb7a51bf1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java @@ -20,6 +20,14 @@ public MaterialStack copy() { return new MaterialStack(material, amount); } + public MaterialStack add(long amount) { + return new MaterialStack(material, this.amount + amount); + } + + public MaterialStack multiply(long amount) { + return new MaterialStack(material, this.amount * amount); + } + public static MaterialStack fromString(CharSequence str) { String trimmed = str.toString().trim(); String copy = trimmed; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index 7300c415812..f69ad902401 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -116,8 +116,7 @@ public static List handleRecipe(IO io, GTRecipe recipe, List tag, IntProvider countProvider) { - return of(Ingredient.of(tag), countProvider); + public static IntProviderIngredient of(ItemStack stack, IntProvider countProvider) { + Ingredient inner = stack.hasTag() ? StrictNBTIngredient.of(stack) : Ingredient.of(stack); + return of(inner, countProvider); } @Override @@ -64,10 +63,12 @@ public boolean test(@Nullable ItemStack stack) { @Override public ItemStack @NotNull [] getItems() { - if (itemStacks == null) - itemStacks = Arrays.stream(inner.getItems()) - .map(i -> i.copyWithCount(getSampledCount(GTValues.RNG))) - .toArray(ItemStack[]::new); + if (itemStacks == null) { + itemStacks = inner.getItems(); + for (int i = 0; i < itemStacks.length; i++) { + itemStacks[i] = itemStacks[i].copyWithCount(getSampledCount(GTValues.RNG)); + } + } return itemStacks; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java deleted file mode 100644 index d4ee09bbbbc..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/NBTIngredient.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.ingredient; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; - -public class NBTIngredient { - - public static Ingredient createNBTIngredient(ItemStack itemStack) { - return StrictNBTIngredient.of(itemStack); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java index 0c195723fa5..480e78cb3a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IIngredientSerializer; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -55,8 +56,7 @@ protected SizedIngredient(@NotNull TagKey tag, int amount) { } protected SizedIngredient(ItemStack itemStack) { - this((itemStack.hasTag() || itemStack.getDamageValue() > 0) ? NBTIngredient.createNBTIngredient(itemStack) : - Ingredient.of(itemStack), itemStack.getCount()); + this(itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack), itemStack.getCount()); } public static SizedIngredient create(ItemStack inner) { @@ -136,11 +136,10 @@ public boolean test(@Nullable ItemStack stack) { return intProviderIngredient.getItems(); } if (changed || itemStacks == null) { - itemStacks = Arrays.stream(inner.getItems()).map(i -> { - ItemStack ic = i.copy(); - ic.setCount(amount); - return ic; - }).toArray(ItemStack[]::new); + itemStacks = inner.getItems(); + for (int i = 0; i < itemStacks.length; i++) { + itemStacks[i] = itemStacks[i].copyWithCount(amount); + } changed = false; } return itemStacks; @@ -165,7 +164,9 @@ public int hashCode() { public static Ingredient getInner(Ingredient ingredient) { if (ingredient instanceof SizedIngredient sizedIngredient) { - return sizedIngredient.inner; + return getInner(sizedIngredient.getInner()); + } else if (ingredient instanceof IntProviderIngredient intProviderIngredient) { + return getInner(intProviderIngredient.getInner()); } return ingredient; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index 0ed58043442..705f8ced765 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -110,11 +110,20 @@ public static void updateFrozenRegistry(RegistryAccess registryAccess) { } public static RegistryAccess builtinRegistry() { - if (FROZEN == BLANK && GTCEu.isClientThread()) { + if (GTCEu.isClientThread()) { + return ClientHelpers.getClientRegistries(); + } + return FROZEN; + } + + private static class ClientHelpers { + + private static RegistryAccess getClientRegistries() { if (Minecraft.getInstance().getConnection() != null) { return Minecraft.getInstance().getConnection().registryAccess(); + } else { + return FROZEN; } } - return FROZEN; } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java index e94d6667575..1b5718716f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/BlastingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -47,11 +47,7 @@ public BlastingRecipeBuilder input(TagKey itemStack) { } public BlastingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java index 02e768d46ee..b95064c1fad 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/CampfireRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -47,11 +47,7 @@ public CampfireRecipeBuilder input(TagKey itemStack) { } public CampfireRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 5b18087b58e..5859aa31743 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -50,6 +50,7 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; import com.google.gson.JsonArray; @@ -63,10 +64,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; +import java.util.function.*; import javax.annotation.ParametersAreNonnullByDefault; @@ -109,7 +107,7 @@ public class GTRecipeBuilder { private boolean removePreviousMatInfo = false; public GTRecipeCategory recipeCategory; @Setter - public BiConsumer> onSave; + public @Nullable BiConsumer> onSave; @Getter private final Collection researchRecipeEntries = new ArrayList<>(); @@ -178,95 +176,37 @@ public GTRecipeBuilder copyFrom(GTRecipeBuilder builder) { return builder.copy(builder.id).onSave(null).recipeType(recipeType).category(recipeCategory); } + protected Content makeContent(Object o) { + return new Content(o, chance, maxChance, tierChanceBoost); + } + public GTRecipeBuilder input(RecipeCapability capability, T obj) { var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - t.computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); + warnTooManyIngredients(capability, true, t, 1); + t.computeIfAbsent(capability, c -> new ArrayList<>()).add(makeContent(capability.of(obj))); return this; } public GTRecipeBuilder input(RecipeCapability capability, T... obj) { var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); + warnTooManyIngredients(capability, true, t, obj.length); + t.computeIfAbsent(capability, c -> new ArrayList<>()) + .addAll(Arrays.stream(obj).map(capability::of).map(this::makeContent).toList()); return this; } public GTRecipeBuilder output(RecipeCapability capability, T obj) { var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); + warnTooManyIngredients(capability, false, t, 1); + t.computeIfAbsent(capability, c -> new ArrayList<>()).add(makeContent(capability.of(obj))); return this; } public GTRecipeBuilder output(RecipeCapability capability, T... obj) { var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); - return this; - } - - public GTRecipeBuilder inputs(RecipeCapability capability, Object obj) { - var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); - return this; - } - - public GTRecipeBuilder inputs(RecipeCapability capability, Object... obj) { - var t = (perTick ? tickInput : input); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxInputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more inputs than RecipeType can support, id: {}, Max {}{}Inputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxInputs(capability)); - } - (perTick ? tickInput : input).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); - return this; - } - - public GTRecipeBuilder outputs(RecipeCapability capability, Object obj) { - var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() >= recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()) - .add(new Content(capability.of(obj), chance, maxChance, tierChanceBoost)); - return this; - } - - public GTRecipeBuilder outputs(RecipeCapability capability, Object... obj) { - var t = (perTick ? tickOutput : output); - if (t.get(capability) != null && t.get(capability).size() + obj.length > recipeType.getMaxOutputs(capability)) { - GTCEu.LOGGER.warn("Trying to add more outputs than RecipeType can support, id: {}, Max {}{}Outputs: {}", - id, (perTick ? "Tick " : ""), capability.name, recipeType.getMaxOutputs(capability)); - } - (perTick ? tickOutput : output).computeIfAbsent(capability, c -> new ArrayList<>()).addAll(Arrays.stream(obj) - .map(capability::of) - .map(o -> new Content(o, chance, maxChance, tierChanceBoost)).toList()); + warnTooManyIngredients(capability, false, t, obj.length); + t.computeIfAbsent(capability, c -> new ArrayList<>()) + .addAll(Arrays.stream(obj).map(capability::of).map(this::makeContent).toList()); return this; } @@ -348,9 +288,10 @@ public GTRecipeBuilder inputItems(Object input) { } else if (input instanceof MachineDefinition machine) { return inputItems(machine); } else { - GTCEu.LOGGER.error("Input item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Input item is not one of: + Item, Supplier, ItemStack, Ingredient, MaterialEntry, TagKey, MachineDefinition + id: {}""", id); return this; } } @@ -371,34 +312,57 @@ public GTRecipeBuilder inputItems(Object input, int count) { } else if (input instanceof MachineDefinition machine) { return inputItems(machine, count); } else { - GTCEu.LOGGER.error("Input item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Input item is not one of: + Item, Supplier, ItemStack, Ingredient, MaterialEntry, TagKey, MachineDefinition + id: {}""", id); return this; } } public GTRecipeBuilder inputItems(Ingredient inputs) { + if (intProviderInputError(inputs, 0)) { + return this; + } else if (missingIngredientError(0, true, ItemRecipeCapability.CAP, inputs::isEmpty)) { + return this; + } return input(ItemRecipeCapability.CAP, inputs); } public GTRecipeBuilder inputItems(Ingredient... inputs) { - return input(ItemRecipeCapability.CAP, inputs); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + var ingredient = inputs[i]; + if (intProviderInputError(ingredient, i)) { + return this; + } else if (missingIngredientError(i, true, ItemRecipeCapability.CAP, ingredient::isEmpty)) { + return this; + } else { + ingredients.add(ingredient); + } + } + return input(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); } public GTRecipeBuilder inputItems(Ingredient inputs, int count) { - Ingredient countedInput = Ingredient.of(inputs.getItems()); - return input(ItemRecipeCapability.CAP, countedInput); + if (intProviderInputError(inputs, 0)) { + return this; + } else if (missingIngredientError(0, true, ItemRecipeCapability.CAP, inputs::isEmpty)) { + return this; + } + return input(ItemRecipeCapability.CAP, SizedIngredient.create(inputs, count)); } public GTRecipeBuilder inputItems(ItemStack input) { - if (input.isEmpty()) { - GTCEu.LOGGER.error("Input items is empty, id: {}", id); + if (missingIngredientError(0, true, ItemRecipeCapability.CAP, input::isEmpty)) { + return this; } else { - var matStack = ItemMaterialData.getMaterialInfo(input.getItem()); + var matInfo = ItemMaterialData.getMaterialInfo(input.getItem()); if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); + if (matInfo != null) { + for (var matStack : matInfo.getMaterials()) { + tempItemMaterialStacks.add(matStack.multiply(input.getCount())); + } } else { tempItemStacks.add(input); } @@ -408,28 +372,29 @@ public GTRecipeBuilder inputItems(ItemStack input) { } public GTRecipeBuilder inputItems(ItemStack... inputs) { - for (ItemStack itemStack : inputs) { - if (itemStack.isEmpty()) { - GTCEu.LOGGER.error("Input item is empty, id: {}", id); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + ItemStack itemStack = inputs[i]; + if (missingIngredientError(i, true, ItemRecipeCapability.CAP, itemStack::isEmpty)) { + return this; } else { - var matStack = ItemMaterialData.getMaterialInfo(itemStack.getItem()); + var matInfo = ItemMaterialData.getMaterialInfo(itemStack.getItem()); if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); + if (matInfo != null) { + for (var matStack : matInfo.getMaterials()) { + tempItemMaterialStacks.add(matStack.multiply(itemStack.getCount())); + } } else { tempItemStacks.add(itemStack); } } + ingredients.add(SizedIngredient.create(itemStack)); } } - return input(ItemRecipeCapability.CAP, - Arrays.stream(inputs).map(SizedIngredient::create).toArray(Ingredient[]::new)); + return input(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); } public GTRecipeBuilder inputItems(TagKey tag, int amount) { - if (amount == 0) { - GTCEu.LOGGER.error("Item Count is 0, id: {}", id); - } return inputItems(SizedIngredient.create(tag, amount)); } @@ -442,15 +407,7 @@ public GTRecipeBuilder inputItems(Item input, int amount) { } public GTRecipeBuilder inputItems(Item input) { - var matStack = ItemMaterialData.getMaterialInfo(input); - if (chance == maxChance && chance != 0) { - if (matStack != null) { - tempItemMaterialStacks.addAll(matStack.getMaterials()); - } else { - tempItemStacks.add(new ItemStack(input)); - } - } - return inputItems(SizedIngredient.create(new ItemStack(input))); + return inputItems(input, 1); } public GTRecipeBuilder inputItems(Supplier input) { @@ -458,7 +415,7 @@ public GTRecipeBuilder inputItems(Supplier input) { } public GTRecipeBuilder inputItems(Supplier input, int amount) { - return inputItems(new ItemStack(input.get(), amount)); + return inputItems(input.get(), amount); } public GTRecipeBuilder inputItems(TagPrefix orePrefix, Material material) { @@ -470,25 +427,23 @@ public GTRecipeBuilder inputItems(MaterialEntry input) { } public GTRecipeBuilder inputItems(MaterialEntry input, int count) { - if (input.material().isNull()) { - GTCEu.LOGGER.error("MaterialEntry material is null, id: {}, TagPrefix: {}", id, input.tagPrefix()); - } return inputItems(input.tagPrefix(), input.material(), count); } public GTRecipeBuilder inputItems(TagPrefix tagPrefix, @NotNull Material material, int count) { - if (material.isNull()) { + if (tagPrefix.isEmpty() || material.isNull()) { GTCEu.LOGGER.error( "Tried to set input item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, tagPrefix, "null", count); - return inputItems(ItemStack.EMPTY); + id, tagPrefix, material, count); + return this; } else { tempItemMaterialStacks.add(new MaterialStack(material, tagPrefix.getMaterialAmount(material) * count)); - tagPrefix.secondaryMaterials().forEach( - mat -> tempItemMaterialStacks.add(new MaterialStack(mat.material(), mat.amount() * count))); + tagPrefix.secondaryMaterials().forEach(mat -> tempItemMaterialStacks.add(mat.multiply(count))); } TagKey tag = ChemicalHelper.getTag(tagPrefix, material); - if (tag == null) { + if (tag != null) { + return inputItems(tag, count); + } else { var item = ChemicalHelper.get(tagPrefix, material, count); if (item.isEmpty()) { GTCEu.LOGGER.error( @@ -497,7 +452,6 @@ public GTRecipeBuilder inputItems(TagPrefix tagPrefix, @NotNull Material materia } return input(ItemRecipeCapability.CAP, SizedIngredient.create(item)); } - return inputItems(tag, count); } public GTRecipeBuilder inputItems(MachineDefinition machine) { @@ -515,20 +469,15 @@ public GTRecipeBuilder outputItems(Object output) { return outputItems(item.asItem()); } else if (output instanceof ItemStack stack) { return outputItems(stack); - } else if (output instanceof IntProviderIngredient provider) { - return outputItems(provider); - } else if (output instanceof Ingredient ingredient) { - return outputItems(ingredient); } else if (output instanceof MaterialEntry entry) { return outputItems(entry); - } else if (output instanceof TagKey tag) { - return outputItems((TagKey) tag); } else if (output instanceof MachineDefinition machine) { return outputItems(machine); } else { - GTCEu.LOGGER.error("Output item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Output item is not one of: + Item, Supplier, ItemStack, MaterialEntry, MachineDefinition + id: {}""", id); return this; } } @@ -540,56 +489,37 @@ public GTRecipeBuilder outputItems(Object output, int count) { return outputItems(item.asItem(), count); } else if (output instanceof ItemStack stack) { return outputItems(stack.copyWithCount(count)); - } else if (output instanceof IntProviderIngredient provider) { - return outputItems(provider); - } else if (output instanceof Ingredient ingredient) { - return outputItems(ingredient, count); } else if (output instanceof MaterialEntry entry) { return outputItems(entry, count); - } else if (output instanceof TagKey tag) { - return outputItems((TagKey) tag, count); } else if (output instanceof MachineDefinition machine) { return outputItems(machine, count); } else { - GTCEu.LOGGER.error("Output item is not one of:\n" + - "Item, Supplier, ItemStack, Ingredient, " + - "MaterialEntry, TagKey, MachineDefinition, id: {}", id); + GTCEu.LOGGER.error(""" + Output item is not one of: + Item, Supplier, ItemStack, MaterialEntry, MachineDefinition + id: {}""", id); return this; } } - public GTRecipeBuilder outputItems(Ingredient output) { - return output(ItemRecipeCapability.CAP, output); - } - - public GTRecipeBuilder outputItems(Ingredient output, int amount) { - Ingredient countedOutput = Ingredient.of(output.getItems()); - return input(ItemRecipeCapability.CAP, countedOutput); - } - - public GTRecipeBuilder outputItems(IntProviderIngredient output) { - return output(ItemRecipeCapability.CAP, output); - } - - public GTRecipeBuilder outputItems(Ingredient... inputs) { - return output(ItemRecipeCapability.CAP, inputs); - } - public GTRecipeBuilder outputItems(ItemStack output) { - if (output.isEmpty()) { - GTCEu.LOGGER.error("Output items is empty, id: {}", id); + if (missingIngredientError(0, false, ItemRecipeCapability.CAP, output::isEmpty)) { + return this; } return output(ItemRecipeCapability.CAP, SizedIngredient.create(output)); } public GTRecipeBuilder outputItems(ItemStack... outputs) { - for (ItemStack itemStack : outputs) { - if (itemStack.isEmpty()) { - GTCEu.LOGGER.error("Output items is empty, id: {}", id); + List ingredients = new ArrayList<>(); + for (int i = 0; i < outputs.length; i++) { + ItemStack itemStack = outputs[i]; + if (missingIngredientError(i, false, ItemRecipeCapability.CAP, itemStack::isEmpty)) { + return this; + } else { + ingredients.add(SizedIngredient.create(itemStack)); } } - return output(ItemRecipeCapability.CAP, - Arrays.stream(outputs).map(SizedIngredient::create).toArray(Ingredient[]::new)); + return output(ItemRecipeCapability.CAP, ingredients.toArray(Ingredient[]::new)); } public GTRecipeBuilder outputItems(Item output, int amount) { @@ -613,32 +543,27 @@ public GTRecipeBuilder outputItems(TagPrefix orePrefix, Material material) { } public GTRecipeBuilder outputItems(TagPrefix orePrefix, @NotNull Material material, int count) { - if (material.isNull()) { + if (orePrefix.isEmpty() || material.isNull()) { GTCEu.LOGGER.error( "Tried to set output item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, orePrefix, "null", count); - return outputItems(ItemStack.EMPTY); + id, orePrefix, material, count); + return this; } var item = ChemicalHelper.get(orePrefix, material, count); if (item.isEmpty()) { GTCEu.LOGGER.error( "Tried to set output item stack that doesn't exist, id: {}, TagPrefix: {}, Material: {}, Count: {}", - id, orePrefix, "null", count); + id, orePrefix, material, count); + return this; } return outputItems(item); } public GTRecipeBuilder outputItems(MaterialEntry entry) { - if (entry.material().isNull()) { - GTCEu.LOGGER.error("Unification Entry material is null, id: {}, TagPrefix: {}", id, entry.tagPrefix()); - } return outputItems(entry.tagPrefix(), entry.material()); } public GTRecipeBuilder outputItems(MaterialEntry entry, int count) { - if (entry.material().isNull()) { - GTCEu.LOGGER.error("Unification Entry material is null, id: {}, TagPrefix: {}", id, entry.tagPrefix()); - } return outputItems(entry.tagPrefix(), entry.material(), count); } @@ -650,19 +575,8 @@ public GTRecipeBuilder outputItems(MachineDefinition machine, int count) { return outputItems(machine.asStack(count)); } - public GTRecipeBuilder outputItems(TagKey tag, int amount) { - if (amount == 0) { - GTCEu.LOGGER.error("Item Count is 0, id: {}", id); - } - return outputItems(SizedIngredient.create(tag, amount)); - } - - public GTRecipeBuilder outputItems(TagKey tag) { - return outputItems(tag, 1); - } - public GTRecipeBuilder outputItemsRanged(ItemStack output, IntProvider intProvider) { - return outputItems(IntProviderIngredient.of(SizedIngredient.create(output), intProvider)); + return outputItems(IntProviderIngredient.of(output, intProvider)); } public GTRecipeBuilder outputItemsRanged(Item input, IntProvider intProvider) { @@ -755,9 +669,7 @@ public GTRecipeBuilder circuitMeta(int configuration) { } public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -771,9 +683,7 @@ public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceB } public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -787,9 +697,7 @@ public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChance } public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -803,9 +711,7 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChance } public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanceBoost) { - if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { - GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", - ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + if (checkChanceAndPrintError(chance)) { return this; } int lastChance = this.chance; @@ -996,6 +902,9 @@ public GTRecipeBuilder inputFluids(@NotNull Material material, int amount) { } public GTRecipeBuilder inputFluids(FluidStack input) { + if (missingIngredientError(0, true, FluidRecipeCapability.CAP, input::isEmpty)) { + return this; + } var matStack = ChemicalHelper.getMaterial(input.getFluid()); if (!matStack.isNull() && chance != 0 && chance == maxChance) { tempFluidStacks.add(new MaterialStack(matStack, input.getAmount() * GTValues.M / GTValues.L)); @@ -1006,17 +915,24 @@ public GTRecipeBuilder inputFluids(FluidStack input) { } public GTRecipeBuilder inputFluids(FluidStack... inputs) { - for (var input : inputs) { - var matStack = ChemicalHelper.getMaterial(input.getFluid()); - if (!matStack.isNull()) { - if (chance == maxChance && chance != 0) { - tempFluidStacks.add(new MaterialStack(matStack, input.getAmount() * GTValues.M / GTValues.L)); + List ingredients = new ArrayList<>(); + for (int i = 0; i < inputs.length; i++) { + FluidStack fluid = inputs[i]; + if (missingIngredientError(i, true, FluidRecipeCapability.CAP, fluid::isEmpty)) { + return this; + } else { + var matStack = ChemicalHelper.getMaterial(fluid.getFluid()); + if (!matStack.isNull()) { + if (chance == maxChance && chance != 0) { + tempFluidStacks.add(new MaterialStack(matStack, fluid.getAmount() * GTValues.M / GTValues.L)); + } } + + TagKey tag = TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluid.getFluid()).getPath()); + ingredients.add(FluidIngredient.of(tag, fluid.getAmount(), fluid.getTag())); } } - return input(FluidRecipeCapability.CAP, Arrays.stream(inputs).map(fluid -> FluidIngredient.of( - TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluid.getFluid()).getPath()), - fluid.getAmount(), fluid.getTag())).toArray(FluidIngredient[]::new)); + return input(FluidRecipeCapability.CAP, ingredients.toArray(FluidIngredient[]::new)); } public GTRecipeBuilder inputFluids(FluidIngredient... inputs) { @@ -1460,14 +1376,22 @@ private void addOutputMaterialInfo() { var itemOutputs = output.getOrDefault(ItemRecipeCapability.CAP, new ArrayList<>()); var itemInputs = input.getOrDefault(ItemRecipeCapability.CAP, new ArrayList<>()); if (itemOutputs.size() == 1 && (!itemInputs.isEmpty() || !tempFluidStacks.isEmpty())) { - var currOutput = itemOutputs.get(0).content; - ItemLike out = null; + var currOutput = ItemRecipeCapability.CAP.of(itemOutputs.get(0).content); + Item out = null; int outputCount = 0; - if (currOutput instanceof Ingredient ingredient) { - if (ingredient.getItems().length > 0) { - out = ingredient.getItems()[0].getItem(); - outputCount = ingredient.getItems()[0].getCount(); + if (currOutput instanceof IntProviderIngredient intProvider) { + ItemStack[] items = intProvider.getInner().getItems(); + if (items.length > 0) { + out = items[0].getItem(); + // use the max amount of items for decomp info so dupes can't happen + outputCount = intProvider.getCountProvider().getMaxValue(); + } + } else if (!currOutput.isEmpty()) { + ItemStack[] items = currOutput.getItems(); + if (items.length > 0) { + out = items[0].getItem(); + outputCount = items[0].getCount(); } } @@ -1476,14 +1400,18 @@ private void addOutputMaterialInfo() { } Reference2LongOpenHashMap matStacks = new Reference2LongOpenHashMap<>(); - for (var input : tempItemMaterialStacks) { - long am = input.amount() / outputCount; - matStacks.addTo(input.material(), am); + if (itemMaterialInfo) { + for (var input : tempItemMaterialStacks) { + long am = input.amount() / outputCount; + matStacks.addTo(input.material(), am); + } } - for (var input : tempFluidStacks) { - long am = input.amount() / outputCount; - matStacks.addTo(input.material(), am); + if (fluidMaterialInfo) { + for (var input : tempFluidStacks) { + long am = input.amount() / outputCount; + matStacks.addTo(input.material(), am); + } } if (outputCount != 0 && !tempItemStacks.isEmpty()) { @@ -1499,15 +1427,23 @@ private void addOutputMaterialInfo() { private void removeExistingMaterialInfo() { var itemOutputs = output.get(ItemRecipeCapability.CAP); if (itemOutputs.size() == 1) { - var currOutput = itemOutputs.get(0).content; - ItemLike out = null; + var currOutput = ItemRecipeCapability.CAP.of(itemOutputs.get(0).content); + Item out = null; int outputCount = 0; - if (currOutput instanceof Ingredient ingredient) { - if (ingredient.getItems().length > 0) { - out = ingredient.getItems()[0].getItem(); + if (currOutput instanceof IntProviderIngredient intProvider) { + ItemStack[] items = intProvider.getInner().getItems(); + if (items.length > 0) { + out = items[0].getItem(); + // use the max amount of items for decomp info so dupes can't happen + outputCount = intProvider.getCountProvider().getMaxValue(); + } + } else if (!currOutput.isEmpty()) { + ItemStack[] items = currOutput.getItems(); + if (items.length > 0) { + out = items[0].getItem(); + outputCount = items[0].getCount(); } - outputCount = ingredient.getItems()[0].getCount(); } if (out == null || out == Items.AIR) { @@ -1532,6 +1468,50 @@ public GTRecipe buildRawRecipe() { conditions, List.of(), data, duration, recipeCategory); } + protected void warnTooManyIngredients(RecipeCapability capability, + boolean isInput, + Map, List> table, + int addedEntries) { + if (table.getOrDefault(capability, List.of()).size() + addedEntries > recipeType.getMaxOutputs(capability)) { + String io = isInput ? "inputs" : "outputs"; + GTCEu.LOGGER.warn("Recipe {} is trying to add more {} than its recipe type can support, Max {}{} {}: {}", + id, io, (perTick ? "Tick " : ""), capability.name, io, recipeType.getMaxOutputs(capability)); + } + } + + protected boolean intProviderInputError(Ingredient ingredient, int index) { + if (ingredient instanceof IntProviderIngredient) { + int size = (perTick ? tickOutput : output).getOrDefault(ItemRecipeCapability.CAP, List.of()).size(); + GTCEu.LOGGER.error("Using int provider ingredients as inputs is not supported!" + + "Input {} in recipe {} will be skipped.", size + index, id); + return true; + } + return false; + } + + protected boolean missingIngredientError(int index, boolean isInput, + RecipeCapability cap, BooleanSupplier empty) { + if (empty.getAsBoolean()) { + String io = isInput ? "Input" : "Output"; + if (perTick) { + io = "Tick " + io.toLowerCase(Locale.ROOT); + } + int size = (perTick ? tickOutput : output).getOrDefault(cap, List.of()).size(); + GTCEu.LOGGER.error("{} {} {} of recipe {} is empty", io, cap.name, size + index, id); + return true; + } + return false; + } + + protected boolean checkChanceAndPrintError(int chance) { + if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { + GTCEu.LOGGER.error("Chance cannot be less or equal to 0 or more than {}. Actual: {}.", + ChanceLogic.getMaxChancedValue(), chance, new Throwable()); + return true; + } + return false; + } + ////////////////////////////////////// // ******* Quick Query *******// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java index b77512d8f79..9fb82764ffd 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedEnergyTransferRecipeBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.ShapedEnergyTransferRecipe; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.Builder; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -17,6 +16,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -50,11 +50,7 @@ public ShapedEnergyTransferRecipeBuilder define(char cha, TagKey itemStack } public ShapedEnergyTransferRecipeBuilder define(char cha, ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - return where(cha, NBTIngredient.createNBTIngredient(itemStack)); - } else { - return where(cha, Ingredient.of(itemStack)); - } + return where(cha, itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); } public ShapedEnergyTransferRecipeBuilder define(char cha, ItemLike itemLike) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java index 9dee815b40d..26d6f675325 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapedRecipeBuilder.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.StrictShapedRecipe; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.Builder; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -17,6 +16,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -48,11 +48,7 @@ public ShapedRecipeBuilder define(char cha, TagKey itemStack) { } public ShapedRecipeBuilder define(char cha, ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - return where(cha, NBTIngredient.createNBTIngredient(itemStack)); - } else { - return where(cha, Ingredient.of(itemStack)); - } + return where(cha, itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); } public ShapedRecipeBuilder define(char cha, ItemLike itemLike) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java index 6e7416273be..8cdcaeef2c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/ShapelessRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -50,11 +50,7 @@ public ShapelessRecipeBuilder requires(TagKey itemStack) { } public ShapelessRecipeBuilder requires(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - requires(NBTIngredient.createNBTIngredient(itemStack)); - } else { - requires(Ingredient.of(itemStack)); - } + requires(itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack)); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java index 5d2542bdb47..696aee1a594 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmeltingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -47,11 +47,7 @@ public SmeltingRecipeBuilder input(TagKey itemStack) { } public SmeltingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java index cb7c932fe1c..17ac75350a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/SmokingRecipeBuilder.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.builder; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.ingredient.NBTIngredient; import com.lowdragmc.lowdraglib.utils.NBTToJsonConverter; @@ -15,6 +14,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonObject; import lombok.Setter; @@ -47,11 +47,7 @@ public SmokingRecipeBuilder input(TagKey itemStack) { } public SmokingRecipeBuilder input(ItemStack itemStack) { - if (itemStack.hasTag() || itemStack.getDamageValue() > 0) { - input = NBTIngredient.createNBTIngredient(itemStack); - } else { - input = Ingredient.of(itemStack); - } + input = itemStack.hasTag() ? StrictNBTIngredient.of(itemStack) : Ingredient.of(itemStack); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index 94438991896..f6ec913b67f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -41,6 +41,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -53,6 +54,7 @@ import dev.latvian.mods.kubejs.recipe.RecipeJS; import dev.latvian.mods.kubejs.recipe.RecipeKey; import dev.latvian.mods.kubejs.recipe.component.TimeComponent; +import dev.latvian.mods.kubejs.recipe.schema.RecipeConstructor; import dev.latvian.mods.kubejs.recipe.schema.RecipeSchema; import dev.latvian.mods.kubejs.util.ConsoleJS; import dev.latvian.mods.rhino.util.HideFromJS; @@ -103,8 +105,8 @@ public GTRecipeJS id(ResourceLocation _id) { this.idWithoutType = new ResourceLocation( _id.getNamespace().equals("minecraft") ? this.type.id.getNamespace() : _id.getNamespace(), _id.getPath()); - this.id = new ResourceLocation(idWithoutType.getNamespace(), - "%s/%s".formatted(this.type.id.getPath(), idWithoutType.getPath())); + this.id = idWithoutType.withPrefix(this.type.id.getPath() + "/"); + save(); return this; } @@ -237,9 +239,11 @@ public GTRecipeJS itemInput(MaterialEntry input, int count) { public GTRecipeJS inputItems(InputItem... inputs) { for (var stack : inputs) { - var matStack = ChemicalHelper.getMaterialStack(stack.ingredient); - if (!matStack.isEmpty()) { - itemMaterialStacks.add(new MaterialStack(matStack.material(), matStack.amount() * stack.count)); + var matInfo = ChemicalHelper.getMaterialInfo(stack.ingredient); + if (matInfo != null && chance == maxChance && chance != 0) { + for (var matStack : matInfo.getMaterials()) { + itemMaterialStacks.add(matStack.multiply(stack.count)); + } } } return input(ItemRecipeCapability.CAP, (Object[]) inputs); @@ -258,14 +262,14 @@ public GTRecipeJS inputItems(ItemStack... inputs) { } return input(ItemRecipeCapability.CAP, Arrays.stream(inputs) - .map(stack -> InputItem.of(SizedIngredient.create( - stack.hasTag() ? NBTIngredient.createNBTIngredient(stack) : Ingredient.of(stack), - stack.getCount()), stack.getCount())) + .map(stack -> InputItem.of( + stack.hasTag() ? StrictNBTIngredient.of(stack) : Ingredient.of(stack), + stack.getCount())) .toArray()); } public GTRecipeJS inputItems(TagKey tag, int amount) { - return inputItems(InputItem.of(SizedIngredient.create(tag, amount))); + return inputItems(InputItem.of(Ingredient.of(tag), amount)); } public GTRecipeJS inputItems(Item input, int amount) { @@ -277,7 +281,7 @@ public GTRecipeJS inputItems(Item input) { } public GTRecipeJS inputItems(Supplier input) { - return inputItems(InputItem.of(Ingredient.of(input.get()), 1)); + return inputItems(input.get()); } public GTRecipeJS inputItems(Supplier input, int amount) { @@ -331,11 +335,11 @@ public GTRecipeJS outputItems(ExtendedOutputItem... outputs) { } public GTRecipeJS outputItems(Item input, int amount) { - return outputItems(ExtendedOutputItem.of(new ItemStack(input, amount))); + return outputItems(new ExtendedOutputItem(new ItemStack(input, amount), null)); } public GTRecipeJS outputItems(Item input) { - return outputItems(ExtendedOutputItem.of(new ItemStack(input))); + return outputItems(new ExtendedOutputItem(new ItemStack(input), null)); } public GTRecipeJS outputItems(TagPrefix orePrefix, Material material) { @@ -343,7 +347,7 @@ public GTRecipeJS outputItems(TagPrefix orePrefix, Material material) { } public GTRecipeJS outputItems(TagPrefix orePrefix, Material material, int count) { - return outputItems(ExtendedOutputItem.of(ChemicalHelper.get(orePrefix, material, count))); + return outputItems(new ExtendedOutputItem(ChemicalHelper.get(orePrefix, material, count), null)); } public GTRecipeJS outputItems(MachineDefinition machine) { @@ -351,7 +355,7 @@ public GTRecipeJS outputItems(MachineDefinition machine) { } public GTRecipeJS outputItems(MachineDefinition machine, int count) { - return outputItems(new ExtendedOutputItem(machine.asStack(count))); + return outputItems(new ExtendedOutputItem(machine.asStack(count), null)); } public GTRecipeJS itemOutputsRanged(ExtendedOutputItem ingredient, int min, int max) { @@ -359,11 +363,11 @@ public GTRecipeJS itemOutputsRanged(ExtendedOutputItem ingredient, int min, int } public GTRecipeJS outputItemsRanged(Ingredient ingredient, int min, int max) { - return output(ItemRecipeCapability.CAP, IntProviderIngredient.of(ingredient, UniformInt.of(min, max))); + return output(ItemRecipeCapability.CAP, new ExtendedOutputItem(ingredient, 1, UniformInt.of(min, max))); } public GTRecipeJS outputItemsRanged(ItemStack stack, int min, int max) { - return outputItemsRanged(Ingredient.of(stack), min, max); + return output(ItemRecipeCapability.CAP, new ExtendedOutputItem(stack, UniformInt.of(min, max))); } public GTRecipeJS outputItemsRanged(TagPrefix orePrefix, Material material, int min, int max) { @@ -396,7 +400,7 @@ public GTRecipeJS notConsumableFluid(GTRecipeComponents.FluidIngredientJS fluid) public GTRecipeJS circuit(int configuration) { if (configuration < 0 || configuration > IntCircuitBehaviour.CIRCUIT_MAX) { - throw new RecipeExceptionJS(String.format("Circuit configuration must be in the bounds 0 - 32")); + throw new RecipeExceptionJS("Circuit configuration must be in the bounds 0 - 32"); } return notConsumable(InputItem.of(IntCircuitIngredient.of(configuration), 1)); } @@ -405,7 +409,7 @@ public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -422,7 +426,7 @@ public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -438,7 +442,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -451,11 +455,12 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh } public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(tag, mat)), chance, tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); } public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(tag, mat, count)), chance, tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat, count), null), chance, + tierChanceBoost); } public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int tierChanceBoost) { @@ -467,7 +472,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t if (split.length > 2) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } int chance; @@ -479,7 +484,7 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } return chancedOutput(stack, chance, tierChanceBoost); } @@ -489,18 +494,18 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } if (chance >= maxChance || maxChance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS(String.format( "Max Chance cannot be less or equal to Chance or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), maxChance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), maxChance, id)); } int scalar = Math.floorDiv(ChanceLogic.getMaxChancedValue(), maxChance); @@ -523,8 +528,8 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { - return chancedOutput(ExtendedOutputItem.of(ChemicalHelper.get(prefix, material, count)), fraction, - tierChanceBoost); + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(prefix, material, count), null), + fraction, tierChanceBoost); } public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { @@ -535,7 +540,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierCha if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } int lastChance = this.chance; int lastTierChanceBoost = this.tierChanceBoost; @@ -556,7 +561,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti if (split.length > 2) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } int chance; @@ -568,7 +573,7 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, new Throwable())); + fraction)); } return chancedFluidOutput(stack, chance, tierChanceBoost); } @@ -579,18 +584,18 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int ti } catch (NumberFormatException e) { throw new RecipeExceptionJS(String.format( "Fraction or number was not parsed correctly! Expected format is \"1/3\" or \"1000\". Actual: \"%s\".", - fraction, e)); + fraction), e); } if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( String.format("Chance cannot be less or equal to 0 or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), chance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), chance, id)); } if (chance >= maxChance || maxChance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS(String.format( "Max Chance cannot be less or equal to Chance or more than %s, Actual: %s, id: %s", - ChanceLogic.getMaxChancedValue(), maxChance, id, new Throwable())); + ChanceLogic.getMaxChancedValue(), maxChance, id)); } int scalar = Math.floorDiv(ChanceLogic.getMaxChancedValue(), maxChance); @@ -881,13 +886,13 @@ public GTRecipeJS ftbQuest(String questId) { private boolean applyResearchProperty(ResearchData.ResearchEntry researchEntry) { if (!ConfigHolder.INSTANCE.machines.enableResearch) return false; if (researchEntry == null) { - throw new RecipeExceptionJS( - String.format("Assembly Line Research Entry cannot be empty.", new IllegalArgumentException())); + throw new RecipeExceptionJS("Assembly Line Research Entry cannot be empty.", + new IllegalArgumentException()); } if (!generatingRecipes) { - throw new RecipeExceptionJS(String.format("Cannot generate recipes when using researchWithoutRecipe()", - new IllegalArgumentException())); + throw new RecipeExceptionJS("Cannot generate recipes when using researchWithoutRecipe()", + new IllegalStateException()); } if (getValue(CONDITIONS) == null) setValue(CONDITIONS, new RecipeCondition[0]); @@ -983,12 +988,11 @@ public GTRecipeJS removePreviousMaterialInfo() { @Override public ResourceLocation getOrCreateId() { - if (id == null) { - String prefix = type.id.getNamespace() + ":"; - String path = "%s/%s".formatted(type.id.getPath(), "kjs_custom"); - id = type.event.takeId(this, prefix, path); - String pathWithoutType = StringUtils.substringAfter(id.getPath(), '/'); - idWithoutType = new ResourceLocation(id.getNamespace(), pathWithoutType); + boolean wasNull = id == null; + + super.getOrCreateId(); + if (wasNull) { + idWithoutType = id.withPath(p -> StringUtils.substringAfter(p, '/')); } return id; } @@ -1016,7 +1020,8 @@ public InputItem readInputItem(Object from) { } public JsonElement writeInputItem(InputItem value) { - return SizedIngredient.create(value.ingredient, value.count).toJson(); + if (value.ingredient instanceof SizedIngredient sized) return sized.toJson(); + else return SizedIngredient.create(value.ingredient, value.count).toJson(); } @Override @@ -1025,13 +1030,8 @@ public OutputItem readOutputItem(Object from) { return outputItem; } else if (from instanceof OutputItem outputItem) { return outputItem; - } else if (from instanceof SizedIngredient ingredient) { - if (ingredient.getInner() instanceof IntProviderIngredient intProvider) { - return new ExtendedOutputItem(intProvider, 1); - } - return OutputItem.of(ingredient.getInner().getItems()[0], Double.NaN); - } else if (from instanceof IntProviderIngredient ingredient) { - return new ExtendedOutputItem(ingredient, 1); + } else if (from instanceof Ingredient ingredient) { + return ExtendedOutputItem.of(ingredient, 1); } else if (from instanceof JsonObject jsonObject) { float chance = 1.0f; if (jsonObject.has("chance")) { @@ -1048,7 +1048,9 @@ public OutputItem readOutputItem(Object from) { @Override public JsonElement writeOutputItem(OutputItem value) { - if (value instanceof ExtendedOutputItem extended) { + if (value.rolls != null) { + return IntProviderIngredient.of(value.item, value.rolls).toJson(); + } else if (value instanceof ExtendedOutputItem extended) { if (extended.ingredient.getInner() instanceof IntProviderIngredient intProvider) { return intProvider.toJson(); } @@ -1095,5 +1097,54 @@ public InputFluid readInputFluid(Object from) { ALL_INPUTS, ALL_TICK_INPUTS, ALL_OUTPUTS, ALL_TICK_OUTPUTS, INPUT_CHANCE_LOGICS, OUTPUT_CHANCE_LOGICS, TICK_INPUT_CHANCE_LOGICS, TICK_OUTPUT_CHANCE_LOGICS, CATEGORY) .constructor((recipe, schemaType, keys, from) -> recipe.id(from.getValue(recipe, ID)), ID) - .constructor(DURATION, CONDITIONS, ALL_INPUTS, ALL_OUTPUTS, ALL_TICK_INPUTS, ALL_TICK_OUTPUTS); + .constructor(RecipeConstructor.Factory.DEFAULT) + .constructor(DURATION, CONDITIONS, ALL_INPUTS, ALL_OUTPUTS, ALL_TICK_INPUTS, ALL_TICK_OUTPUTS) + .uniqueId(GTRecipeSchema::makeDefaultRecipeId); + + static @Nullable String makeDefaultRecipeId(RecipeJS recipe) { + String outputId = resolveRecipeIdFromOutputs(recipe, recipe.getValue(ALL_OUTPUTS)); + if (outputId == null) { + outputId = resolveRecipeIdFromOutputs(recipe, recipe.getValue(ALL_TICK_OUTPUTS)); + } + if (outputId == null) { + return null; + } + return RecipeSchema.normalizeId(outputId).replace('/', '_'); + } + + private static @Nullable String resolveRecipeIdFromOutputs(RecipeJS recipe, @Nullable CapabilityMap map) { + if (map == null || map.isEmpty()) return null; + + String item = parseItemOutputId(recipe, map); + if (item != null) return item; + else return parseFluidOutputId(recipe, map); + } + + private static @Nullable String parseItemOutputId(RecipeJS recipe, CapabilityMap map) { + var outputs = map.get(ItemRecipeCapability.CAP); + if (outputs != null && outputs.length > 0) { + var output = GTRecipeComponents.ITEM_OUT.baseComponent().read(recipe, outputs[0].content); + var id = output.item.getItemHolder().unwrapKey(); + if (id.isPresent()) { + return id.get().location().getPath(); + } + } + return null; + } + + @SuppressWarnings("deprecation") + private static @Nullable String parseFluidOutputId(RecipeJS recipe, CapabilityMap map) { + var outputs = map.get(FluidRecipeCapability.CAP); + if (outputs != null && outputs.length > 0) { + var output = GTRecipeComponents.FLUID_OUT.baseComponent().read(recipe, outputs[0].content); + var fluids = output.getIngredient().getStacks(); + if (fluids.length == 0) return null; + + var id = fluids[0].getFluid().builtInRegistryHolder().unwrapKey(); + if (id.isPresent()) { + return id.get().location().getPath(); + } + } + return null; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java index 529b4ad0396..8f7b41d2280 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java @@ -3,13 +3,11 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; -import com.google.gson.JsonElement; import dev.latvian.mods.kubejs.core.IngredientKJS; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; @@ -17,89 +15,87 @@ import dev.latvian.mods.kubejs.recipe.RecipeJS; import dev.latvian.mods.kubejs.recipe.ReplacementMatch; import dev.latvian.mods.kubejs.util.ConsoleJS; -import dev.latvian.mods.rhino.NativeObject; - -import java.util.Map; +import dev.latvian.mods.kubejs.util.MapJS; +import dev.latvian.mods.kubejs.util.UtilsJS; +import dev.latvian.mods.rhino.Wrapper; +import org.jetbrains.annotations.Nullable; public class ExtendedOutputItem extends OutputItem implements OutputReplacement { public SizedIngredient ingredient; - public ExtendedOutputItem(Ingredient ingredient, int count) { - super(((IngredientKJS) ingredient).kjs$getFirst().copyWithCount(count), Double.NaN, null); - // reset the ingredient if it's an int provider. - if (ingredient instanceof IntProviderIngredient intProvider) { - intProvider.setItemStacks(null); - intProvider.setSampledCount(-1); - } + public ExtendedOutputItem(Ingredient ingredient, int count, IntProvider rolls) { + super(((IngredientKJS) ingredient).kjs$getFirst().copyWithCount(count), Double.NaN, rolls); this.ingredient = SizedIngredient.create(ingredient, count); } - public ExtendedOutputItem(ItemStack stack) { - super(stack, Double.NaN, null); - this.ingredient = SizedIngredient.create(StrictNBTIngredient.of(stack)); + public ExtendedOutputItem(ItemStack stack, IntProvider rolls) { + super(stack, Double.NaN, rolls); + this.ingredient = SizedIngredient.create(stack); } - private ExtendedOutputItem(OutputItem item) { - this(Ingredient.of(item.item), item.getCount()); + public static ExtendedOutputItem of(Ingredient ingredient, int count) { + if (ingredient instanceof SizedIngredient sized) { + ingredient = sized.getInner(); + if (count == 1) return of(ingredient, sized.getAmount()); + } + IntProvider rolls = null; + if (ingredient instanceof IntProviderIngredient intProvider) { + rolls = intProvider.getCountProvider(); + ingredient = intProvider.getInner(); + } + return new ExtendedOutputItem(ingredient, count, rolls); } public static ExtendedOutputItem of(Object o) { + return of(o, null); + } + + public static ExtendedOutputItem of(Object o, @Nullable RecipeJS recipe) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + if (o instanceof ExtendedOutputItem extendedOutput) { return extendedOutput; - } else if (o instanceof ItemStack stack) { - if (stack.hasTag()) { - return new ExtendedOutputItem(StrictNBTIngredient.of(stack), stack.getCount()); - } else { - return new ExtendedOutputItem(Ingredient.of(stack), stack.getCount()); - } } else if (o instanceof InputItem input) { - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof OutputItem output) { - return ExtendedOutputItem.fromOutputItem(output); - } else if (o instanceof NativeObject nativeObject) { - InputItem input = InputItem.of(nativeObject); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof JsonElement json) { - InputItem input = InputItem.of(json); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof CompoundTag tag) { - InputItem input = InputItem.of(tag); - return new ExtendedOutputItem(input.ingredient, input.count); - } else if (o instanceof Map map) { - InputItem input = InputItem.of(map); - return new ExtendedOutputItem(input.ingredient, input.count); + return ExtendedOutputItem.of(input.ingredient, input.count); + } else if (o instanceof IntProviderIngredient intProvider) { + return new ExtendedOutputItem(intProvider.getInner(), 1, intProvider.getCountProvider()); } - OutputItem output = OutputItem.of(o); - if (output.item.hasTag()) { - return new ExtendedOutputItem(StrictNBTIngredient.of(output.item), output.getCount()); + OutputItem item = recipe != null ? recipe.readOutputItem(o) : OutputItem.of(o);; + IntProvider rolls = item.rolls; + + var map = MapJS.of(o); + if (map != null && map.containsKey("count_provider")) { + IntProvider intProvider = UtilsJS.intProviderOf(map.get("count_provider")); + if (!(intProvider instanceof ConstantInt c && c.getValue() == 0)) { + rolls = intProvider; + } } - return new ExtendedOutputItem(output); + return new ExtendedOutputItem(item.item, rolls); } public static ExtendedOutputItem fromOutputItem(OutputItem item) { if (item instanceof ExtendedOutputItem extended) { return extended; } - return new ExtendedOutputItem(item); + return new ExtendedOutputItem(item.item, item.rolls); } @Override public OutputItem withCount(int count) { - ingredient = SizedIngredient.create(ingredient.getInner(), count); - return super.withCount(count); + return new ExtendedOutputItem(ingredient.getInner(), count, rolls); } @Override public OutputItem withRolls(IntProvider rolls) { - IntProviderIngredient ingredient; - if (this.ingredient.getInner() instanceof IntProviderIngredient intProvider) { - ingredient = IntProviderIngredient.of(intProvider.getInner(), rolls); - } else { - ingredient = IntProviderIngredient.of(this.ingredient.getInner(), rolls); + Ingredient ingredient = this.ingredient.getInner(); + if (ingredient instanceof IntProviderIngredient intProvider) { + ingredient = intProvider.getInner(); } - return new ExtendedOutputItem(ingredient, this.ingredient.getAmount()); + return new ExtendedOutputItem(ingredient, 1, rolls); } @Override @@ -109,10 +105,10 @@ public int getCount() { @Override public Object replaceOutput(RecipeJS recipe, ReplacementMatch match, OutputReplacement original) { - if (original instanceof ExtendedOutputItem o) { - return new ExtendedOutputItem(this.ingredient, o.getCount()); + if (original instanceof OutputItem o) { + return new ExtendedOutputItem(this.ingredient.getInner(), o.getCount(), o.rolls); } - return super.replaceOutput(recipe, match, original); + return new ExtendedOutputItem(this.ingredient.getInner(), this.getCount(), rolls); } @SuppressWarnings("deprecation") diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 99767540aa5..7029d3f0852 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.recipe.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; @@ -314,10 +313,7 @@ public JsonElement write(RecipeJS recipe, ExtendedOutputItem value) { @Override public ExtendedOutputItem read(RecipeJS recipe, Object from) { - if (from instanceof IntProviderIngredient intProvider) { - return new ExtendedOutputItem(intProvider, 1); - } - return ExtendedOutputItem.fromOutputItem(recipe.readOutputItem(from)); + return ExtendedOutputItem.of(from, recipe); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java index 951b0131881..6cdae45e56b 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.utils; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; import com.gregtechceu.gtceu.core.mixins.*; @@ -124,27 +123,8 @@ public static boolean ingredientEquals(Ingredient first, Ingredient second) { return false; } - if (first instanceof SizedIngredient sized1) { - if (second instanceof SizedIngredient sized2) { - return cmp(sized1.getInner(), sized2.getInner()); - } else if (second instanceof IntProviderIngredient intProvider2) { - return cmp(sized1.getInner(), intProvider2.getInner()); - } else { - return cmp(sized1.getInner(), second); - } - } else if (first instanceof IntProviderIngredient intProvider1) { - if (second instanceof IntProviderIngredient intProvider2) { - return cmp(intProvider1.getInner(), intProvider2.getInner()); - } else if (second instanceof SizedIngredient sized) { - return cmp(intProvider1.getInner(), sized.getInner()); - } else { - return cmp(intProvider1.getInner(), second); - } - } else if (second instanceof SizedIngredient sized2) { - return cmp(first, sized2.getInner()); - } else if (second instanceof IntProviderIngredient intProvider2) { - return cmp(first, intProvider2.getInner()); - } + first = SizedIngredient.getInner(first); + second = SizedIngredient.getInner(second); return cmp(first, second); } From e6c208fd734977841e6a2455fb3accdf1289d39c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Tue, 1 Jul 2025 16:26:59 +0300 Subject: [PATCH 086/270] Clean up MapIngredient conversion and backport recipe handler fixes from 1.21 (#3273) --- .gitattributes | 3 +- .../recipe/FluidRecipeCapability.java | 40 ++----- .../recipe/ItemRecipeCapability.java | 100 ++-------------- .../capability/recipe/RecipeCapability.java | 21 +--- .../api/cover/filter/SmartItemFilter.java | 3 +- .../machine/trait/NotifiableFluidTank.java | 70 ++++++----- .../trait/NotifiableItemStackHandler.java | 63 +++++++--- .../recipe/content/IContentSerializer.java | 2 + .../recipe/content/SerializerBigInteger.java | 5 + .../recipe/content/SerializerBlockState.java | 5 + .../api/recipe/content/SerializerDouble.java | 5 + .../api/recipe/content/SerializerFloat.java | 5 + .../content/SerializerFluidIngredient.java | 5 + .../recipe/content/SerializerIngredient.java | 5 + .../api/recipe/content/SerializerInteger.java | 5 + .../api/recipe/content/SerializerLong.java | 5 + .../recipe/ingredient/FluidIngredient.java | 47 ++++++-- .../ingredient/IntProviderIngredient.java | 5 + .../gtceu/api/recipe/lookup/Branch.java | 1 + .../api/recipe/lookup/GTRecipeLookup.java | 63 +++++----- .../api/recipe/lookup/MapFluidIngredient.java | 64 ---------- .../recipe/lookup/MapFluidTagIngredient.java | 32 ----- .../lookup/MapIntersectionIngredient.java | 68 ----------- .../recipe/lookup/MapItemStackIngredient.java | 50 -------- .../recipe/lookup/MapItemTagIngredient.java | 31 ----- .../api/recipe/lookup/RecipeIterator.java | 1 + .../AbstractMapIngredient.java | 2 +- .../ingredient/MapIngredientFunction.java | 21 ++++ .../ingredient/MapIngredientTypeManager.java | 102 ++++++++++++++++ .../fluid/FluidStackMapIngredient.java | 74 ++++++++++++ .../fluid/FluidTagMapIngredient.java | 60 ++++++++++ .../ingredient/item/CustomMapIngredient.java | 85 ++++++++++++++ .../item/IntersectionMapIngredient.java | 110 ++++++++++++++++++ .../item/ItemStackMapIngredient.java | 76 ++++++++++++ .../ingredient/item/ItemTagMapIngredient.java | 60 ++++++++++ .../PartialNBTItemStackMapIngredient.java} | 36 ++++-- .../StrictNBTItemStackMapIngredient.java} | 32 +++-- .../gregtechceu/gtceu/common/CommonProxy.java | 42 ++++++- .../data/recipe/builder/GTRecipeBuilder.java | 7 +- .../recipe/components/ExtendedOutputItem.java | 2 +- .../gtceu/utils/IngredientEquality.java | 68 +++++------ .../gtceu/utils/ItemStackHashStrategy.java | 21 ++-- 42 files changed, 958 insertions(+), 544 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java rename src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/{ => ingredient}/AbstractMapIngredient.java (93%) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java rename src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/{MapItemStackPartialNBTIngredient.java => ingredient/item/PartialNBTItemStackMapIngredient.java} (56%) rename src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/{MapItemStackNBTIngredient.java => ingredient/item/StrictNBTItemStackMapIngredient.java} (56%) diff --git a/.gitattributes b/.gitattributes index cafaa26b057..a77ff1db98d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,6 +4,7 @@ # Explicitly declare text files you want to always be normalized and converted # to native line endings on checkout. *.json text eol=lf +src/generated/resources/.cache/** text eol=lf # Denote all files that are truly binary and should not be modified. -*.png binary \ No newline at end of file +*.png binary diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 7000db72723..0d9353a658e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -8,9 +8,8 @@ import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.SerializerFluidIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.AbstractMapIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.MapFluidIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.MapFluidTagIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; @@ -29,7 +28,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; import it.unimi.dsi.fastutil.objects.*; @@ -61,31 +59,6 @@ public FluidIngredient copyWithModifier(FluidIngredient content, ContentModifier return copy; } - @Override - public List convertToMapIngredient(Object obj) { - List ingredients = new ObjectArrayList<>(1); - if (obj instanceof FluidIngredient ingredient) { - for (FluidIngredient.Value value : ingredient.values) { - if (value instanceof FluidIngredient.TagValue tagValue) { - ingredients.add(new MapFluidTagIngredient(tagValue.getTag())); - } else { - Collection fluids = value.getFluids(); - for (Fluid fluid : fluids) { - ingredients.add(new MapFluidIngredient( - new FluidStack(fluid, ingredient.getAmount(), ingredient.getNbt()))); - } - } - } - } else if (obj instanceof FluidStack stack) { - ingredients.add(new MapFluidIngredient(stack)); - // noinspection deprecation - stack.getFluid().builtInRegistryHolder().tags() - .forEach(tag -> ingredients.add(new MapFluidTagIngredient(tag))); - } - - return ingredients; - } - @Override public List compressIngredients(Collection ingredients) { List list = new ObjectArrayList<>(ingredients.size()); @@ -129,6 +102,15 @@ public List compressIngredients(Collection ingredients) { return list; } + @Override + public @Nullable List getDefaultMapIngredient(Object object) { + if (object instanceof FluidIngredient ingredient) { + return FluidStackMapIngredient.from(ingredient); + } else { + return Collections.emptyList(); + } + } + @Override public boolean isRecipeSearchFilter() { return true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index cb0eb6357bd..b4b32582353 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -1,8 +1,5 @@ package com.gregtechceu.gtceu.api.capability.recipe; -import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -14,7 +11,8 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; -import com.gregtechceu.gtceu.api.recipe.lookup.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.common.recipe.condition.ResearchCondition; @@ -44,8 +42,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; -import net.minecraftforge.common.crafting.PartialNBTIngredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; import net.minecraftforge.items.IItemHandlerModifiable; import it.unimi.dsi.fastutil.objects.*; @@ -87,89 +83,6 @@ public Ingredient copyWithModifier(Ingredient content, ContentModifier modifier) return SizedIngredient.create(content, modifier.apply(1)); } - @Override - public List convertToMapIngredient(Object obj) { - List ingredients = new ObjectArrayList<>(1); - if (obj instanceof Ingredient ingredient) { - - // all kinds of special cases - if (ingredient instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (ingredient instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (ingredient instanceof SizedIngredient sized) { - if (sized.getInner() instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (sized.getInner() instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (sized.getInner() instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) sized.getInner()).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, sized.getInner())); - } - } - } - } - } else if (ingredient instanceof IntProviderIngredient intProvider) { - if (intProvider.getInner() instanceof StrictNBTIngredient nbt) { - ingredients.addAll(MapItemStackNBTIngredient.from(nbt)); - } else if (intProvider.getInner() instanceof PartialNBTIngredient nbt) { - ingredients.addAll(MapItemStackPartialNBTIngredient.from(nbt)); - } else if (intProvider.getInner() instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) intProvider.getInner()).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, intProvider.getInner())); - } - } - } - } - } else if (ingredient instanceof IntersectionIngredient intersection) { - ingredients.add(new MapIntersectionIngredient(intersection)); - } else { - for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - ingredients.add(new MapItemTagIngredient(((TagValueAccessor) tagValue).getTag())); - } else { - Collection stacks = value.getItems(); - for (ItemStack stack : stacks) { - ingredients.add(new MapItemStackIngredient(stack, ingredient)); - } - } - } - } - } else if (obj instanceof ItemStack stack) { - ingredients.add(new MapItemStackIngredient(stack)); - - stack.getTags().forEach(tag -> ingredients.add(new MapItemTagIngredient(tag))); - if (stack.hasTag()) { - ingredients.add(new MapItemStackNBTIngredient(stack, StrictNBTIngredient.of(stack))); - } - if (stack.getShareTag() != null) { - ingredients.add(new MapItemStackPartialNBTIngredient(stack, - PartialNBTIngredient.of(stack.getItem(), stack.getShareTag()))); - } - TagPrefix prefix = ChemicalHelper.getPrefix(stack.getItem()); - if (!prefix.isEmpty() && TagPrefix.ORES.containsKey(prefix)) { - Material material = ChemicalHelper.getMaterialStack(stack.getItem()).material(); - ingredients.add(new MapIntersectionIngredient((IntersectionIngredient) IntersectionIngredient.of( - Ingredient.of(prefix.getItemTags(material)[0]), Ingredient.of(prefix.getItemParentTags()[0])))); - } - } - return ingredients; - } - @Override public List compressIngredients(Collection ingredients) { List list = new ObjectArrayList<>(ingredients.size()); @@ -225,6 +138,15 @@ public List compressIngredients(Collection ingredients) { return list; } + @Override + public @Nullable List getDefaultMapIngredient(Object object) { + if (object instanceof Ingredient ingredient) { + return CustomMapIngredient.from(ingredient); + } else { + return Collections.emptyList(); + } + } + @Override public boolean isRecipeSearchFilter() { return true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index fac3a2598a0..10f0cf0d33f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -6,7 +6,7 @@ import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.IContentSerializer; -import com.gregtechceu.gtceu.api.recipe.lookup.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -21,7 +21,6 @@ import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import it.unimi.dsi.fastutil.objects.ObjectArrayList; import org.apache.commons.lang3.mutable.MutableInt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -111,26 +110,12 @@ public boolean isRecipeSearchFilter() { return false; } - /** - * Convert the passed object to a list of recipe lookup filters. - * - * @param ingredient ingredient. e.g. for ITEM, this can be Ingredient or ItemStack - * @return a list of recipe lookup filters. - */ - public List convertToMapIngredient(Object ingredient) { - return List.of(); - } - public List compressIngredients(Collection ingredients) { return new ArrayList<>(ingredients); } - public List> convertCompressedIngredients(List ingredients) { - List> ret = new ObjectArrayList<>(ingredients.size()); - for (var ingredient : ingredients) { - ret.add(convertToMapIngredient(ingredient)); - } - return ret; + public @Nullable List getDefaultMapIngredient(Object object) { + return null; } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java index f955c313d3e..b6485f0ab7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/SmartItemFilter.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.lookup.GTRecipeLookup; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; @@ -89,7 +90,7 @@ public int testItemCount(ItemStack itemStack) { private int lookup(ItemStack itemStack) { ItemStack copy = itemStack.copyWithCount(Integer.MAX_VALUE); - var ingredients = ItemRecipeCapability.CAP.convertToMapIngredient(copy); + var ingredients = MapIngredientTypeManager.getFrom(copy, ItemRecipeCapability.CAP); var recipe = filterMode.lookup.recurseIngredientTreeFindRecipe(List.of(ingredients), filterMode.lookup.getLookup(), r -> true); if (recipe == null) return 0; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 07f55828e7e..0d21b5a7350 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -122,64 +122,82 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List 0) { + visited[tank] = output.copy(); + // shortcut for oldAmount + filled (wow what an idea) + visited[tank].setAmount(existing.getFluidAmount()); + changed = true; } + amount -= filled; + + if (amount > 0) ingredient.setAmount(amount); + else it.remove(); // Continue to next ingredient regardless of if we filled this ingredient completely continue; } } for (int tank = 0; tank < storages.length; ++tank) { - FluidStack stored = getFluidInTank(tank); - int amount = (visited[tank] == null ? stored.getAmount() : visited[tank].getAmount()); + FluidStack current = visited[tank] == null ? getFluidInTank(tank) : visited[tank]; + int count = current.getAmount(); + if (io == IO.IN) { - if (amount == 0) continue; - if ((visited[tank] == null && ingredient.test(stored)) || ingredient.test(visited[tank])) { - var drained = storages[tank].drain(ingredient.getAmount(), action); - if (drained.getAmount() > 0) { + if (current.isEmpty()) continue; + if (ingredient.test(current)) { + var drained = storages[tank].drain(Math.min(count, amount), action); + if (!drained.isEmpty()) { visited[tank] = drained.copy(); - visited[tank].setAmount(amount - drained.getAmount()); + visited[tank].setAmount(count - drained.getAmount()); changed = true; - ingredient.shrink(drained.getAmount()); } + amount -= drained.getAmount(); } - } else { // IO.OUT && No tank already has this output + } else { // IO.OUT && allow same fluids FluidStack output = fluids[0].copy(); - output.setAmount(ingredient.getAmount()); + output.setAmount(amount); if (visited[tank] == null || visited[tank].isFluidEqual(output)) { - int filled = storages[tank].fill(output, action); - if (filled > 0) { - visited[tank] = output.copy(); - visited[tank].setAmount(filled); - changed = true; - ingredient.shrink(filled); - if (!allowSameFluids) { - if (ingredient.getAmount() <= 0) it.remove(); - break; + if (count < storages[tank].getCapacity()) { + int filled = storages[tank].fill(output, action); + if (filled > 0) { + visited[tank] = output.copy(); + visited[tank].setAmount(count + filled); + changed = true; + if (!allowSameFluids) { + if (amount <= 0) it.remove(); + break; + } } + amount -= filled; } } } - if (ingredient.getAmount() <= 0) { + if (amount <= 0) { it.remove(); break; } } + // Modify ingredient if we didn't finish it off + if (amount > 0) { + ingredient.setAmount(amount); + } } for (int i = 0; i < storages.length; i++) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index f69ad902401..f59c2aa3e1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -111,28 +111,57 @@ public static List handleRecipe(IO io, GTRecipe recipe, List outputStorageLimit) { + it.remove(); + continue; + } else if (simulate) { + amount = provider.getCountProvider().getMaxValue(); + } else { + amount = Math.min(output.getCount(), outputStorageLimit); + } + } else { + items = ingredient.getItems(); + if (items.length == 0 || items[0].isEmpty()) { + it.remove(); + continue; + } + if (ingredient instanceof SizedIngredient si) amount = si.getAmount(); + else amount = items[0].getCount(); + } for (int slot = 0; slot < storage.getSlots(); ++slot) { - ItemStack stored = storage.getStackInSlot(slot); - int count = (visited[slot] == null ? stored.getCount() : visited[slot].getCount()); + ItemStack current = visited[slot] == null ? storage.getStackInSlot(slot) : visited[slot]; + int count = current.getCount(); if (io == IO.IN) { - if (count == 0) continue; - if ((visited[slot] == null && ingredient.test(stored)) || ingredient.test(visited[slot])) { + if (current.isEmpty()) continue; + if (ingredient.test(current)) { var extracted = getActioned(storage, slot, recipe.ingredientActions); if (extracted == null) extracted = storage.extractItem(slot, Math.min(count, amount), simulate); if (!extracted.isEmpty()) { @@ -144,7 +173,7 @@ public static List handleRecipe(IO io, GTRecipe recipe, List handleRecipe(IO io, GTRecipe recipe, List actions) { + private static @Nullable ItemStack getActioned(CustomItemStackHandler storage, int index, List actions) { if (!GTCEu.Mods.isKubeJSLoaded()) return null; // noinspection unchecked var actioned = KJSCallWrapper.applyIngredientAction(storage, index, (List) actions); @@ -269,7 +297,7 @@ public ItemStack getStackInSlot(int slot) { } @Override - public void setStackInSlot(int index, ItemStack stack) { + public void setStackInSlot(int index, @NotNull ItemStack stack) { storage.setStackInSlot(index, stack); } @@ -314,7 +342,6 @@ public static class KJSCallWrapper { public static ItemStack applyIngredientAction(CustomItemStackHandler storage, int index, List ingredientActions) { var stack = storage.getStackInSlot(index); - if (stack.isEmpty()) { return ItemStack.EMPTY; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java index 91068735ff1..145be85d107 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java @@ -55,6 +55,8 @@ default Content fromNetworkContent(FriendlyByteBuf buf) { return new Content(inner, chance, maxChance, tierChanceBoost); } + Class contentClass(); + Codec codec(); default T fromJson(JsonElement json, HolderLookup.Provider provider) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java index 37f4db3fd80..8a0d2fc5ecf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java @@ -61,6 +61,11 @@ public BigInteger defaultValue() { return BigInteger.ZERO; } + @Override + public Class contentClass() { + return BigInteger.class; + } + @Override public Codec codec() { return CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java index 6ca7efee8f6..a110eb591b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java @@ -88,6 +88,11 @@ public BlockState defaultValue() { return Blocks.AIR.defaultBlockState(); } + @Override + public Class contentClass() { + return BlockState.class; + } + @Override public Codec codec() { return BlockState.CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java index 9b71b5c4407..2f3deb81a31 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerDouble.java @@ -50,6 +50,11 @@ public Double defaultValue() { return 0d; } + @Override + public Class contentClass() { + return Double.class; + } + @Override public Codec codec() { return Codec.DOUBLE; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java index 2399ad10146..df40a3a2911 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFloat.java @@ -50,6 +50,11 @@ public Float defaultValue() { return 0f; } + @Override + public Class contentClass() { + return Float.class; + } + @Override public Codec codec() { return Codec.FLOAT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java index 5a2b5379fa0..aa4a78ad032 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerFluidIngredient.java @@ -50,6 +50,11 @@ public FluidIngredient defaultValue() { return FluidIngredient.EMPTY; } + @Override + public Class contentClass() { + return FluidIngredient.class; + } + @Override public Codec codec() { return FluidIngredient.CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java index 5a876ed9f9e..4ce796cb31d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java @@ -63,6 +63,11 @@ public Ingredient defaultValue() { return Ingredient.EMPTY; } + @Override + public Class contentClass() { + return Ingredient.class; + } + @Override public Codec codec() { return CODEC; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java index ebab0c336bf..c9057ff68ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerInteger.java @@ -50,6 +50,11 @@ public Integer defaultValue() { return 0; } + @Override + public Class contentClass() { + return Integer.class; + } + @Override public Codec codec() { return Codec.INT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java index 47188d07aae..376c127017a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerLong.java @@ -50,6 +50,11 @@ public Long defaultValue() { return 0L; } + @Override + public Class contentClass() { + return Long.class; + } + @Override public Codec codec() { return Codec.LONG; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java index 7f5579d4d42..31e735c3740 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java @@ -110,20 +110,26 @@ public boolean equals(Object obj) { if (!Objects.equals(this.nbt, other.nbt)) return false; if (this.values.length != other.values.length) return false; - for (Value value1 : this.values) { - for (Value value2 : other.values) { - if (value1 instanceof TagValue tagValue) { - if (!(value2 instanceof TagValue tagValue1)) { + + Value[] myValues = this.values.clone(); + Value[] otherValues = other.values.clone(); + Arrays.parallelSort(myValues, VALUE_COMPARATOR); + Arrays.parallelSort(otherValues, VALUE_COMPARATOR); + + for (Value value1 : myValues) { + for (Value value2 : otherValues) { + if (value1 instanceof TagValue first) { + if (!(value2 instanceof TagValue second)) { return false; } - if (tagValue.tag != tagValue1.tag) { + if (first.tag != second.tag) { return false; } - } else if (value1 instanceof FluidValue) { - if (!(value2 instanceof FluidValue)) { + } else if (value1 instanceof FluidValue first) { + if (!(value2 instanceof FluidValue second)) { return false; } - if (!value1.getFluids().containsAll(value2.getFluids())) { + if (first.fluid != second.fluid) { return false; } } @@ -302,7 +308,7 @@ public int hashCode() { public static class FluidValue implements Value { - private final Fluid fluid; + public final Fluid fluid; public FluidValue(Fluid item) { this.fluid = item; @@ -325,4 +331,27 @@ public int hashCode() { return fluid.hashCode(); } } + + public static final Comparator FLUID_COMPARATOR = Comparator.comparing(BuiltInRegistries.FLUID::getKey); + + public static final Comparator VALUE_COMPARATOR = new Comparator<>() { + + @Override + public int compare(FluidIngredient.Value value1, FluidIngredient.Value value2) { + if (value1 instanceof FluidIngredient.TagValue first) { + if (!(value2 instanceof FluidIngredient.TagValue second)) { + return 1; + } + if (first.getTag() != second.getTag()) { + return 1; + } + } else if (value1 instanceof FluidIngredient.FluidValue first) { + if (!(value2 instanceof FluidIngredient.FluidValue second)) { + return 1; + } + return FLUID_COMPARATOR.compare(first.fluid, second.fluid); + } + return 0; + } + }; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java index db98627f78d..3d5b6f2028a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java @@ -72,6 +72,11 @@ public boolean test(@Nullable ItemStack stack) { return itemStacks; } + public @NotNull ItemStack getMaxSizeStack() { + if (inner.getItems().length == 0) return ItemStack.EMPTY; + else return inner.getItems()[0].copyWithCount(countProvider.getMaxValue()); + } + public int getSampledCount(@NotNull RandomSource random) { if (sampledCount == -1) { sampledCount = countProvider.sample(random); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java index df135f60792..e3dfa9df558 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/Branch.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.recipe.lookup; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.mojang.datafixers.util.Either; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java index f01ed5a9028..d7ac9cde669 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java @@ -8,6 +8,8 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.item.armor.PowerlessJetpack; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -26,6 +28,7 @@ import java.lang.ref.WeakReference; import java.util.*; +import java.util.function.BiConsumer; import java.util.function.Predicate; @RequiredArgsConstructor @@ -383,29 +386,24 @@ protected static void retrieveCachedIngredient(@NotNull List> fromRecipe(@NotNull GTRecipe r) { - List> list = new ObjectArrayList<>(r.inputs.values().size()); - r.inputs.forEach((cap, contents) -> { - if (cap.isRecipeSearchFilter() && !contents.isEmpty()) { - List ingredients = new ArrayList<>(); - for (Content content : contents) { - ingredients.add(content.getContent()); - } - ingredients = cap.compressIngredients(ingredients); - for (Object ingredient : ingredients) { - // use the cached ingredient, if possible - retrieveCachedIngredient(list, cap.convertToMapIngredient(ingredient), ingredientRoot); - } - } - }); - r.tickInputs.forEach((cap, contents) -> { + protected List> fromRecipe(@NotNull GTRecipe recipe) { + int initialCapacity = (recipe.inputs.size() + recipe.tickInputs.size()) * 2; + List> list = new ObjectArrayList<>(initialCapacity); + recipe.inputs.forEach(processCapabilityIngredients(list)); + recipe.tickInputs.forEach(processCapabilityIngredients(list)); + return list; + } + + // spotless:off + protected BiConsumer, List> processCapabilityIngredients(List> list) { + return (cap, contents) -> { if (cap.isRecipeSearchFilter() && !contents.isEmpty()) { List ingredients = new ArrayList<>(); for (Content content : contents) { @@ -414,32 +412,35 @@ protected List> fromRecipe(@NotNull GTRecipe r) { ingredients = cap.compressIngredients(ingredients); for (Object ingredient : ingredients) { // use the cached ingredient, if possible - retrieveCachedIngredient(list, cap.convertToMapIngredient(ingredient), ingredientRoot); + retrieveCachedIngredient(list, MapIngredientTypeManager.getFrom(ingredient, cap), ingredientRoot); } } - }); - return list; + }; } + // spotless:on /** - * Converts a GTRecipe's {@link com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability}s into a List of - * {@link AbstractMapIngredient}s + * Converts a Recipe Capability holder's handlers into + * a list of {@link AbstractMapIngredient AbstractMapIngredients} * - * @param r the recipe to use - * @return a list of all the AbstractMapIngredients comprising the recipe + * @param holder the capability holder to query handlers from + * @return a list of all the AbstractMapIngredients in the handlers */ @NotNull - protected List> fromHolder(@NotNull IRecipeCapabilityHolder r) { - var handlerMap = r.getCapabilitiesFlat().getOrDefault(IO.IN, Collections.emptyMap()); - int size = handlerMap.values().size(); - List> list = new ObjectArrayList<>(size); + protected List> fromHolder(@NotNull IRecipeCapabilityHolder holder) { + var handlerMap = holder.getCapabilitiesFlat().getOrDefault(IO.IN, Collections.emptyMap()); + // the initial capacity is a "feel-good" value because it's faster to just grow the list + // than to calculate an accurate value. + List> list = new ObjectArrayList<>(handlerMap.size() * 8); for (var entry : handlerMap.entrySet()) { var cap = entry.getKey(); var handlers = entry.getValue(); if (!cap.isRecipeSearchFilter()) continue; for (var handler : handlers) { var compressed = cap.compressIngredients(handler.getContents()); - list.addAll(cap.convertCompressedIngredients(compressed)); + for (var ingredient : compressed) { + list.add(MapIngredientTypeManager.getFrom(ingredient, cap)); + } } } return list; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java deleted file mode 100644 index 6b1803c6971..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidIngredient.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.fluids.FluidStack; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.Objects; - -public class MapFluidIngredient extends AbstractMapIngredient { - - public final Fluid fluid; - public final CompoundTag tag; - - public MapFluidIngredient(FluidStack fluidStack) { - this.fluid = fluidStack.getFluid(); - this.tag = fluidStack.getTag(); - } - - @NotNull - public static List from(@NotNull FluidIngredient r) { - ObjectArrayList list = new ObjectArrayList<>(); - for (FluidStack s : r.getStacks()) { - list.add(new MapFluidIngredient(s)); - } - return list; - } - - @Override - protected int hash() { - // the Fluid registered to the fluidName on game load might not be the same Fluid after loading the world, but - // will still have the same fluidName. - int hash = 31 + BuiltInRegistries.FLUID.getKey(fluid).hashCode(); - if (tag != null) { - return 31 * hash + tag.hashCode(); - } - return hash; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapFluidIngredient other = (MapFluidIngredient) o; - // the Fluid registered to the fluidName on game load might not be the same Fluid after loading the world, - // but will still have the same fluidName. - if (this.fluid.isSame(other.fluid)) { - return Objects.equals(tag, other.tag); - } - } - return false; - } - - @Override - public String toString() { - return "MapFluidIngredient{" + - "{fluid=" + BuiltInRegistries.FLUID.getKey(fluid) + "} {tag=" + tag + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java deleted file mode 100644 index c4cc2be36d4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapFluidTagIngredient.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.material.Fluid; - -public class MapFluidTagIngredient extends AbstractMapIngredient { - - TagKey tag; - - public MapFluidTagIngredient(TagKey tag) { - this.tag = tag; - } - - @Override - protected int hash() { - return tag.location().hashCode(); - } - - @SuppressWarnings("deprecation") - @Override - public boolean equals(Object obj) { - if (super.equals(obj)) { - return tag == ((MapFluidTagIngredient) obj).tag; - } - return false; - } - - @Override - public String toString() { - return "MapFluidTagIngredient{" + "tag=" + tag.location() + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java deleted file mode 100644 index 635fa14b304..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapIntersectionIngredient.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; -import com.gregtechceu.gtceu.core.mixins.IntersectionIngredientAccessor; -import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; -import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; -import com.gregtechceu.gtceu.utils.IngredientEquality; - -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraftforge.common.crafting.IntersectionIngredient; - -import java.util.ArrayList; -import java.util.List; - -public class MapIntersectionIngredient extends AbstractMapIngredient { - - protected IntersectionIngredient intersectionIngredient; - protected List ingredients; - - public MapIntersectionIngredient(IntersectionIngredient ingredient) { - this.intersectionIngredient = ingredient; - this.ingredients = new ArrayList<>(((IntersectionIngredientAccessor) ingredient).getChildren()); - this.ingredients.sort(IngredientEquality.INGREDIENT_COMPARATOR); - } - - @Override - protected int hash() { - int hash = 31; - for (Ingredient ingredient : ingredients) { - for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { - if (value instanceof Ingredient.TagValue tagValue) { - hash *= 31 * ((TagValueAccessor) tagValue).getTag().location().hashCode(); - } else { - hash *= 31 * ((ItemValueAccessor) value).getItem().getItem().hashCode(); - } - } - } - return hash; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapIntersectionIngredient other = (MapIntersectionIngredient) o; - if (this.ingredients != null) { - if (other.ingredients != null) { - if (this.ingredients.size() != other.ingredients.size()) return false; - for (int i = 0; i < this.ingredients.size(); ++i) { - Ingredient ingredient1 = this.ingredients.get(i); - Ingredient ingredient2 = other.ingredients.get(i); - if (!IngredientEquality.ingredientEquals(ingredient1, ingredient2)) { - return false; - } - } - return true; - } - } - } else if (o instanceof MapItemStackIngredient stackIngredient) { - return this.intersectionIngredient.test(stackIngredient.stack); - } - return false; - } - - @Override - public String toString() { - return "MapIntersectionIngredient{" + "ingredient=" + intersectionIngredient + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java deleted file mode 100644 index 53a94562604..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackIngredient.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import com.gregtechceu.gtceu.utils.IngredientEquality; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; - -public class MapItemStackIngredient extends AbstractMapIngredient { - - protected ItemStack stack; - protected Ingredient ingredient = null; - - public MapItemStackIngredient(ItemStack stack) { - this.stack = stack; - } - - public MapItemStackIngredient(ItemStack stack, Ingredient ingredient) { - this.stack = stack; - this.ingredient = ingredient; - } - - @Override - public boolean equals(Object o) { - if (super.equals(o)) { - MapItemStackIngredient other = (MapItemStackIngredient) o; - if (this.stack.getItem() != other.stack.getItem()) { - return false; - } - if (this.ingredient != null) { - if (other.ingredient != null) { - return IngredientEquality.ingredientEquals(this.ingredient, other.ingredient); - } - } else if (other.ingredient != null) { - return other.ingredient.test(this.stack); - } - } - return false; - } - - @Override - protected int hash() { - return stack.getItem().hashCode() * 31; - } - - @Override - public String toString() { - return "MapItemStackIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java deleted file mode 100644 index 4dba1943d75..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemTagIngredient.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; - -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; - -public class MapItemTagIngredient extends AbstractMapIngredient { - - TagKey tag; - - public MapItemTagIngredient(TagKey tag) { - this.tag = tag; - } - - @Override - protected int hash() { - return tag.location().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (super.equals(obj)) { - return tag == ((MapItemTagIngredient) obj).tag; - } - return false; - } - - @Override - public String toString() { - return "MapItemTagIngredient{" + "tag=" + tag.location() + "}"; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java index 0f2a81a0965..b16505d30c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java similarity index 93% rename from src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java rename to src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java index daec52460d3..235b806595c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/AbstractMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/AbstractMapIngredient.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; public abstract class AbstractMapIngredient { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java new file mode 100644 index 00000000000..b70354a3024 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientFunction.java @@ -0,0 +1,21 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; + +import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import java.util.List; + +@FunctionalInterface +public interface MapIngredientFunction { + + /** + * Convert the passed object to a list of recipe lookup filters. + * + * @param ingredient The ingredient to convert. + * e.g. {@link Ingredient} or {@link ItemStack} for {@link GTRecipeCapabilities#ITEM} + * @return a list of recipe lookup filters. + */ + List getIngredients(T ingredient); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java new file mode 100644 index 00000000000..30bb00b3ec9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/MapIngredientTypeManager.java @@ -0,0 +1,102 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient; + +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; + +import net.minecraft.Util; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; + +import com.google.common.base.Preconditions; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Manager for custom map ingredient types. + *
+ * Addons can register their own map ingredient classes here instead of mixining into GT's initialization logic. + *

+ * A good time to register them is in a {@link FMLCommonSetupEvent Common Setup Event}, + * after any custom ingredient types. + */ +@SuppressWarnings("unchecked") +public final class MapIngredientTypeManager { + + // spotless:off + private static final Map, List>> ingredientFunctions = new ConcurrentHashMap<>(7); + private static final Map, Class> ingredientTypes = new ConcurrentHashMap<>(7); + // spotless:on + + public static void registerMapIngredient(Class ingredientClass, + MapIngredientFunction function) { + ingredientClass = boxClass(ingredientClass); + var list = (List>) ingredientFunctions.computeIfAbsent( + ingredientClass, $ -> new ArrayList<>()); + list.add(function); + ingredientTypes.put(function, ingredientClass); + } + + @NotNull + public static List getFrom(T object, RecipeCapability cap) { + Class objClass = (Class) boxClass(object.getClass()); + Class stopAt = boxClass(cap.serializer.contentClass()); + if (!stopAt.isAssignableFrom(objClass)) { + stopAt = Object.class; + } + var functions = getTypesForClass(objClass, stopAt); + // this is the same as writing `object instanceof stopClass`, but it keeps track of the boxed primitives + if (!objClass.isAssignableFrom(stopAt)) { + var defaults = getDefaultIngredients(object, cap, stopAt, functions); + if (defaults != null) return defaults; + } + + List values = new ArrayList<>(); + for (var function : functions) { + values.addAll(function.getIngredients(object)); + } + return values; + } + + private static List> getTypesForClass(Class objClass, + Class stopAt) { + Preconditions.checkArgument(stopAt.isAssignableFrom(objClass), + "stopAt must be a superclass of %s", objClass); + + var types = ingredientFunctions.get(objClass); + if (types == null && objClass != stopAt) { + Class superclass = objClass.getSuperclass(); + if (superclass == null || superclass == stopAt) return Collections.emptyList(); + return getTypesForClass(superclass, stopAt); + } + return (List>) types; + } + + private static @Nullable List getDefaultIngredients(T object, RecipeCapability cap, + Class stopAt, + List> functions) { + for (var function : functions) { + if (ingredientTypes.get(function) != stopAt) { + return null; + } + } + // if the ingredient is not of the base type, and we didn't find any specific ones for it, return a default + return Objects.requireNonNullElseGet(cap.getDefaultMapIngredient(object), Collections::emptyList); + } + + private static final Map, Class> WRAPPERS = Util.make(new HashMap<>(9), map -> { + map.put(boolean.class, Boolean.class); + map.put(byte.class, Byte.class); + map.put(char.class, Character.class); + map.put(double.class, Double.class); + map.put(float.class, Float.class); + map.put(int.class, Integer.class); + map.put(long.class, Long.class); + map.put(short.class, Short.class); + map.put(void.class, Void.class); + }); + + private static @NotNull Class boxClass(Class clazz) { + return (Class) WRAPPERS.getOrDefault(clazz, clazz); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java new file mode 100644 index 00000000000..be752c6f868 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java @@ -0,0 +1,74 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid; + +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraftforge.fluids.FluidStack; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class FluidStackMapIngredient extends AbstractMapIngredient { + + protected FluidStack stack; + protected FluidIngredient ingredient = null; + + public FluidStackMapIngredient(FluidStack stack) { + this.stack = stack; + } + + public FluidStackMapIngredient(FluidStack stack, FluidIngredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + @NotNull + public static List from(@NotNull FluidIngredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (FluidIngredient.Value value : ingredient.values) { + if (value instanceof FluidIngredient.FluidValue fluidValue) { + FluidStack stack = new FluidStack(fluidValue.fluid, ingredient.getAmount(), ingredient.getNbt()); + ingredients.add(new FluidStackMapIngredient(stack, ingredient)); + } + } + return ingredients; + } + + @NotNull + public static List from(@NotNull FluidStack stack) { + return Collections.singletonList(new FluidStackMapIngredient(stack)); + } + + @Override + protected int hash() { + return stack.hashCode(); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + FluidStackMapIngredient other = (FluidStackMapIngredient) o; + if (this.stack.getFluid() != other.stack.getFluid()) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + return this.ingredient.equals(other.ingredient); + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + public String toString() { + return "FluidStackMapIngredient{fluid=" + stack + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java new file mode 100644 index 00000000000..d0d02a8535a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java @@ -0,0 +1,60 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid; + +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.fluids.FluidStack; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class FluidTagMapIngredient extends AbstractMapIngredient { + + protected TagKey tag; + + public FluidTagMapIngredient(TagKey tag) { + this.tag = tag; + } + + @NotNull + public static List from(@NotNull FluidIngredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (FluidIngredient.Value value : ingredient.values) { + if (value instanceof FluidIngredient.TagValue tagValue) { + ingredients.add(new FluidTagMapIngredient(tagValue.getTag())); + } + } + return ingredients; + } + + @SuppressWarnings("deprecation") + @NotNull + public static List from(@NotNull FluidStack stack) { + List ingredients = new ObjectArrayList<>(); + stack.getFluid().builtInRegistryHolder().tags() + .forEach(tag -> ingredients.add(new FluidTagMapIngredient(tag))); + return ingredients; + } + + @Override + protected int hash() { + return tag.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (super.equals(obj)) { + return tag == ((FluidTagMapIngredient) obj).tag; + } + return false; + } + + @Override + public String toString() { + return "FluidTagMapIngredient{" + "tag=" + tag.location() + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java new file mode 100644 index 00000000000..5d6cc64e92f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/CustomMapIngredient.java @@ -0,0 +1,85 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class CustomMapIngredient extends AbstractMapIngredient { + + protected ItemStack stack; + protected Ingredient ingredient = null; + + public CustomMapIngredient(ItemStack stack) { + this.stack = stack; + } + + public CustomMapIngredient(ItemStack stack, Ingredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + public static List from(Ingredient ingredient) { + List ingredients = new ArrayList<>(); + ItemStack[] stacks = ingredient.getItems(); + for (ItemStack stack : stacks) { + ingredients.add(new CustomMapIngredient(stack, ingredient)); + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + return Collections.singletonList(new CustomMapIngredient(stack)); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + CustomMapIngredient other = (CustomMapIngredient) o; + if (!ItemStack.isSameItem(this.stack, other.stack)) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + for (ItemStack stack : other.ingredient.getItems()) { + if (!this.ingredient.test(stack)) return false; + } + for (ItemStack stack : this.ingredient.getItems()) { + if (!other.ingredient.test(stack)) return false; + } + return true; + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + protected int hash() { + return stack.getItem().hashCode() * 31; + } + + @Override + public String toString() { + return "CustomMapIngredient{" + + "item=" + stack + + "ingredient=" + ingredient + + "}"; + } + + @Override + public boolean isSpecialIngredient() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java new file mode 100644 index 00000000000..18fca1f3e6f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java @@ -0,0 +1,110 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; +import com.gregtechceu.gtceu.core.mixins.IntersectionIngredientAccessor; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.common.crafting.IntersectionIngredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import lombok.Getter; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class IntersectionMapIngredient extends AbstractMapIngredient { + + @Getter + protected List children; + + public IntersectionMapIngredient(List children) { + this.children = children; + this.children.sort(Comparator.comparingInt(AbstractMapIngredient::hashCode)); + } + + @NotNull + public static List from(IntersectionIngredient ingredient) { + List originalChildren = ((IntersectionIngredientAccessor) ingredient).getChildren(); + List mapChildren = new ObjectArrayList<>(); + for (var ing : originalChildren) { + mapChildren.addAll(MapIngredientTypeManager.getFrom(ing, ItemRecipeCapability.CAP)); + } + + return Collections.singletonList(new IntersectionMapIngredient(mapChildren)); + } + + @NotNull + public static List from(ItemStack stack) { + MaterialEntry entry = ChemicalHelper.getMaterialEntry(stack.getItem()); + + if (!entry.isEmpty() && TagPrefix.ORES.containsKey(entry.tagPrefix())) { + List children = new ArrayList<>(); + children.add(new ItemTagMapIngredient(entry.tagPrefix().getItemTags(entry.material())[0])); + children.add(new ItemTagMapIngredient(entry.tagPrefix().getItemParentTags()[0])); + + return Collections.singletonList(new IntersectionMapIngredient(children)); + } + return Collections.emptyList(); + } + + @Override + protected int hash() { + int hash = 31; + for (var child : children) { + hash *= 31 * child.hashCode(); + } + return hash; + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + IntersectionMapIngredient other = (IntersectionMapIngredient) o; + if (this.children != null) { + if (other.children != null) { + if (this.children.size() != other.children.size()) return false; + for (int i = 0; i < this.children.size(); ++i) { + var ingredient1 = this.children.get(i); + var ingredient2 = other.children.get(i); + if (!ingredient1.equals(ingredient2)) { + return false; + } + } + return true; + } + } + } else if (o instanceof ItemStackMapIngredient stackIngredient) { + for (var child : this.children) { + if (!child.equals(stackIngredient)) { + return false; + } + } + return true; + } + return false; + } + + @Override + public boolean isSpecialIngredient() { + for (var child : this.children) { + if (child.isSpecialIngredient()) { + return true; + } + } + return false; + } + + @Override + public String toString() { + return "IntersectionMapIngredient{" + "children=" + children + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java new file mode 100644 index 00000000000..ba2ebd9fcc6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemStackMapIngredient.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.ItemValueAccessor; +import com.gregtechceu.gtceu.utils.IngredientEquality; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; + +public class ItemStackMapIngredient extends AbstractMapIngredient { + + protected ItemStack stack; + protected Ingredient ingredient = null; + + public ItemStackMapIngredient(ItemStack stack) { + this.stack = stack; + } + + public ItemStackMapIngredient(ItemStack stack, Ingredient ingredient) { + this.stack = stack; + this.ingredient = ingredient; + } + + @NotNull + public static List from(Ingredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { + if (value instanceof ItemValueAccessor itemValue) { + ingredients.add(new ItemStackMapIngredient(itemValue.getItem(), ingredient)); + } + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + return Collections.singletonList(new ItemStackMapIngredient(stack)); + } + + @Override + public boolean equals(Object o) { + if (super.equals(o)) { + ItemStackMapIngredient other = (ItemStackMapIngredient) o; + if (!ItemStack.isSameItem(this.stack, other.stack)) { + return false; + } + if (this.ingredient != null) { + if (other.ingredient != null) { + return IngredientEquality.ingredientEquals(this.ingredient, other.ingredient); + } else { + return this.ingredient.test(other.stack); + } + } else if (other.ingredient != null) { + return other.ingredient.test(this.stack); + } + } + return false; + } + + @Override + protected int hash() { + return stack.getItem().hashCode() * 31; + } + + @Override + public String toString() { + return "ItemStackMapIngredient{" + "item=" + stack + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java new file mode 100644 index 00000000000..5a5c01e6224 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/ItemTagMapIngredient.java @@ -0,0 +1,60 @@ +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.TagValueAccessor; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; + +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class ItemTagMapIngredient extends AbstractMapIngredient { + + protected TagKey tag; + + public ItemTagMapIngredient(TagKey tag) { + this.tag = tag; + } + + @NotNull + public static List from(Ingredient ingredient) { + List ingredients = new ObjectArrayList<>(); + for (Ingredient.Value value : ((IngredientAccessor) ingredient).getValues()) { + if (value instanceof TagValueAccessor tagValue) { + ingredients.add(new ItemTagMapIngredient(tagValue.getTag())); + } + } + return ingredients; + } + + @NotNull + public static List from(ItemStack stack) { + List ingredients = new ObjectArrayList<>(); + stack.getTags().forEach(tag -> ingredients.add(new ItemTagMapIngredient(tag))); + return ingredients; + } + + @Override + protected int hash() { + return tag.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (super.equals(obj)) { + return tag == ((ItemTagMapIngredient) obj).tag; + } + return false; + } + + @Override + public String toString() { + return "ItemTagMapIngredient{" + "tag=" + tag.location() + "}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java similarity index 56% rename from src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java rename to src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java index 7cc1c5eb343..29f6457e39d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackPartialNBTIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/PartialNBTItemStackMapIngredient.java @@ -1,35 +1,47 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; + +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.crafting.PartialNBTIngredient; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import org.jetbrains.annotations.NotNull; +import java.util.Collections; import java.util.List; -public class MapItemStackPartialNBTIngredient extends MapItemStackIngredient { +public class PartialNBTItemStackMapIngredient extends ItemStackMapIngredient { - PartialNBTIngredient nbtIngredient; + protected PartialNBTIngredient nbtIngredient; - public MapItemStackPartialNBTIngredient(ItemStack stack, PartialNBTIngredient nbtIngredient) { + public PartialNBTItemStackMapIngredient(ItemStack stack, PartialNBTIngredient nbtIngredient) { super(stack, nbtIngredient); this.nbtIngredient = nbtIngredient; } @NotNull - public static List from(@NotNull PartialNBTIngredient r) { + public static List from(@NotNull PartialNBTIngredient ingredient) { ObjectArrayList list = new ObjectArrayList<>(); - for (ItemStack s : r.getItems()) { - list.add(new MapItemStackPartialNBTIngredient(s, r)); + for (ItemStack s : ingredient.getItems()) { + list.add(new PartialNBTItemStackMapIngredient(s, ingredient)); } return list; } + @NotNull + public static List from(@NotNull ItemStack stack) { + if (stack.getShareTag() != null) { + return Collections.singletonList(new PartialNBTItemStackMapIngredient(stack, + PartialNBTIngredient.of(stack.getItem(), stack.getShareTag()))); + } + return Collections.emptyList(); + } + @Override protected int hash() { - return stack.getItem().hashCode() * 31; + return ItemStackHashStrategy.comparingAllButCount().hashCode(stack) * 31; } @Override @@ -37,7 +49,7 @@ public boolean equals(Object obj) { if (this == obj) { return true; } - if (obj instanceof MapItemStackPartialNBTIngredient other) { + if (obj instanceof PartialNBTItemStackMapIngredient other) { if (this.stack.getItem() != other.stack.getItem()) { return false; } @@ -51,6 +63,8 @@ public boolean equals(Object obj) { } } return true; + } else { + this.nbtIngredient.test(other.stack); } } else if (other.nbtIngredient != null) { return other.nbtIngredient.test(this.stack); @@ -61,7 +75,7 @@ public boolean equals(Object obj) { @Override public String toString() { - return "MapItemStackPartialNBTIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; + return "PartialNBTItemStackMapIngredient{" + "item=" + stack + "}"; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java similarity index 56% rename from src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java rename to src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java index a24fdc77dc6..a5400be7930 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/MapItemStackNBTIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java @@ -1,37 +1,47 @@ -package com.gregtechceu.gtceu.api.recipe.lookup; +package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.crafting.StrictNBTIngredient; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import org.jetbrains.annotations.NotNull; +import java.util.Collections; import java.util.List; -public class MapItemStackNBTIngredient extends MapItemStackIngredient { +public class StrictNBTItemStackMapIngredient extends ItemStackMapIngredient { protected StrictNBTIngredient nbtIngredient; - public MapItemStackNBTIngredient(ItemStack s, StrictNBTIngredient nbtIngredient) { + public StrictNBTItemStackMapIngredient(ItemStack s, StrictNBTIngredient nbtIngredient) { super(s); this.nbtIngredient = nbtIngredient; } @NotNull - public static List from(@NotNull StrictNBTIngredient r) { + public static List from(@NotNull StrictNBTIngredient ingredient) { ObjectArrayList list = new ObjectArrayList<>(); - for (ItemStack s : r.getItems()) { - list.add(new MapItemStackNBTIngredient(s, r)); + for (ItemStack s : ingredient.getItems()) { + list.add(new StrictNBTItemStackMapIngredient(s, ingredient)); } return list; } + @NotNull + public static List from(@NotNull ItemStack stack) { + if (stack.hasTag()) { + return Collections.singletonList(new StrictNBTItemStackMapIngredient(stack, StrictNBTIngredient.of(stack))); + } + return Collections.emptyList(); + } + @Override protected int hash() { - return stack.getItem().hashCode() * 31; + return ItemStackHashStrategy.comparingAllButCount().hashCode(stack) * 31; } @Override @@ -39,7 +49,7 @@ public boolean equals(Object obj) { if (this == obj) { return true; } - if (obj instanceof MapItemStackNBTIngredient other) { + if (obj instanceof StrictNBTItemStackMapIngredient other) { if (this.stack.getItem() != other.stack.getItem()) { return false; } @@ -47,6 +57,8 @@ public boolean equals(Object obj) { if (other.nbtIngredient != null) { return ItemStack.isSameItemSameTags(((StrictNBTIngredientAccessor) nbtIngredient).getStack(), ((StrictNBTIngredientAccessor) other.nbtIngredient).getStack()); + } else { + this.nbtIngredient.test(other.stack); } } else if (other.nbtIngredient != null) { return other.nbtIngredient.test(this.stack); @@ -57,7 +69,7 @@ public boolean equals(Object obj) { @Override public String toString() { - return "MapItemStackNBTIngredient{" + "item=" + BuiltInRegistries.ITEM.getKey(stack.getItem()) + "}"; + return "StrictNBTItemStackMapIngredient{" + "item=" + stack + "}"; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index a10284b2a04..4d0eaf36bb4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; @@ -19,10 +20,10 @@ import com.gregtechceu.gtceu.api.gui.factory.GTUIEditorFactory; import com.gregtechceu.gtceu.api.gui.factory.MachineUIFactory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidContainerIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; @@ -56,11 +57,17 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.Pack; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.common.crafting.CraftingHelper; +import net.minecraftforge.common.crafting.IntersectionIngredient; +import net.minecraftforge.common.crafting.PartialNBTIngredient; +import net.minecraftforge.common.crafting.StrictNBTIngredient; import net.minecraftforge.event.AddPackFindersEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModLoader; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @@ -237,6 +244,33 @@ public void commonSetup(FMLCommonSetupEvent event) { CraftingHelper.register(IntCircuitIngredient.TYPE, IntCircuitIngredient.SERIALIZER); CraftingHelper.register(IntProviderIngredient.TYPE, IntProviderIngredient.SERIALIZER); CraftingHelper.register(FluidContainerIngredient.TYPE, FluidContainerIngredient.SERIALIZER); + + // register the map ingredient converters for all of our ingredients + MapIngredientTypeManager.registerMapIngredient(FluidIngredient.class, FluidTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(FluidIngredient.class, FluidStackMapIngredient::from); + + MapIngredientTypeManager.registerMapIngredient(FluidStack.class, FluidTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(FluidStack.class, FluidStackMapIngredient::from); + + // spotless:off + MapIngredientTypeManager.registerMapIngredient(SizedIngredient.class, + (ingredient) -> MapIngredientTypeManager.getFrom(ingredient.getInner(), ItemRecipeCapability.CAP)); + MapIngredientTypeManager.registerMapIngredient(IntProviderIngredient.class, + (ingredient) -> MapIngredientTypeManager.getFrom(ingredient.getInner(), ItemRecipeCapability.CAP)); + + MapIngredientTypeManager.registerMapIngredient(StrictNBTIngredient.class, StrictNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(PartialNBTIngredient.class, PartialNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(IntersectionIngredient.class, IntersectionMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(Ingredient.class, ItemTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(Ingredient.class, ItemStackMapIngredient::from); + + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, ItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, ItemTagMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, StrictNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, PartialNBTItemStackMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, IntersectionMapIngredient::from); + MapIngredientTypeManager.registerMapIngredient(ItemStack.class, CustomMapIngredient::from); + // spotless:on }); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 5859aa31743..b098020c085 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -1472,10 +1472,11 @@ protected void warnTooManyIngredients(RecipeCapability capability, boolean isInput, Map, List> table, int addedEntries) { - if (table.getOrDefault(capability, List.of()).size() + addedEntries > recipeType.getMaxOutputs(capability)) { + int max = isInput ? recipeType.getMaxInputs(capability) : recipeType.getMaxOutputs(capability); + if (table.getOrDefault(capability, List.of()).size() + addedEntries > max) { String io = isInput ? "inputs" : "outputs"; - GTCEu.LOGGER.warn("Recipe {} is trying to add more {} than its recipe type can support, Max {}{} {}: {}", - id, io, (perTick ? "Tick " : ""), capability.name, io, recipeType.getMaxOutputs(capability)); + GTCEu.LOGGER.warn("Recipe {} is trying to add more {} than its recipe type can support, Max {} {}: {}", + id, io, capability.name, io, max); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java index 8f7b41d2280..4c881a4505b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/ExtendedOutputItem.java @@ -64,7 +64,7 @@ public static ExtendedOutputItem of(Object o, @Nullable RecipeJS recipe) { return new ExtendedOutputItem(intProvider.getInner(), 1, intProvider.getCountProvider()); } - OutputItem item = recipe != null ? recipe.readOutputItem(o) : OutputItem.of(o);; + OutputItem item = recipe != null ? recipe.readOutputItem(o) : OutputItem.of(o); IntProvider rolls = item.rolls; var map = MapJS.of(o); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java index 6cdae45e56b..86bf1fef489 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.core.mixins.*; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; @@ -17,32 +18,24 @@ public class IngredientEquality { - public static final Comparator STACK_COMPARATOR = Comparator - .comparing(stack -> BuiltInRegistries.ITEM.getKey(stack.getItem())); + public static final Comparator ITEM_COMPARATOR = Comparator.comparing(BuiltInRegistries.ITEM::getKey); public static final Comparator INGREDIENT_VALUE_COMPARATOR = new Comparator<>() { @Override public int compare(Ingredient.Value value1, Ingredient.Value value2) { - if (value1 instanceof Ingredient.TagValue tagValue) { - if (!(value2 instanceof Ingredient.TagValue tagValue1)) { - return 1; + if (value1 instanceof TagValueAccessor first) { + if (!(value2 instanceof TagValueAccessor second)) { + return 10; } - if (((TagValueAccessor) tagValue).getTag() != ((TagValueAccessor) tagValue1).getTag()) { + if (first.getTag() != second.getTag()) { return 1; } - } else if (value1 instanceof Ingredient.ItemValue) { - if (!(value2 instanceof Ingredient.ItemValue)) { - return 1; - } - for (ItemStack item1 : value1.getItems()) { - for (ItemStack item2 : value2.getItems()) { - int result = STACK_COMPARATOR.compare(item1, item2); - if (result != 0) { - return result; - } - } + } else if (value1 instanceof ItemValueAccessor first) { + if (!(value2 instanceof ItemValueAccessor second)) { + return 10; } + return ITEM_COMPARATOR.compare(first.getItem().getItem(), second.getItem().getItem()); } return 0; } @@ -96,18 +89,18 @@ public int compare(Ingredient first, Ingredient second) { return 1; } - if (((IngredientAccessor) first).getValues().length != ((IngredientAccessor) second).getValues().length) - return 1; - Ingredient.Value[] values1 = ((IngredientAccessor) first).getValues(); - Ingredient.Value[] values2 = ((IngredientAccessor) second).getValues(); - if (values1.length != values2.length) return 1; + Ingredient.Value[] firstValues = ((IngredientAccessor) first).getValues(); + Ingredient.Value[] secondValues = ((IngredientAccessor) second).getValues(); + if (firstValues.length != secondValues.length) return 1; - Arrays.parallelSort(values1, INGREDIENT_VALUE_COMPARATOR); - Arrays.parallelSort(values2, INGREDIENT_VALUE_COMPARATOR); + firstValues = firstValues.clone(); + secondValues = secondValues.clone(); + Arrays.parallelSort(firstValues, INGREDIENT_VALUE_COMPARATOR); + Arrays.parallelSort(secondValues, INGREDIENT_VALUE_COMPARATOR); - for (int i = 0; i < values1.length; ++i) { - Ingredient.Value value1 = values1[i]; - Ingredient.Value value2 = values2[i]; + for (int i = 0; i < firstValues.length; ++i) { + Ingredient.Value value1 = firstValues[i]; + Ingredient.Value value2 = secondValues[i]; int result = INGREDIENT_VALUE_COMPARATOR.compare(value1, value2); if (result != 0) { return result; @@ -119,9 +112,7 @@ public int compare(Ingredient first, Ingredient second) { public static boolean ingredientEquals(Ingredient first, Ingredient second) { if (first == second) return true; - if ((first == null) != (second == null)) { - return false; - } + if (first == null || second == null) return false; first = SizedIngredient.getInner(first); second = SizedIngredient.getInner(second); @@ -135,27 +126,28 @@ private static boolean cmp(Ingredient first, Ingredient second) { public static final class IngredientHashStrategy implements Hash.Strategy { public static final IngredientHashStrategy INSTANCE = new IngredientHashStrategy(); - private static final ItemStackHashStrategy ITEM_STACK_HASH_STRATEGY = ItemStackHashStrategy.comparingAll(); + private static final ItemStackHashStrategy ITEM_TAG_STRATEGY = ItemStackHashStrategy.comparingAllButCount(); + private static final ItemStackHashStrategy ITEM_STRATEGY = ItemStackHashStrategy.comparingItem(); @Override public int hashCode(Ingredient o) { - int hashCode = 0; + int hashCode = 537; if (o instanceof StrictNBTIngredientAccessor strict) { - hashCode = ITEM_STACK_HASH_STRATEGY.hashCode(strict.getStack()) * 31; + hashCode *= 31 * ITEM_TAG_STRATEGY.hashCode(strict.getStack()); } else if (o instanceof PartialNBTIngredientAccessor partial) { - hashCode = partial.getNbt().hashCode() * 31; - hashCode += partial.getItems().hashCode() * 31; + hashCode *= 31 * partial.getNbt().hashCode(); + hashCode *= 31 * partial.getItems().hashCode(); } else if (o instanceof IntersectionIngredientAccessor intersection) { for (Ingredient ingredient : intersection.getChildren()) { - hashCode += this.hashCode(ingredient) * 31; + hashCode *= 31 * this.hashCode(ingredient); } } else if (o instanceof IngredientAccessor ingredient) { for (Ingredient.Value value : ingredient.getValues()) { if (value instanceof TagValueAccessor tagValue) { - hashCode += tagValue.getTag().hashCode(); + hashCode *= 31 * tagValue.getTag().hashCode(); } else { for (ItemStack stack : value.getItems()) { - hashCode += ITEM_STACK_HASH_STRATEGY.hashCode(stack); + hashCode *= 31 * ITEM_STRATEGY.hashCode(stack); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java b/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java index a8f8de1a722..f8f8137a387 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ItemStackHashStrategy.java @@ -26,10 +26,7 @@ static ItemStackHashStrategyBuilder builder() { * @return the ItemStackHashStrategy as described above. */ static ItemStackHashStrategy comparingAll() { - return builder().compareItem(true) - .compareCount(true) - .compareTag(true) - .build(); + return ItemStackHashStrategyBuilder.ALL; } /** @@ -39,14 +36,11 @@ static ItemStackHashStrategy comparingAll() { * @return the ItemStackHashStrategy as described above. */ static ItemStackHashStrategy comparingAllButCount() { - return builder().compareItem(true) - .compareTag(true) - .build(); + return ItemStackHashStrategyBuilder.ITEM_AND_TAG; } static ItemStackHashStrategy comparingItem() { - return builder().compareItem(true) - .build(); + return ItemStackHashStrategyBuilder.ITEM; } /** @@ -54,6 +48,15 @@ static ItemStackHashStrategy comparingItem() { */ class ItemStackHashStrategyBuilder { + private static final ItemStackHashStrategy ALL = builder().compareItem(true) + .compareCount(true) + .compareTag(true) + .build(); + private static final ItemStackHashStrategy ITEM_AND_TAG = builder().compareItem(true) + .compareTag(true) + .build(); + private static final ItemStackHashStrategy ITEM = builder().compareItem(true).build(); + private boolean item, count, tag; /** From bacd2298918197414b5906817ed7968e05f50533 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Tue, 1 Jul 2025 20:00:21 +0300 Subject: [PATCH 087/270] fix KubeJS machine recipes crashing if multiple conditions of different types are added (#3302) --- .../gtceu/integration/kjs/recipe/GTRecipeSchema.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index f6ec913b67f..3ec1ac09399 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -161,7 +161,9 @@ public GTRecipeJS output(RecipeCapability capability, Object... obj) { } public GTRecipeJS addCondition(RecipeCondition condition) { - setValue(CONDITIONS, ArrayUtils.add(getValue(CONDITIONS), condition)); + if (getValue(CONDITIONS) == null) setValue(CONDITIONS, new RecipeCondition[] { condition }); + else setValue(CONDITIONS, ArrayUtils.add(getValue(CONDITIONS), condition)); + save(); return this; } From 7562f22f5d41a81527acac6852462ceb3c5f4cdf Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Wed, 2 Jul 2025 07:16:32 -0600 Subject: [PATCH 088/270] Batch Mode (#3292) --- .../resources/assets/gtceu/lang/en_ud.json | 4 + .../resources/assets/gtceu/lang/en_us.json | 4 + .../gtceu/api/gui/GuiTextures.java | 2 + .../feature/multiblock/IMultiController.java | 8 ++ .../multiblock/MultiblockDisplayText.java | 7 ++ .../WorkableElectricMultiblockMachine.java | 32 +++++++- .../gtceu/api/recipe/GTRecipe.java | 1 + .../api/recipe/modifier/ModifierFunction.java | 2 + .../api/recipe/modifier/ParallelLogic.java | 44 +++++++++-- .../gtceu/common/data/GTRecipeModifiers.java | 21 +++++ .../common/data/machines/GCYMMachines.java | 72 +++++++----------- .../common/data/machines/GTMultiMachines.java | 24 +++--- .../electric/FusionReactorMachine.java | 3 +- .../gcym/LargeChemicalBathMachine.java | 3 +- .../electric/gcym/LargeMixerMachine.java | 3 +- .../gtceu/config/ConfigHolder.java | 3 + .../gtceu/data/lang/LangHandler.java | 3 + .../textures/gui/widget/button_batch.png | Bin 0 -> 447 bytes 18 files changed, 162 insertions(+), 74 deletions(-) create mode 100644 src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index e661761f8b2..cadc661081f 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1725,6 +1725,7 @@ "config.gtceu.option.allUniqueStoneTypes": "sǝdʎ⟘ǝuoʇSǝnbıu∩ןןɐ", "config.gtceu.option.animationTime": "ǝɯı⟘uoıʇɐɯıuɐ", "config.gtceu.option.armorHud": "pnHɹoɯɹɐ", + "config.gtceu.option.batchDuration": "uoıʇɐɹnᗡɥɔʇɐq", "config.gtceu.option.bedrockOreDistance": "ǝɔuɐʇsıᗡǝɹOʞɔoɹpǝq", "config.gtceu.option.bedrockOreDropTagPrefix": "xıɟǝɹԀbɐ⟘doɹᗡǝɹOʞɔoɹpǝq", "config.gtceu.option.borderColor": "ɹoןoƆɹǝpɹoq", @@ -2528,6 +2529,8 @@ "gtceu.machine.available_recipe_map_4.tooltip": "%s '%s '%s '%s :sǝdʎ⟘ ǝdıɔǝᴚ ǝןqɐןıɐʌⱯ", "gtceu.machine.basic.input_from_output_side.allow": " :ǝpıS ʇndʇnO ɯoɹɟ ʇnduI ʍoןןⱯ", "gtceu.machine.basic.input_from_output_side.disallow": " :ǝpıS ʇndʇnO ɯoɹɟ ʇnduI ʍoןןɐsıᗡ", + "gtceu.machine.batch_disabled": "pǝןqɐsıᗡ buıɥɔʇɐᗺ", + "gtceu.machine.batch_enabled": "pǝןqɐuƎ buıɥɔʇɐᗺ", "gtceu.machine.bedrock_ore_miner.depletion": "%s%%ɟ§ :ǝʇɐᴚ uoıʇǝןdǝᗡq§", "gtceu.machine.bedrock_ore_miner.description": "˙ʞɔoɹpǝq ɹǝpun suıǝʌ ɯoɹɟ sǝɹo sןןıɹᗡㄥ§", "gtceu.machine.bedrock_ore_miner.production": "pǝʞɔoןɔɹǝʌo xɟ% 'x%dɟ§ :ɹǝıןdıʇןnW uoıʇɔnpoɹԀǝ§", @@ -3170,6 +3173,7 @@ "gtceu.multiblock.active_transformer.max_input": "ʇ/∩Ǝ %sɟ§ :ʇnduI xɐWɐ§", "gtceu.multiblock.active_transformer.max_output": "ʇ/∩Ǝ %sɟ§ :ʇndʇnO xɐWɔ§", "gtceu.multiblock.assembly_line.description": "˙sʇuǝuodɯoɔ buıʇɟɐɹɔ pǝɔuɐʌpɐ buıʇɐǝɹɔ ɹoɟ pǝsn 'ǝuıɥɔɐW buıןqɯǝssⱯ ǝbɹɐן s,ʇı 'ʎɹoǝɥʇ uI ˙\"sǝɔıןs\" 9Ɩ oʇ ϛ ɟo buıʇsısuoɔ ǝɹnʇɔnɹʇs ʞɔoןqıʇןnɯ ǝbɹɐן ɐ sı ǝuıꞀ ʎןqɯǝssⱯ ǝɥ⟘", + "gtceu.multiblock.batch_enabled": ")x%s( pǝןqɐuƎ :ǝpoW buıɥɔʇɐᗺ", "gtceu.multiblock.blast_furnace.max_temperature": "%s :ʎʇıɔɐdɐƆ ʇɐǝH", "gtceu.multiblock.central_monitor.height": ":ʇɥbıǝH uǝǝɹɔS", "gtceu.multiblock.central_monitor.height_modify": "%d :ʇɥbıǝH ʎɟıpoW", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 97fd3bacf35..90bde8e12ba 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1725,6 +1725,7 @@ "config.gtceu.option.allUniqueStoneTypes": "allUniqueStoneTypes", "config.gtceu.option.animationTime": "animationTime", "config.gtceu.option.armorHud": "armorHud", + "config.gtceu.option.batchDuration": "batchDuration", "config.gtceu.option.bedrockOreDistance": "bedrockOreDistance", "config.gtceu.option.bedrockOreDropTagPrefix": "bedrockOreDropTagPrefix", "config.gtceu.option.borderColor": "borderColor", @@ -2528,6 +2529,8 @@ "gtceu.machine.available_recipe_map_4.tooltip": "Available Recipe Types: %s, %s, %s, %s", "gtceu.machine.basic.input_from_output_side.allow": "Allow Input from Output Side: ", "gtceu.machine.basic.input_from_output_side.disallow": "Disallow Input from Output Side: ", + "gtceu.machine.batch_disabled": "Batching Disabled", + "gtceu.machine.batch_enabled": "Batching Enabled", "gtceu.machine.bedrock_ore_miner.depletion": "§bDepletion Rate: §f%s%%", "gtceu.machine.bedrock_ore_miner.description": "§7Drills ores from veins under bedrock.", "gtceu.machine.bedrock_ore_miner.production": "§eProduction Multiplier: §f%dx, %fx overclocked", @@ -3170,6 +3173,7 @@ "gtceu.multiblock.active_transformer.max_input": "§aMax Input: §f%s EU/t", "gtceu.multiblock.active_transformer.max_output": "§cMax Output: §f%s EU/t", "gtceu.multiblock.assembly_line.description": "The Assembly Line is a large multiblock structure consisting of 5 to 16 \"slices\". In theory, it's large Assembling Machine, used for creating advanced crafting components.", + "gtceu.multiblock.batch_enabled": "Batching Mode: Enabled (%sx)", "gtceu.multiblock.blast_furnace.max_temperature": "Heat Capacity: %s", "gtceu.multiblock.central_monitor.height": "Screen Height:", "gtceu.multiblock.central_monitor.height_modify": "Modify Height: %d", diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index c071a90c2ea..fa1a7ba9e0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -107,6 +107,8 @@ public class GuiTextures { "gtceu:textures/gui/widget/button_distinct_buses.png"); public static final ResourceTexture BUTTON_POWER = new ResourceTexture( "gtceu:textures/gui/widget/button_power.png"); + public static final ResourceTexture BUTTON_BATCH = new ResourceTexture( + "gtceu:textures/gui/widget/button_batch.png"); public static final ResourceTexture BUTTON_FILTER_NBT = new ResourceTexture( "gtceu:textures/gui/widget/button_filter_nbt.png"); public static final ResourceTexture BUTTON_FLUID_OUTPUT = new ResourceTexture( diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 620ec279285..6abfc678b02 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -150,6 +150,14 @@ default BlockPattern getPattern() { */ Optional getParallelHatch(); + /** + * + * @return Whether batching is enabled on this multiblock + */ + default boolean isBatchEnabled() { + return false; + } + /** * Called from part, when part is invalid due to chunk unload or broken. */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java index 28b2e9ae6d1..d3e8c0eacf0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java @@ -332,6 +332,13 @@ public Builder addProgressLine(double currentDuration, double maxDuration, doubl return this; } + public Builder addBatchModeLine(boolean batchEnabled, int batchAmount) { + if (batchEnabled && batchAmount > 0) { + textList.add(Component.translatable("gtceu.multiblock.batch_enabled", batchAmount)); + } + return this; + } + public Builder addOutputLines(GTRecipe recipe) { if (!isStructureFormed || !isActive) return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 763ba6c6c35..6d2b0cdd483 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -7,9 +7,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.fancy.FancyMachineUIWidget; -import com.gregtechceu.gtceu.api.gui.fancy.IFancyUIProvider; -import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.gui.fancy.*; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; @@ -21,6 +19,8 @@ import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; @@ -39,15 +39,25 @@ public class WorkableElectricMultiblockMachine extends WorkableMultiblockMachine implements IFancyUIMachine, IDisplayUIMachine, ITieredMachine, IOverclockMachine { + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + WorkableElectricMultiblockMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); // runtime protected EnergyContainerList energyContainer; @Getter protected int tier; + @Persisted + @Getter + protected boolean batchEnabled; public WorkableElectricMultiblockMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + ////////////////////////////////////// // *** Multiblock Lifecycle ***// ////////////////////////////////////// @@ -79,14 +89,17 @@ public void onPartUnload() { @Override public void addDisplayText(List textList) { int numParallels; + int batchParallels; boolean exact = false; if (recipeLogic.isActive() && recipeLogic.getLastRecipe() != null) { numParallels = recipeLogic.getLastRecipe().parallels; + batchParallels = recipeLogic.getLastRecipe().batchParallels; exact = true; } else { numParallels = getParallelHatch() .map(IParallelHatch::getCurrentParallel) .orElse(0); + batchParallels = 0; } MultiblockDisplayText.builder(textList, isFormed()) @@ -95,6 +108,7 @@ public void addDisplayText(List textList) { .addEnergyTierLine(tier) .addMachineModeLine(getRecipeType(), getRecipeTypes().length > 1) .addParallelsLine(numParallels, exact) + .addBatchModeLine(isBatchEnabled(), batchParallels) .addWorkingStatusLine() .addProgressLine(recipeLogic.getProgress(), recipeLogic.getMaxProgress(), recipeLogic.getProgressPercent()) @@ -126,6 +140,18 @@ public List getSubTabs() { return getParts().stream().filter(Objects::nonNull).map(IFancyUIProvider.class::cast).toList(); } + @Override + public void attachConfigurators(ConfiguratorPanel configuratorPanel) { + configuratorPanel.attachConfigurators(new IFancyConfiguratorButton.Toggle( + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0, 1, 0.5), + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0.5, 1, 0.5), + this::isBatchEnabled, + (cd, p) -> batchEnabled = p) + .setTooltipsSupplier( + p -> List.of(Component.translatable("gtceu.machine.batch_" + (p ? "enabled" : "disabled"))))); + IFancyUIMachine.super.attachConfigurators(configuratorPanel); + } + @Override public void attachTooltips(TooltipsPanel tooltipsPanel) { for (IMultiPart part : getParts()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index 7ab8e4c5910..1ca3fb2dead 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -51,6 +51,7 @@ public class GTRecipe implements net.minecraft.world.item.crafting.Recipe> capsToSkip) { int minimum = Integer.MAX_VALUE; // non-tick inputs. for (RecipeCapability cap : recipe.inputs.keySet()) { - if (cap.doMatchInRecipe()) { + if (cap.doMatchInRecipe() && !capsToSkip.contains(cap)) { // Find the maximum number of recipes that can be performed from the contents of the input inventories minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, false)); } @@ -58,7 +63,7 @@ public static int getMaxByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, // tick inputs. for (RecipeCapability cap : recipe.tickInputs.keySet()) { - if (cap.doMatchInRecipe()) { + if (cap.doMatchInRecipe() && !capsToSkip.contains(cap)) { // Find the maximum number of recipes that can be performed from the contents of the input inventories minimum = Math.min(minimum, cap.getMaxParallelByInput(holder, recipe, parallelLimit, true)); } @@ -72,13 +77,15 @@ public static int getMaxByInput(IRecipeCapabilityHolder holder, GTRecipe recipe, * @param recipe The recipe * @param parallelLimit the maximum allowed amount * @param canVoid predicate for what parallel limits should be ignored + * @param capsToSkip the capabilities to skip parallel testing * @return returns the amount of recipes that can be merged successfully into a given output inventory */ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe recipe, int parallelLimit, - Predicate> canVoid) { + Predicate> canVoid, + List> capsToSkip) { int max = parallelLimit; for (RecipeCapability cap : recipe.outputs.keySet()) { - if (canVoid.test(cap) || !cap.doMatchInRecipe()) { + if (canVoid.test(cap) || !cap.doMatchInRecipe() || capsToSkip.contains(cap)) { continue; } // Check both normal item outputs and chanced item outputs @@ -92,7 +99,7 @@ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe } } for (RecipeCapability cap : recipe.tickOutputs.keySet()) { - if (canVoid.test(cap) || !cap.doMatchInRecipe()) { + if (canVoid.test(cap) || !cap.doMatchInRecipe() || capsToSkip.contains(cap)) { continue; } // Check both normal item outputs and chanced item outputs @@ -108,6 +115,27 @@ public static int limitByOutputMerging(IRecipeCapabilityHolder holder, GTRecipe return max; } + /** + * Calculates the maximum parallel amount that can be done for the given machine and recipe, up to the passed limit + * + * @param machine machine to test against + * @param recipe recipe to test with + * @param parallelLimit hard upper limit of parallels that can be done + * @return The number of possible parallels, 0 if the recipe cannot be done + */ + public static int getParallelAmountWithoutEU(MetaMachine machine, GTRecipe recipe, int parallelLimit) { + if (parallelLimit <= 1) return parallelLimit; + if (!(machine instanceof IRecipeLogicMachine rlm)) return 1; + // First check if we are limited by recipe inputs. This can short circuit a lot of consecutive checking + int maxInputMultiplier = getMaxByInput(rlm, recipe, parallelLimit, List.of(EURecipeCapability.CAP)); + if (maxInputMultiplier == 0) return 0; + + // Simulate the merging of the maximum amount of recipes that can be run with these items + // and limit by the amount we can successfully merge + return limitByOutputMerging(rlm, recipe, maxInputMultiplier, rlm::canVoidRecipeOutputs, + List.of(EURecipeCapability.CAP)); + } + /** * Binary-search-like approach to find the maximum amount that can be inserted * diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index 7a5509c8b4d..6824fc56abd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -73,6 +73,7 @@ public class GTRecipeModifiers { .apply(GTMedicalConditions.CARBON_MONOXIDE_POISONING, 1000); public static final RecipeModifier PARALLEL_HATCH = GTRecipeModifiers::hatchParallel; + public static final RecipeModifier BATCH_MODE = GTRecipeModifiers::batchMode; /** * Recipe Modifier for Parallel Multiblock Machines - can be used as a valid {@link RecipeModifier} @@ -100,6 +101,26 @@ public class GTRecipeModifiers { return ModifierFunction.IDENTITY; } + public static @NotNull ModifierFunction batchMode(@NotNull MetaMachine machine, @NotNull GTRecipe recipe) { + if (machine instanceof IMultiController controller && controller.isFormed() && controller.isBatchEnabled()) { + if (recipe.duration < ConfigHolder.INSTANCE.machines.batchDuration) { + int parallel = ConfigHolder.INSTANCE.machines.batchDuration / recipe.duration; + parallel = ParallelLogic.getParallelAmountWithoutEU(machine, recipe, parallel); + + if (parallel == 0) return ModifierFunction.NULL; + if (parallel == 1) return ModifierFunction.IDENTITY; + + return ModifierFunction.builder() + .inputModifier(ContentModifier.multiplier(parallel)) + .outputModifier(ContentModifier.multiplier(parallel)) + .durationMultiplier(parallel) + .batchParallels(parallel) + .build(); + } + } + return ModifierFunction.IDENTITY; + } + /** * Recipe Modifier for Cracker Multiblocks - can be used as a valid {@link RecipeModifier} *

diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 8f23bd1fa31..b40c79c306c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -47,6 +47,7 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.NaquadahAlloy; +import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.registerTieredMachines; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @@ -81,8 +82,7 @@ public static void init() {} Component.translatable("gtceu.macerator"))) .rotationState(RotationState.ALL) .recipeType(MACERATOR_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_SECURE_MACERATION) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX", "XXXXX") @@ -112,8 +112,7 @@ public static void init() {} .renderer(() -> new LargeChemicalBathRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_chemical_bath"))) .hasTESR(true) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -140,8 +139,7 @@ public static void init() {} Component.translatable("gtceu.centrifuge"), Component.translatable("gtceu.thermal_centrifuge"))) .rotationState(RotationState.ALL) .recipeTypes(CENTRIFUGE_RECIPES, THERMAL_CENTRIFUGE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "XXXXX", "#XXX#") @@ -172,8 +170,7 @@ public static void init() {} .renderer(() -> new LargeMixerRenderer(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), GTCEu.id("block/multiblock/gcym/large_mixer"))) .hasTESR(true) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_REACTION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#XXX#", "##F##") @@ -201,8 +198,7 @@ public static void init() {} Component.translatable("gtceu.electrolyzer"))) .rotationState(RotationState.ALL) .recipeType(ELECTROLYZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -228,8 +224,7 @@ public static void init() {} Component.translatable("gtceu.polarizer"))) .rotationState(RotationState.ALL) .recipeTypes(ELECTROMAGNETIC_SEPARATOR_RECIPES, POLARIZER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_NONCONDUCTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -254,8 +249,7 @@ public static void init() {} Component.translatable("gtceu.packer"))) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PACKER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_TUNGSTENSTEEL_ROBUST) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -285,8 +279,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX") @@ -317,8 +311,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(CIRCUIT_ASSEMBLER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") @@ -350,8 +344,7 @@ public static void init() {} Component.translatable("gtceu.arc_furnace"))) .rotationState(RotationState.ALL) .recipeType(ARC_FURNACE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#") @@ -382,8 +375,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(LASER_ENGRAVER_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, + OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_LASER_SAFE_ENGRAVING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXGXX", "XXGXX", "XXXXX") @@ -412,8 +405,7 @@ public static void init() {} Component.translatable("gtceu.sifter"))) .rotationState(RotationState.ALL) .recipeType(SIFTER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_VIBRATION_SAFE) .pattern(definition -> FactoryBlockPattern.start() .aisle("#X#X#", "#X#X#", "#XXX#", "XXXXX", "#XXX#") @@ -509,8 +501,7 @@ public static void init() {} Component.translatable("gtceu.autoclave"))) .rotationState(RotationState.ALL) .recipeType(AUTOCLAVE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -538,8 +529,7 @@ public static void init() {} Component.translatable("gtceu.forge_hammer"), Component.translatable("gtceu.forming_press"))) .rotationState(RotationState.ALL) .recipeTypes(BENDER_RECIPES, COMPRESSOR_RECIPES, FORGE_HAMMER_RECIPES, FORMING_PRESS_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") @@ -566,8 +556,7 @@ public static void init() {} Component.translatable("gtceu.fluid_heater"))) .rotationState(RotationState.ALL) .recipeTypes(BREWING_RECIPES, FERMENTING_RECIPES, FLUID_HEATER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_CORROSION_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#####") @@ -596,8 +585,7 @@ public static void init() {} Component.translatable("gtceu.cutter"), Component.translatable("gtceu.lathe"))) .rotationState(RotationState.ALL) .recipeTypes(CUTTER_RECIPES, LATHE_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_SHOCK_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX", "##XXXXX") @@ -625,8 +613,7 @@ public static void init() {} Component.translatable("gtceu.distillation_tower"), Component.translatable("gtceu.distillery"))) .rotationState(RotationState.NON_Y_AXIS) .recipeTypes(DISTILLATION_RECIPES, DISTILLERY_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> { TraceabilityPredicate casingPredicate = blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(40); @@ -717,8 +704,7 @@ public static void init() {} Component.translatable("gtceu.extractor"), Component.translatable("gtceu.canner"))) .rotationState(RotationState.ALL) .recipeTypes(EXTRACTOR_RECIPES, CANNER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXXXX") @@ -743,8 +729,7 @@ public static void init() {} Component.translatable("gtceu.extruder"))) .rotationState(RotationState.ALL) .recipeType(EXTRUDER_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("##XXX", "##XXX", "##XXX") @@ -773,8 +758,7 @@ public static void init() {} Component.translatable("gtceu.fluid_solidifier"))) .rotationState(RotationState.ALL) .recipeType(FLUID_SOLIDFICATION_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#") @@ -802,8 +786,7 @@ public static void init() {} Component.translatable("gtceu.wiremill"))) .rotationState(RotationState.ALL) .recipeType(WIREMILL_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STRESS_PROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXXXX", "XXX##") @@ -832,7 +815,7 @@ public static void init() {} .rotationState(RotationState.ALL) .recipeType(BLAST_RECIPES) .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers::ebfOverclock) + GTRecipeModifiers::ebfOverclock, BATCH_MODE) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> { TraceabilityPredicate casing = blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360); @@ -1006,8 +989,7 @@ public static void init() {} Component.translatable("gtceu.vacuum_freezer"))) .rotationState(RotationState.ALL) .recipeType(VACUUM_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index c779b35d305..a996ddb7d68 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -54,6 +54,7 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.DrillingFluid; +import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @@ -125,7 +126,7 @@ public class GTMultiMachines { .multiblock("electric_blast_furnace", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.BLAST_RECIPES) - .recipeModifier(GTRecipeModifiers::ebfOverclock) + .recipeModifiers(GTRecipeModifiers::ebfOverclock, BATCH_MODE) .appearanceBlock(CASING_INVAR_HEATPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "CCC", "CCC", "XXX") @@ -189,7 +190,7 @@ public class GTMultiMachines { ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.LARGE_CHEMICAL_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.OC_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, OC_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_PTFE_INERT) .pattern(definition -> { var casing = blocks(CASING_PTFE_INERT.get()).setMinGlobalLimited(10); @@ -255,7 +256,7 @@ public class GTMultiMachines { .multiblock("implosion_compressor", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.IMPLOSION_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -275,7 +276,7 @@ public class GTMultiMachines { .multiblock("pyrolyse_oven", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PYROLYSE_RECIPES) - .recipeModifiers(GTRecipeModifiers::pyrolyseOvenOverclock) + .recipeModifiers(GTRecipeModifiers::pyrolyseOvenOverclock, BATCH_MODE) .appearanceBlock(MACHINE_CASING_ULV) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -328,7 +329,7 @@ public class GTMultiMachines { .multiblock("multi_smelter", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeTypes(GTRecipeTypes.FURNACE_RECIPES, GTRecipeTypes.ALLOY_SMELTER_RECIPES) - .recipeModifiers(GTRecipeModifiers::multiSmelterParallel) + .recipeModifiers(GTRecipeModifiers::multiSmelterParallel, BATCH_MODE) .appearanceBlock(CASING_INVAR_HEATPROOF) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.electric_furnace"), Component.translatable("gtceu.alloy_smelter"))) @@ -383,7 +384,7 @@ public class GTMultiMachines { .multiblock("cracker", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.CRACKING_RECIPES) - .recipeModifier(GTRecipeModifiers::crackerOverclock) + .recipeModifiers(GTRecipeModifiers::crackerOverclock, BATCH_MODE) .appearanceBlock(CASING_STAINLESS_CLEAN) .pattern(definition -> FactoryBlockPattern.start() .aisle("HCHCH", "HCHCH", "HCHCH") @@ -432,7 +433,7 @@ public class GTMultiMachines { .multiblock("distillation_tower", DistillationTowerMachine::new) .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.DISTILLATION_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_STAINLESS_CLEAN) .pattern(definition -> { TraceabilityPredicate exportPredicate = abilities(PartAbility.EXPORT_FLUIDS_1X); @@ -503,7 +504,7 @@ public class GTMultiMachines { .multiblock("vacuum_freezer", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.VACUUM_RECIPES) - .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(GTRecipeModifiers.OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX") @@ -524,8 +525,7 @@ public class GTMultiMachines { .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.ASSEMBLY_LINE_RECIPES) .alwaysTryModifyRecipe(true) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, - GTRecipeModifiers.OC_NON_PERFECT_SUBTICK) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, OC_NON_PERFECT) .appearanceBlock(CASING_STEEL_SOLID) .pattern(definition -> FactoryBlockPattern.start(BACK, UP, RIGHT) .aisle("FIF", "RTR", "SAG", "#Y#") @@ -628,8 +628,8 @@ public class GTMultiMachines { .rotationState(RotationState.ALL) .langValue("Fusion Reactor Computer MK %s".formatted(toRomanNumeral(tier - 5))) .recipeType(GTRecipeTypes.FUSION_RECIPES) - .recipeModifiers(GTRecipeModifiers.DEFAULT_ENVIRONMENT_REQUIREMENT, - FusionReactorMachine::recipeModifier) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, + FusionReactorMachine::recipeModifier, BATCH_MODE) .tooltips( Component.translatable("gtceu.machine.fusion_reactor.capacity", FusionReactorMachine.calculateEnergyStorageFactor(tier, 16) / 1000000L), diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java index e7e6d5c0f70..3b14be3ad8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/FusionReactorMachine.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -59,7 +58,7 @@ public class FusionReactorMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FusionReactorMachine.class, - WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); // Standard OC used for Fusion public static final OverclockingLogic FUSION_OC = OverclockingLogic.create(PERFECT_HALF_DURATION_FACTOR, diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index e04f998393a..6f34110bb49 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -25,7 +24,7 @@ public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( - LargeChemicalBathMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + LargeChemicalBathMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter @DescSynced diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index cc09295b12c..14256da3673 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -25,7 +24,7 @@ public class LargeMixerMachine extends WorkableElectricMultiblockMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( - LargeMixerMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + LargeMixerMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter @DescSynced diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 47ff4c97bf4..e31abb42d12 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -443,6 +443,9 @@ public static class MachineConfigs { @Configurable.Comment({ "Whether to play machine sounds while machines are active.", "Default: true" }) public boolean machineSounds = true; @Configurable + @Configurable.Comment({ "Duration in ticks that batching will try to reach.", "Default: 100" }) + public int batchDuration = 100; + @Configurable @Configurable.Comment({ "Whether Steam Multiblocks should use Steel instead of Bronze.", "Default: false" }) public boolean steelSteamMultiblocks = false; @Configurable diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 65c92a3f365..52d258af88c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1137,6 +1137,9 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.multiblock.not_enough_energy", "WARNING: Machine needs more energy."); provider.add("gtceu.multiblock.not_enough_energy_output", "WARNING: Energy Dynamo Tier Too Low!"); provider.add("gtceu.multiblock.waiting", "WARNING: Machine is waiting."); + provider.add("gtceu.multiblock.batch_enabled", "Batching Mode: Enabled (%sx)"); + provider.add("gtceu.machine.batch_enabled", "Batching Enabled"); + provider.add("gtceu.machine.batch_disabled", "Batching Disabled"); provider.add("gtceu.multiblock.progress_percent", "Progress: %s%%"); provider.add("gtceu.multiblock.progress", "Progress: %ss / %ss (%s%%)"); provider.add("gtceu.multiblock.output_line.0", "%s x §e%s§r (%ss/ea)"); diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbd717d7c85b8b1dae3386f0509cdc0872040ac GIT binary patch literal 447 zcmV;w0YLtVP)83@H8UUKfu6{iWLSzOY-o%`*08*3o-ss0KenQ8j(qy{k`v5v?^q_Dw z6Vx0FPe{b1rSezSN|gm6u7RKrN2@&&5Gny#3KjtBn7N}$Kwemrt_Z40Lx3yqBHkyh zb?N)Q`3*Ua<9@SgT56i6^i%u#etpXO{P@Xg!p$xTaUX3IK-ukNQenDj5p;W-#NKu9 z_x+c~%nC%91pzT5A`fNGR{*I=dvEmP;o|bU8Wlnxj%I?IW8n#jn6y;> z%37(iAjCBg^x Date: Wed, 2 Jul 2025 16:27:22 +0300 Subject: [PATCH 089/270] fix research holder items crashing if the research recipe's only output is a fluid (#3301) --- dependencies.gradle | 7 +- gradle/forge.versions.toml | 2 +- .../recipe/FluidRecipeCapability.java | 15 +-- .../recipe/ItemRecipeCapability.java | 33 ++++--- .../gtceu/client/util/RenderUtil.java | 93 +++++++++++++++++-- .../gtceu/core/mixins/GuiGraphicsMixin.java | 66 ++----------- .../gtceu/utils/OverlayingFluidStorage.java | 87 ----------------- 7 files changed, 125 insertions(+), 178 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java diff --git a/dependencies.gradle b/dependencies.gradle index 724563c9f25..fc99f41cdbc 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -12,9 +12,10 @@ dependencies { // Mixin (& Extras) annotationProcessor(variantOf(libs.mixin) { classifier("processor") }) - annotationProcessor(forge.mixinExtras.common) - api(forge.mixinExtras.common) - jarJar(forge.mixinExtras.forge) + compileOnly(annotationProcessor(forge.mixinExtras.common.get())) + jarJar(api(forge.mixinExtras.forge.get())).version { + require("[${forge.versions.mixinExtras.get()},)") + } // Recipe Viewers modCompileOnly(forge.bundles.jei) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index bbb6d567c7c..e127ca3d752 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -2,7 +2,7 @@ ldlib = "1.0.39" registrate = "MC1.20-1.3.11" configuration = "2.2.0" -mixinExtras = "0.2.0" +mixinExtras = "0.5.0-rc.3" jei = "15.20.0.105" rei = "12.1.785" diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 0d9353a658e..ff463dc044b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -12,14 +12,12 @@ import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidEntryList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidStackList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidTagList; import com.gregtechceu.gtceu.integration.xei.handlers.fluid.CycleFluidEntryHandler; import com.gregtechceu.gtceu.integration.xei.widgets.GTRecipeWidget; -import com.gregtechceu.gtceu.utils.OverlayingFluidStorage; import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; @@ -29,6 +27,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.TooltipFlag; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; import it.unimi.dsi.fastutil.objects.*; import org.jetbrains.annotations.NotNull; @@ -284,10 +283,14 @@ private static List> getInputContents(IRecipeCapabilit @Override public @NotNull List createXEIContainerContents(List contents, GTRecipe recipe, IO io) { - return contents.stream().map(content -> content.content) + List entryLists = contents.stream() + .map(Content::getContent) .map(this::of) .map(FluidRecipeCapability::mapFluid) .collect(Collectors.toList()); + + while (entryLists.size() < recipe.recipeType.getMaxOutputs(this)) entryLists.add(null); + return entryLists; } public Object createXEIContainer(List contents) { @@ -322,10 +325,8 @@ public void applyWidgetInfo(@NotNull Widget widget, @Nullable Content content, @Nullable Object storage, int recipeTier, int chanceTier) { if (widget instanceof TankWidget tank) { - if (storage instanceof CycleFluidEntryHandler cycleHandler) { - tank.setFluidTank(cycleHandler, index); - } else if (storage instanceof IFluidHandlerModifiable fluidHandler) { - tank.setFluidTank(new OverlayingFluidStorage(fluidHandler, index)); + if (storage instanceof IFluidHandler fluidHandler) { + tank.setFluidTank(fluidHandler, index); } tank.setIngredientIO(io == IO.IN ? IngredientIO.INPUT : IngredientIO.OUTPUT); tank.setAllowClickFilled(!isXEI); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index b4b32582353..81e8d357c34 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -340,19 +340,21 @@ private static List> getInputContents(IRecipeCapability @Override public @NotNull List createXEIContainerContents(List contents, GTRecipe recipe, IO io) { - var entryLists = contents.stream() + List entryLists = contents.stream() .map(Content::getContent) .map(this::of) .map(ItemRecipeCapability::mapItem) .collect(Collectors.toList()); - List scannerPossibilities = null; if (io == IO.OUT && recipe.recipeType.isScanner()) { - scannerPossibilities = new ArrayList<>(); + List scannerPossibilities = new ArrayList<>(); // Scanner Output replacing, used for cycling research outputs ResearchManager.ResearchItem researchData = null; - for (Content stack : recipe.getOutputContents(ItemRecipeCapability.CAP)) { - researchData = ResearchManager.readResearchId(ItemRecipeCapability.CAP.of(stack.content).getItems()[0]); + for (Content stack : recipe.getOutputContents(this)) { + ItemStack[] stacks = this.of(stack.content).getItems(); + if (stacks.length == 0 || stacks[0].isEmpty()) continue; + + researchData = ResearchManager.readResearchId(stacks[0]); if (researchData != null) break; } if (researchData != null) { @@ -361,24 +363,27 @@ private static List> getInputContents(IRecipeCapability Set cache = new ObjectOpenCustomHashSet<>(ItemStackHashStrategy.comparingItem()); if (possibleRecipes != null) { for (GTRecipe r : possibleRecipes) { - Content outputContent = r.getOutputContents(ItemRecipeCapability.CAP).get(0); - ItemStack researchStack = ItemRecipeCapability.CAP.of(outputContent.content).getItems()[0]; - if (!cache.contains(researchStack)) { + var outputs = r.getOutputContents(this); + if (outputs.isEmpty()) continue; + + Content outputContent = outputs.get(0); + ItemStack[] stacks = this.of(outputContent.content).getItems(); + if (stacks.length == 0) continue; + + ItemStack researchStack = stacks[0]; + if (!researchStack.isEmpty() && !cache.contains(researchStack)) { cache.add(researchStack); scannerPossibilities.add(ItemStackList.of(researchStack.copyWithCount(1))); } } } scannerPossibilities.add(entryLists.get(0)); + entryLists = scannerPossibilities; } } - if (scannerPossibilities != null && !scannerPossibilities.isEmpty()) { - entryLists = scannerPossibilities; - } - while (entryLists.size() < recipe.recipeType.getMaxOutputs(ItemRecipeCapability.CAP)) entryLists.add(null); - - return new ArrayList<>(entryLists); + while (entryLists.size() < recipe.recipeType.getMaxOutputs(this)) entryLists.add(null); + return entryLists; } public Object createXEIContainer(List contents) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java index 4c60eea4405..4d23a83ab78 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java @@ -1,50 +1,79 @@ package com.gregtechceu.gtceu.client.util; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.utils.ResearchManager; + +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.fluids.FluidStack; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.mojang.blaze3d.vertex.VertexConsumer; import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.joml.Vector3f; import java.util.*; -import java.util.function.Function; +import java.util.function.BiFunction; @OnlyIn(Dist.CLIENT) public class RenderUtil { public enum FluidTextureType { - STILL(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getStillTexture())), - FLOWING(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getFlowingTexture())), - OVERLAY(fluidTypeExtensions -> Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(fluidTypeExtensions.getOverlayTexture())); + STILL((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getStillTexture(fluidStack); + else return fluidTypeExtensions.getStillTexture(); + }), + FLOWING((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getFlowingTexture(fluidStack); + else return fluidTypeExtensions.getFlowingTexture(); + }), + OVERLAY((fluidTypeExtensions, fluidStack) -> { + if (!fluidStack.isEmpty()) return fluidTypeExtensions.getOverlayTexture(fluidStack); + else return fluidTypeExtensions.getOverlayTexture(); + }); + + private static final ResourceLocation WATER_STILL = new ResourceLocation("minecraft", "block/water_still"); - private final Function mapper; + private final BiFunction mapper; - FluidTextureType(Function mapper) { + FluidTextureType(BiFunction mapper) { this.mapper = mapper; } public TextureAtlasSprite map(IClientFluidTypeExtensions fluidTypeExtensions) { - return mapper.apply(fluidTypeExtensions); + return map(fluidTypeExtensions, FluidStack.EMPTY); + } + + public TextureAtlasSprite map(IClientFluidTypeExtensions fluidTypeExtensions, FluidStack fluidStack) { + ResourceLocation texture = mapper.apply(fluidTypeExtensions, fluidStack); + if (texture == null) texture = STILL.mapper.apply(fluidTypeExtensions, fluidStack); + if (texture == null) texture = WATER_STILL; + + return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(texture); } } @@ -158,4 +187,48 @@ public static Fluid getRecipeFluidToRender(GTRecipe recipe) { return fluid; } + + public static boolean renderResearchItemContent(GuiGraphics graphics, Operation originalMethod, + @Nullable LivingEntity entity, @Nullable Level level, + ItemStack stack, int x, int y, int z, int seed) { + if (!Screen.hasShiftDown()) return false; + + ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); + if (researchData == null) return false; + + Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); + if (recipes == null || recipes.isEmpty()) return false; + + for (var recipe : recipes) { + // check item outputs first + List outputs = recipe.getOutputContents(ItemRecipeCapability.CAP); + if (!outputs.isEmpty()) { + ItemStack[] items = ItemRecipeCapability.CAP.of(outputs.get(0).content).getItems(); + if (items.length > 0) { + ItemStack output = items[0]; + if (!output.isEmpty() && !ItemStack.isSameItemSameTags(output, stack)) { + originalMethod.call(entity, level, stack, x, y, seed, z); + return true; + } + } + } + // if there are no item outputs, try to find a fluid output + outputs = recipe.getOutputContents(FluidRecipeCapability.CAP); + if (!outputs.isEmpty()) { + FluidStack[] fluids = FluidRecipeCapability.CAP.of(outputs.get(0).content).getStacks(); + if (fluids.length != 0) { + FluidStack output = fluids[0]; + if (!output.isEmpty()) { + var clientExt = IClientFluidTypeExtensions.of(output.getFluid()); + var texture = RenderUtil.FluidTextureType.STILL.map(clientExt, output); + int color = clientExt.getTintColor(output); + + DrawerHelper.drawFluidTexture(graphics, x, y, texture, 0, 0, z, color); + return true; + } + } + } + } + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java index 932434a39a8..d79b263bcc0 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java @@ -1,73 +1,27 @@ package com.gregtechceu.gtceu.core.mixins; -import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.utils.ResearchManager; +import com.gregtechceu.gtceu.client.util.RenderUtil; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.Screen; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.Collection; @Mixin(GuiGraphics.class) public class GuiGraphicsMixin { - // Prevents recursion in the hook below - @Unique - private static final ThreadLocal GTCEU$OVERRIDING_FOR = new ThreadLocal<>(); - - @Shadow - private void renderItem(@Nullable LivingEntity entity, @Nullable Level level, ItemStack stack, int x, int y, - int seed, int guiOffset) { - throw new AssertionError(); - } - - @Inject(method = "renderItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;IIII)V", - at = @At(value = "HEAD"), - cancellable = true) - protected void gtceu$renderItem(@Nullable LivingEntity livingEntity, @Nullable Level level, ItemStack stack, - int x, int y, int seed, int z, CallbackInfo ci) { - if (GTCEU$OVERRIDING_FOR.get() != null || !Screen.hasShiftDown()) { - return; - } - - ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); - if (researchData != null) { - Collection recipes = researchData.recipeType().getDataStickEntry(researchData.researchId()); - if (recipes != null && !recipes.isEmpty()) { - for (var recipe : recipes) { - ItemStack output = ItemRecipeCapability.CAP - .of(recipe.getOutputContents(ItemRecipeCapability.CAP).get(0).content).getItems()[0]; - - if (!output.isEmpty() && !ItemStack.isSameItemSameTags(output, stack)) { - gtceu$renderInstead(livingEntity, level, output, x, y, seed, z); - ci.cancel(); - return; - } - } - } - } - } - - @Unique - private void gtceu$renderInstead(@Nullable LivingEntity livingEntity, @Nullable Level level, ItemStack stack, - int x, int y, int seed, int z) { - GTCEU$OVERRIDING_FOR.set(stack); - try { - this.renderItem(livingEntity, level, stack, x, y, seed, z); - } finally { - GTCEU$OVERRIDING_FOR.remove(); + @WrapMethod(method = "renderItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/item/ItemStack;IIII)V") + private void gtceu$renderResearchItemContent(@Nullable LivingEntity entity, @Nullable Level level, + ItemStack stack, int x, int y, int seed, int z, + Operation original) { + if (!RenderUtil.renderResearchItemContent((GuiGraphics) (Object) this, original, + entity, level, stack, x, y, z, seed)) { + original.call(entity, level, stack, x, y, seed, z); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java b/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java deleted file mode 100644 index b3c9c392192..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/utils/OverlayingFluidStorage.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gregtechceu.gtceu.utils; - -import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; -import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; - -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; - -import lombok.RequiredArgsConstructor; -import org.jetbrains.annotations.NotNull; - -@RequiredArgsConstructor -public class OverlayingFluidStorage implements IFluidHandlerModifiable, IFluidTank { - - private final IFluidHandlerModifiable handler; - private final int tank; - - @Override - public @NotNull FluidStack getFluid() { - return handler.getFluidInTank(tank); - } - - @Override - public int getFluidAmount() { - return getFluid().getAmount(); - } - - @Override - public int getCapacity() { - return handler.getTankCapacity(tank); - } - - @Override - public int getTankCapacity(int tank) { - return getCapacity(); - } - - @Override - public @NotNull FluidStack getFluidInTank(int tank) { - return getFluid(); - } - - @Override - public void setFluidInTank(int tank, FluidStack stack) { - handler.setFluidInTank(tank, stack); - } - - @Override - public int getTanks() { - return 1; - } - - @Override - public boolean isFluidValid(FluidStack stack) { - return isFluidValid(tank, stack); - } - - @Override - public boolean isFluidValid(int tank, @NotNull FluidStack stack) { - return handler.isFluidValid(tank, stack); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].fill(resource, action); - } - return handler.fill(resource, action); - } - - @NotNull - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].drain(resource, action); - } - return handler.drain(resource, action); - } - - @Override - public @NotNull FluidStack drain(int maxDrain, FluidAction action) { - if (handler instanceof NotifiableFluidTank notifiable) { - return notifiable.getStorages()[this.tank].drain(maxDrain, action); - } - return handler.drain(maxDrain, action); - } -} From dc5e21393fdb038696d5b40c4f592b53b36c5a89 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Wed, 2 Jul 2025 20:47:30 +0300 Subject: [PATCH 090/270] fix my Mistake in checking what a client thread is. (#3306) --- src/main/java/com/gregtechceu/gtceu/GTCEu.java | 8 +++++--- .../worldgen/generator/veins/VeinedVeinGenerator.java | 3 +-- .../gregtechceu/gtceu/forge/ForgeCommonEventListener.java | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index bba3525cc2d..749f92e9389 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -15,7 +15,6 @@ import net.minecraftforge.fml.loading.FMLEnvironment; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.loading.FMLPaths; -import net.minecraftforge.fml.util.thread.EffectiveSide; import net.minecraftforge.server.ServerLifecycleHooks; import dev.emi.emi.config.EmiConfig; @@ -117,11 +116,14 @@ public static boolean isModLoaded(String modId) { * @return if the current thread is the client thread */ public static boolean isClientThread() { - return isClientSide() && EffectiveSide.get().isClient(); + return isClientSide() && Minecraft.getInstance().isSameThread(); } /** - * @return if the FML environment is a client + * @return if the game is the PHYSICAL client, e.g. not a dedicated server. + * @apiNote Do not use this to check if you're currently on the server thread for side-specific actions! + * It does NOT work for that. Use {@link #isClientThread()} instead. + * @see #isClientThread() */ public static boolean isClientSide() { return FMLEnvironment.dist.isClient(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java index 0db230c1201..efcded6a955 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTFeatures; import com.gregtechceu.gtceu.utils.GTUtil; import com.gregtechceu.gtceu.utils.WeightedEntry; @@ -117,7 +116,7 @@ public Map generate(WorldGenLevel level, RandomSource BlockPos origin) { Map generatedBlocks = new Object2ObjectOpenHashMap<>(); - Registry densityFunctions = GTRegistries.builtinRegistry() + Registry densityFunctions = level.registryAccess() .registry(Registries.DENSITY_FUNCTION).get(); RandomState randomState = level.getLevel().getChunkSource().randomState(); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index ed0870f3449..0e987fa81e3 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -250,10 +250,11 @@ public static void registerCommand(RegisterCommandsEvent event) { @SubscribeEvent public static void registerReloadListeners(AddReloadListenerEvent event) { + GTRegistries.updateFrozenRegistry(event.getRegistryAccess()); + event.addListener(new GTOreLoader()); event.addListener(new BedrockFluidLoader()); event.addListener(new BedrockOreLoader()); - GTRegistries.updateFrozenRegistry(event.getRegistryAccess()); } @SubscribeEvent From d2370198fba040e94f56cc57d17fd0f11b8739e2 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 3 Jul 2025 03:11:09 -0600 Subject: [PATCH 091/270] Fix Capability Max Log Spam (#3308) --- .../gtceu/data/recipe/builder/GTRecipeBuilder.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index b098020c085..21c1a9d7027 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -1472,7 +1472,10 @@ protected void warnTooManyIngredients(RecipeCapability capability, boolean isInput, Map, List> table, int addedEntries) { - int max = isInput ? recipeType.getMaxInputs(capability) : recipeType.getMaxOutputs(capability); + var recipeCapabilityMax = isInput ? recipeType.maxInputs : recipeType.maxOutputs; + if (!recipeCapabilityMax.containsKey(capability)) return; + + int max = recipeCapabilityMax.getInt(capability); if (table.getOrDefault(capability, List.of()).size() + addedEntries > max) { String io = isInput ? "inputs" : "outputs"; GTCEu.LOGGER.warn("Recipe {} is trying to add more {} than its recipe type can support, Max {} {}: {}", From 045154384396cf3894e4499dc2d097ebebe9a723 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 3 Jul 2025 03:11:27 -0600 Subject: [PATCH 092/270] Fix Creative Energy Container not having an outline (#3309) --- .../machine/storage/CreativeEnergyContainerMachine.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java index 7f16e0bcee8..bbf26fda39f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CreativeEnergyContainerMachine.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.TieredMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.utils.GTUtil; @@ -32,7 +33,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class CreativeEnergyContainerMachine extends MetaMachine implements ILaserContainer, IUIMachine { +public class CreativeEnergyContainerMachine extends TieredMachine implements ILaserContainer, IUIMachine { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( CreativeEnergyContainerMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); @@ -54,7 +55,7 @@ public class CreativeEnergyContainerMachine extends MetaMachine implements ILase private boolean doExplosion = false; public CreativeEnergyContainerMachine(IMachineBlockEntity holder) { - super(holder); + super(holder, GTValues.MAX); } ////////////////////////////////////// From 0bdcbc4daae642bc15c2ba3b7dbaa2d5f54a87b8 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 4 Jul 2025 11:01:51 +0300 Subject: [PATCH 093/270] fix ranged outputs part 4: my bad. (#3314) --- .../gtceu/data/recipe/builder/GTRecipeBuilder.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 21c1a9d7027..3fb1c669690 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -575,6 +575,10 @@ public GTRecipeBuilder outputItems(MachineDefinition machine, int count) { return outputItems(machine.asStack(count)); } + protected GTRecipeBuilder outputItems(Ingredient ingredient) { + return output(ItemRecipeCapability.CAP, ingredient); + } + public GTRecipeBuilder outputItemsRanged(ItemStack output, IntProvider intProvider) { return outputItems(IntProviderIngredient.of(output, intProvider)); } From 143a09155236fb5c0c5ef2870840eab4d6c1ed2e Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 4 Jul 2025 14:51:34 +0300 Subject: [PATCH 094/270] fix fluid outputs after #3273 (#3315) --- .../gtceu/api/machine/trait/NotifiableFluidTank.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 0d21b5a7350..f7a61dce97b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -179,12 +179,13 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List Date: Fri, 4 Jul 2025 14:53:36 +0300 Subject: [PATCH 095/270] fix per-tick CWU outputs being handled as negative values (#3311) --- .../gtceu/data/recipe/builder/GTRecipeBuilder.java | 2 +- .../gtceu/integration/kjs/GregTechKubeJSPlugin.java | 2 ++ .../gtceu/integration/kjs/recipe/GTRecipeSchema.java | 2 +- .../integration/kjs/recipe/components/GTRecipeComponents.java | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 3fb1c669690..45b0a947d2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -255,7 +255,7 @@ public GTRecipeBuilder CWUt(int cwu) { inputCWU(cwu); } else if (cwu < 0) { tickOutput.remove(CWURecipeCapability.CAP); - outputCWU(cwu); + outputCWU(-cwu); } perTick = lastPerTick; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 5373bab3535..33db14e3191 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -243,6 +243,8 @@ public void registerRecipeComponents(RecipeComponentFactoryRegistryEvent event) event.register("gtFluidOut", GTRecipeComponents.FLUID_OUT); event.register("gtEuIn", GTRecipeComponents.EU_IN); event.register("gtEuOut", GTRecipeComponents.EU_OUT); + event.register("gtCwuIn", GTRecipeComponents.CWU_IN); + event.register("gtCwuOut", GTRecipeComponents.CWU_OUT); event.register("gtChance", GTRecipeComponents.CHANCE_LOGIC_MAP); event.register("extendedOutputItem", GTRecipeComponents.EXTENDED_OUTPUT); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index 3ec1ac09399..f33d1f40b48 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -210,7 +210,7 @@ public GTRecipeJS CWUt(int cwu) { if (cwu > 0) { inputCWU(cwu); } else if (cwu < 0) { - outputCWU(cwu); + outputCWU(-cwu); } perTick = lastPerTick; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 7029d3f0852..de027a533d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -355,9 +355,9 @@ public String toString() { false); public static final ContentJS EU_OUT = new ContentJS<>(NumberComponent.ANY_LONG, GTRecipeCapabilities.EU, true); - public static final ContentJS CWU_IN = new ContentJS<>(NumberComponent.ANY_INT, GTRecipeCapabilities.CWU, + public static final ContentJS CWU_IN = new ContentJS<>(NumberComponent.INT, GTRecipeCapabilities.CWU, false); - public static final ContentJS CWU_OUT = new ContentJS<>(NumberComponent.ANY_INT, GTRecipeCapabilities.CWU, + public static final ContentJS CWU_OUT = new ContentJS<>(NumberComponent.INT, GTRecipeCapabilities.CWU, true); public static final CapabilityMapComponent IN = new CapabilityMapComponent(false); From 2f43a6f1f3ba4456231d79de9659c592585d123a Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Fri, 4 Jul 2025 13:53:56 +0200 Subject: [PATCH 096/270] Add color based input seperation (#3237) Co-authored-by: Spicierspace153 --- .../recipe/ItemRecipeCapability.java | 65 +++++++++++-------- .../gtceu/api/machine/MetaMachine.java | 8 ++- .../part/MultiblockPartMachine.java | 2 +- .../api/machine/trait/RecipeHandlerGroup.java | 10 +++ .../trait/RecipeHandlerGroupColor.java | 7 ++ .../trait/RecipeHandlerGroupDistinctness.java | 5 ++ .../api/machine/trait/RecipeHandlerList.java | 49 ++++++++++++-- .../gtceu/api/recipe/RecipeHelper.java | 22 +++++++ .../gtceu/api/recipe/RecipeRunner.java | 53 ++++++++++----- .../part/FluidHatchPartMachine.java | 5 ++ .../multiblock/part/ItemBusPartMachine.java | 6 ++ 11 files changed, 180 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 81e8d357c34..dabd2f3f601 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -1,6 +1,8 @@ package com.gregtechceu.gtceu.api.capability.recipe; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; @@ -53,6 +55,8 @@ import java.util.function.UnaryOperator; import java.util.stream.Collectors; +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; + public class ItemRecipeCapability extends RecipeCapability { public final static ItemRecipeCapability CAP = new ItemRecipeCapability(); @@ -294,47 +298,52 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe private static List> getInputContents(IRecipeCapabilityHolder holder) { var handlerLists = holder.getCapabilitiesForIO(IO.IN); if (handlerLists.isEmpty()) return Collections.emptyList(); - List distinct = new ArrayList<>(); - List> indistinct = new ArrayList<>(); - - for (var handlerList : handlerLists) { - if (handlerList.isDistinct() && handlerList.hasCapability(ItemRecipeCapability.CAP)) { - distinct.add(handlerList); - } else if (handlerList.hasCapability(ItemRecipeCapability.CAP)) { - indistinct.addAll(handlerList.getCapability(ItemRecipeCapability.CAP)); - } + + Map> handlerGroups = new HashMap<>(); + for (var handler : handlerLists) { + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } final var strat = ItemStackHashStrategy.comparingAllButCount(); - List> invs = new ArrayList<>(distinct.size() + 1); - Object2IntOpenCustomHashMap combined = new Object2IntOpenCustomHashMap<>(strat); - for (var handler : indistinct) { - if (!handler.shouldSearchContent()) continue; - for (var content : handler.getContents()) { - if (content instanceof ItemStack stack && !stack.isEmpty()) { - combined.addTo(stack, stack.getCount()); - } - } - } - - for (var handlerList : distinct) { + List distinctHandlerLists = handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BUS_DISTINCT, + Collections.emptyList()); + List> invs = new ArrayList<>(distinctHandlerLists.size() + 1); + // Handle distinct groups first, adding an inventory based on their contents individually. + for (RecipeHandlerList handlerList : distinctHandlerLists) { var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); - // Clone has the desired effect here - it will shallow copy the keys, which we don't change and deep copy - // the values, as they are primitives. - var inventory = combined.clone(); - for (var handler : handlers) { + for (IRecipeHandler handler : handlers) { + Object2IntOpenCustomHashMap distinctInv = new Object2IntOpenCustomHashMap<>(strat); if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { - inventory.addTo(stack, stack.getCount()); + distinctInv.addTo(stack, stack.getCount()); + } + } + if (!distinctInv.isEmpty()) invs.add(distinctInv); + } + } + + // Then handle other groups. The logic of undyed busses belonging to + // everything has already been taken care of by addToRecipeMap() + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { + var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); + Object2IntOpenCustomHashMap inventory = new Object2IntOpenCustomHashMap<>(strat); + for (var handler : handlers) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof ItemStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getCount()); + } } } + if (!inventory.isEmpty()) invs.add(inventory); } - if (!inventory.isEmpty()) invs.add(inventory); } - if (!combined.isEmpty()) invs.add(combined); return invs; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index ec3d41d3a37..25f36842dfa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -107,7 +107,6 @@ public class MetaMachine implements IEnhancedManaged, IToolable, ITickSubscripti @Persisted(key = "cover") protected final MachineCoverContainer coverContainer; @Getter - @Setter @Persisted @DescSynced @RequireRerender @@ -180,6 +179,13 @@ public void scheduleNeighborShapeUpdate() { level.getBlockState(pos).updateNeighbourShapes(level, pos, Block.UPDATE_ALL); } + public void setPaintingColor(int color) { + this.paintingColor = color; + this.onPaintingColorChanged(color); + } + + public void onPaintingColorChanged(int color) {} + public long getOffsetTimer() { return holder.getOffsetTimer(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index 9e24b5fdb54..a5ae7508924 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -108,7 +108,7 @@ protected RecipeHandlerList getHandlerList() { if (handlers.isEmpty()) { handlerList = RecipeHandlerList.NO_DATA; } else { - handlerList = RecipeHandlerList.of(handlerIO, handlers); + handlerList = RecipeHandlerList.of(handlerIO, getPaintingColor(), handlers); } } return handlerList; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java new file mode 100644 index 00000000000..256246aa8ea --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroup.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public interface RecipeHandlerGroup { + + @Override + boolean equals(Object o); + + @Override + int hashCode(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java new file mode 100644 index 00000000000..99314feb0c8 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupColor.java @@ -0,0 +1,7 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public record RecipeHandlerGroupColor(int color) implements RecipeHandlerGroup { + + // Note: An un-dyed hatch is the same as an "indistinct" hatch. + public static final RecipeHandlerGroup UNDYED = new RecipeHandlerGroupColor(-1); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java new file mode 100644 index 00000000000..dd0b529a35b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java @@ -0,0 +1,5 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +public enum RecipeHandlerGroupDistinctness implements RecipeHandlerGroup { + BUS_DISTINCT +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java index f0a9099c03f..031c49fa58e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java @@ -9,6 +9,7 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import lombok.Getter; +import lombok.Setter; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -34,12 +35,23 @@ public class RecipeHandlerList { @Getter private final IO handlerIO; @Getter - private boolean isDistinct = false; + private int color = -1; + + @Setter + @Getter + private RecipeHandlerGroup group = null; protected RecipeHandlerList(IO handlerIO) { this.handlerIO = handlerIO; } + public static RecipeHandlerList of(IO io, int color, IRecipeHandler... handlers) { + RecipeHandlerList rhl = new RecipeHandlerList(io); + rhl.addHandlers(handlers); + rhl.setColor(color); + return rhl; + } + public static RecipeHandlerList of(IO io, IRecipeHandler... handlers) { RecipeHandlerList rhl = new RecipeHandlerList(io); rhl.addHandlers(handlers); @@ -52,6 +64,13 @@ public static RecipeHandlerList of(IO io, Iterable> handlers) return rhl; } + public static RecipeHandlerList of(IO io, int color, Iterable> handlers) { + RecipeHandlerList rhl = new RecipeHandlerList(io); + rhl.addHandlers(handlers); + rhl.setColor(color); + return rhl; + } + public void addHandler(IRecipeHandler handler) { addHandlers(List.of(handler)); } @@ -84,15 +103,37 @@ public final void setDistinct(boolean distinct) { } protected void setDistinct(boolean distinct, boolean notify) { - if (isDistinct != distinct) { - isDistinct = distinct; + boolean currentDistinct = isDistinct(); + if (currentDistinct != distinct) { + this.group = currentDistinct ? new RecipeHandlerGroupColor(color) : + RecipeHandlerGroupDistinctness.BUS_DISTINCT; for (var rht : allHandlerTraits) { - rht.setDistinct(isDistinct); + rht.setDistinct(distinct); if (notify) rht.notifyListeners(); } } } + public boolean isDistinct() { + return this.group == RecipeHandlerGroupDistinctness.BUS_DISTINCT; + } + + public void setColor(int color) { + setColor(color, false); + } + + public void setColor(int color, boolean notify) { + this.color = color; + if (this.group != RecipeHandlerGroupDistinctness.BUS_DISTINCT) { + this.group = new RecipeHandlerGroupColor(color); + } + if (notify) { + for (var rht : allHandlerTraits) { + rht.notifyListeners(); + } + } + } + public boolean hasCapability(RecipeCapability cap) { return getHandlerMap().containsKey(cap); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index d20f9333aa3..add53d9af62 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -2,6 +2,10 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.recipe.*; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupColor; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.recipe.content.Content; @@ -325,4 +329,22 @@ public static Map, List> doTrim(Map> map) { + // Add undyed RHL's to every group that's not distinct, and also the undyed group itself. + if (key.equals(RecipeHandlerGroupColor.UNDYED)) { + for (var entry : map.entrySet()) { + if (entry.getKey().equals(RecipeHandlerGroupDistinctness.BUS_DISTINCT) || + entry.getKey().equals(RecipeHandlerGroupColor.UNDYED)) { + continue; + } + entry.getValue().add(handler); + } + } + // Add other RHL's to their own group, or create it (using the undyed group as base) if it does not exist. + List undyed = map.getOrDefault(RecipeHandlerGroupColor.UNDYED, Collections.emptyList()); + + map.computeIfAbsent(key, $ -> new ArrayList<>(undyed)).add(handler); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 4b4bdb20749..71bb9477669 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -3,6 +3,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; @@ -14,9 +16,13 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; + class RecipeRunner { record RecipeHandlingResult(ActionResult result, @Nullable RecipeCapability capability) { @@ -123,15 +129,14 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { if (!isTick && capIO == IO.OUT) { handlers.sort(RecipeHandlerList.COMPARATOR.reversed()); } - List distinct = new ArrayList<>(); - List indistinct = new ArrayList<>(); + + Map> handlerGroups = new HashMap<>(); for (var handler : handlers) { - if (handler.isDistinct()) distinct.add(handler); - else indistinct.add(handler); + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } - - // handle distinct first - for (var handler : distinct) { + // Specifically check distinct handlers first + for (RecipeHandlerList handler : handlerGroups.getOrDefault(RecipeHandlerGroupDistinctness.BUS_DISTINCT, + Collections.emptyList())) { var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); if (res.isEmpty()) { if (!simulated) { @@ -142,18 +147,30 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { } } - for (var handler : indistinct) { - recipeContents = handler.handleRecipe(io, recipe, recipeContents, simulated); - if (recipeContents.isEmpty()) { - return RecipeHandlingResult.SUCCESS; + // Check the others + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + // List to keep track of the remaining items for this RecipeHandlerGroup + Map, List> copiedRecipeContents = new Reference2ObjectOpenHashMap<>( + searchRecipeContents); + boolean found = false; + for (RecipeHandlerList handler : handlerListEntry.getValue()) { + copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, true); + if (copiedRecipeContents.isEmpty()) { + found = true; + break; + } } - } - - for (var handler : distinct) { - var res = handler.handleRecipe(io, recipe, recipeContents, simulated); - if (res.isEmpty()) { - recipeContents.clear(); - return RecipeHandlingResult.SUCCESS; + if (!found) continue; + if (simulated) return RecipeHandlingResult.SUCCESS; + // Start actually removing items, keep track of the remaining items for this RecipeHandlerGroup + copiedRecipeContents = new Reference2ObjectOpenHashMap<>(searchRecipeContents); + for (RecipeHandlerList handler : handlerListEntry.getValue()) { + copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, false); + if (copiedRecipeContents.isEmpty()) { + recipeContents.clear(); + return RecipeHandlingResult.SUCCESS; + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index af44e768cf3..c9fda6dc0de 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -140,6 +140,11 @@ public void onUnload() { } } + @Override + public void onPaintingColorChanged(int color) { + getHandlerList().setColor(color, true); + } + @Override public void addedToController(IMultiController controller) { if (!controller.allowCircuitSlots()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index a793eab1d81..8d4de23a766 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -128,6 +128,7 @@ public void onLoad() { serverLevel.getServer().tell(new TickTask(0, this::updateInventorySubscription)); } getHandlerList().setDistinct(isDistinct); + getHandlerList().setColor(getPaintingColor()); inventorySubs = getInventory().addChangedListener(this::updateInventorySubscription); } @@ -140,6 +141,11 @@ public void onUnload() { } } + @Override + public void onPaintingColorChanged(int color) { + getHandlerList().setColor(color, true); + } + @Override public void setDistinct(boolean distinct) { isDistinct = (io != IO.OUT && distinct); From 5db1ef8c187d23235593f82ee6ecebb244526d96 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Fri, 4 Jul 2025 05:55:05 -0600 Subject: [PATCH 097/270] Add Visual Overlay for Colored Hatches (#3313) --- .../machine/OverlayTieredMachineRenderer.java | 8 ++++- .../common/item/ColorSprayBehaviour.java | 4 +-- .../part/FluidHatchPartMachine.java | 10 +++++- .../multiblock/part/ItemBusPartMachine.java | 11 ++++++- .../jade/provider/StainedColorProvider.java | 4 +-- .../top/provider/StainedColorProvider.java | 4 +-- .../machine/part/fluid_hatch.export.json | 2 +- .../machine/part/fluid_hatch.export_4x.json | 2 +- .../machine/part/fluid_hatch.export_9x.json | 2 +- .../machine/part/fluid_hatch.import.json | 2 +- .../machine/part/fluid_hatch.import_4x.json | 2 +- .../machine/part/fluid_hatch.import_9x.json | 2 +- .../block/machine/part/item_bus.export.json | 2 +- .../block/machine/part/item_bus.import.json | 2 +- .../machine/part/me_fluid_hatch.export.json | 16 ++-------- .../machine/part/me_fluid_hatch.import.json | 16 ++-------- .../machine/part/me_item_bus.export.json | 16 ++-------- .../machine/part/me_item_bus.import.json | 16 ++-------- .../gtceu/models/block/overlay/front.json | 4 +-- .../block/overlay/front_color_ring.json | 22 +++++++++++++ .../models/block/overlay/front_emissive.json | 8 ++--- .../overlay/front_emissive_color_ring.json | 29 ++++++++++++++++++ .../block/overlay/machine/overlay_color.png | Bin 0 -> 219 bytes 23 files changed, 107 insertions(+), 77 deletions(-) create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java index f2dd91eba7d..6ef3fb3b37a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java @@ -37,7 +37,13 @@ public void renderMachine(List quads, MachineDefinition definition, @ super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); // expand the overlay quads ever so slightly to combat z-fighting. overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); + .forEach(quad -> { + // skip the color overlay on unpainted hatches + if (quad.getTintIndex() == 9 && (machine == null || machine.getPaintingColor() == -1)) { + return; + } + quads.add(Quad.from(quad, overlayQuadsOffset()).rebake()); + }); } public float overlayQuadsOffset() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index 4485b23a8fb..6be680eb7f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -214,8 +214,8 @@ private static boolean paintPaintable(IPaintable paintable, DyeColor color) { return false; } paintable.setPaintingColor(-1); - } else if (paintable.getPaintingColor() != color.getTextColor()) { - paintable.setPaintingColor(color.getTextColor()); + } else if (paintable.getPaintingColor() != color.getMapColor().col) { + paintable.setPaintingColor(color.getMapColor().col); } else { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index c9fda6dc0de..5297383f8d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; @@ -54,7 +55,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot { +public class FluidHatchPartMachine extends TieredIOPartMachine implements IMachineLife, IHasCircuitSlot, IPaintable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(FluidHatchPartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); @@ -169,6 +170,12 @@ public void removedFromController(IMultiController controller) { setCircuitSlotEnabled(true); } + @Override + public int tintColor(int index) { + if (index == 9) return getRealColor(); + return -1; + } + ////////////////////////////////////// // ******** Auto IO *********// ////////////////////////////////////// @@ -255,6 +262,7 @@ public boolean swapIO() { if (newHolder.getMetaMachine() instanceof FluidHatchPartMachine newMachine) { newMachine.setFrontFacing(this.getFrontFacing()); newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); for (int i = 0; i < this.tank.getTanks(); i++) { newMachine.tank.setFluidInTank(i, this.tank.getFluidInTank(i)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 8d4de23a766..8bb9992f24a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; @@ -51,7 +52,8 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ItemBusPartMachine extends TieredIOPartMachine implements IDistinctPart, IMachineLife, IHasCircuitSlot { +public class ItemBusPartMachine extends TieredIOPartMachine + implements IDistinctPart, IMachineLife, IHasCircuitSlot, IPaintable { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ItemBusPartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); @@ -177,6 +179,12 @@ public void removedFromController(IMultiController controller) { setCircuitSlotEnabled(true); } + @Override + public int tintColor(int index) { + if (index == 9) return getRealColor(); + return -1; + } + @Override public void loadCustomPersistedData(@NotNull CompoundTag tag) { super.loadCustomPersistedData(tag); @@ -275,6 +283,7 @@ public boolean swapIO() { // and conveyors will drop to the floor on block override. newMachine.setFrontFacing(this.getFrontFacing()); newMachine.setUpwardsFacing(this.getUpwardsFacing()); + newMachine.setPaintingColor(this.getPaintingColor()); } } return true; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java index f1954da8282..ec2a929839a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java @@ -16,8 +16,6 @@ import snownee.jade.api.ITooltip; import snownee.jade.api.config.IPluginConfig; -import java.util.Locale; - public class StainedColorProvider implements IBlockComponentProvider, IServerDataProvider { @Override @@ -27,7 +25,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi if (paintingColor != -1) { iTooltip.add(Component .translatable("gtceu.top.stained", - "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT)) + String.format("#%06X", paintingColor)) .withStyle(Style.EMPTY.withColor(paintingColor))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java index 0ed59e7c605..217cf4beb0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -17,8 +17,6 @@ import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; -import java.util.Locale; - public class StainedColorProvider implements IProbeInfoProvider { @Override @@ -40,7 +38,7 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play IProbeInfo horizontal = iProbeInfo .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); horizontal.mcText(Component.translatable("gtceu.top.stained", - "#" + Integer.toHexString(paintingColor).toUpperCase(Locale.ROOT))); + String.format("#%06X", paintingColor))); } } } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json index 37188edccb4..53507ef4b10 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json index e911846d6e6..92a6b63a49f 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json index 84f44e6c892..28b20c7cbee 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json index 7e144fc3f39..cd286dfd57a 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json index 6c4ae2e0e5b..80c3549785c 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json index d8d6f405a6d..15d270fed85 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json index 242d015714a..35252549e1c 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json index 5655760e9ba..e06efaaf638 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/overlay/front_emissive", + "parent": "gtceu:block/overlay/front_emissive_color_ring", "textures": { "particle": "gtceu:block/overlay/machine/overlay_hatch", "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json index fe4b978fcc5..be6ccc04202 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json @@ -1,17 +1,7 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/overlay/front_color_ring", "textures": { "particle": "#overlay_fluid_hatch", - "overlay_fluid_hatch": "gtceu:block/overlay/appeng/me_output_hatch" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] + "overlay": "gtceu:block/overlay/appeng/me_output_hatch" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json index 8c2ae2e7862..f3e22bd0611 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json @@ -1,17 +1,7 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/overlay/front_color_ring", "textures": { "particle": "#overlay_fluid_hatch", - "overlay_fluid_hatch": "gtceu:block/overlay/appeng/me_input_hatch" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] + "overlay": "gtceu:block/overlay/appeng/me_input_hatch" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json index a9d17c398bf..fb04629c0c6 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json @@ -1,17 +1,7 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/overlay/front_color_ring", "textures": { "particle": "#overlay_item_hatch", - "overlay_item_hatch": "gtceu:block/overlay/appeng/me_output_bus" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] + "overlay": "gtceu:block/overlay/appeng/me_output_bus" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json index fa2ae2bd4f8..26a4541c404 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json @@ -1,17 +1,7 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/overlay/front_color_ring", "textures": { "particle": "#overlay_item_hatch", - "overlay_item_hatch": "gtceu:block/overlay/appeng/me_input_bus" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - } - ] + "overlay": "gtceu:block/overlay/appeng/me_input_bus" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index 6403eecf85f..c614fd680bd 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -3,8 +3,8 @@ "parent": "block/block", "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [16.001, 16.001, 0], + "from": [-0.002, -0.002, -0.002], + "to": [16.002, 16.002, -0.002], "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json new file mode 100644 index 00000000000..cde11c491df --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -0,0 +1,22 @@ +{ + "parent": "overlay/front", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [-0.002, -0.002, -0.002], + "to": [16.002, 16.002, -0.002], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9, "emissivity": 15 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index e09f2d78bcf..7935c156784 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -3,15 +3,15 @@ "parent": "block/block", "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], + "from": [-0.002, -0.002, -0.002], + "to": [16.002, 16.002, -0.002], "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} } }, { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], + "from": [-0.004, -0.004, -0.004], + "to": [16.004, 16.004, -0.004], "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101, "emissivity": 15} } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json new file mode 100644 index 00000000000..7707d32b8ab --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -0,0 +1,29 @@ +{ + "parent": "gtceu:block/overlay/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101, "emissivity": 15 } + } + }, + { + "from": [ -0.006, -0.006, -0.006 ], + "to": [ 16.006, 16.006, -0.006 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9, "emissivity": 15 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_color.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6ce1e2d93ad2cd1a6a5fc1796a7e3dfd5fd7ff GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!2(Yg#}EtuyZv{$8Web1`zxRR-oHxxQNEQ} z#-=a26>G!-=?ZEmJ)yc(ar3aGP#hz@!bN%>A^Ot8M}ZwcyBR!P L{an^LB{Ts5BLz<< literal 0 HcmV?d00001 From 4a8b1c96597d5e0f5da4088f7fc1c9d4d4470e67 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Fri, 4 Jul 2025 13:55:22 +0200 Subject: [PATCH 098/270] Use Super and Quantum Tanks as cells (#3305) Co-authored-by: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> --- .../api/item/QuantumTankMachineItem.java | 27 +++ .../forge/QuantumFluidHandlerItemStack.java | 166 ++++++++++++++++++ .../renderer/machine/QuantumTankRenderer.java | 7 +- .../gtceu/common/data/GTMachines.java | 79 +-------- .../common/data/machines/GTMachineUtils.java | 61 +++++++ .../machine/storage/QuantumTankMachine.java | 10 +- 6 files changed, 269 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java new file mode 100644 index 00000000000..6cf503048a3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.api.item; + +import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.misc.forge.QuantumFluidHandlerItemStack; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.ICapabilityProvider; + +import org.jetbrains.annotations.Nullable; + +public class QuantumTankMachineItem extends MetaMachineItem { + + public QuantumTankMachineItem(IMachineBlock block, Properties properties) { + super(block, properties); + } + + public static QuantumTankMachineItem create(IMachineBlock block, Properties properties) { + return new QuantumTankMachineItem(block, properties); + } + + @Override + public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { + return new QuantumFluidHandlerItemStack(stack, QuantumTankMachine.TANK_CAPACITY.getLong(getDefinition())); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java new file mode 100644 index 00000000000..f201f62ac5b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/forge/QuantumFluidHandlerItemStack.java @@ -0,0 +1,166 @@ +package com.gregtechceu.gtceu.api.misc.forge; + +import com.gregtechceu.gtceu.utils.GTMath; + +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandlerItem; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class QuantumFluidHandlerItemStack implements IFluidHandlerItem, ICapabilityProvider { + + private final LazyOptional holder = LazyOptional.of(() -> this); + @Getter + protected @NotNull ItemStack container; + protected long capacity; + + public QuantumFluidHandlerItemStack(@NotNull ItemStack container, long capacity) { + this.container = container; + this.capacity = capacity; + } + + // Retrieve the capacity clamped to an int. + protected int getClampedCapacity() { + return GTMath.saturatedCast(this.capacity); + } + + // For Fluid IO, clamping to int is fine. + // For internal structures, make sure to use getFluidAmount() alongside this. + public @NotNull FluidStack getFluid() { + CompoundTag tagCompound = this.container.getTag(); + if (tagCompound == null || !tagCompound.contains("stored") || !tagCompound.contains("storedAmount")) { + return FluidStack.EMPTY; + } + FluidStack stack = FluidStack.loadFluidStackFromNBT(tagCompound.getCompound("stored")); + stack.setAmount(GTMath.saturatedCast(tagCompound.getLong("storedAmount"))); + return stack; + } + + public long getFluidAmount() { + CompoundTag tagCompound = this.container.getTag(); + if (tagCompound == null || !tagCompound.contains("storedAmount")) return 0; + return tagCompound.getLong("storedAmount"); + } + + private void setFluid(FluidStack fluid, long amount) { + fluid.setAmount(GTMath.saturatedCast(amount)); + + CompoundTag fluidTag = new CompoundTag(); + fluid.writeToNBT(fluidTag); + + CompoundTag containerTag = this.container.getOrCreateTag(); + containerTag.put("stored", fluidTag); + containerTag.putLong("storedAmount", amount); + } + + @Override + public int getTanks() { + return 1; + } + + @Override + public @NotNull FluidStack getFluidInTank(int tank) { + return this.getFluid(); + } + + @Override + public int getTankCapacity(int tank) { + return getClampedCapacity(); + } + + @Override + public boolean isFluidValid(int tank, @NotNull FluidStack stack) { + return true; + } + + @Override + public int fill(FluidStack resource, IFluidHandler.FluidAction doFill) { + if (this.container.getCount() != 1 || resource.isEmpty() || !this.canFillFluidType(resource)) { + return 0; + } + FluidStack contained = this.getFluid(); + long amount = this.getFluidAmount(); + if (contained.isEmpty()) { + int fillAmount = Math.min(getClampedCapacity(), resource.getAmount()); + if (doFill.execute()) { + FluidStack filled = resource.copy(); + this.setFluid(filled, fillAmount); + } + + return fillAmount; + } else if (contained.isFluidEqual(resource)) { + + int fillAmount = Math.min(GTMath.saturatedCast(this.capacity - amount), resource.getAmount()); + if (doFill.execute() && fillAmount > 0) { + long fluidAmountAfterFill = amount + (long) fillAmount; + this.setFluid(contained, fluidAmountAfterFill); + } + + return fillAmount; + } else { + return 0; + } + } + + @Override + public @NotNull FluidStack drain(FluidStack resource, IFluidHandler.FluidAction action) { + return this.container.getCount() == 1 && !resource.isEmpty() && resource.isFluidEqual(this.getFluid()) ? + this.drain(resource.getAmount(), action) : FluidStack.EMPTY; + } + + @Override + public @NotNull FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) { + if (this.container.getCount() != 1 || maxDrain <= 0) { + return FluidStack.EMPTY; + } + FluidStack contained = this.getFluid(); + long fluidAmount = this.getFluidAmount(); + if (fluidAmount <= 0 || !this.canDrainFluidType(contained)) { + return FluidStack.EMPTY; + } + + // Can drain at most Integer.MAX_VALUE + int drainAmount = GTMath.saturatedCast(Math.min(fluidAmount, maxDrain)); + FluidStack drained = contained.copy(); + drained.setAmount(drainAmount); + if (action.execute()) { + long fluidAfterDrain = fluidAmount - (long) drainAmount; + contained.setAmount(GTMath.saturatedCast(fluidAfterDrain)); + if (contained.isEmpty()) { + this.setContainerToEmpty(); + } else { + this.setFluid(contained, fluidAfterDrain); + } + } + + return drained; + } + + public boolean canFillFluidType(FluidStack fluid) { + return true; + } + + public boolean canDrainFluidType(FluidStack fluid) { + return true; + } + + protected void setContainerToEmpty() { + this.container.removeTagKey("stored"); + this.container.removeTagKey("storedAmount"); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + return ForgeCapabilities.FLUID_HANDLER_ITEM.orEmpty(capability, this.holder); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java index b0105f62b3b..a7db7ed1f28 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.client.renderer.machine; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.item.QuantumTankMachineItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -43,6 +44,7 @@ import java.util.List; +import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; public class QuantumTankRenderer extends TieredHullMachineRenderer { @@ -86,7 +88,10 @@ public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolea FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); - long maxAmount = stack.getOrCreateTag().getLong("maxAmount"); + long maxAmount = 0; + if (stack.getItem() instanceof QuantumTankMachineItem tankItem) { + maxAmount = TANK_CAPACITY.getLong(tankItem.getDefinition()); + } // Don't need to handle locked fluids here since they don't get saved to the item renderTank(poseStack, buffer, Direction.NORTH, stored, storedAmount, maxAmount, FluidStack.EMPTY, stack.is(CREATIVE_FLUID_ITEM)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 835490172ae..580db3e5077 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -34,7 +34,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; import net.minecraftforge.fml.ModLoader; @@ -540,81 +539,11 @@ public class GTMachines { .hasTESR(true) .register(); - public static BiConsumer> CHEST_TOOLTIPS = (stack, list) -> { - if (stack.hasTag()) { - ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - list.add(1, Component.translatable("gtceu.universal.tooltip.item_stored", itemStack.getHoverName(), - FormattingUtil.formatNumbers(storedAmount))); - } - }; - - public static final MachineDefinition[] SUPER_CHEST = registerTieredMachines("super_chest", - (holder, tier) -> new QuantumChestMachine(holder, tier, 4_000_000 * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Super Chest " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumChestRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(CHEST_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), - Component.translatable("gtceu.universal.tooltip.item_storage_total", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - LOW_TIERS); - - public static final MachineDefinition[] QUANTUM_CHEST = registerTieredMachines("quantum_chest", - (holder, tier) -> new QuantumChestMachine(holder, tier, - tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Quantum Chest " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumChestRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(CHEST_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), - Component.translatable("gtceu.universal.tooltip.item_storage_total", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - HIGH_TIERS); + public static final MachineDefinition[] SUPER_CHEST = registerSuperChests("super_chest", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_CHEST = registerSuperChests("quantum_chest", HIGH_TIERS); - public static final MachineDefinition[] SUPER_TANK = registerTieredMachines("super_tank", - (holder, tier) -> new QuantumTankMachine(holder, tier, - 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Super Tank " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(TANK_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - LOW_TIERS); - - public static final MachineDefinition[] QUANTUM_TANK = registerTieredMachines("quantum_tank", - (holder, tier) -> new QuantumTankMachine(holder, tier, - 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder - .langValue("Quantum Tank " + LVT[tier]) - .blockProp(BlockBehaviour.Properties::dynamicShape) - .rotationState(RotationState.ALL) - .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) - .tooltipBuilder(TANK_TOOLTIPS) - .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", - FormattingUtil.formatNumbers(4_000_000 * (long) Math.pow(2, tier - 1)))) - .register(), - HIGH_TIERS); + public static final MachineDefinition[] SUPER_TANK = registerSuperTanks("super_tank", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_TANK = registerSuperTanks("quantum_tank", HIGH_TIERS); public static MachineDefinition WOODEN_CRATE = registerCrate(GTMaterials.Wood, 27, "Wooden Crate"); public static MachineDefinition BRONZE_CRATE = registerCrate(GTMaterials.Bronze, 54, "Bronze Crate"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 5013700ff5f..91ab4e32a44 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -17,6 +17,7 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.fluids.PropertyFluidFilter; import com.gregtechceu.gtceu.api.item.DrumMachineItem; +import com.gregtechceu.gtceu.api.item.QuantumTankMachineItem; import com.gregtechceu.gtceu.api.machine.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; @@ -46,6 +47,8 @@ import com.gregtechceu.gtceu.common.machine.multiblock.steam.LargeBoilerMachine; import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; import com.gregtechceu.gtceu.common.machine.storage.DrumMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -57,6 +60,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidType; @@ -82,6 +86,7 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.ALL_FIREBOXES; import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; +import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; @@ -412,6 +417,53 @@ public static MachineDefinition registerDrum(Material material, int capacity, St return definition; } + public static MachineDefinition[] registerSuperTanks(String tank_type, int... tiers) { + MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; + for (int tier : tiers) { + long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); + var register = REGISTRATE.machine( + GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + tank_type, + MachineDefinition::createDefinition, + (holder) -> new QuantumTankMachine(holder, tier, maxAmount), + MetaMachineBlock::new, + QuantumTankMachineItem::create, + MetaMachineBlockEntity::createBlockEntity) + .langValue(toEnglishName(tank_type) + " " + LVT[tier]) + .blockProp(BlockBehaviour.Properties::dynamicShape) + .rotationState(RotationState.ALL) + .allowExtendedFacing(true) + .renderer(() -> new QuantumTankRenderer(tier)) + .hasTESR(true) + .tooltipBuilder(TANK_TOOLTIPS) + .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), + Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", + FormattingUtil.formatNumbers(maxAmount))) + .register(); + TANK_CAPACITY.put(register, maxAmount); + definitions[tier] = register; + } + return definitions; + } + + public static MachineDefinition[] registerSuperChests(String chest_type, int... tiers) { + return registerTieredMachines(chest_type, + (holder, tier) -> new QuantumChestMachine(holder, tier, + tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), + (tier, builder) -> builder.langValue(toEnglishName(chest_type) + " " + LVT[tier]) + .blockProp(BlockBehaviour.Properties::dynamicShape) + .rotationState(RotationState.ALL) + .allowExtendedFacing(true) + .renderer(() -> new QuantumTankRenderer(tier)) + .hasTESR(true) + .tooltipBuilder(CHEST_TOOLTIPS) + .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), + Component.translatable("gtceu.universal.tooltip.item_storage_total", + FormattingUtil.formatNumbers(tier == MAX ? Long.MAX_VALUE : + 4_000_000 * (long) Math.pow(2, tier - 1)))) + .register(), + tiers); + } + ////////////////////////////////////// // ********** Misc **********// ////////////////////////////////////// @@ -663,6 +715,15 @@ public static Component defaultEnvironmentRequirement() { } }; + public static BiConsumer> CHEST_TOOLTIPS = (stack, list) -> { + if (stack.hasTag()) { + ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + list.add(1, Component.translatable("gtceu.universal.tooltip.item_stored", itemStack.getHoverName(), + FormattingUtil.formatNumbers(storedAmount))); + } + }; + public static Component[] workableTiered(int tier, long voltage, long energyCapacity, GTRecipeType recipeType, long tankCapacity, boolean input) { List tooltipComponents = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 93846e5fbaf..2ec78a4b2b7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -7,10 +7,7 @@ import com.gregtechceu.gtceu.api.gui.widget.TankWidget; import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.TickableSubscription; -import com.gregtechceu.gtceu.api.machine.TieredMachine; +import com.gregtechceu.gtceu.api.machine.*; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; @@ -52,6 +49,8 @@ import net.minecraftforge.items.IItemHandlerModifiable; import com.mojang.blaze3d.MethodsReturnNonnullByDefault; +import it.unimi.dsi.fastutil.objects.Object2LongArrayMap; +import it.unimi.dsi.fastutil.objects.Object2LongMap; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -70,6 +69,8 @@ public class QuantumTankMachine extends TieredMachine implements IAutoOutputFlui public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(QuantumTankMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static Object2LongMap TANK_CAPACITY = new Object2LongArrayMap<>(); + @Getter @Persisted @DescSynced @@ -154,7 +155,6 @@ public void saveCustomPersistedData(@NotNull CompoundTag tag, boolean forDrop) { if (!forDrop) tag.put("lockedFluid", lockedFluid.writeToNBT(new CompoundTag())); tag.put("stored", stored.writeToNBT(new CompoundTag())); tag.putLong("storedAmount", storedAmount); - tag.putLong("maxAmount", maxAmount); } @Override From 0d642721111345e48f00aa8f2e00c4ef62328300 Mon Sep 17 00:00:00 2001 From: Karthi <75553966+JuiceyBeans@users.noreply.github.com> Date: Fri, 4 Jul 2025 12:56:40 +0100 Subject: [PATCH 099/270] Rebalance flint tools (#3294) Co-authored-by: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> --- .../gtceu/common/data/materials/SecondDegreeMaterials.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index 8fc176d81df..9c2a9c26213 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -394,11 +394,11 @@ public static void register() { .color(0xc7c7c7).secondaryColor(0x212121).iconSet(FLINT) .flags(NO_SMASHING, MORTAR_GRINDABLE, DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 1) - .toolStats(ToolProperty.Builder.of(1.5F, 1.0F, 64, 2) + .toolStats(ToolProperty.Builder.of(0.0F, 1.0F, 64, 1) .types(GTToolType.MORTAR, GTToolType.KNIFE, GTToolType.AXE, GTToolType.PICKAXE, GTToolType.HOE, GTToolType.SWORD, GTToolType.SHOVEL) .enchantability(5).ignoreCraftingTools() - .enchantment(Enchantments.FIRE_ASPECT, 2).build()) + .enchantment(Enchantments.FIRE_ASPECT, 1).build()) .buildAndRegister(); Air = new Material.Builder(GTCEu.id("air")) From b363758004435019f88a208a66bd5512ab2b6984 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Fri, 4 Jul 2025 15:42:23 +0200 Subject: [PATCH 100/270] Fix Recipe Group having null key in some scenarios (#3316) Co-authored-by: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> --- .../gtceu/api/machine/trait/RecipeHandlerList.java | 3 ++- .../java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java | 5 ++--- .../machine/multiblock/part/FluidHatchPartMachine.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java index 031c49fa58e..ae1ec8bd564 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java @@ -39,7 +39,8 @@ public class RecipeHandlerList { @Setter @Getter - private RecipeHandlerGroup group = null; + @NotNull + private RecipeHandlerGroup group = RecipeHandlerGroupColor.UNDYED; protected RecipeHandlerList(IO handlerIO) { this.handlerIO = handlerIO; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 71bb9477669..4a34d3a3071 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -151,8 +151,7 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; // List to keep track of the remaining items for this RecipeHandlerGroup - Map, List> copiedRecipeContents = new Reference2ObjectOpenHashMap<>( - searchRecipeContents); + Map, List> copiedRecipeContents = searchRecipeContents; boolean found = false; for (RecipeHandlerList handler : handlerListEntry.getValue()) { copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, true); @@ -164,7 +163,7 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { if (!found) continue; if (simulated) return RecipeHandlingResult.SUCCESS; // Start actually removing items, keep track of the remaining items for this RecipeHandlerGroup - copiedRecipeContents = new Reference2ObjectOpenHashMap<>(searchRecipeContents); + copiedRecipeContents = recipeContents; for (RecipeHandlerList handler : handlerListEntry.getValue()) { copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, false); if (copiedRecipeContents.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 5297383f8d7..dc19d510e2f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -129,6 +129,7 @@ public void onLoad() { if (getLevel() instanceof ServerLevel serverLevel) { serverLevel.getServer().tell(new TickTask(0, this::updateTankSubscription)); } + getHandlerList().setColor(getPaintingColor()); tankSubs = tank.addChangedListener(this::updateTankSubscription); } From 7d898c6e92c63e928f03028117798bd4aa64139f Mon Sep 17 00:00:00 2001 From: Spicierspace153 Date: Fri, 4 Jul 2025 15:28:24 -0600 Subject: [PATCH 101/270] fix data items not rendering the research result item (#3319) --- src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java index 4d23a83ab78..41d425451bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java @@ -207,7 +207,7 @@ public static boolean renderResearchItemContent(GuiGraphics graphics, Operation< if (items.length > 0) { ItemStack output = items[0]; if (!output.isEmpty() && !ItemStack.isSameItemSameTags(output, stack)) { - originalMethod.call(entity, level, stack, x, y, seed, z); + originalMethod.call(entity, level, output, x, y, seed, z); return true; } } From 1fc5770e39a65dd3ef9fea6b7a20cebfee48ba9c Mon Sep 17 00:00:00 2001 From: MatthiasMann Date: Sat, 5 Jul 2025 11:37:09 +0200 Subject: [PATCH 102/270] Add initial computercraft support (#3310) Co-authored-by: Tom Prince --- dependencies.gradle | 5 +++ gradle/forge.versions.toml | 6 ++++ gradle/scripts/repositories.gradle | 4 +++ .../java/com/gregtechceu/gtceu/GTCEu.java | 4 +++ .../com/gregtechceu/gtceu/api/GTValues.java | 4 ++- .../api/capability/IEnergyContainer.java | 2 ++ .../api/capability/IEnergyInfoProvider.java | 4 +++ .../api/misc/EnergyInfoProviderList.java | 18 ++++++++++ .../gregtechceu/gtceu/common/CommonProxy.java | 6 ++++ .../electric/BatteryBufferMachine.java | 2 ++ .../machine/electric/ChargerMachine.java | 7 ++-- .../electric/PowerSubstationMachine.java | 26 +++++++------- .../cctweaked/CCTweakedPlugin.java | 15 ++++++++ .../peripherals/EnergyInfoPeripheral.java | 34 +++++++++++++++++++ 14 files changed, 121 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java diff --git a/dependencies.gradle b/dependencies.gradle index fc99f41cdbc..28ce6571053 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -64,6 +64,10 @@ dependencies { // GameStages modCompileOnly(forge.gamestages) + // CC: Tweaked + modCompileOnly(forge.cc.tweaked.core.api) + modCompileOnly(forge.cc.tweaked.forge.api) + // Standard runtime mods // modRuntimeOnly(forge.jade) modRuntimeOnly(forge.ae2) @@ -81,6 +85,7 @@ dependencies { modExtraRuntimeOnly(forge.trenzalore) modExtraRuntimeOnly(forge.curios) // modExtraRuntimeOnly(forge.worldstripper) + modExtraRuntimeOnly(forge.cc.tweaked.forge.impl) modExtraRuntimeOnly(forge.bundles.kjs) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index e127ca3d752..0082351b027 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -21,6 +21,7 @@ ftblibrary = "2001.2.4" ftbteams = "2001.3.0" ftbquests= "2001.4.11" ftbchunks = "2001.3.4" +ccTweaked = "1.114.3" ## modrinth maven ## jade = "11.6.3" @@ -81,6 +82,11 @@ jade = { module = "maven.modrinth:jade", version.ref = "jade" } embeddium = { module = "maven.modrinth:embeddium", version.ref = "embeddium" } oculus = { module = "maven.modrinth:oculus", version.ref = "oculus" } + +cc-tweaked-core-api = { module = "cc.tweaked:cc-tweaked-1.20.1-core-api", version.ref = "ccTweaked" } +cc-tweaked-forge-api = { module = "cc.tweaked:cc-tweaked-1.20.1-forge-api", version.ref = "ccTweaked" } +cc-tweaked-forge-impl = { module = "cc.tweaked:cc-tweaked-1.20.1-forge", version.ref = "ccTweaked" } + worldstripper = { module = "curse.maven:worldStripper-250603", version.ref = "worldStripper" } javd = { module = "curse.maven:javd-370890", version.ref = "javd" } trenzalore = { module = "curse.maven:trenzalore-870210", version.ref = "trenzalore" } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index 28fd0cadf89..6c814e051d3 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -64,4 +64,8 @@ repositories { forRepository { maven { url = "https://thedarkcolour.github.io/KotlinForForge/" } } filter { includeGroup("thedarkcolour") } } + exclusiveContent { // CC: Tweaked + forRepository { maven { url = "https://maven.squiddev.cc" } } + filter { includeGroup("cc.tweaked") } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index 749f92e9389..3ed145140ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -214,5 +214,9 @@ public static boolean isArgonautsLoaded() { public static boolean isGameStagesLoaded() { return isModLoaded(GTValues.MODID_GAMESTAGES); } + + public static boolean isCCTweakedLoaded() { + return isModLoaded(GTValues.MODID_CCTWEAKED); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index c73fb9f3d61..e3ce2b38e50 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -127,7 +127,9 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { MODID_ARGONAUTS = "argonauts", MODID_HERACLES = "heracles", MODID_GAMESTAGES = "gamestages", - MODID_FTB_QUEST = "ftbquests"; + MODID_FTB_QUEST = "ftbquests", + MODID_CCTWEAKED = "computercraft"; + /** * Spray painting compat modids */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java index b506e654400..687a2149909 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyContainer.java @@ -113,6 +113,7 @@ default long getOutputVoltage() { /** * @return input eu/s */ + @Override default long getInputPerSec() { return 0L; } @@ -120,6 +121,7 @@ default long getInputPerSec() { /** * @return output eu/s */ + @Override default long getOutputPerSec() { return 0L; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java index 535082ee550..c541187aca1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IEnergyInfoProvider.java @@ -8,6 +8,10 @@ record EnergyInfo(BigInteger capacity, BigInteger stored) {} EnergyInfo getEnergyInfo(); + long getInputPerSec(); + + long getOutputPerSec(); + boolean supportsBigIntEnergyValues(); /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java index 5001abd9e6f..a0197e1e411 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyInfoProviderList.java @@ -34,6 +34,24 @@ public EnergyInfo getEnergyInfo() { return new EnergyInfo(capacity, stored); } + @Override + public long getInputPerSec() { + long sum = 0; + for (IEnergyInfoProvider eip : list) { + sum += eip.getInputPerSec(); + } + return sum; + } + + @Override + public long getOutputPerSec() { + long sum = 0; + for (IEnergyInfoProvider eip : list) { + sum += eip.getOutputPerSec(); + } + return sum; + } + @Override public boolean supportsBigIntEnergyValues() { return list.size() > 1; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 4d0eaf36bb4..996a0f0de59 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -45,6 +45,7 @@ import com.gregtechceu.gtceu.data.pack.GTPackSource; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.forge.AlloyBlastPropertyAddition; +import com.gregtechceu.gtceu.integration.cctweaked.CCTweakedPlugin; import com.gregtechceu.gtceu.integration.kjs.GTCEuStartupEvents; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.gregtechceu.gtceu.integration.kjs.events.MaterialModificationEventJS; @@ -271,6 +272,11 @@ public void commonSetup(FMLCommonSetupEvent event) { MapIngredientTypeManager.registerMapIngredient(ItemStack.class, IntersectionMapIngredient::from); MapIngredientTypeManager.registerMapIngredient(ItemStack.class, CustomMapIngredient::from); // spotless:on + + if (GTCEu.Mods.isCCTweakedLoaded()) { + GTCEu.LOGGER.info("CC: Tweaked found. Enabling integration..."); + CCTweakedPlugin.init(); + } }); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index 886c1eab6a2..e43e3d8ab82 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -256,6 +256,7 @@ public void serverTick() { changed = true; } energy -= charged; + energyOutputPerSec += charged; } if (changed) { @@ -314,6 +315,7 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long changed = true; } energy -= charged; + energyInputPerSec += charged; } if (changed) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index ffa566368cd..6d1c9ef0a4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -223,19 +223,20 @@ public long acceptEnergyFromNetwork(@Nullable Direction side, long voltage, long long distributed = energy / electricItems.size(); boolean changed = false; - var charged = 0L; for (var electricItem : electricItems) { + long charged = 0; if (electricItem instanceof IElectricItem item) { - charged += item.charge(Math.min(distributed, GTValues.V[item.getTier()] * AMPS_PER_ITEM), + charged = item.charge(Math.min(distributed, GTValues.V[item.getTier()] * AMPS_PER_ITEM), getTier(), true, false); } else if (electricItem instanceof IEnergyStorage energyStorage) { - energy += FeCompat.insertEu(energyStorage, + charged = FeCompat.insertEu(energyStorage, Math.min(distributed, GTValues.V[getTier()] * AMPS_PER_ITEM), false); } if (charged > 0) { changed = true; } energy -= charged; + energyInputPerSec += charged; } if (changed) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index c75fc8b59e7..fa88b23f007 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -78,9 +78,11 @@ public class PowerSubstationMachine extends WorkableMultiblockMachine // Stats tracked for UI display private long netInLastSec; - private long averageInLastSec; + @Getter + private long inputPerSec; private long netOutLastSec; - private long averageOutLastSec; + @Getter + private long outputPerSec; protected ConditionalSubscriptionHandler tickSubscription; @@ -156,9 +158,9 @@ public void onStructureInvalid() { outputHatches = null; passiveDrain = 0; netInLastSec = 0; - averageInLastSec = 0; + inputPerSec = 0; netOutLastSec = 0; - averageOutLastSec = 0; + outputPerSec = 0; super.onStructureInvalid(); } @@ -168,8 +170,8 @@ protected void transferEnergyTick() { // active here is just used for rendering getRecipeLogic() .setStatus(energyBank.hasEnergy() ? RecipeLogic.Status.WORKING : RecipeLogic.Status.IDLE); - averageInLastSec = netInLastSec / 20; - averageOutLastSec = netOutLastSec / 20; + inputPerSec = netInLastSec; + outputPerSec = netOutLastSec; netInLastSec = 0; netOutLastSec = 0; } @@ -238,28 +240,28 @@ public void addDisplayText(List textList) { textList.add(Component.translatable("gtceu.multiblock.power_substation.passive_drain", passiveDrainComponent.setStyle(STYLE_DARK_RED))); - var avgInComponent = Component.literal(FormattingUtil.formatNumbers(averageInLastSec)); + var avgInComponent = Component.literal(FormattingUtil.formatNumbers(inputPerSec / 20)); textList.add(Component .translatable("gtceu.multiblock.power_substation.average_in", avgInComponent.setStyle(STYLE_GREEN)) .withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.translatable("gtceu.multiblock.power_substation.average_in_hover"))))); - var avgOutComponent = Component.literal(FormattingUtil.formatNumbers(Math.abs(averageOutLastSec))); + var avgOutComponent = Component.literal(FormattingUtil.formatNumbers(Math.abs(outputPerSec / 20))); textList.add(Component .translatable("gtceu.multiblock.power_substation.average_out", avgOutComponent.setStyle(STYLE_RED)) .withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.translatable("gtceu.multiblock.power_substation.average_out_hover"))))); - if (averageInLastSec > averageOutLastSec) { + if (inputPerSec > outputPerSec) { BigInteger timeToFillSeconds = energyCapacity.subtract(energyStored) - .divide(BigInteger.valueOf((averageInLastSec - averageOutLastSec) * 20)); + .divide(BigInteger.valueOf(inputPerSec - outputPerSec)); textList.add(Component.translatable("gtceu.multiblock.power_substation.time_to_fill", getTimeToFillDrainText(timeToFillSeconds).setStyle(STYLE_GREEN))); - } else if (averageInLastSec < averageOutLastSec) { + } else if (inputPerSec < outputPerSec) { BigInteger timeToDrainSeconds = energyStored - .divide(BigInteger.valueOf((averageOutLastSec - averageInLastSec) * 20)); + .divide(BigInteger.valueOf(outputPerSec - inputPerSec)); textList.add(Component.translatable("gtceu.multiblock.power_substation.time_to_drain", getTimeToFillDrainText(timeToDrainSeconds).setStyle(STYLE_RED))); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java new file mode 100644 index 00000000000..be53644793b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.integration.cctweaked; + +import com.gregtechceu.gtceu.api.capability.forge.GTCapability; +import com.gregtechceu.gtceu.integration.cctweaked.peripherals.*; + +import dan200.computercraft.api.ComputerCraftAPI; +import dan200.computercraft.api.ForgeComputerCraftAPI; + +public class CCTweakedPlugin { + + public static void init() { + ComputerCraftAPI.registerGenericSource(new EnergyInfoPeripheral()); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java new file mode 100644 index 00000000000..d897fffef8c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/EnergyInfoPeripheral.java @@ -0,0 +1,34 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IEnergyInfoProvider; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class EnergyInfoPeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:energy_info"; + } + + @LuaFunction + public static MethodResult getEnergyStored(IEnergyInfoProvider infoProvider) { + return MethodResult.of(infoProvider.getEnergyInfo().stored()); + } + + @LuaFunction + public static MethodResult getEnergyCapacity(IEnergyInfoProvider infoProvider) { + return MethodResult.of(infoProvider.getEnergyInfo().capacity()); + } + + @LuaFunction + public static MethodResult getInputPerSec(IEnergyInfoProvider changeProvider) { + return MethodResult.of(changeProvider.getInputPerSec()); + } + + @LuaFunction + public static MethodResult getOutputPerSec(IEnergyInfoProvider changeProvider) { + return MethodResult.of(changeProvider.getOutputPerSec()); + } +} From 4c7dac25ff7c5e000fd8d7d0da48f85126f7201a Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sat, 5 Jul 2025 21:59:45 +0200 Subject: [PATCH 103/270] fix inverted directions in getSorter() (#3327) --- .../gtceu/api/pattern/util/RelativeDirection.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index 2b6ae70ca62..869432c3fc7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -139,12 +139,12 @@ public Comparator getSorter(Direction frontDir, Direction upwardsDir, // Determined by Direction.Axis + Direction.AxisDirection return switch (sorterDirection) { - case UP -> Comparator.comparingInt(BlockPos::getY); - case DOWN -> Comparator.comparingInt(pos -> -pos.getY()); - case EAST -> Comparator.comparingInt(BlockPos::getX); - case WEST -> Comparator.comparingInt(pos -> -pos.getX()); - case NORTH -> Comparator.comparingInt(BlockPos::getZ); - case SOUTH -> Comparator.comparingInt(pos -> -pos.getZ()); + case UP -> Comparator.comparingInt(pos -> -pos.getY()); + case DOWN -> Comparator.comparingInt(BlockPos::getY); + case EAST -> Comparator.comparingInt(pos -> -pos.getX()); + case WEST -> Comparator.comparingInt(BlockPos::getX); + case NORTH -> Comparator.comparingInt(pos -> -pos.getZ()); + case SOUTH -> Comparator.comparingInt(BlockPos::getZ); }; } From 66ac4ef5d96b08f5a5303282a2c420ae461f3870 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 5 Jul 2025 23:11:55 +0300 Subject: [PATCH 104/270] fix containers not being able to pick up machine inputs tanks' contents (#3328) --- .../gtceu/api/gui/widget/TankWidget.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java index 93da02eaab1..98156b678b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/TankWidget.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.gui.widget; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidEntryList; @@ -133,8 +134,7 @@ public TankWidget(IFluidHandler fluidTank, int x, int y, boolean allowClickConta public TankWidget(@Nullable IFluidHandler fluidTank, int x, int y, int width, int height, boolean allowClickContainerFilling, boolean allowClickContainerEmptying) { super(new Position(x, y), new Size(width, height)); - this.fluidTank = fluidTank; - this.tank = 0; + setFluidTank(fluidTank, 0); this.showAmount = true; this.allowClickFilled = allowClickContainerFilling; this.allowClickDrained = allowClickContainerEmptying; @@ -149,8 +149,7 @@ public TankWidget(IFluidHandler fluidHandler, int tank, int x, int y, boolean al public TankWidget(@Nullable IFluidHandler fluidHandler, int tank, int x, int y, int width, int height, boolean allowClickContainerFilling, boolean allowClickContainerEmptying) { super(new Position(x, y), new Size(width, height)); - this.fluidTank = fluidHandler; - this.tank = tank; + setFluidTank(fluidHandler, tank); this.showAmount = true; this.allowClickFilled = allowClickContainerFilling; this.allowClickDrained = allowClickContainerEmptying; @@ -158,17 +157,17 @@ public TankWidget(@Nullable IFluidHandler fluidHandler, int tank, int x, int y, } public TankWidget setFluidTank(IFluidHandler fluidTank) { - this.fluidTank = fluidTank; - this.tank = 0; - if (isClientSideWidget) { - setClientSideWidget(); - } - return this; + return setFluidTank(fluidTank, 0); } public TankWidget setFluidTank(IFluidHandler fluidTank, int tank) { - this.fluidTank = fluidTank; - this.tank = tank; + if (fluidTank instanceof NotifiableFluidTank notifiable) { + this.fluidTank = notifiable.getStorages()[tank]; + this.tank = 0; + } else { + this.fluidTank = fluidTank; + this.tank = tank; + } if (isClientSideWidget) { setClientSideWidget(); } From ecd9b51cadd08d05feb007de81ac909200d2de17 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 5 Jul 2025 23:34:12 +0300 Subject: [PATCH 105/270] clarify CapeRegistry's javadocs and add a KubeJS event for it (#3324) --- .../gtceu/api/cosmetics/CapeRegistry.java | 96 +++++++++++-------- .../cosmetics/event/RegisterGTCapesEvent.java | 22 +++-- .../integration/kjs/GTCEuServerEvents.java | 3 + .../integration/kjs/GregTechKubeJSPlugin.java | 6 +- .../kjs/events/RegisterCapesEventJS.java | 56 +++++++++++ 5 files changed, 136 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java index 55f9ba12bcf..5199af65205 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java @@ -1,8 +1,11 @@ package com.gregtechceu.gtceu.api.cosmetics; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.common.network.packets.SPacketNotifyCapeChange; +import com.gregtechceu.gtceu.integration.kjs.GTCEuServerEvents; +import com.gregtechceu.gtceu.integration.kjs.events.RegisterCapesEventJS; import net.minecraft.nbt.*; import net.minecraft.resources.ResourceLocation; @@ -12,6 +15,7 @@ import net.minecraft.world.level.saveddata.SavedData; import net.minecraftforge.common.MinecraftForge; +import dev.latvian.mods.kubejs.script.ScriptType; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -39,7 +43,12 @@ public class CapeRegistry extends SavedData { private CapeRegistry() {} private static void initCapes() { - MinecraftForge.EVENT_BUS.post(new RegisterGTCapesEvent()); + RegisterGTCapesEvent event = new RegisterGTCapesEvent(); + MinecraftForge.EVENT_BUS.post(event); + if (GTCEu.Mods.isKubeJSLoaded()) { + KJSCallWrapper.fireKJSEvent(event); + } + save(); } @@ -146,70 +155,74 @@ public static Set getUnlockedCapes(UUID uuid) { } /** - * Makes a cape available to the {@code /gtceu cape} command, allowing it to be used in advancements etc. + * Registers a cape. * - * @param id An identifier for giving the cape with commands etc. - * @param cape The ResourceLocation that points to the cape that can be unlocked through the advancement. + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack * - * @deprecated use the {@link com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent} event. + * @deprecated use the {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)}. + * @see RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation) */ @ApiStatus.Internal - public static void registerCape(ResourceLocation id, ResourceLocation cape) { - ALL_CAPES.put(id, cape); + public static void registerCape(ResourceLocation id, ResourceLocation texture) { + ALL_CAPES.put(id, texture); } /** - * Adds a cape that will always be unlocked for all players. + * Registers a cape that will always be unlocked for all players. * - * @param id An identifier for giving the cape with commands etc. - * @param cape A ResourceLocation pointing to the cape texture. + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack * - * @deprecated use the {@link com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent} event. + * @deprecated use {@link RegisterGTCapesEvent#registerFreeCape(ResourceLocation, ResourceLocation)}. + * @see RegisterGTCapesEvent#registerFreeCape(ResourceLocation, ResourceLocation) */ @ApiStatus.Internal - public static void registerFreeCape(ResourceLocation id, ResourceLocation cape) { - registerCape(id, cape); + public static void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + registerCape(id, texture); FREE_CAPES.add(id); } /** - * Automatically gives a cape to a player. may be used for a reward etc. - *
- * DOES NOT SAVE AUTOMATICALLY; PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * Automatically makes a cape available to a player.
+ * DOES NOT SAVE AUTOMATICALLY; + * PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. * - * @param owner The UUID of the player to be given the cape. - * @param capeId The ResourceLocation that holds the cape used here. + * @param owner The UUID of the player to give the cape to + * @param cape The cape to give + * @see #removeCape(UUID, ResourceLocation) */ - public static boolean unlockCape(UUID owner, ResourceLocation capeId) { + public static boolean unlockCape(UUID owner, ResourceLocation cape) { Set capes = UNLOCKED_CAPES.computeIfAbsent(owner, CapeRegistry::makeSet); - if (capes.contains(capeId)) { + if (capes.contains(cape)) { return false; } - capes.add(capeId); + capes.add(cape); UNLOCKED_CAPES.put(owner, capes); return true; } /** - * Automatically removes a cape from a player - *
- * DOES NOT SAVE AUTOMATICALLY; PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. + * Automatically removes a cape from a player.
+ * DOES NOT SAVE AUTOMATICALLY; + * PLEASE CALL SAVE AFTER THIS FUNCTION IS USED IF THIS DATA IS MEANT TO PERSIST. * - * @param uuid The UUID of the player to be given the cape. - * @param cape The ResourceLocation that holds the cape used here. + * @param owner The UUID of the player to take the cape from + * @param cape The cape to take + * @see #unlockCape(UUID, ResourceLocation) */ - public static boolean removeCape(UUID uuid, ResourceLocation cape) { + public static boolean removeCape(UUID owner, ResourceLocation cape) { if (FREE_CAPES.contains(cape)) { return false; } - Set capes = UNLOCKED_CAPES.get(uuid); + Set capes = UNLOCKED_CAPES.get(owner); if (capes == null || !capes.contains(cape)) { return false; } capes.remove(cape); - UNLOCKED_CAPES.put(uuid, capes); - if (cape.equals(getPlayerCapeId(uuid))) { - setActiveCape(uuid, null); + UNLOCKED_CAPES.put(owner, capes); + if (cape.equals(getPlayerCapeId(owner))) { + setActiveCape(owner, null); } return true; } @@ -224,18 +237,18 @@ public static void giveRawCape(UUID uuid, ResourceLocation cape) { } /** - * Sets the current cape for a player. + * Sets a player's current cape. * - * @param uuid The UUID of the player to be given the cape. - * @param cape The ResourceLocation that holds the cape used here. {@code null} to remove cape. + * @param player The UUID of the player + * @param cape The cape to set, or {@code null} to remove the current cape. */ - public static boolean setActiveCape(UUID uuid, @Nullable ResourceLocation cape) { - Set capes = UNLOCKED_CAPES.get(uuid); + public static boolean setActiveCape(UUID player, @Nullable ResourceLocation cape) { + Set capes = UNLOCKED_CAPES.get(player); if (capes == null || cape != null && !capes.contains(cape)) { return false; } - CURRENT_CAPES.put(uuid, cape); - GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(uuid, cape)); + CURRENT_CAPES.put(player, cape); + GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(player, cape)); save(); return true; } @@ -285,4 +298,11 @@ public static void detectNewCapes(Player player) { private static Set makeSet(UUID ignored) { return new TreeSet<>(SET_COMPARATOR); } + + private static class KJSCallWrapper { + + public static void fireKJSEvent(RegisterGTCapesEvent event) { + GTCEuServerEvents.REGISTER_CAPES.post(ScriptType.SERVER, new RegisterCapesEventJS(event)); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java index ef4655b3441..3d57594c13c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java @@ -24,26 +24,32 @@ public class RegisterGTCapesEvent extends Event { public RegisterGTCapesEvent() {} /** - * Makes a cape available to the {@code /gtceu cape} command, allowing it to be used in advancements etc. + * Registers a cape to the cape registry. * - * @param id An identifier for giving the cape with commands etc. - * @param texture The ResourceLocation that points to the texture of the cape accessible via {@code id} + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack */ public void registerCape(ResourceLocation id, ResourceLocation texture) { CapeRegistry.registerCape(id, texture); } /** - * Adds a cape that will always be unlocked for all players. + * Registers a cape that will always be unlocked for all players. * - * @param id An identifier for giving the cape with commands etc. - * @param texture A ResourceLocation pointing to the cape texture. + * @param id An identifier for the cape + * @param texture The full path to the cape's texture in a resource pack */ public void registerFreeCape(ResourceLocation id, ResourceLocation texture) { CapeRegistry.registerFreeCape(id, texture); } - public void unlockCapeFor(UUID owner, ResourceLocation capeId) { - CapeRegistry.unlockCape(owner, capeId); + /** + * Automatically makes a cape available to a player. + * + * @param owner The UUID of the player to give the cape to + * @param cape The cape to give + */ + public void unlockCapeFor(UUID owner, ResourceLocation cape) { + CapeRegistry.unlockCape(owner, cape); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java index 5e4823c2dc8..8920c33cbeb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuServerEvents.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.integration.kjs.events.GTBedrockOreVeinEventJS; import com.gregtechceu.gtceu.integration.kjs.events.GTFluidVeinEventJS; import com.gregtechceu.gtceu.integration.kjs.events.GTOreVeinEventJS; +import com.gregtechceu.gtceu.integration.kjs.events.RegisterCapesEventJS; import dev.latvian.mods.kubejs.event.EventGroup; import dev.latvian.mods.kubejs.event.EventHandler; @@ -14,4 +15,6 @@ public interface GTCEuServerEvents { EventHandler ORE_VEIN_MODIFICATION = GROUP.server("oreVeins", () -> GTOreVeinEventJS.class); EventHandler BEDROCK_ORE_VEIN_MODIFICATION = GROUP.server("bedrockOreVeins", () -> GTBedrockOreVeinEventJS.class); EventHandler FLUID_VEIN_MODIFICATION = GROUP.server("fluidVeins", () -> GTFluidVeinEventJS.class); + + EventHandler REGISTER_CAPES = GROUP.server("registerCapes", () -> RegisterCapesEventJS.class); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 33db14e3191..fb14f2bd0c9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.data.DimensionMarker; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -54,6 +55,7 @@ import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.common.cosmetics.GTCapes; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.machines.GCYMMachines; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; @@ -326,7 +328,9 @@ public void registerBindings(BindingsEvent event) { event.add("GTDikeBlockDefinition", DikeVeinGenerator.DikeBlockDefinition.class); event.add("GTOres", GTOres.class); event.add("GTWorldGenLayers", WorldGenLayers.class); - // MaterialColor stuff, for TagPrefix + // Cape related + event.add("GTCapes", GTCapes.class); + event.add("CapeRegistry", CapeRegistry.class); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java new file mode 100644 index 00000000000..b81bc089148 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/RegisterCapesEventJS.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.integration.kjs.events; + +import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; + +import net.minecraft.resources.ResourceLocation; + +import dev.latvian.mods.kubejs.event.EventJS; +import dev.latvian.mods.kubejs.typings.Info; +import dev.latvian.mods.kubejs.typings.Param; + +import java.util.UUID; + +@Info(""" + Invoked when the server is first loaded. + """) +public class RegisterCapesEventJS extends EventJS { + + private final RegisterGTCapesEvent event; + + public RegisterCapesEventJS(RegisterGTCapesEvent event) { + this.event = event; + } + + @Info(value = """ + Registers a cape. + """, + params = { + @Param(name = "id", value = "An identifier for the cape"), + @Param(name = "texture", value = "The full path to the cape's texture in a resource pack") + }) + public void registerCape(ResourceLocation id, ResourceLocation texture) { + event.registerCape(id, texture); + } + + @Info(value = """ + Registers a cape that will always be unlocked for all players. + """, + params = { + @Param(name = "id", value = "An identifier for the cape"), + @Param(name = "texture", value = "The full path to the cape's texture in a resource pack") + }) + public void registerFreeCape(ResourceLocation id, ResourceLocation texture) { + event.registerFreeCape(id, texture); + } + + @Info(value = """ + Automatically makes a cape available to a player. + """, + params = { + @Param(name = "owner", value = "The UUID of the player to give the cape to."), + @Param(name = "capeId", value = "The cape to give") + }) + public void unlockCapeFor(UUID owner, ResourceLocation capeId) { + event.unlockCapeFor(owner, capeId); + } +} From 20a22674044fc0f95db13654552817a171e31127 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sat, 5 Jul 2025 22:51:33 +0200 Subject: [PATCH 106/270] Fix distinct state of buffers and proxies (#3318) --- .../recipe/FluidRecipeCapability.java | 64 +++++++++++-------- .../recipe/ItemRecipeCapability.java | 1 + .../trait/InternalSlotRecipeHandler.java | 2 + .../machine/trait/ProxySlotRecipeHandler.java | 2 + 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index ff463dc044b..d1fa2147a6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -1,6 +1,8 @@ package com.gregtechceu.gtceu.api.capability.recipe; import com.gregtechceu.gtceu.api.gui.widget.TankWidget; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; @@ -37,6 +39,8 @@ import java.util.*; import java.util.stream.Collectors; +import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; + public class FluidRecipeCapability extends RecipeCapability { public final static FluidRecipeCapability CAP = new FluidRecipeCapability(); @@ -239,45 +243,51 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe private static List> getInputContents(IRecipeCapabilityHolder holder) { var handlerLists = holder.getCapabilitiesForIO(IO.IN); if (handlerLists.isEmpty()) return Collections.emptyList(); - List distinct = new ArrayList<>(); - List> indistinct = new ArrayList<>(); - - for (var handlerList : handlerLists) { - if (handlerList.isDistinct() && handlerList.hasCapability(FluidRecipeCapability.CAP)) { - distinct.add(handlerList); - } else if (handlerList.hasCapability(FluidRecipeCapability.CAP)) { - indistinct.addAll(handlerList.getCapability(FluidRecipeCapability.CAP)); - } - } - List> invs = new ArrayList<>(distinct.size() + 1); - Object2IntOpenHashMap combined = new Object2IntOpenHashMap<>(); - for (var handler : indistinct) { - if (!handler.shouldSearchContent()) continue; - for (var content : handler.getContents()) { - if (content instanceof FluidStack stack && !stack.isEmpty()) { - combined.addTo(stack, stack.getAmount()); - } - } + Map> handlerGroups = new HashMap<>(); + for (var handler : handlerLists) { + if (!handler.hasCapability(FluidRecipeCapability.CAP)) continue; + addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } - for (var handlerList : distinct) { + List distinctHandlerLists = handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BUS_DISTINCT, + Collections.emptyList()); + List> invs = new ArrayList<>(distinctHandlerLists.size() + 1); + // Handle distinct groups first, adding an inventory based on their contents individually. + for (RecipeHandlerList handlerList : distinctHandlerLists) { var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); - // Clone has the desired effect here - it will shallow copy the keys, which we don't change and deep copy - // the values, as they are primitives. - var inventory = combined.clone(); - for (var handler : handlers) { + for (IRecipeHandler handler : handlers) { + Object2IntOpenHashMap distinctInv = new Object2IntOpenHashMap<>(); if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof FluidStack stack && !stack.isEmpty()) { - inventory.addTo(stack, stack.getAmount()); + distinctInv.addTo(stack, stack.getAmount()); + } + } + if (!distinctInv.isEmpty()) invs.add(distinctInv); + } + } + + // Then handle other groups. The logic of undyed busses belonging to + // everything has already been taken care of by addToRecipeMap() + for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { + if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { + var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); + Object2IntOpenHashMap inventory = new Object2IntOpenHashMap<>(); + for (var handler : handlers) { + if (!handler.shouldSearchContent()) continue; + for (var content : handler.getContents()) { + if (content instanceof FluidStack stack && !stack.isEmpty()) { + inventory.addTo(stack, stack.getAmount()); + } } } + if (!inventory.isEmpty()) invs.add(inventory); } - if (!inventory.isEmpty()) invs.add(inventory); } - if (!combined.isEmpty()) invs.add(combined); return invs; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index dabd2f3f601..723b1e6e36b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -301,6 +301,7 @@ private static List> getInputContents(IRecipeCapability Map> handlerGroups = new HashMap<>(); for (var handler : handlerLists) { + if (!handler.hasCapability(ItemRecipeCapability.CAP)) continue; addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java index 0437e13b1ef..4a2e4e49431 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/InternalSlotRecipeHandler.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.machine.trait.NotifiableRecipeHandlerTrait; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; @@ -43,6 +44,7 @@ public SlotRHL(MEPatternBufferPartMachine buffer, InternalSlot slot, int idx) { fluidRecipeHandler = new SlotFluidRecipeHandler(buffer, slot, idx); addHandlers(buffer.getCircuitInventory(), buffer.getShareInventory(), buffer.getShareTank(), itemRecipeHandler, fluidRecipeHandler); + this.setGroup(RecipeHandlerGroupDistinctness.BUS_DISTINCT); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java index f3fb60c8a91..4d40ca03ebe 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/trait/ProxySlotRecipeHandler.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableRecipeHandlerTrait; +import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; @@ -65,6 +66,7 @@ public ProxyRHL(MEPatternBufferProxyPartMachine machine) { sharedFluid = new ProxyFluidRecipeHandler(machine); slotFluid = new ProxyFluidRecipeHandler(machine); addHandlers(circuit, sharedItem, slotItem, sharedFluid, slotFluid); + this.setGroup(RecipeHandlerGroupDistinctness.BUS_DISTINCT); } public void setBuffer(MEPatternBufferPartMachine buffer, SlotRHL slotRHL) { From 2b1a708206c7ff951582a6ec4f6994e3b0e0d513 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 5 Jul 2025 23:54:52 +0300 Subject: [PATCH 107/270] Clean up spray paint color handling (#3325) --- .../api/machine/IMachineBlockEntity.java | 18 +- .../common/item/ColorSprayBehaviour.java | 207 +++++++----------- .../jade/provider/StainedColorProvider.java | 21 +- .../top/provider/StainedColorProvider.java | 23 +- .../gtceu/utils/BreadthFirstBlockSearch.java | 21 +- 5 files changed, 124 insertions(+), 166 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index 0d6520b94c1..0caa65fe345 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.lowdragmc.lowdraglib.syncdata.blockentity.IAsyncAutoSyncBlockEntity; @@ -20,7 +21,7 @@ * Also delivers most of the Information about TileEntities. */ public interface IMachineBlockEntity extends IToolGridHighlight, IAsyncAutoSyncBlockEntity, IRPCBlockEntity, - IAutoPersistBlockEntity { + IAutoPersistBlockEntity, IPaintable { default BlockEntity self() { return (BlockEntity) this; @@ -87,4 +88,19 @@ default void loadCustomPersistedData(CompoundTag tag) { IAutoPersistBlockEntity.super.loadCustomPersistedData(tag); getMetaMachine().loadCustomPersistedData(tag); } + + @Override + default int getPaintingColor() { + return getMetaMachine().getPaintingColor(); + } + + @Override + default void setPaintingColor(int color) { + getMetaMachine().setPaintingColor(color); + } + + @Override + default int getDefaultPaintingColor() { + return getMetaMachine().getDefaultPaintingColor(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index 6be680eb7f8..9eb18ee277b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -1,13 +1,11 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.IPaintable; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDurabilityBar; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.common.data.GTSoundEntries; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.CustomTags; @@ -42,7 +40,6 @@ import net.minecraftforge.common.Tags; import net.minecraftforge.common.util.TriPredicate; -import appeng.api.util.AECableType; import appeng.api.util.AEColor; import appeng.blockentity.networking.CableBusBlockEntity; import com.google.common.collect.ImmutableMap; @@ -52,7 +49,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.BiPredicate; import java.util.function.Supplier; public class ColorSprayBehaviour implements IDurabilityBar, IInteractionItem, IAddInformation { @@ -68,8 +64,10 @@ public class ColorSprayBehaviour implements IDurabilityBar, IInteractionItem, IA private static final ImmutableMap SHULKER_BOX_MAP; private static final ImmutableMap CANDLE_MAP; - private static ResourceLocation getId(String modid, DyeColor color, String postfix) { - return new ResourceLocation(modid, "%s_%s".formatted(color.getSerializedName(), postfix)); + @SuppressWarnings("deprecation") + private static Block getBlock(DyeColor color, String postfix) { + ResourceLocation id = new ResourceLocation("minecraft", color.getSerializedName() + "_" + postfix); + return BuiltInRegistries.BLOCK.get(id); } static { @@ -84,36 +82,15 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf ImmutableMap.Builder candleBuilder = ImmutableMap.builder(); for (DyeColor color : DyeColor.values()) { - // if there are > 16 colors (vanilla end) & tinted is loaded, use tinted blocks - if (color.ordinal() > 15 && GTCEu.isModLoaded(GTValues.MODID_TINTED)) { - glassBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "stained_glass"))); - glassPaneBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "stained_glass_pane"))); - terracottaBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "terracotta"))); - woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "wool"))); - carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "carpet"))); - concreteBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "concrete"))); - concretePowderBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "concrete_powder"))); - shulkerBoxBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "shulker_box"))); - candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId(GTValues.MODID_TINTED, color, "candle"))); - } else { - glassBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass"))); - glassPaneBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId("minecraft", color, "stained_glass_pane"))); - terracottaBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "terracotta"))); - woolBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "wool"))); - carpetBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "carpet"))); - concreteBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete"))); - concretePowderBuilder.put(color, - BuiltInRegistries.BLOCK.get(getId("minecraft", color, "concrete_powder"))); - shulkerBoxBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "shulker_box"))); - candleBuilder.put(color, BuiltInRegistries.BLOCK.get(getId("minecraft", color, "candle"))); - } + glassBuilder.put(color, getBlock(color, "stained_glass")); + glassPaneBuilder.put(color, getBlock(color, "stained_glass_pane")); + terracottaBuilder.put(color, getBlock(color, "terracotta")); + woolBuilder.put(color, getBlock(color, "wool")); + carpetBuilder.put(color, getBlock(color, "carpet")); + concreteBuilder.put(color, getBlock(color, "concrete")); + concretePowderBuilder.put(color, getBlock(color, "concrete_powder")); + shulkerBoxBuilder.put(color, getBlock(color, "shulker_box")); + candleBuilder.put(color, getBlock(color, "candle")); } GLASS_MAP = glassBuilder.build(); GLASS_PANE_MAP = glassPaneBuilder.build(); @@ -124,7 +101,6 @@ private static ResourceLocation getId(String modid, DyeColor color, String postf CONCRETE_POWDER_MAP = concretePowderBuilder.build(); SHULKER_BOX_MAP = shulkerBoxBuilder.build(); CANDLE_MAP = candleBuilder.build(); - } private final Supplier empty; @@ -194,18 +170,18 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex var level = context.getLevel(); var pos = context.getClickedPos(); - int maxBlocksToRecolor = Math.max(1, - player != null && player.isShiftKeyDown() ? ConfigHolder.INSTANCE.tools.sprayCanChainLength : 1); + if (player == null) { + return InteractionResult.PASS; + } + + int maxBlocksToRecolor = player.isShiftKeyDown() ? ConfigHolder.INSTANCE.tools.sprayCanChainLength : 1; - if (player != null) { - var first = level.getBlockEntity(pos); - if (first == null || !handleSpecialBlockEntities(first, maxBlocksToRecolor, context)) { - handleBlocks(pos, maxBlocksToRecolor, context); - } - GTSoundEntries.SPRAY_CAN_TOOL.play(level, null, player.position(), 1.0f, 1.0f); - return InteractionResult.SUCCESS; + var first = level.getBlockEntity(pos); + if (first == null || !handleSpecialBlockEntities(first, maxBlocksToRecolor, context)) { + handleBlocks(pos, maxBlocksToRecolor, context); } - return InteractionResult.PASS; + GTSoundEntries.SPRAY_CAN_TOOL.play(level, null, player.position(), 1.0f, 1.0f); + return InteractionResult.SUCCESS; } private static boolean paintPaintable(IPaintable paintable, DyeColor color) { @@ -222,7 +198,7 @@ private static boolean paintPaintable(IPaintable paintable, DyeColor color) { return true; } - @SuppressWarnings("rawtypes") + @SuppressWarnings({ "rawtypes", "DataFlowIssue" }) private boolean handleSpecialBlockEntities(BlockEntity first, int limit, UseOnContext context) { var player = context.getPlayer(); if (player == null) { @@ -235,50 +211,23 @@ private boolean handleSpecialBlockEntities(BlockEntity first, int limit, UseOnCo if (c.getColor() == ae2Color) { continue; } - c.recolourBlock(null, ae2Color, player); + c.recolourBlock(context.getClickedFace(), ae2Color, player); if (!useItemDurability(player, context.getHand(), context.getItemInHand(), ItemStack.EMPTY)) { break; } } - } else if (first instanceof PipeBlockEntity pipe) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(PipeBlockEntity.class, pipe, + } else if (first instanceof IPipeNode pipe) { + var collected = BreadthFirstBlockSearch.conditionalSearch(IPipeNode.class, pipe, + first.getLevel(), IPipeNode::getPipePos, gtPipePredicate, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable(c, color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - } else if (first instanceof MetaMachineBlockEntity mmbe) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(MetaMachineBlockEntity.class, mmbe, - gtMetaMachinePredicate, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable(c.getMetaMachine(), color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - - } else if (first instanceof IPaintable) { - var collected = BreadthFirstBlockSearch.conditionalBlockEntitySearch(BlockEntity.class, first, - paintablePredicateWrapper, limit, limit * 6); - for (var c : collected) { - if (!paintPaintable((IPaintable) c, color)) { - continue; - } - if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), - ItemStack.EMPTY)) { - break; - } - } - } else if (first instanceof ShulkerBoxBlockEntity shulkerBoxBE) { - var tag = shulkerBoxBE.saveWithFullMetadata(); + paintPaintables(collected, context); + } else if (first instanceof IPaintable paintable) { + var collected = BreadthFirstBlockSearch.conditionalSearch(IPaintable.class, paintable, + first.getLevel(), p -> ((BlockEntity) p).getBlockPos(), + paintablePredicate, limit, limit * 6); + paintPaintables(collected, context); + } else if (first instanceof ShulkerBoxBlockEntity shulkerBox) { + var tag = shulkerBox.saveWithoutMetadata(); var level = first.getLevel(); var pos = first.getBlockPos(); recolorBlockNoState(SHULKER_BOX_MAP, color, level, pos, Blocks.SHULKER_BOX); @@ -314,13 +263,25 @@ private void handleBlocks(BlockPos start, int limit, UseOnContext context) { } } - private boolean tryPaintBlock(Level world, BlockPos pos) { - var blockState = world.getBlockState(pos); + private void paintPaintables(Set paintables, UseOnContext context) { + for (var c : paintables) { + if (!paintPaintable(c, color)) { + continue; + } + // noinspection DataFlowIssue + if (!useItemDurability(context.getPlayer(), context.getHand(), context.getItemInHand(), ItemStack.EMPTY)) { + break; + } + } + } + + private boolean tryPaintBlock(Level level, BlockPos pos) { + var blockState = level.getBlockState(pos); var block = blockState.getBlock(); if (color == null) { - return tryStripBlockColor(world, pos, block); + return tryStripBlockColor(level, pos, block); } - return recolorBlockState(world, pos, color) || tryPaintSpecialBlock(world, pos, block); + return recolorBlockState(level, pos, color) || tryPaintSpecialBlock(level, pos, block); } @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -335,6 +296,7 @@ private static boolean recolorBlockState(Level level, BlockPos pos, DyeColor col return false; } + @SuppressWarnings("RedundantIfStatement") private boolean tryPaintSpecialBlock(Level world, BlockPos pos, Block block) { if (block.defaultBlockState().is(Tags.Blocks.GLASS)) { if (recolorBlockNoState(GLASS_MAP, this.color, world, pos, Blocks.GLASS)) { @@ -384,18 +346,19 @@ private static boolean recolorBlockNoState(Map map, DyeColor co } @SuppressWarnings({ "rawtypes", "unchecked" }) - private static boolean recolorBlockNoState(Map map, DyeColor color, Level world, BlockPos pos, - Block _default) { - Block newBlock = map.getOrDefault(color, _default); - BlockState old = world.getBlockState(pos); - if (newBlock == Blocks.AIR) newBlock = _default; + private static boolean recolorBlockNoState(Map map, @Nullable DyeColor color, + Level level, BlockPos pos, Block defaultBlock) { + Block newBlock = map.getOrDefault(color, defaultBlock); + if (newBlock == Blocks.AIR) newBlock = defaultBlock; + + BlockState old = level.getBlockState(pos); if (newBlock != null && newBlock != old.getBlock()) { BlockState state = newBlock.defaultBlockState(); for (Property property : old.getProperties()) { + if (!state.hasProperty(property)) continue; state.setValue(property, old.getValue(property)); } - world.setBlock(pos, state, 3); - world.sendBlockUpdated(pos, old, state, 3); + level.setBlockAndUpdate(pos, state); return true; } return false; @@ -405,31 +368,31 @@ private static boolean recolorBlockNoState(Map map, DyeColor co private static boolean tryStripBlockColor(Level world, BlockPos pos, Block block) { // MC special cases if (block instanceof StainedGlassBlock) { - world.setBlock(pos, Blocks.GLASS.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.GLASS.defaultBlockState()); return true; } if (block instanceof StainedGlassPaneBlock) { - world.setBlock(pos, Blocks.GLASS_PANE.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.GLASS_PANE.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.TERRACOTTA) && block != Blocks.TERRACOTTA) { - world.setBlock(pos, Blocks.TERRACOTTA.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.TERRACOTTA.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.WOOL) && block != Blocks.WHITE_WOOL) { - world.setBlock(pos, Blocks.WHITE_WOOL.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_WOOL.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.WOOL_CARPETS) && block != Blocks.WHITE_CARPET) { - world.setBlock(pos, Blocks.WHITE_CARPET.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CARPET.defaultBlockState()); return true; } if (block.defaultBlockState().is(CustomTags.CONCRETE_BLOCK) && block != Blocks.WHITE_CONCRETE) { - world.setBlock(pos, Blocks.WHITE_CONCRETE.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CONCRETE.defaultBlockState()); return true; } if (block.defaultBlockState().is(CustomTags.CONCRETE_POWDER_BLOCK) && block != Blocks.WHITE_CONCRETE_POWDER) { - world.setBlock(pos, Blocks.WHITE_CONCRETE_POWDER.defaultBlockState(), 3); + world.setBlockAndUpdate(pos, Blocks.WHITE_CONCRETE_POWDER.defaultBlockState()); return true; } if (block.defaultBlockState().is(BlockTags.CANDLES) && block != Blocks.WHITE_CANDLE) { @@ -490,37 +453,23 @@ public static void setUsesLeft(ItemStack itemStack, int usesLeft) { tagCompound.putInt("UsesLeft", usesLeft); } - private static final BiPredicate paintablePredicate = (parent, child) -> { + private static final TriPredicate paintablePredicate = (parent, child, dir) -> { + if (parent == null) return true; if (!parent.getClass().equals(child.getClass())) { return false; } return parent.getPaintingColor() == child.getPaintingColor(); }; - private static final TriPredicate paintablePredicateWrapper = (parent, child, - direction) -> { - if (parent == null && child instanceof IPaintable) return true; - return parent instanceof IPaintable pp && child instanceof IPaintable pc && paintablePredicate.test(pp, pc); - }; - @SuppressWarnings("rawtypes") - private static final TriPredicate gtPipePredicate = (parent, child, - direction) -> { + private static final TriPredicate gtPipePredicate = (parent, child, direction) -> { if (parent == null) return true; - if (!paintablePredicate.test(parent, child)) { + if (!paintablePredicate.test(parent, child, direction)) { return false; } return parent.isConnected(direction) && child.isConnected(direction.getOpposite()); }; - private static final TriPredicate gtMetaMachinePredicate = (parent, - child, - direction) -> { - if (parent == null) return true; - return paintablePredicate.test(parent.getMetaMachine(), child.getMetaMachine()) && - parent.getMetaMachine().getDefinition().equals(child.getMetaMachine().getDefinition()); - }; - private static class AE2CallWrapper { static Set collect(BlockEntity first, int limit) { @@ -537,13 +486,9 @@ static boolean isAE2Cable(BlockEntity be) { static boolean ae2CablePredicate(CableBusBlockEntity parent, CableBusBlockEntity child, Direction direction) { if (parent == null) return true; var childDirection = direction.getOpposite(); - if (parent.getPart(direction) != null || parent.getCableConnectionType(direction) == AECableType.NONE || - child.getPart(childDirection) != null || - child.getCableConnectionType(childDirection) == AECableType.NONE || - parent.getColor() != child.getColor()) { - return false; - } - return true; + return parent.getPart(direction) == null && parent.getCableConnectionType(direction).isValid() && + child.getPart(childDirection) == null && child.getCableConnectionType(childDirection).isValid() && + parent.getColor() == child.getColor(); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java index ec2a929839a..7c63ef48abe 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java @@ -1,13 +1,10 @@ package com.gregtechceu.gtceu.integration.jade.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; import snownee.jade.api.BlockAccessor; @@ -23,24 +20,16 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi if (blockAccessor.getServerData().contains("StainedColor")) { int paintingColor = blockAccessor.getServerData().getInt("StainedColor"); if (paintingColor != -1) { - iTooltip.add(Component - .translatable("gtceu.top.stained", - String.format("#%06X", paintingColor)) - .withStyle(Style.EMPTY.withColor(paintingColor))); + iTooltip.add(Component.translatable("gtceu.top.stained", String.format("#%06X", paintingColor)) + .withStyle(style -> style.withColor(paintingColor))); } } } @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { - if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { - MetaMachine metaMachine = blockEntity.getMetaMachine(); - if (metaMachine != null) { - int paintingColor = metaMachine.getPaintingColor(); - compoundTag.putInt("StainedColor", paintingColor); - } - } else if (blockAccessor.getBlockEntity() instanceof PipeBlockEntity pipe) { - int paintingColor = pipe.getPaintingColor(); + if (blockAccessor.getBlockEntity() instanceof IPaintable paintable) { + int paintingColor = paintable.getPaintingColor(); compoundTag.putInt("StainedColor", paintingColor); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java index 217cf4beb0f..56b7e2405a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -1,8 +1,7 @@ package com.gregtechceu.gtceu.integration.top.provider; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -28,17 +27,15 @@ public ResourceLocation getID() { public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { BlockEntity blockEntity = level.getBlockEntity(iProbeHitData.getPos()); - int paintingColor = -1; - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { - paintingColor = machineBlockEntity.getMetaMachine().getPaintingColor(); - } else if (blockEntity instanceof PipeBlockEntity pipe) { - paintingColor = pipe.getPaintingColor(); - } - if (paintingColor != -1) { - IProbeInfo horizontal = iProbeInfo - .horizontal(iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontal.mcText(Component.translatable("gtceu.top.stained", - String.format("#%06X", paintingColor))); + if (!(blockEntity instanceof IPaintable paintable)) { + return; } + + int paintingColor = paintable.getPaintingColor(); + + IProbeInfo horizontal = iProbeInfo.horizontal(iProbeInfo + .defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + horizontal.mcText(Component.translatable("gtceu.top.stained", String.format("#%06X", paintingColor)) + .withStyle(style -> style.withColor(paintingColor))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java b/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java index 2c098b9c6a9..1de483faedc 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/BreadthFirstBlockSearch.java @@ -3,15 +3,19 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Tuple; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.util.TriPredicate; import it.unimi.dsi.fastutil.objects.ObjectArrayFIFOQueue; import org.apache.commons.lang3.tuple.ImmutableTriple; import org.apache.commons.lang3.tuple.Triple; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.BiPredicate; +import java.util.function.Function; import java.util.function.Predicate; public class BreadthFirstBlockSearch { @@ -55,8 +59,15 @@ public static Collection getNeighbors(BlockPos pos) { public static Set conditionalBlockEntitySearch(Class clazz, T start, TriPredicate condition, int blockLimit, int iterationLimit) { - var level = start.getLevel(); - if (level == null) return Set.of(); + return conditionalSearch(clazz, start, start.getLevel(), + BlockEntity::getBlockPos, condition, blockLimit, iterationLimit); + } + + public static Set conditionalSearch(Class clazz, T start, @Nullable Level level, + Function posGetter, + TriPredicate condition, + int blockLimit, int iterationLimit) { + if (level == null) return Collections.emptySet(); var passed = new LinkedHashSet(); var queue = new ObjectArrayFIFOQueue>(16); @@ -69,10 +80,10 @@ public static Set conditionalBlockEntitySearch(Class< if (passed.contains(next)) { continue; } - if (condition.test(tuple.getLeft(), tuple.getMiddle(), tuple.getRight())) { + if (condition.test(tuple.getLeft(), next, tuple.getRight())) { passed.add(next); - for (var direction : Direction.values()) { - var neighbor = level.getBlockEntity(next.getBlockPos().relative(direction)); + for (var direction : GTUtil.DIRECTIONS) { + var neighbor = level.getBlockEntity(posGetter.apply(next).relative(direction)); if (!clazz.isInstance(neighbor)) continue; T casted = clazz.cast(neighbor); if (passed.contains(casted)) continue; From 19bd0cedfb56539089ca6f9e690c51554329560b Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sun, 6 Jul 2025 11:52:20 +0200 Subject: [PATCH 108/270] restrict pipe connection from neighbor (#3329) --- .../gtceu/common/blockentity/LaserPipeBlockEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java index 0d35e2cd4bd..23b618fc55f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/common/blockentity/LaserPipeBlockEntity.java @@ -164,7 +164,7 @@ public boolean canAttachTo(Direction side) { @Override public void setConnection(Direction side, boolean connected, boolean fromNeighbor) { - if (!getLevel().isClientSide && connected && !fromNeighbor) { + if (!getLevel().isClientSide && connected) { int connections = getConnections(); // block connection if any side other than the requested side and its opposite side are already connected. connections &= ~(1 << side.ordinal()); From 94c67e018111fbebdef986d1d5d4bede7a19754b Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 6 Jul 2025 14:39:09 +0300 Subject: [PATCH 109/270] Stop sending neighbor updates for all active blocks in a multi (#3326) --- .../gtceu/api/block/ActiveBlock.java | 11 ++++ .../multiblock/WorkableMultiblockMachine.java | 7 +-- .../gtceu/api/pattern/MultiblockState.java | 2 +- .../api/pattern/MultiblockWorldSavedData.java | 19 +++---- .../gtceu/api/pattern/Predicates.java | 4 +- .../gtceu/core/mixins/ChunkMixin.java | 46 ---------------- .../gtceu/core/mixins/LevelMixin.java | 53 +++++++++++++------ src/main/resources/gtceu.mixins.json | 1 - 8 files changed, 61 insertions(+), 82 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java index c8135ea3ac1..1bdbcd6e2df 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java @@ -8,6 +8,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.Property; + +import org.jetbrains.annotations.ApiStatus; import javax.annotation.ParametersAreNonnullByDefault; @@ -28,6 +31,10 @@ protected void createBlockStateDefinition(StateDefinition.Builder getCache() { - return cache.stream().map(BlockPos::of).collect(Collectors.toList()); + return cache.longStream().mapToObj(BlockPos::of).collect(Collectors.toSet()); } public void onBlockStateChanged(BlockPos pos, BlockState state) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java index 3d0be413e64..5dc845df58c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockWorldSavedData.java @@ -18,11 +18,9 @@ public class MultiblockWorldSavedData extends SavedData { - private final ServerLevel serverLevel; - public static MultiblockWorldSavedData getOrCreate(ServerLevel serverLevel) { - return serverLevel.getDataStorage().computeIfAbsent(tag -> new MultiblockWorldSavedData(serverLevel, tag), - () -> new MultiblockWorldSavedData(serverLevel), "gtceu_multiblock"); + return serverLevel.getDataStorage() + .computeIfAbsent(MultiblockWorldSavedData::new, MultiblockWorldSavedData::new, "gtceu_multiblock"); } /** @@ -34,18 +32,17 @@ public static MultiblockWorldSavedData getOrCreate(ServerLevel serverLevel) { */ public final Map> chunkPosMapping; - private MultiblockWorldSavedData(ServerLevel serverLevel) { - this.serverLevel = serverLevel; + private MultiblockWorldSavedData() { this.mapping = new Object2ObjectOpenHashMap<>(); this.chunkPosMapping = new HashMap<>(); } - private MultiblockWorldSavedData(ServerLevel serverLevel, CompoundTag tag) { - this(serverLevel); + private MultiblockWorldSavedData(CompoundTag tag) { + this(); } - public MultiblockState[] getControllerInChunk(ChunkPos chunkPos) { - return chunkPosMapping.getOrDefault(chunkPos, Collections.emptySet()).toArray(MultiblockState[]::new); + public Set getControllersInChunk(ChunkPos chunkPos) { + return chunkPosMapping.getOrDefault(chunkPos, Collections.emptySet()); } public void addMapping(MultiblockState state) { @@ -53,7 +50,6 @@ public void addMapping(MultiblockState state) { for (BlockPos blockPos : state.getCache()) { chunkPosMapping.computeIfAbsent(new ChunkPos(blockPos), c -> new HashSet<>()).add(state); } - setDirty(true); } public void removeMapping(MultiblockState state) { @@ -61,7 +57,6 @@ public void removeMapping(MultiblockState state) { for (Set set : chunkPosMapping.values()) { set.remove(state); } - setDirty(true); } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index 8b008342c64..9d3c2b608c2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -49,8 +49,8 @@ public static TraceabilityPredicate states(BlockState... allowedStates) { var candidates = new ArrayList(); for (BlockState state : allowedStates) { candidates.add(state); - if (state.getBlock() instanceof ActiveBlock block) { - candidates.add(block.changeActive(state, !block.isActive(state))); + if (state.hasProperty(ActiveBlock.ACTIVE)) { + candidates.add(state.setValue(ActiveBlock.ACTIVE, !state.getValue(ActiveBlock.ACTIVE))); } } return new TraceabilityPredicate(new PredicateStates(candidates.toArray(BlockState[]::new))); diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java deleted file mode 100644 index 9f6a304d80c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ChunkMixin.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; - -import net.minecraft.core.BlockPos; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunk; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(LevelChunk.class) -public class ChunkMixin { - - @Final - @Shadow - Level level; - - // We want to be as quick as possible here - @Inject(method = "setBlockState", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/level/block/state/BlockState;hasBlockEntity()Z", - ordinal = 2)) - private void gtceu$onChunkChanged(BlockPos pos, BlockState state, boolean isMoving, - CallbackInfoReturnable cir) { - MinecraftServer server = level.getServer(); - if (server != null) { - if (level instanceof ServerLevel serverLevel) { - for (var structure : MultiblockWorldSavedData.getOrCreate(serverLevel) - .getControllerInChunk(((LevelChunk) (Object) this).getPos())) { - if (structure.isPosInCache(pos)) { - server.executeBlocking(() -> structure.onBlockStateChanged(pos, state)); - } - } - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index 2d80a249d78..b02242dc89d 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -5,6 +5,7 @@ import com.lowdragmc.lowdraglib.async.AsyncThreadData; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.entity.BlockEntity; @@ -12,11 +13,14 @@ import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Level.class) @@ -30,31 +34,46 @@ public abstract class LevelMixin implements LevelAccessor { @Final private Thread thread; - @Shadow - public abstract boolean isLoaded(BlockPos pPos); + @Unique + private @Nullable ChunkAccess gtceu$maybeGetChunkAsync(int chunkX, int chunkZ) { + if (this.isClientSide) return null; + if (Thread.currentThread() == this.thread) return null; + if (!MultiblockWorldSavedData.isThreadService() && !AsyncThreadData.isThreadService()) return null; + if (!this.getChunkSource().hasChunk(chunkX, chunkZ)) return null; - private ChunkAccess getChunkNow(int pX, int pZ) { - return this.getChunkSource().getChunkNow(pX, pZ); + return this.getChunkSource().getChunkNow(chunkX, chunkZ); } @Inject(method = "getBlockEntity", at = @At(value = "HEAD"), cancellable = true) - private void getTileEntity(BlockPos pos, CallbackInfoReturnable cir) { - if (!this.isClientSide && Thread.currentThread() != this.thread && - (MultiblockWorldSavedData.isThreadService() || AsyncThreadData.isThreadService()) && isLoaded(pos)) { - ChunkAccess chunk = this.getChunkNow(pos.getX() >> 4, pos.getZ() >> 4); - if (chunk instanceof LevelChunk levelChunk) { - cir.setReturnValue(levelChunk.getBlockEntities().get(pos)); - } + private void gtceu$getBlockEntityOffThread(BlockPos pos, CallbackInfoReturnable cir) { + ChunkAccess chunk = gtceu$maybeGetChunkAsync(pos.getX() >> 4, pos.getZ() >> 4); + if (chunk instanceof LevelChunk levelChunk) { + cir.setReturnValue(levelChunk.getBlockEntities().get(pos)); } } @Inject(method = "getBlockState", at = @At(value = "HEAD"), cancellable = true) - private void getBlockState(BlockPos pos, CallbackInfoReturnable cir) { - if (!this.isClientSide && Thread.currentThread() != this.thread && - (MultiblockWorldSavedData.isThreadService() || AsyncThreadData.isThreadService()) && isLoaded(pos)) { - ChunkAccess chunk = this.getChunkNow(pos.getX() >> 4, pos.getZ() >> 4); - if (chunk != null) { - cir.setReturnValue(chunk.getBlockState(pos)); + private void gtceu$getBlockStateOffThread(BlockPos pos, CallbackInfoReturnable cir) { + ChunkAccess chunk = gtceu$maybeGetChunkAsync(pos.getX() >> 4, pos.getZ() >> 4); + if (chunk != null) { + cir.setReturnValue(chunk.getBlockState(pos)); + } + } + + @SuppressWarnings("ConstantValue") + @Inject(method = "markAndNotifyBlock", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/level/Level;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"), + remap = false) + private void gtceu$updateChunkMultiblocks(BlockPos pos, LevelChunk chunk, + BlockState oldState, BlockState newState, int flags, int recursionLeft, + CallbackInfo ci) { + if (!(((Object) this) instanceof ServerLevel serverLevel)) return; + + MultiblockWorldSavedData mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); + for (var structure : mwsd.getControllersInChunk(chunk.getPos())) { + if (structure.isPosInCache(pos)) { + serverLevel.getServer().executeBlocking(() -> structure.onBlockStateChanged(pos, newState)); } } } diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 4e5a21b54a0..69636e87448 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -34,7 +34,6 @@ "BlockMixin", "BlockPropertiesAccessor", "ChunkGeneratorMixin", - "ChunkMixin", "EntityMixin", "IFoliagePlacerTypeAccessor", "IngredientAccessor", From e973d4ebb2f3e9f4b5fb4b359515236250fe26bd Mon Sep 17 00:00:00 2001 From: PSR2144-3933 <69028157+PSR2144-3933@users.noreply.github.com> Date: Sun, 6 Jul 2025 19:39:23 +0800 Subject: [PATCH 110/270] Fix armor charging causing a crash if the offhand item is switched repeatedly (#3322) --- .../java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java index 429b6cca85e..1c189a0e068 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java @@ -104,7 +104,7 @@ public static List, IntList>> getChargeableItem(Play } if (isPossibleToCharge(offHand) && offHandItem.getTier() <= tier) { - inventorySlotMap.add(Pair.of(player.getInventory().offhand, IntList.of(0))); + inventorySlotMap.add(Pair.of(player.getInventory().offhand, new IntArrayList(new int[] { 0 }))); } return inventorySlotMap; From 5c18ed9361126a9d7eee536b6a73eab3ea412566 Mon Sep 17 00:00:00 2001 From: MatthiasMann Date: Sun, 6 Jul 2025 13:39:54 +0200 Subject: [PATCH 111/270] add CC support for getting a machine's recipe progress and turning them on/off (#3323) --- .../cctweaked/CCTweakedPlugin.java | 4 +++ .../peripherals/ControllablePeripheral.java | 29 +++++++++++++++++++ .../peripherals/WorkablePeripheral.java | 29 +++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java index be53644793b..7aae893da42 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -9,7 +9,11 @@ public class CCTweakedPlugin { public static void init() { + ComputerCraftAPI.registerGenericSource(new ControllablePeripheral()); ComputerCraftAPI.registerGenericSource(new EnergyInfoPeripheral()); + ComputerCraftAPI.registerGenericSource(new WorkablePeripheral()); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_CONTROLLABLE); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_WORKABLE); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java new file mode 100644 index 00000000000..c70ca17d6a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/ControllablePeripheral.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IControllable; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class ControllablePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:workable"; + } + + @LuaFunction + public static MethodResult isWorkingEnabled(IControllable controllable) { + return MethodResult.of(controllable.isWorkingEnabled()); + } + + @LuaFunction + public static void setWorkingEnabled(IControllable controllable, boolean enabled) { + controllable.setWorkingEnabled(enabled); + } + + @LuaFunction + public static void setSuspendAfterFinish(IControllable controllable, boolean suspendAfterFinish) { + controllable.setSuspendAfterFinish(suspendAfterFinish); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java new file mode 100644 index 00000000000..58f969208b4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/WorkablePeripheral.java @@ -0,0 +1,29 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.IWorkable; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class WorkablePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:workable"; + } + + @LuaFunction + public static MethodResult getProgress(IWorkable workable) { + return MethodResult.of(workable.getProgress()); + } + + @LuaFunction + public static MethodResult getMaxProgress(IWorkable workable) { + return MethodResult.of(workable.getMaxProgress()); + } + + @LuaFunction + public static MethodResult isActive(IWorkable workable) { + return MethodResult.of(workable.isActive()); + } +} From 6f3c55f58ba6a314e6ad9f39962488eeb9a6023b Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 6 Jul 2025 05:40:27 -0600 Subject: [PATCH 112/270] Multi Amp Recipes (#3299) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_ud.json | 3 +- .../resources/assets/gtceu/lang/en_us.json | 3 +- .../com/gregtechceu/gtceu/api/GTValues.java | 55 +++--- .../capability/recipe/EURecipeCapability.java | 38 ++-- .../capability/recipe/RecipeCapability.java | 5 + .../gtceu/api/codec/GTCodecUtils.java | 35 ++++ .../api/gui/fancy/ConfiguratorPanel.java | 2 +- .../gtceu/api/gui/widget/ButtonWidget.java | 41 ++++ .../gui/widget/PredicatedButtonWidget.java | 1 - .../api/machine/SimpleGeneratorMachine.java | 7 +- .../api/machine/WorkableTieredMachine.java | 21 +- .../steam/SteamEnergyRecipeHandler.java | 11 +- .../api/machine/trait/ICapabilityTrait.java | 4 +- .../trait/NotifiableEnergyContainer.java | 68 ++++--- .../trait/RecipeAmperageEnergyContainer.java | 51 +++++ .../api/machine/trait/RecipeHandlerList.java | 2 +- .../gtceu/api/machine/trait/RecipeLogic.java | 4 +- .../gtceu/api/misc/EnergyContainerList.java | 51 +++-- .../api/misc/IgnoreEnergyRecipeHandler.java | 9 +- .../gtceu/api/recipe/GTRecipe.java | 40 ++-- .../gtceu/api/recipe/GTRecipeSerializer.java | 1 + .../gtceu/api/recipe/OverclockingLogic.java | 2 +- .../gtceu/api/recipe/RecipeHelper.java | 57 +++++- .../gtceu/api/recipe/RecipeRunner.java | 7 +- .../recipe/content/IContentSerializer.java | 39 +--- .../recipe/content/SerializerBigInteger.java | 11 +- .../recipe/content/SerializerBlockState.java | 40 +--- .../recipe/content/SerializerEnergyStack.java | 53 +++++ .../api/recipe/ingredient/EnergyStack.java | 187 ++++++++++++++++++ .../api/recipe/modifier/ModifierFunction.java | 7 +- .../gtceu/api/recipe/ui/GTRecipeTypeUI.java | 2 +- .../gtceu/common/data/GCYMRecipeTypes.java | 2 +- .../common/data/GTRecipeCapabilities.java | 3 +- .../gtceu/common/data/GTRecipeModifiers.java | 3 +- .../gtceu/common/data/GTRecipeTypes.java | 54 +++-- .../common/item/PortableScannerBehavior.java | 16 +- .../electric/ActiveTransformerMachine.java | 4 +- .../electric/PowerSubstationMachine.java | 4 +- .../LargeCombustionEngineMachine.java | 17 +- .../generator/LargeTurbineMachine.java | 11 +- .../primitive/PrimitivePumpMachine.java | 2 +- .../steam/SteamParallelMultiblockMachine.java | 2 +- .../machine/trait/miner/MinerLogic.java | 2 +- .../gtceu/config/ConfigHolder.java | 4 +- .../gtceu/data/lang/LangHandler.java | 3 +- .../gtceu/data/recipe/RecipeUtil.java | 36 ---- .../data/recipe/builder/GTRecipeBuilder.java | 40 ++-- .../jade/provider/RecipeLogicProvider.java | 37 ++-- .../integration/kjs/GregTechKubeJSPlugin.java | 6 + .../kjs/builders/GTRecipeTypeBuilder.java | 2 +- .../kjs/recipe/GTRecipeSchema.java | 32 ++- .../integration/kjs/recipe/KJSHelpers.java | 107 ++++++++++ .../recipe/components/GTRecipeComponents.java | 29 ++- .../top/provider/RecipeLogicInfoProvider.java | 52 ++--- .../xei/widgets/GTRecipeWidget.java | 58 +++--- 55 files changed, 908 insertions(+), 475 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index cadc661081f..648aafee9d0 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3418,7 +3418,6 @@ "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", "gtceu.pyrolyse_oven": "uǝʌO ǝsʎןoɹʎԀ", - "gtceu.recipe.amperage": "%s :ǝbɐɹǝdɯⱯ", "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɐɯsɐןԀ", "gtceu.recipe.category.chem_dyes": "buıǝʎᗡ ןɐɔıɯǝɥƆ", "gtceu.recipe.category.extractor_recycling": "buıʇןǝɯǝᴚ dɐɹɔS", @@ -3448,6 +3447,8 @@ "gtceu.recipe.temperature": "ʞ%s :dɯǝ⟘", "gtceu.recipe.total": "∩Ǝ %s :ןɐʇo⟘", "gtceu.recipe.total_computation": "∩MƆ %s :uoıʇɐʇndɯoƆ", + "gtceu.recipe.total_eu": "ʇ/∩Ǝ %s :ǝbɐs∩ ןɐʇo⟘", + "gtceu.recipe.voltage": "Ɐ %s @ Λ %s :ǝbɐʇןoΛ", "gtceu.recipe_logic.condition_fails": "sןıɐℲ uoıʇıpuoƆ", "gtceu.recipe_logic.insufficient_fuel": "ןǝnℲ ʇuǝıɔıɟɟnsuI", "gtceu.recipe_logic.insufficient_in": "sʇnduI ʇuǝıɔıɟɟnsuI", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 90bde8e12ba..2faf4a6757f 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3418,7 +3418,6 @@ "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", "gtceu.pyrolyse_oven": "Pyrolyse Oven", - "gtceu.recipe.amperage": "Amperage: %s", "gtceu.recipe.category.arc_furnace_recycling": "Plasma Scrapping", "gtceu.recipe.category.chem_dyes": "Chemical Dyeing", "gtceu.recipe.category.extractor_recycling": "Scrap Remelting", @@ -3448,6 +3447,8 @@ "gtceu.recipe.temperature": "Temp: %sK", "gtceu.recipe.total": "Total: %s EU", "gtceu.recipe.total_computation": "Computation: %s CWU", + "gtceu.recipe.total_eu": "Total Usage: %s EU/t", + "gtceu.recipe.voltage": "Voltage: %s V @ %s A", "gtceu.recipe_logic.condition_fails": "Condition Fails", "gtceu.recipe_logic.insufficient_fuel": "Insufficient Fuel", "gtceu.recipe_logic.insufficient_in": "Insufficient Inputs", diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index e3ce2b38e50..e84d9d1c023 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -6,6 +6,7 @@ import java.time.Month; import java.util.Arrays; import java.util.function.BooleanSupplier; +import java.util.function.IntFunction; import static net.minecraft.ChatFormatting.*; @@ -141,6 +142,12 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { public static final String[] VN = new String[] { "ULV", "LV", "MV", "HV", "EV", "IV", "LuV", "ZPM", "UV", "UHV", "UEV", "UIV", "UXV", "OpV", "MAX" }; + public static final IntFunction MAX_PLUS_FORMAT = (value) -> "" + RED + BOLD + "M" + + GREEN + BOLD + "A" + + BLUE + BOLD + "X" + + YELLOW + BOLD + "+" + + RED + BOLD + value; + /** * The short names for the voltages, formatted for text */ @@ -160,38 +167,22 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { YELLOW + "UXV", BLUE.toString() + BOLD + "OpV", RED.toString() + BOLD + "MAX", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "1", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "2", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "3", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "4", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "5", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "6", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "7", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "8", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "9", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "10", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "11", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "12", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "13", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "14", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "15", - RED.toString() + BOLD + "M" + GREEN + BOLD + "A" + BLUE + BOLD + "X" + YELLOW + BOLD + "+" + RED + BOLD + - "16", + MAX_PLUS_FORMAT.apply(1), + MAX_PLUS_FORMAT.apply(2), + MAX_PLUS_FORMAT.apply(3), + MAX_PLUS_FORMAT.apply(4), + MAX_PLUS_FORMAT.apply(5), + MAX_PLUS_FORMAT.apply(6), + MAX_PLUS_FORMAT.apply(7), + MAX_PLUS_FORMAT.apply(8), + MAX_PLUS_FORMAT.apply(9), + MAX_PLUS_FORMAT.apply(10), + MAX_PLUS_FORMAT.apply(11), + MAX_PLUS_FORMAT.apply(12), + MAX_PLUS_FORMAT.apply(13), + MAX_PLUS_FORMAT.apply(14), + MAX_PLUS_FORMAT.apply(15), + MAX_PLUS_FORMAT.apply(16), }; public static final String[] VCF = new String[] { diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java index 085cd645345..c518228571c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/EURecipeCapability.java @@ -6,44 +6,39 @@ import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; -import com.gregtechceu.gtceu.api.recipe.content.SerializerLong; +import com.gregtechceu.gtceu.api.recipe.content.SerializerEnergyStack; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.utils.GTMath; import it.unimi.dsi.fastutil.longs.LongList; -import java.util.Collection; import java.util.List; import java.util.Map; -public class EURecipeCapability extends RecipeCapability { +public class EURecipeCapability extends RecipeCapability { public final static EURecipeCapability CAP = new EURecipeCapability(); protected EURecipeCapability() { - super("eu", 0xFFFFFF00, false, 2, SerializerLong.INSTANCE); + super("eu", 0xFFFFFF00, false, 2, SerializerEnergyStack.INSTANCE); } @Override - public Long copyInner(Long content) { + public EnergyStack copyInner(EnergyStack content) { return content; } @Override - public Long copyWithModifier(Long content, ContentModifier modifier) { - return modifier.apply(content); - } - - @Override - public List compressIngredients(Collection ingredients) { - return List.of(ingredients.stream().map(Long.class::cast).reduce(0L, Long::sum)); + public EnergyStack copyWithModifier(EnergyStack content, ContentModifier modifier) { + return content.withVoltage(modifier.apply(content.voltage())); } @Override public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe recipe, int multiplier, boolean tick) { if (holder instanceof ICustomParallel p) return p.limitEUParallel(recipe, multiplier, tick); if (tick) { - long recipeEUt = recipe.getOutputEUt(); + long recipeEUt = recipe.getOutputEUt().getTotalEU(); if (recipeEUt == 0) return multiplier; long maxVoltage = Long.MAX_VALUE; @@ -66,7 +61,7 @@ public int limitMaxParallelByOutput(IRecipeCapabilityHolder holder, GTRecipe rec int maxMultiplier = multiplier; long totalEU = 0L; - for (var content : outputs) totalEU += of(content.content); + for (var content : outputs) totalEU += of(content.content).getTotalEU(); if (totalEU != 0 && multiplier > Long.MAX_VALUE / totalEU) { maxMultiplier = multiplier = GTMath.saturatedCast(Long.MAX_VALUE / totalEU); } @@ -98,7 +93,7 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe maxVoltage = tieredMachine.getMaxVoltage(); } - long recipeEUt = recipe.getInputEUt(); + long recipeEUt = recipe.getInputEUt().getTotalEU(); if (recipeEUt == 0) return limit; return Math.min(limit, Math.abs(GTMath.saturatedCast(maxVoltage / recipeEUt))); } else { @@ -109,9 +104,9 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe long nonConsumable = 0; long consumable = 0; for (Content content : inputs) { - long l = of(content.content); - if (content.chance == 0) nonConsumable += l; - else consumable += l; + EnergyStack s = of(content.content); + if (content.chance == 0) nonConsumable += s.getTotalEU(); + else consumable += s.getTotalEU(); } if (nonConsumable == 0 && consumable == 0) return limit; @@ -119,7 +114,8 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe long sum = 0; for (var handler : holder.getCapabilitiesFlat(IO.IN, this)) { for (var content : handler.getContents()) { - if (content instanceof Long l) sum += l; + if (content instanceof EnergyStack es) sum += es.getTotalEU(); + else if (content instanceof Long l) sum += l; } } @@ -135,7 +131,7 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe * @param eu EU/t value to put in the Content * @return Singleton list of a new Content with the given EU value */ - public static List makeEUContent(Long eu) { + public static List makeEUContent(EnergyStack eu) { return List.of( new Content(eu, ChanceLogic.getMaxChancedValue(), ChanceLogic.getMaxChancedValue(), 0)); } @@ -146,7 +142,7 @@ public static List makeEUContent(Long eu) { * @param contents content map * @param eu EU value to put inside content map */ - public static void putEUContent(Map, List> contents, long eu) { + public static void putEUContent(Map, List> contents, EnergyStack eu) { contents.put(EURecipeCapability.CAP, makeEUContent(eu)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index 10f0cf0d33f..388689526b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -13,6 +13,7 @@ import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -57,6 +58,10 @@ public static Codec> contentCodec(RecipeCapability capability) return Content.codec(capability).listOf(); } + public Tag contentToNbt(Object value) { + return this.serializer.toNbt(this.of(value)); + } + /** * deep copy of this content. recipe need it for searching and such things */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java b/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java new file mode 100644 index 00000000000..a3ae378ca3b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/codec/GTCodecUtils.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.api.codec; + +import net.minecraft.util.ExtraCodecs; + +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; + +import java.util.function.Function; + +public class GTCodecUtils { + + public static final Codec NON_NEGATIVE_LONG = longRangeWithMessage(0, Long.MAX_VALUE, + (val) -> "Value must be non-negative: " + val); + public static final Codec POSITIVE_LONG = longRangeWithMessage(1, Long.MAX_VALUE, + (val) -> "Value must be positive: " + val); + + public static Codec longRangeWithMessage(long min, long max, Function errorMessage) { + return ExtraCodecs.validate(Codec.LONG, (val) -> { + if (val.compareTo(min) >= 0 && val.compareTo(max) <= 0) { + return DataResult.success(val); + } else { + return DataResult.error(() -> errorMessage.apply(val)); + } + }); + } + + public static Codec longRange(long min, long max) { + return longRangeWithMessage(min, max, (val) -> "Value must be within range [" + min + ";" + max + "]: " + val); + } + + public static T unboxEither(Either either) { + return either.map(Function.identity(), Function.identity()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java index 6ab93be46bc..0fb46ba9651 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.gui.fancy; import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.ButtonWidget; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.animation.Animation; @@ -8,7 +9,6 @@ import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.TextTexture; import com.lowdragmc.lowdraglib.gui.util.ClickData; -import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java new file mode 100644 index 00000000000..e5b2952804b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; + +import com.lowdragmc.lowdraglib.gui.editor.annotation.LDLRegister; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.util.ClickData; + +import java.util.function.Consumer; + +@LDLRegister(name = "button", group = "widget.basic") +public class ButtonWidget extends com.lowdragmc.lowdraglib.gui.widget.ButtonWidget { + + public ButtonWidget() { + this(0, 0, 40, 20, GuiTextures.BUTTON, null); + } + + public ButtonWidget(int xPosition, int yPosition, int width, int height, + IGuiTexture buttonTexture, Consumer onPressed) { + super(xPosition, yPosition, width, height, buttonTexture, onPressed); + } + + public ButtonWidget(int xPosition, int yPosition, int width, int height, Consumer onPressed) { + super(xPosition, yPosition, width, height, onPressed); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (isMouseOverElement(mouseX, mouseY)) { + isClicked = true; + ClickData clickData = new ClickData(); + writeClientAction(1, clickData::writeToBuf); + if (onPressCallback != null) { + onPressCallback.accept(clickData); + } + playButtonClickSound(); + return true; + } + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java index 11b8e95e682..25ab9e90017 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java @@ -2,7 +2,6 @@ import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.util.ClickData; -import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import net.minecraft.network.FriendlyByteBuf; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index 13e04aab8a6..d61cafe6651 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -70,11 +70,6 @@ protected boolean isEnergyEmitter() { return true; } - @Override - protected long getMaxInputOutputAmperage() { - return 1L; - } - @Override public int tintColor(int index) { if (index == 2) { @@ -101,7 +96,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not if (!(machine instanceof SimpleGeneratorMachine generator)) { return RecipeModifier.nullWrongType(SimpleGeneratorMachine.class, machine); } - long EUt = recipe.getOutputEUt(); + long EUt = recipe.getOutputEUt().getTotalEU(); if (EUt <= 0) return ModifierFunction.NULL; int maxParallel = (int) (generator.getOverclockVoltage() / EUt); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 59933e34236..cdfe1dea696 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -105,19 +105,11 @@ public ManagedFieldHolder getFieldHolder() { protected NotifiableEnergyContainer createEnergyContainer(Object... args) { long tierVoltage = GTValues.V[getTier()]; if (isEnergyEmitter()) { - return NotifiableEnergyContainer.emitterContainer(this, - tierVoltage * 64L, tierVoltage, getMaxInputOutputAmperage()); + return RecipeAmperageEnergyContainer.makeEmitterContainer(this, tierVoltage * 64L, + tierVoltage, getMaxInputOutputAmperage()); } else { - return new NotifiableEnergyContainer(this, tierVoltage * 64L, tierVoltage, 2, 0L, 0L) { - - @Override - public long getInputAmperage() { - if (getEnergyCapacity() / 2 > getEnergyStored() && recipeLogic.isActive()) { - return 2; - } - return 1; - } - }; + return RecipeAmperageEnergyContainer.makeReceiverContainer(this, tierVoltage * 64L, + tierVoltage, getMaxInputOutputAmperage()); } } @@ -188,11 +180,6 @@ public void onUnload() { // ********** MISC ***********// ////////////////////////////////////// - @Override - protected long getMaxInputOutputAmperage() { - return 2L; - } - @Override public void onMachineRemoved() { clearInventory(importItems.storage); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java index 50f090447b0..797bc10387a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.utils.GTMath; @@ -18,7 +19,7 @@ import java.util.Collections; import java.util.List; -public class SteamEnergyRecipeHandler implements IRecipeHandler { +public class SteamEnergyRecipeHandler implements IRecipeHandler { private final NotifiableFluidTank steamTank; private final double conversionRate; // mB steam per EU @@ -29,8 +30,8 @@ public SteamEnergyRecipeHandler(NotifiableFluidTank steamTank, double conversion } @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { - long eut = left.stream().reduce(0L, Long::sum); + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + long eut = left.stream().reduce(EnergyStack.EMPTY, EnergyStack::sum).getTotalEU(); int totalSteam = GTMath.saturatedCast((long) Math.ceil(eut * conversionRate)); if (totalSteam > 0) { var steam = io == IO.IN ? FluidIngredient.of(GTMaterials.Steam.getFluidTag(), totalSteam) : @@ -41,7 +42,7 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List left, boo if (leftSteam == null || leftSteam.isEmpty()) return null; eut = (long) (leftSteam.get(0).getAmount() / conversionRate); } - return eut <= 0 ? null : Collections.singletonList(eut); + return eut <= 0 ? null : Collections.singletonList(new EnergyStack(eut)); } @Override @@ -72,7 +73,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java index 538fb298be4..9498f67203d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/ICapabilityTrait.java @@ -7,10 +7,10 @@ public interface ICapabilityTrait { IO getCapabilityIO(); default boolean canCapInput() { - return getCapabilityIO() == IO.IN || getCapabilityIO() == IO.BOTH; + return getCapabilityIO().support(IO.IN); } default boolean canCapOutput() { - return getCapabilityIO() == IO.OUT || getCapabilityIO() == IO.BOTH; + return getCapabilityIO().support(IO.OUT); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java index 27b6effd8d0..a8cf22eccad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableEnergyContainer.java @@ -11,7 +11,9 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IExplosionMachine; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -32,7 +34,7 @@ import java.util.List; import java.util.function.Predicate; -public class NotifiableEnergyContainer extends NotifiableRecipeHandlerTrait implements IEnergyContainer { +public class NotifiableEnergyContainer extends NotifiableRecipeHandlerTrait implements IEnergyContainer { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( NotifiableEnergyContainer.class, NotifiableRecipeHandlerTrait.MANAGED_FIELD_HOLDER); @@ -174,7 +176,7 @@ public void serverTick() { if (energyContainer != null && energyContainer.inputsEnergy(oppositeSide)) { amperesUsed += energyContainer.acceptEnergyFromNetwork(oppositeSide, outputVoltage, outputAmperes - amperesUsed); - if (amperesUsed == outputAmperes) break; + if (amperesUsed >= outputAmperes) break; } } if (amperesUsed > 0) { @@ -211,17 +213,17 @@ public boolean dischargeOrRechargeEnergyContainers(IItemHandlerModifiable itemHa } private boolean handleElectricItem(IElectricItem electricItem, boolean simulate) { - var machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); - var chargeTier = Math.min(machineTier, electricItem.getTier()); - var chargePercent = getEnergyStored() / (getEnergyCapacity() * 1.0); + int machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); + int chargeTier = Math.min(machineTier, electricItem.getTier()); + double chargePercent = (double) getEnergyStored() / (getEnergyCapacity() * 1.0); // Check if the item is a battery (or similar), and if we can receive some amount of energy if (electricItem.canProvideChargeExternally() && getEnergyCanBeInserted() > 0) { - // Drain from the battery if we are below half energy capacity, and if the tier matches - if (chargePercent <= 0.5 && chargeTier == machineTier) { - long dischargedBy = electricItem.discharge(getEnergyCanBeInserted(), machineTier, false, true, - simulate); + // Drain from the battery if we are below 1/3rd energy capacity, and if the tier matches + if (chargePercent <= 0.33 && chargeTier == machineTier) { + long dischargedBy = electricItem.discharge(getEnergyCanBeInserted(), machineTier, + false, true, simulate); if (!simulate) { addEnergy(dischargedBy); } @@ -229,9 +231,9 @@ private boolean handleElectricItem(IElectricItem electricItem, boolean simulate) } } - // Else, check if we have above 65% power - if (chargePercent > 0.65) { - long chargedBy = electricItem.charge(getEnergyStored(), chargeTier, false, simulate); + // Else, check if we have above 2/3rds charge + if (chargePercent > 0.66) { + long chargedBy = electricItem.charge(getEnergyStored(), chargeTier, false, false); if (!simulate) { removeEnergy(chargedBy); } @@ -244,7 +246,7 @@ private boolean handleForgeEnergyItem(IEnergyStorage energyStorage, boolean simu int machineTier = GTUtil.getTierByVoltage(Math.max(getInputVoltage(), getOutputVoltage())); double chargePercent = getEnergyStored() / (getEnergyCapacity() * 1.0); - if (chargePercent > 0.65) { // 2/3rds full + if (chargePercent > 0.66) { // 2/3rds full long chargedBy = FeCompat.insertEu(energyStorage, GTValues.V[machineTier], simulate); if (!simulate) { removeEnergy(chargedBy); @@ -303,28 +305,38 @@ public long changeEnergy(long energyToAdd) { } @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { - IEnergyContainer capability = this; - long sum = left.stream().reduce(0L, Long::sum); - if (io == IO.IN) { - var canOutput = capability.getEnergyStored(); - if (!simulate) { - capability.addEnergy(-Math.min(canOutput, sum)); + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + for (var it = left.listIterator(); it.hasNext();) { + EnergyStack stack = it.next(); + if (stack.isEmpty()) { + it.remove(); + continue; } - sum = sum - canOutput; - } else if (io == IO.OUT) { - long canInput = capability.getEnergyCapacity() - capability.getEnergyStored(); + + long totalEU = stack.getTotalEU(); + long canTransfer = Math.min(totalEU, (io == IO.IN ? this.getEnergyStored() : + this.getEnergyCapacity() - this.getEnergyStored())); if (!simulate) { - capability.addEnergy(Math.min(canInput, sum)); + // invert the EU value if we're doing inputs (inputting *to the recipe* -> removing from handlers) + this.changeEnergy(io == IO.IN ? -canTransfer : canTransfer); } - sum = sum - canInput; + + totalEU -= canTransfer; + if (totalEU <= 0) { + it.remove(); + } else { + it.set(new EnergyStack(totalEU)); + } + } - return sum <= 0 ? null : Collections.singletonList(sum); + + return left.isEmpty() ? null : left; } @Override public @NotNull List getContents() { - return List.of(energyStored); + long amperage = Math.max(getInputAmperage(), getOutputAmperage()); + return Collections.singletonList(EnergyContainerList.calculateVoltageAmperage(getEnergyStored(), amperage)); } @Override @@ -333,7 +345,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java new file mode 100644 index 00000000000..ffe4e3b27c9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeAmperageEnergyContainer.java @@ -0,0 +1,51 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; + +public class RecipeAmperageEnergyContainer extends NotifiableEnergyContainer { + + protected final IRecipeLogicMachine machine; + + public RecipeAmperageEnergyContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxInputVoltage, long maxInputAmperage, + long maxOutputVoltage, long maxOutputAmperage) { + super(machine.self(), maxCapacity, maxInputVoltage, maxInputAmperage, maxOutputVoltage, maxOutputAmperage); + this.machine = machine; + } + + public static RecipeAmperageEnergyContainer makeEmitterContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxOutputVoltage, long maxOutputAmperage) { + return new RecipeAmperageEnergyContainer(machine, maxCapacity, 0L, 0L, maxOutputVoltage, maxOutputAmperage); + } + + public static RecipeAmperageEnergyContainer makeReceiverContainer(IRecipeLogicMachine machine, long maxCapacity, + long maxInputVoltage, long maxInputAmperage) { + return new RecipeAmperageEnergyContainer(machine, maxCapacity, maxInputVoltage, maxInputAmperage, 0L, 0L); + } + + @Override + public long getInputAmperage() { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + long amperage; + if (lastRecipe != null) { + amperage = lastRecipe.getInputEUt().amperage(); + } else { + amperage = super.getInputAmperage(); + } + if (getEnergyCapacity() / 2 > getEnergyStored() && machine.getRecipeLogic().isActive()) { + return amperage + 1; + } else { + return amperage; + } + } + + @Override + public long getOutputAmperage() { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + if (lastRecipe != null) { + return lastRecipe.getOutputEUt().amperage(); + } else { + return super.getOutputAmperage(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java index ae1ec8bd564..06c6d5e0719 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java @@ -86,7 +86,7 @@ public void addHandlers(Iterable> handlers) { allHandlers.add(handler); if (handler instanceof NotifiableRecipeHandlerTrait rht) allHandlerTraits.add(rht); } - if (handlerIO == IO.OUT) sort(); + if (handlerIO.support(IO.OUT)) sort(); } private void sort() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index b87572b189b..b99ecba9243 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -547,7 +547,7 @@ public void saveCustomPersistedData(@NotNull CompoundTag tag, boolean forDrop) { ListTag cacheTag = new ListTag(); for (var entry : cache.object2IntEntrySet()) { CompoundTag compoundTag = new CompoundTag(); - var obj = cap.serializer.toNbtGeneric(cap.of(entry.getKey())); + var obj = cap.contentToNbt(entry.getKey()); compoundTag.put("entry", obj); compoundTag.putInt("cached_chance", entry.getIntValue()); cacheTag.add(compoundTag); @@ -580,7 +580,7 @@ public void loadCustomPersistedData(@NotNull CompoundTag tag) { ListTag cacheTag = new ListTag(); for (var entry : cache.object2IntEntrySet()) { CompoundTag compoundTag = new CompoundTag(); - var obj = cap.serializer.toNbtGeneric(cap.of(entry.getKey())); + var obj = cap.contentToNbt(entry.getKey()); compoundTag.put("entry", obj); compoundTag.putInt("cached_chance", entry.getIntValue()); cacheTag.add(compoundTag); diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java index f4b0c6c0aaf..dc51c262b35 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.api.misc; import com.gregtechceu.gtceu.api.capability.IEnergyContainer; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import net.minecraft.core.Direction; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import java.util.List; @@ -57,12 +57,12 @@ public EnergyContainerList(List energyContainerList) } } - long[] voltageAmperage = calculateVoltageAmperage(totalInputVoltage, inputAmperage); - this.inputVoltage = voltageAmperage[0]; - this.inputAmperage = voltageAmperage[1]; + EnergyStack voltageAmperage = calculateVoltageAmperage(totalInputVoltage, inputAmperage); + this.inputVoltage = voltageAmperage.voltage(); + this.inputAmperage = voltageAmperage.amperage(); voltageAmperage = calculateVoltageAmperage(totalOutputVoltage, outputAmperage); - this.outputVoltage = voltageAmperage[0]; - this.outputAmperage = voltageAmperage[1]; + this.outputVoltage = voltageAmperage.voltage(); + this.outputAmperage = voltageAmperage.amperage(); this.highestInputVoltage = highestInputVoltage; this.numHighestInputContainers = numHighestInputContainers; } @@ -73,10 +73,9 @@ public EnergyContainerList(List energyContainerList) * @param voltage the sum of voltage * amperage for each hatch * @param amperage the total amperage of all hatches * - * @return [newVoltage, newAmperage] + * @return EnergyStack */ - @NotNull - private static long[] calculateVoltageAmperage(long voltage, long amperage) { + public static EnergyStack calculateVoltageAmperage(long voltage, long amperage) { if (voltage > 1 && amperage > 1) { // don't operate if there is no voltage or no amperage if (hasPrimeFactorGreaterThanTwo(amperage)) { @@ -104,7 +103,7 @@ private static long[] calculateVoltageAmperage(long voltage, long amperage) { amperage = 1; } } - return new long[] { voltage, amperage }; + return new EnergyStack(voltage, amperage); } private static boolean hasPrimeFactorGreaterThanTwo(long l) { @@ -133,10 +132,9 @@ private static boolean isPowerOfFour(long l) { @Override public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) { long amperesUsed = 0L; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - amperesUsed += iEnergyContainer.acceptEnergyFromNetwork(null, voltage, amperage); - if (amperage == amperesUsed) { + for (IEnergyContainer container : this.energyContainerList) { + amperesUsed += container.acceptEnergyFromNetwork(null, voltage, amperage); + if (amperesUsed >= amperage) { return amperesUsed; } } @@ -146,10 +144,9 @@ public long acceptEnergyFromNetwork(Direction side, long voltage, long amperage) @Override public long changeEnergy(long energyToAdd) { long energyAdded = 0L; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyAdded += iEnergyContainer.changeEnergy(energyToAdd - energyAdded); - if (energyAdded == energyToAdd) { + for (IEnergyContainer container : this.energyContainerList) { + energyAdded += container.changeEnergy(energyToAdd - energyAdded); + if (energyAdded >= energyToAdd) { return energyAdded; } } @@ -159,8 +156,8 @@ public long changeEnergy(long energyToAdd) { @Override public long getEnergyStored() { long energyStored = 0L; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyStored += iEnergyContainer.getEnergyStored(); + for (IEnergyContainer container : energyContainerList) { + energyStored += container.getEnergyStored(); } return energyStored; } @@ -168,8 +165,8 @@ public long getEnergyStored() { @Override public long getEnergyCapacity() { long energyCapacity = 0L; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - energyCapacity += iEnergyContainer.getEnergyCapacity(); + for (IEnergyContainer container : energyContainerList) { + energyCapacity += container.getEnergyCapacity(); } return energyCapacity; } @@ -187,9 +184,8 @@ public boolean outputsEnergy(Direction side) { @Override public long getInputPerSec() { long sum = 0; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - sum += iEnergyContainer.getInputPerSec(); + for (IEnergyContainer container : this.energyContainerList) { + sum += container.getInputPerSec(); } return sum; } @@ -197,9 +193,8 @@ public long getInputPerSec() { @Override public long getOutputPerSec() { long sum = 0; - List energyContainerList = this.energyContainerList; - for (IEnergyContainer iEnergyContainer : energyContainerList) { - sum += iEnergyContainer.getOutputPerSec(); + for (IEnergyContainer container : this.energyContainerList) { + sum += container.getOutputPerSec(); } return sum; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java index bdb2ba3e081..37ec078d7ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/IgnoreEnergyRecipeHandler.java @@ -5,21 +5,22 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import org.jetbrains.annotations.NotNull; import java.util.List; -public class IgnoreEnergyRecipeHandler implements IRecipeHandler { +public class IgnoreEnergyRecipeHandler implements IRecipeHandler { @Override - public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { + public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { return null; } @Override public @NotNull List getContents() { - return List.of(Long.MAX_VALUE); + return List.of(EnergyStack.MAX); } @Override @@ -28,7 +29,7 @@ public double getTotalContentAmount() { } @Override - public RecipeCapability getCapability() { + public RecipeCapability getCapability() { return EURecipeCapability.CAP; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index 1ca3fb2dead..81f0b88f1b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.RegistryAccess; @@ -19,7 +20,6 @@ import lombok.Setter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.Range; import java.util.*; @@ -55,8 +55,10 @@ public class GTRecipe implements net.minecraft.world.item.crafting.Recipe, List> inputs, @@ -211,30 +213,16 @@ public ChanceLogic getChanceLogicForCapability(RecipeCapability cap, IO io, b } // Technically should account for overflow but realistically not an issue. - public @Range(from = 0, to = Long.MAX_VALUE) long getInputEUt() { - if (inputEUt == -1) { - var inputs = tickInputs.get(EURecipeCapability.CAP); - if (inputs == null) return inputEUt = 0; - long eut = 0; - for (var content : inputs) { - eut += EURecipeCapability.CAP.of(content.content); - } - inputEUt = eut; - } - return inputEUt; - } - - public @Range(from = 0, to = Long.MAX_VALUE) long getOutputEUt() { - if (outputEUt == -1) { - var outputs = tickOutputs.get(EURecipeCapability.CAP); - if (outputs == null) return outputEUt = 0; - long eut = 0; - for (var content : outputs) { - eut += EURecipeCapability.CAP.of(content.content); - } - outputEUt = eut; + protected @NotNull EnergyStack calculateEUt(Map, List> contents) { + var outputs = contents.get(EURecipeCapability.CAP); + if (outputs == null) return EnergyStack.EMPTY; + long v = 0, a = 0; + for (var content : outputs) { + EnergyStack stack = EURecipeCapability.CAP.of(content.content); + v += stack.voltage(); + a += stack.amperage(); } - return outputEUt; + return new EnergyStack(v, a); } // Just check id as there *should* only ever be 1 instance of a recipe with this id. diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index a345b4c681f..97e25322cf5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -101,6 +101,7 @@ public static Map, List> tuplesToMap(List, List> inputs = tuplesToMap( buf.readCollection(c -> new ArrayList<>(), GTRecipeSerializer::entryReader)); Map, List> tickInputs = tuplesToMap( diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java index 550532d8e22..f65006995d1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/OverclockingLogic.java @@ -69,7 +69,7 @@ static OverclockingLogic create(double durationFactor, double voltageFactor, boo */ default @NotNull ModifierFunction getModifier(MetaMachine machine, GTRecipe recipe, long maxVoltage, boolean shouldParallel) { - long EUt = Math.abs(RecipeHelper.getRealEUt(recipe)); + long EUt = RecipeHelper.getRealEUt(recipe).getTotalEU(); if (EUt == 0) return ModifierFunction.IDENTITY; int recipeTier = GTUtil.getTierByVoltage(EUt); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index add53d9af62..acbd8ba23be 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -9,6 +9,8 @@ import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -22,28 +24,41 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Collectors; public class RecipeHelper { - public static long getRealEUt(@NotNull GTRecipe recipe) { - long EUt = recipe.getInputEUt(); - if (EUt > 0) return EUt; - return -recipe.getOutputEUt(); + public static EnergyStack getRealEUt(@NotNull GTRecipe recipe) { + EnergyStack stack = recipe.getInputEUt(); + if (!stack.isEmpty()) return stack; + return recipe.getOutputEUt(); + } + + /** + * Get a pair of the absolute EU/t value this recipe inputs or outputs and if it's input or output + * + * @param recipe + * @return A pair of {@code (EnergyStack, isInput)} + */ + public static EnergyStack.WithIO getRealEUtWithIO(@NotNull GTRecipe recipe) { + EnergyStack stack = recipe.getInputEUt(); + if (!stack.isEmpty()) return new EnergyStack.WithIO(stack, IO.IN); + return new EnergyStack.WithIO(recipe.getOutputEUt(), IO.OUT); } public static int getRecipeEUtTier(GTRecipe recipe) { - long EUt = recipe.getInputEUt(); - if (EUt == 0) EUt = recipe.getOutputEUt(); + EnergyStack stack = getRealEUt(recipe); + long EUt = stack.voltage(); if (recipe.parallels > 1) EUt /= recipe.parallels; return GTUtil.getTierByVoltage(EUt); } public static int getPreOCRecipeEuTier(GTRecipe recipe) { - long EUt = recipe.getInputEUt(); - if (EUt == 0) EUt = recipe.getOutputEUt(); + EnergyStack stack = getRealEUt(recipe); + long EUt = stack.getTotalEU(); if (recipe.parallels > 1) EUt /= recipe.parallels; EUt >>= (recipe.ocLevel * 2); return GTUtil.getTierByVoltage(EUt); @@ -347,4 +362,30 @@ public static void addToRecipeHandlerMap(RecipeHandlerGroup key, RecipeHandlerLi map.computeIfAbsent(key, $ -> new ArrayList<>(undyed)).add(handler); } + + public static int getRatioForDistillery(FluidIngredient fluidInput, FluidIngredient fluidOutput, + @Nullable ItemStack output) { + int[] divisors = new int[] { 2, 5, 10, 25, 50 }; + int ratio = -1; + + for (int divisor : divisors) { + + if (!isFluidStackDivisibleForDistillery(fluidInput, divisor)) + continue; + + if (!isFluidStackDivisibleForDistillery(fluidOutput, divisor)) + continue; + + if (output != null && output.getCount() % divisor != 0) + continue; + + ratio = divisor; + } + + return Math.max(1, ratio); + } + + public static boolean isFluidStackDivisibleForDistillery(FluidIngredient fluidStack, int divisor) { + return fluidStack.getAmount() % divisor == 0 && fluidStack.getAmount() / divisor >= 25; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 4a34d3a3071..98ef74757b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -115,7 +115,8 @@ private void fillContentMatchList(Map, List> entrie } private RecipeHandlingResult handleContents() { - return handleContentsInternal(io); + var result = handleContentsInternal(io); + return result; } private RecipeHandlingResult handleContentsInternal(IO capIO) { @@ -124,9 +125,9 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { return new RecipeHandlingResult(ActionResult.FAIL_NO_CAPABILITIES, null); } - var handlers = capabilityProxies.get(capIO); + List handlers = capabilityProxies.getOrDefault(capIO, Collections.emptyList()); // Only sort for non-tick outputs - if (!isTick && capIO == IO.OUT) { + if (!isTick && capIO.support(IO.OUT)) { handlers.sort(RecipeHandlerList.COMPARATOR.reversed()); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java index 145be85d107..2186fb6d4ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/IContentSerializer.java @@ -2,15 +2,10 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; -import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.lowdragmc.lowdraglib.LDLib; - -import net.minecraft.core.HolderLookup; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.RegistryOps; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -20,19 +15,20 @@ public interface IContentSerializer { default void toNetwork(FriendlyByteBuf buf, T content) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); - buf.writeUtf(codec().encodeStart(ops, content).getOrThrow(false, GTCEu.LOGGER::error).toString()); + buf.writeJsonWithCodec(codec(), content); } default T fromNetwork(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); - return codec().parse(ops, LDLib.GSON.fromJson(buf.readUtf(), JsonElement.class)).getOrThrow(false, - GTCEu.LOGGER::error); + return buf.readJsonWithCodec(codec()); } - T fromJson(JsonElement json); + default T fromJson(JsonElement json) { + return codec().parse(JsonOps.INSTANCE, json).getOrThrow(false, GTCEu.LOGGER::error); + } - JsonElement toJson(T content); + default JsonElement toJson(T content) { + return codec().encodeStart(JsonOps.INSTANCE, content).getOrThrow(false, GTCEu.LOGGER::error); + } T of(Object o); @@ -59,16 +55,6 @@ default Content fromNetworkContent(FriendlyByteBuf buf) { Codec codec(); - default T fromJson(JsonElement json, HolderLookup.Provider provider) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, provider); - return codec().parse(ops, json).getOrThrow(false, GTCEu.LOGGER::error); - } - - default JsonElement toJson(T content, HolderLookup.Provider provider) { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, provider); - return codec().encodeStart(ops, content).getOrThrow(false, GTCEu.LOGGER::error); - } - @SuppressWarnings("unchecked") default JsonElement toJsonContent(Content content) { JsonObject json = new JsonObject(); @@ -90,15 +76,10 @@ default Content fromJsonContent(JsonElement json) { } default Tag toNbt(T content) { - return JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, this.toJson(content)); - } - - default Tag toNbtGeneric(Object content) { - return toNbt((T) content); + return codec().encodeStart(NbtOps.INSTANCE, content).getOrThrow(false, GTCEu.LOGGER::error); } default T fromNbt(Tag tag) { - var json = NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, tag); - return fromJson(json); + return codec().parse(NbtOps.INSTANCE, tag).getOrThrow(false, GTCEu.LOGGER::error); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java index 8a0d2fc5ecf..1b31dc94ec8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBigInteger.java @@ -46,14 +46,15 @@ public JsonElement toJson(BigInteger content) { @Override public BigInteger of(Object o) { - if (o instanceof BigInteger) { - return (BigInteger) o; - } else if (o instanceof Number) { - return BigInteger.valueOf(((Number) o).longValue()); + if (o instanceof BigInteger b) { + return b; + } else if (o instanceof Number n) { + return BigInteger.valueOf(n.longValue()); } else if (o instanceof CharSequence) { return new BigInteger(o.toString()); + } else { + return BigInteger.ZERO; } - return BigInteger.ZERO; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java index a110eb591b5..800591f2bf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerBlockState.java @@ -2,23 +2,16 @@ import com.gregtechceu.gtceu.GTCEu; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.StateHolder; -import net.minecraft.world.level.block.state.properties.Property; -import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; -import java.util.Map; -import java.util.Optional; import java.util.function.Function; public class SerializerBlockState implements IContentSerializer { @@ -27,41 +20,16 @@ public class SerializerBlockState implements IContentSerializer { private SerializerBlockState() {} + @SuppressWarnings("deprecation") @Override public void toNetwork(FriendlyByteBuf buf, BlockState content) { - buf.writeVarInt(BuiltInRegistries.BLOCK.getId(content.getBlock())); - ImmutableMap, Comparable> values = content.getValues(); - if (!values.isEmpty()) { - buf.writeBoolean(true); - - for (Map.Entry, Comparable> entry : values.entrySet()) { - buf.writeUtf(entry.getKey().getName()); - buf.writeUtf(((Property) entry.getKey()).getName(entry.getValue())); - } - } else { - buf.writeBoolean(false); - } + buf.writeId(Block.BLOCK_STATE_REGISTRY, content); } + @SuppressWarnings("deprecation") @Override public BlockState fromNetwork(FriendlyByteBuf buf) { - Block block = BuiltInRegistries.BLOCK.byId(buf.readVarInt()); - BlockState blockState = block.defaultBlockState(); - if (buf.readBoolean()) { - StateDefinition stateDefinition = block.getStateDefinition(); - ImmutableMap, Comparable> values = blockState.getValues(); - - for (int i = 0; i < values.size(); ++i) { - String propertyName = buf.readUtf(); - String propertyValueName = buf.readUtf(); - Property property = stateDefinition.getProperty(propertyName); - if (property != null) { - Optional> value = property.getValue(propertyValueName); - value.ifPresent(comparable -> ((StateHolder) blockState).setValue(property, comparable)); - } - } - } - return blockState; + return buf.readById(Block.BLOCK_STATE_REGISTRY); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java new file mode 100644 index 00000000000..b71480ebb89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerEnergyStack.java @@ -0,0 +1,53 @@ +package com.gregtechceu.gtceu.api.recipe.content; + +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; + +import net.minecraft.network.FriendlyByteBuf; + +import com.mojang.serialization.Codec; +import org.apache.commons.lang3.math.NumberUtils; + +public class SerializerEnergyStack implements IContentSerializer { + + public static SerializerEnergyStack INSTANCE = new SerializerEnergyStack(); + + private SerializerEnergyStack() {} + + @Override + public void toNetwork(FriendlyByteBuf buf, EnergyStack content) { + content.toNetwork(buf); + } + + @Override + public EnergyStack fromNetwork(FriendlyByteBuf buf) { + return EnergyStack.fromNetwork(buf); + } + + @Override + public EnergyStack of(Object o) { + if (o instanceof EnergyStack stack) { + return stack; + } else if (o instanceof Number n) { + return new EnergyStack(n.longValue()); + } else if (o instanceof CharSequence) { + return new EnergyStack(NumberUtils.toLong(o.toString())); + } else { + return EnergyStack.EMPTY; + } + } + + @Override + public EnergyStack defaultValue() { + return EnergyStack.EMPTY; + } + + @Override + public Class contentClass() { + return EnergyStack.class; + } + + @Override + public Codec codec() { + return EnergyStack.CODEC; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java new file mode 100644 index 00000000000..1c58ff062e1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/EnergyStack.java @@ -0,0 +1,187 @@ +package com.gregtechceu.gtceu.api.recipe.ingredient; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.codec.GTCodecUtils; + +import net.minecraft.network.FriendlyByteBuf; + +import com.google.common.base.Preconditions; +import com.mojang.datafixers.util.Either; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.With; +import org.jetbrains.annotations.Range; + +import java.util.function.Supplier; + +@With +public record EnergyStack(@Range(from = 0, to = Long.MAX_VALUE) long voltage, + @Range(from = 1, to = Long.MAX_VALUE) long amperage) { + + // spotless:off + private static final Codec FULL_CODEC = RecordCodecBuilder.create(instance -> instance.group( + GTCodecUtils.NON_NEGATIVE_LONG.optionalFieldOf("voltage", 0L).forGetter(EnergyStack::voltage), + GTCodecUtils.POSITIVE_LONG.optionalFieldOf("amperage", 1L).forGetter(EnergyStack::amperage) + ).apply(instance, EnergyStack::new)); + private static final Codec VOLTAGE_ONLY_CODEC = GTCodecUtils.NON_NEGATIVE_LONG.flatComapMap( + EnergyStack::new, s -> { + if (s.amperage() == 1) { + return DataResult.success(s.voltage()); + } else { + Supplier error = () -> "primitive EnergyStacks must have 1A, got " + s.amperage(); + return DataResult.error(error, s.voltage()); + } + }); + + public static final Codec CODEC = Codec.either(VOLTAGE_ONLY_CODEC, FULL_CODEC) + .xmap(GTCodecUtils::unboxEither, stack -> { + if (stack.amperage() == 1) return Either.left(stack); + else return Either.right(stack); + }); + // spotless:on + + public static final EnergyStack EMPTY = new EnergyStack(0, 1); + public static final EnergyStack MAX = new EnergyStack(Long.MAX_VALUE, 1); + + /** + * Voltage-only constructor for 1A uses, e.g. most of them + * + * @param voltage The EU value + */ + public EnergyStack(long voltage) { + this(voltage, 1); + } + + public long getTotalEU() { + return voltage * amperage; + } + + public boolean isEmpty() { + return this == EMPTY || this.voltage <= 0; + } + + public EnergyStack add(long voltage, long amperage) { + Preconditions.checkArgument(this.voltage + voltage >= 0, "Resulting voltage must be >= 0"); + Preconditions.checkArgument(this.amperage + amperage >= 1, "Resulting amperage must be >= 1"); + return new EnergyStack(this.voltage + voltage, this.amperage + amperage); + } + + public EnergyStack addVoltage(long voltage) { + Preconditions.checkArgument(this.voltage + voltage >= 0, "Resulting voltage must be >= 0"); + return withVoltage(this.voltage + voltage); + } + + public EnergyStack multiplyVoltage(long multiplier) { + Preconditions.checkArgument(multiplier >= 0, "Multiplier must be >= 0"); + return withVoltage(this.voltage * multiplier); + } + + public EnergyStack multiplyVoltage(double multiplier) { + Preconditions.checkArgument(multiplier >= 0, "Multiplier must be >= 0"); + return withVoltage((long) (this.voltage * multiplier)); + } + + public EnergyStack addAmperage(long amperage) { + Preconditions.checkArgument(this.amperage + amperage >= 1, "Resulting amperage must be >= 1"); + return withAmperage(this.amperage + amperage); + } + + public EnergyStack multiplyAmperage(long multiplier) { + Preconditions.checkArgument(multiplier > 0, "Multiplier must be > 0"); + return withAmperage(this.amperage * multiplier); + } + + public static EnergyStack sum(EnergyStack a, EnergyStack b) { + return a.add(b.voltage, b.amperage); + } + + public void toNetwork(FriendlyByteBuf buf) { + buf.writeVarLong(this.voltage); + buf.writeVarLong(this.amperage); + } + + public static EnergyStack fromNetwork(FriendlyByteBuf buf) { + return new EnergyStack(buf.readVarLong(), buf.readVarLong()); + } + + @With + public record WithIO(EnergyStack stack, IO io) { + + // spotless:off + private static final Codec FLAT_CODEC = RecordCodecBuilder.create(instance -> instance.group( + Codec.LONG.optionalFieldOf("voltage", 0L).forGetter(WithIO::signedVoltage), + GTCodecUtils.POSITIVE_LONG.optionalFieldOf("amperage", 1L).forGetter(WithIO::amperage) + ).apply(instance, WithIO::fromVA)); + private static final Codec VOLTAGE_ONLY_CODEC = Codec.LONG.flatComapMap( + WithIO::fromVoltage, s -> { + if (s.amperage() == 1) { + return DataResult.success(s.signedVoltage()); + } else { + Supplier error = () -> "primitive EnergyStacks must have 1A, got " + s.amperage(); + return DataResult.error(error, s.signedVoltage()); + } + }); + + public static final Codec CODEC = Codec.either(VOLTAGE_ONLY_CODEC, FLAT_CODEC) + .xmap(GTCodecUtils::unboxEither, s -> { + if (s.amperage() == 1) { + return Either.left(s); + } else { + return Either.right(s); + } + }); + // spotless:on + + public static final WithIO EMPTY = new WithIO(EnergyStack.EMPTY, IO.NONE); + + public WithIO { + Preconditions.checkArgument(io != IO.BOTH, "The I/O direction cannot be IO.BOTH!"); + if (stack.isEmpty()) { + io = IO.NONE; + } + } + + public WithIO(long voltage, long amperage, IO io) { + this(new EnergyStack(voltage, amperage), io); + } + + public static WithIO fromVA(long voltage, long amperage) { + if (voltage == 0) return WithIO.EMPTY; + return new WithIO(Math.abs(voltage), amperage, voltage > 0 ? IO.IN : IO.OUT); + } + + public static WithIO fromVoltage(long voltage) { + return fromVA(voltage, 1); + } + + public boolean isEmpty() { + return io == IO.NONE || stack.isEmpty(); + } + + public boolean isInput() { + return io == IO.IN; + } + + public boolean isOutput() { + return io == IO.OUT; + } + + public @Range(from = 0, to = Long.MAX_VALUE) long voltage() { + return stack.voltage(); + } + + public @Range(from = 1, to = Long.MAX_VALUE) long amperage() { + return stack.amperage(); + } + + public long getTotalEU() { + return stack.getTotalEU(); + } + + public long signedVoltage() { + long multiplier = isInput() ? 1 : -1; + return this.voltage() * multiplier; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java index 4c074115d20..7400f8727be 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/ModifierFunction.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import lombok.Setter; import lombok.experimental.Accessors; @@ -167,9 +168,9 @@ public ModifierFunction build() { copied.duration = Math.max(1, durationModifier.apply(recipe.duration)); } if (eutModifier != ContentModifier.IDENTITY) { - long preEUt = RecipeHelper.getRealEUt(recipe); - long eut = Math.max(1, eutModifier.apply(Math.abs(preEUt))); - EURecipeCapability.putEUContent(preEUt > 0 ? copied.tickInputs : copied.tickOutputs, eut); + var preEUt = RecipeHelper.getRealEUtWithIO(recipe); + EnergyStack eut = EURecipeCapability.CAP.copyWithModifier(preEUt.stack(), eutModifier); + EURecipeCapability.putEUContent(preEUt.isInput() ? copied.tickInputs : copied.tickOutputs, eut); } return copied; }; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java index 00b094b96b9..9aaa0e83104 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java @@ -84,7 +84,7 @@ public class GTRecipeTypeUI { protected BiConsumer uiBuilder; @Setter @Getter - protected int maxTooltips = 3; + protected int maxTooltips = 4; private CompoundTag customUICache; private Size xeiSize; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index cba81582187..490b0aebe71 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -50,7 +50,7 @@ public class GCYMRecipeTypes { } return ""; }) - .setMaxTooltips(4) + .setMaxTooltips(5) .setUiBuilder((recipe, widgetGroup) -> { int temp = recipe.data.getInt("ebf_temp"); List> items = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java index 6ba7d4fe279..3efd43d9a99 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.recipe.*; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -16,7 +17,7 @@ public class GTRecipeCapabilities { public final static RecipeCapability ITEM = ItemRecipeCapability.CAP; public final static RecipeCapability FLUID = FluidRecipeCapability.CAP; public final static RecipeCapability BLOCK_STATE = BlockStateRecipeCapability.CAP; - public final static RecipeCapability EU = EURecipeCapability.CAP; + public final static RecipeCapability EU = EURecipeCapability.CAP; public final static RecipeCapability CWU = CWURecipeCapability.CAP; public static void init() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index 6824fc56abd..7412d48e66f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; @@ -251,7 +252,7 @@ public class GTRecipeModifiers { long eut = 4 * (long) (parallels / (8.0 * coilMachine.getCoilType().getEnergyDiscount())); ModifierFunction baseModifier = r -> { var copy = r.copy(); - EURecipeCapability.putEUContent(copy.tickInputs, Math.max(1, eut)); + EURecipeCapability.putEUContent(copy.tickInputs, new EnergyStack(Math.max(1, eut))); copy.duration = Math.max(1, duration); return copy; }; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 7f093a7807d..de22d288620 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.ICoilType; -import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -20,10 +19,10 @@ import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.trait.customlogic.*; import com.gregtechceu.gtceu.common.recipe.condition.RockBreakerCondition; -import com.gregtechceu.gtceu.data.recipe.RecipeUtil; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.gregtechceu.gtceu.integration.xei.handlers.item.CycleItemStackHandler; +import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ResearchManager; import com.lowdragmc.lowdraglib.utils.LocalizationUtils; @@ -185,7 +184,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) - .setMaxTooltips(4) + .setMaxTooltips(5) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); @@ -205,32 +204,28 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, true, GuiTextures.DUST_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_SLICE, LEFT_TO_RIGHT) .setSound(GTSoundEntries.CUT) - .setMaxTooltips(4) + .setMaxTooltips(5) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) .isEmpty()) { - recipeBuilder - .copy(new ResourceLocation(recipeBuilder.id.toString() + "_water")) - .inputFluids(GTMaterials.Water.getFluid((int) Math.max(4, - Math.min(1000, recipeBuilder.duration * recipeBuilder.EUt() / 320)))) + recipeBuilder.copy(new ResourceLocation(recipeBuilder.id.toString() + "_water")) + .inputFluids(GTMaterials.Water.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 320, 4, 1000))) .duration(recipeBuilder.duration * 2) .save(provider); - recipeBuilder - .copy(new ResourceLocation(recipeBuilder.id.toString() + "_distilled_water")) - .inputFluids(GTMaterials.DistilledWater.getFluid((int) Math.max(3, - Math.min(750, recipeBuilder.duration * recipeBuilder.EUt() / 426)))) + recipeBuilder.copy(new ResourceLocation(recipeBuilder.id.toString() + "_distilled_water")) + .inputFluids(GTMaterials.DistilledWater.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 426, 3, 750))) .duration((int) (recipeBuilder.duration * 1.5)) .save(provider); // Don't call buildAndRegister as we are mutating the original recipe and already in the middle of a // buildAndRegister call. // Adding a second call will result in duplicate recipe generation attempts - recipeBuilder - .inputFluids(GTMaterials.Lubricant.getFluid((int) Math.max(1, - Math.min(250, recipeBuilder.duration * recipeBuilder.EUt() / 1280)))) - .duration(Math.max(1, recipeBuilder.duration)); + recipeBuilder.inputFluids(GTMaterials.Lubricant.getFluid((int) GTMath.clamp( + recipeBuilder.duration * recipeBuilder.EUt().getTotalEU() / 1280, 1, 250))); } }); @@ -346,7 +341,7 @@ public class GTRecipeTypes { .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .setSlotOverlay(false, false, true, GuiTextures.LENS_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) - .setMaxTooltips(4) + .setMaxTooltips(5) .setSound(GTSoundEntries.ELECTROLYZER); public final static GTRecipeType SIFTER_RECIPES = register("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) @@ -373,7 +368,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.CIRCUIT_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_CIRCUIT_ASSEMBLER, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) - .setMaxTooltips(4) + .setMaxTooltips(5) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -396,14 +391,14 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.INT_CIRCUIT_OVERLAY) .setSlotOverlay(true, true, GuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) + .setMaxTooltips(5) .setOffsetVoltageText(true) .setSound(GTSoundEntries.COOLING); public final static GTRecipeType AIR_SCRUBBER_RECIPES = register("air_scrubber", ELECTRIC) .setMaxIOSize(1, 3, 1, 3).setEUIO(IO.IN) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) + .setMaxTooltips(5) .setSound(GTSoundEntries.COOLING); public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) @@ -412,7 +407,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.SCANNER_OVERLAY) .setSlotOverlay(true, false, GuiTextures.RESEARCH_STATION_OVERLAY) .setScanner(true) - .setMaxTooltips(4) + .setMaxTooltips(5) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); public final static GTRecipeType ROCK_BREAKER_RECIPES = register("rock_breaker", ELECTRIC).setMaxIOSize(1, 4, 0, 0) @@ -437,7 +432,7 @@ public class GTRecipeTypes { .setBackground(GuiTextures.FLUID_SLOT).setShowAmount(false)); } }) - .setMaxTooltips(4) + .setMaxTooltips(5) .setSound(GTSoundEntries.FIRE); public static final GTRecipeType SCANNER_RECIPES = register("scanner", ELECTRIC) @@ -530,8 +525,6 @@ public class GTRecipeTypes { .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.data.getBoolean("disable_distillery")) return; if (recipeBuilder.output.containsKey(FluidRecipeCapability.CAP)) { - long EUt = EURecipeCapability.CAP - .of(recipeBuilder.tickInput.get(EURecipeCapability.CAP).get(0).getContent()); Content inputContent = recipeBuilder.input.get(FluidRecipeCapability.CAP).get(0); FluidIngredient input = FluidRecipeCapability.CAP.of(inputContent.getContent()); ItemStack[] outputs = recipeBuilder.output.containsKey(ItemRecipeCapability.CAP) ? @@ -549,14 +542,15 @@ public class GTRecipeTypes { GTRecipeBuilder builder = DISTILLERY_RECIPES .recipeBuilder(recipeBuilder.id.getPath() + "_to_" + BuiltInRegistries.FLUID.getKey(output.getStacks()[0].getFluid()).getPath()) - .EUt(Math.max(1, EUt / 4)).circuitMeta(i + 1); + .EUt(Math.max(1, recipeBuilder.EUt().voltage() / 4), recipeBuilder.EUt().amperage()) + .circuitMeta(i + 1); - int ratio = RecipeUtil.getRatioForDistillery(input, output, outputItem); + int ratio = RecipeHelper.getRatioForDistillery(input, output, outputItem); int recipeDuration = (int) (recipeBuilder.duration * OverclockingLogic.STD_DURATION_FACTOR_INV); boolean shouldDivide = ratio != 1; - boolean fluidsDivisible = RecipeUtil.isFluidStackDivisibleForDistillery(input, ratio) && - RecipeUtil.isFluidStackDivisibleForDistillery(output, ratio); + boolean fluidsDivisible = RecipeHelper.isFluidStackDivisibleForDistillery(input, ratio) && + RecipeHelper.isFluidStackDivisibleForDistillery(output, ratio); FluidIngredient dividedInputFluid = input.copy(); dividedInputFluid.setAmount(Math.max(1, dividedInputFluid.getAmount() / ratio)); @@ -632,7 +626,7 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) .setHasResearchSlot(true) - .setMaxTooltips(4) + .setMaxTooltips(5) .onRecipeBuild(ResearchManager::createDefaultResearchRecipe); public static final GTRecipeType LARGE_CHEMICAL_RECIPES = register("large_chemical_reactor", MULTIBLOCK) @@ -653,7 +647,7 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_FUSION, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ARC) .setOffsetVoltageText(true) - .setMaxTooltips(4) + .setMaxTooltips(5) .setUiBuilder(FusionReactorMachine::addEUToStartLabel); public static final GTRecipeType DUMMY_RECIPES = register("dummy", DUMMY) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 6edb4a3523b..4c379f2755b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.common.blockentity.FluidPipeBlockEntity; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.capability.LocalizedHazardSavedData; @@ -329,21 +330,16 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.addAll(recipeLogic.getFancyTooltip()); } else if (recipe != null) { list.add(Component.translatable("behavior.portable_scanner.divider")); - long EUt = recipe.getInputEUt(); - boolean isInput = true; - if (EUt == 0) { - isInput = false; - EUt = recipe.getOutputEUt(); - } + var EUt = RecipeHelper.getRealEUtWithIO(recipe); list.add(Component.translatable( - isInput ? "behavior.portable_scanner.workable_consumption" : + EUt.isInput() ? "behavior.portable_scanner.workable_consumption" : "behavior.portable_scanner.workable_production", - Component.translatable(FormattingUtil.formatNumbers(EUt)) + // TODO is this supposed to show voltage or total EU/t? + Component.translatable(FormattingUtil.formatNumbers(EUt.getTotalEU())) .withStyle(ChatFormatting.RED), - // TODO: Change number once there is multi amp behavior Component.translatable( - FormattingUtil.formatNumbers(1)) + FormattingUtil.formatNumbers(EUt.amperage())) .withStyle(ChatFormatting.RED))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java index bbc4dd55997..2ad53abea17 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ActiveTransformerMachine.java @@ -99,9 +99,9 @@ public void onStructureFormed() { .map(IEnergyContainer.class::cast) .toList(); - if (handlerList.getHandlerIO() == IO.IN) { + if (handlerList.getHandlerIO().support(IO.IN)) { powerInput.addAll(containers); - } else if (handlerList.getHandlerIO() == IO.OUT) { + } else if (handlerList.getHandlerIO().support(IO.OUT)) { powerOutput.addAll(containers); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java index fa88b23f007..769161fe634 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/PowerSubstationMachine.java @@ -114,9 +114,9 @@ public void onStructureFormed() { .map(IEnergyContainer.class::cast) .toList(); - if (handlerList.getHandlerIO() == IO.IN) { + if (handlerList.getHandlerIO().support(IO.IN)) { inputs.addAll(containers); - } else if (handlerList.getHandlerIO() == IO.OUT) { + } else if (handlerList.getHandlerIO().support(IO.OUT)) { outputs.addAll(containers); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java index 25021f8cd97..88a93bb3c37 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeCombustionEngineMachine.java @@ -16,6 +16,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; @@ -129,11 +130,11 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not if (!(machine instanceof LargeCombustionEngineMachine engineMachine)) { return RecipeModifier.nullWrongType(LargeCombustionEngineMachine.class, machine); } - long EUt = recipe.getOutputEUt(); + EnergyStack EUt = recipe.getOutputEUt(); // has lubricant - if (EUt > 0 && !engineMachine.isIntakesObstructed() && + if (!EUt.isEmpty() && !engineMachine.isIntakesObstructed() && RecipeHelper.matchRecipe(engineMachine, engineMachine.getLubricantRecipe()).isSuccess()) { - int maxParallel = (int) (engineMachine.getOverclockVoltage() / EUt); // get maximum parallel + int maxParallel = (int) (engineMachine.getOverclockVoltage() / EUt.getTotalEU()); // get maximum parallel int actualParallel = ParallelLogic.getParallelAmount(engineMachine, recipe, maxParallel); double eutMultiplier = actualParallel * engineMachine.getProductionBoost(); @@ -188,16 +189,16 @@ public void addDisplayText(List textList) { MultiblockDisplayText.Builder builder = MultiblockDisplayText.builder(textList, isFormed()) .setWorkingStatus(recipeLogic.isWorkingEnabled(), recipeLogic.isActive()); + long lastEUt = recipeLogic.getLastRecipe() != null ? + recipeLogic.getLastRecipe().getOutputEUt().getTotalEU() : 0; if (isExtreme()) { - builder.addEnergyProductionLine(GTValues.V[tier + 1], - recipeLogic.getLastRecipe() != null ? recipeLogic.getLastRecipe().getOutputEUt() : 0); + builder.addEnergyProductionLine(GTValues.V[tier + 1], lastEUt); } else { builder.addEnergyProductionAmpsLine(GTValues.V[tier] * 3, 3); } if (isActive() && isWorkingEnabled()) { - builder.addCurrentEnergyProductionLine( - recipeLogic.getLastRecipe() != null ? recipeLogic.getLastRecipe().getOutputEUt() : 0); + builder.addCurrentEnergyProductionLine(lastEUt); } builder.addFuelNeededLine(getRecipeFluidInputInfo(), recipeLogic.getDuration()); @@ -222,7 +223,7 @@ public String getRecipeFluidInputInfo() { } FluidStack requiredFluidInput = RecipeHelper.getInputFluids(recipe).get(0); - long ocAmount = getMaxVoltage() / recipe.getOutputEUt(); + long ocAmount = getMaxVoltage() / recipe.getOutputEUt().getTotalEU(); int neededAmount = GTMath.saturatedCast(ocAmount * requiredFluidInput.getAmount()); return ChatFormatting.RED + FormattingUtil.formatNumbers(neededAmount) + "mB"; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index ee97f409edc..cabbe2944c9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -11,11 +11,11 @@ import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; @@ -100,14 +100,14 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not var rotorHolder = turbineMachine.getRotorHolder(); if (rotorHolder == null) return ModifierFunction.NULL; - long EUt = recipe.getOutputEUt(); + EnergyStack EUt = recipe.getOutputEUt(); long turbineMaxVoltage = turbineMachine.getOverclockVoltage(); double holderEfficiency = rotorHolder.getTotalEfficiency() / 100.0; - if (EUt <= 0 || turbineMaxVoltage <= EUt || holderEfficiency <= 0) return ModifierFunction.NULL; + if (EUt.isEmpty() || turbineMaxVoltage <= EUt.voltage() || holderEfficiency <= 0) return ModifierFunction.NULL; // get the amount of parallel required to match the desired output voltage - int maxParallel = (int) (turbineMaxVoltage / EUt); + int maxParallel = (int) (turbineMaxVoltage / EUt.getTotalEU()); int actualParallel = ParallelLogic.getParallelAmountFast(turbineMachine, recipe, maxParallel); double eutMultiplier = turbineMachine.productionBoost() * actualParallel; @@ -149,8 +149,7 @@ public void addDisplayText(List textList) { long maxProduction = getOverclockVoltage(); long currentProduction = isActive() && recipeLogic.getLastRecipe() != null ? - recipeLogic.getLastRecipe().getOutputEUt() : 0; - String voltageName = GTValues.VNF[GTUtil.getTierByVoltage(currentProduction)]; + recipeLogic.getLastRecipe().getOutputEUt().voltage() : 0; if (isActive()) { textList.add(3, Component.translatable("gtceu.multiblock.turbine.energy_per_tick", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java index 037a65f09e3..fb2dfd206d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitivePumpMachine.java @@ -55,7 +55,7 @@ private void initializeTank() { for (var handlerList : handlerLists) { var recipeCap = handlerList.getCapability(FluidRecipeCapability.CAP); - if (handlerList.getHandlerIO() == IO.OUT && !recipeCap.isEmpty()) { + if (handlerList.getHandlerIO().support(IO.OUT) && !recipeCap.isEmpty()) { fluidTank = (NotifiableFluidTank) recipeCap.get(0); long tankCapacity = fluidTank.getTankCapacity(0); if (tankCapacity == FluidType.BUCKET_VOLUME) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java index d2e86ca97f9..6e34aceece9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/SteamParallelMultiblockMachine.java @@ -114,7 +114,7 @@ public static ModifierFunction recipeModifier(@NotNull MetaMachine machine, @Not // Duration = 1.5x base duration // EUt (not steam) = (4/3) * (2/3) * parallels * base EUt, up to a max of 32 EUt - long eut = recipe.getInputEUt(); + long eut = recipe.getInputEUt().getTotalEU(); int parallelAmount = ParallelLogic.getParallelAmount(machine, recipe, steamMachine.maxParallels); double eutMultiplier = (eut * 0.8888 * parallelAmount <= 32) ? (0.8888 * parallelAmount) : (32.0 / eut); return ModifierFunction.builder() diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java index d1608f95c5b..a9667e1d68e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/MinerLogic.java @@ -363,7 +363,7 @@ protected boolean doPostProcessing(NonNullList blockDrops, BlockState GTRecipe match = matches.next(); if (match == null) continue; - long eut = match.getInputEUt(); + long eut = match.getInputEUt().getTotalEU(); if (GTUtil.getTierByVoltage(eut) <= getVoltageTier()) { if (RecipeHelper.handleRecipeIO(this, match, IO.OUT, this.chanceCaches).isSuccess()) { blockDrops.clear(); diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index e31abb42d12..c3526dc4e0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -410,8 +410,8 @@ public static class MachineConfigs { @Configurable @Configurable.Comment({ "Whether insufficient energy supply should reset Machine recipe progress to zero.", "If true, progress will reset.", "If false, progress will decrease to zero with 2x speed", - "Default: false" }) - public boolean recipeProgressLowEnergy = false; + "Default: true" }) + public boolean recipeProgressLowEnergy = true; @Configurable @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 52d258af88c..7454aec174c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -975,7 +975,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.recipe.eu", "Usage: %s EU/t"); provider.add("gtceu.recipe.eu_inverted", "Generation: %s EU/t"); provider.add("gtceu.recipe.duration", "Duration: %s secs"); - provider.add("gtceu.recipe.amperage", "Amperage: %s"); + provider.add("gtceu.recipe.voltage", "Voltage: %s V @ %s A"); + provider.add("gtceu.recipe.total_eu", "Total Usage: %s EU/t"); provider.add("gtceu.recipe.not_consumed", "Does not get consumed in the process"); provider.add("gtceu.recipe.chance", "Chance: %s +%s/tier"); provider.add("gtceu.recipe.temperature", "Temp: %sK"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java deleted file mode 100644 index f2a0b906a7d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/RecipeUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.data.recipe; - -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; - -import net.minecraft.world.item.ItemStack; - -import org.jetbrains.annotations.Nullable; - -public class RecipeUtil { - - public static int getRatioForDistillery(FluidIngredient fluidInput, FluidIngredient fluidOutput, - @Nullable ItemStack output) { - int[] divisors = new int[] { 2, 5, 10, 25, 50 }; - int ratio = -1; - - for (int divisor : divisors) { - - if (!isFluidStackDivisibleForDistillery(fluidInput, divisor)) - continue; - - if (!isFluidStackDivisibleForDistillery(fluidOutput, divisor)) - continue; - - if (output != null && output.getCount() % divisor != 0) - continue; - - ratio = divisor; - } - - return Math.max(1, ratio); - } - - public static boolean isFluidStackDivisibleForDistillery(FluidIngredient fluidStack, int divisor) { - return fluidStack.getAmount() % divisor == 0 && fluidStack.getAmount() / divisor >= 25; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 45b0a947d2e..7e9e01f3dc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -19,10 +19,7 @@ import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; -import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntCircuitIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; -import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; @@ -216,28 +213,43 @@ public GTRecipeBuilder addCondition(RecipeCondition condition) { } public GTRecipeBuilder inputEU(long eu) { - return input(EURecipeCapability.CAP, eu); + return inputEU(eu, 1); + } + + public GTRecipeBuilder inputEU(long voltage, long amperage) { + return input(EURecipeCapability.CAP, new EnergyStack(voltage, amperage)); } public GTRecipeBuilder EUt(long eu) { - if (eu == 0) { + return EUt(eu, 1); + } + + public GTRecipeBuilder EUt(long voltage, long amperage) { + if (voltage == 0) { GTCEu.LOGGER.error("EUt can't be explicitly set to 0, id: {}", id); } + if (amperage < 1) { + GTCEu.LOGGER.error("Amperage must be a positive integer, id: {}", id); + } var lastPerTick = perTick; perTick = true; - if (eu > 0) { + if (voltage > 0) { tickInput.remove(EURecipeCapability.CAP); - inputEU(eu); - } else if (eu < 0) { + inputEU(voltage, amperage); + } else if (voltage < 0) { tickOutput.remove(EURecipeCapability.CAP); - outputEU(-eu); + outputEU(-voltage, amperage); } perTick = lastPerTick; return this; } public GTRecipeBuilder outputEU(long eu) { - return output(EURecipeCapability.CAP, eu); + return outputEU(eu, 1); + } + + public GTRecipeBuilder outputEU(long voltage, long amperage) { + return output(EURecipeCapability.CAP, new EnergyStack(voltage, amperage)); } public GTRecipeBuilder inputCWU(int cwu) { @@ -1523,9 +1535,9 @@ protected boolean checkChanceAndPrintError(int chance) { ////////////////////////////////////// // ******* Quick Query *******// ////////////////////////////////////// - public long EUt() { - if (!tickInput.containsKey(EURecipeCapability.CAP)) return 0; - if (tickInput.get(EURecipeCapability.CAP).isEmpty()) return 0; + public EnergyStack EUt() { + if (!tickInput.containsKey(EURecipeCapability.CAP)) return EnergyStack.EMPTY; + if (tickInput.get(EURecipeCapability.CAP).isEmpty()) return EnergyStack.EMPTY; return EURecipeCapability.CAP.of(tickInput.get(EURecipeCapability.CAP).get(0).content); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 826566485f9..0635b79277f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -17,6 +18,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -26,8 +28,6 @@ import snownee.jade.api.ITooltip; import snownee.jade.api.config.IPluginConfig; -import static net.minecraft.ChatFormatting.*; - public class RecipeLogicProvider extends CapabilityBlockProvider { public RecipeLogicProvider() { @@ -46,15 +46,11 @@ protected void write(CompoundTag data, RecipeLogic capability) { var recipeInfo = new CompoundTag(); var recipe = capability.getLastRecipe(); if (recipe != null) { - long EUt = recipe.getInputEUt(); - boolean isInput = true; - if (EUt == 0) { - isInput = false; - EUt = recipe.getOutputEUt(); - } + var EUt = RecipeHelper.getRealEUtWithIO(recipe); - recipeInfo.putLong("EUt", EUt); - recipeInfo.putBoolean("isInput", isInput); + recipeInfo.putLong("EUt", EUt.getTotalEU()); + recipeInfo.putLong("amperage", EUt.amperage()); + recipeInfo.putBoolean("isInput", EUt.isInput()); } if (!recipeInfo.isEmpty()) { @@ -69,6 +65,7 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, var recipeInfo = capData.getCompound("Recipe"); if (!recipeInfo.isEmpty()) { var EUt = recipeInfo.getLong("EUt"); + var amperage = recipeInfo.getLong("amperage"); var isInput = recipeInfo.getBoolean("isInput"); boolean isSteam = false; @@ -84,29 +81,27 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, } if (EUt > 0) { - MutableComponent text; + MutableComponent text = Component.literal(FormattingUtil.formatNumbers(EUt)); if (isSteam) { - text = Component.literal(FormattingUtil.formatNumbers(EUt)).withStyle(ChatFormatting.GREEN) + text = text.withStyle(ChatFormatting.GREEN) .append(Component.literal(" mB/t").withStyle(ChatFormatting.RESET)); } else { - var tier = GTUtil.getOCTierByVoltage(EUt); + var tier = GTUtil.getOCTierByVoltage(EUt / amperage); - text = Component.literal(FormattingUtil.formatNumbers(EUt)).withStyle(ChatFormatting.RED) - .append(Component.literal(" EU/t").withStyle(ChatFormatting.RESET) - .append(Component.literal(" (").withStyle(ChatFormatting.GREEN))); + text = text.withStyle(ChatFormatting.RED) + .append(Component.literal(" EU/t ").withStyle(ChatFormatting.RESET) + .append(Component.literal("(").withStyle(ChatFormatting.GREEN))); if (tier < GTValues.TIER_COUNT) { text = text.append(Component.literal(GTValues.VNF[tier]) .withStyle(style -> style.withColor(GTValues.VC[tier]))); } else { - int speed = tier - 14; - text = text.append(Component - .literal("MAX") + int speed = Mth.clamp(tier - GTValues.TIER_COUNT - 1, 0, GTValues.TIER_COUNT); + text = text.append(Component.literal("MAX") .withStyle(style -> style.withColor(TooltipHelper.rainbowColor(speed))) .append(Component.literal("+") .withStyle(style -> style.withColor(GTValues.VC[speed])) - .append(Component.literal(FormattingUtil.formatNumbers(tier - 14))) - .withStyle(style -> style.withColor(GTValues.VC[speed])))); + .append(FormattingUtil.formatNumbers(speed)))); } text = text.append(Component.literal(")").withStyle(ChatFormatting.GREEN)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index fb14f2bd0c9..1b9ba79501e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -52,6 +52,7 @@ import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; @@ -79,6 +80,7 @@ import com.gregtechceu.gtceu.integration.kjs.helpers.MaterialStackWrapper; import com.gregtechceu.gtceu.integration.kjs.recipe.GTRecipeSchema; import com.gregtechceu.gtceu.integration.kjs.recipe.GTShapedRecipeSchema; +import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; import com.gregtechceu.gtceu.integration.kjs.recipe.WrappingRecipeSchemaType; import com.gregtechceu.gtceu.integration.kjs.recipe.components.ExtendedOutputItem; import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents; @@ -306,6 +308,8 @@ public void registerBindings(BindingsEvent event) { event.add("CleanroomType", CleanroomType.class); event.add("CraftingComponent", CraftingComponent.class); event.add("GTCraftingComponents", GTCraftingComponents.class); + event.add("EnergyStack", EnergyStack.class); + event.add("IOEnergyStack", EnergyStack.WithIO.class); // Sound related event.add("GTSoundEntries", GTSoundEntries.class); event.add("SoundType", SoundType.class); @@ -461,6 +465,8 @@ public void registerTypeWrappers(ScriptType type, TypeWrappers typeWrappers) { }); typeWrappers.registerSimple(GTRecipeComponents.FluidIngredientJS.class, GTRecipeComponents.FluidIngredientJS::of); + typeWrappers.registerSimple(EnergyStack.class, KJSHelpers::parseEnergyStack); + typeWrappers.registerSimple(EnergyStack.WithIO.class, KJSHelpers::parseIOEnergyStack); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java index 09a4ac02889..cc3e4a9b48c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java @@ -56,7 +56,7 @@ public GTRecipeTypeBuilder(ResourceLocation i) { slotOverlays = new Byte2ObjectArrayMap<>(); this.sound = null; this.hasResearchSlot = false; - this.maxTooltips = 3; + this.maxTooltips = 4; this.smallRecipeMap = null; this.iconSupplier = null; this.uiBuilder = null; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index f33d1f40b48..42d55bd98b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -174,29 +174,45 @@ public GTRecipeJS category(GTRecipeCategory category) { return this; } - public GTRecipeJS inputEU(long eu) { + public GTRecipeJS inputEU(EnergyStack eu) { return input(EURecipeCapability.CAP, eu); } - public GTRecipeJS EUt(long eu) { - if (eu == 0) { + public GTRecipeJS inputEU(long voltage, long amperage) { + return inputEU(new EnergyStack(voltage, amperage)); + } + + @SuppressWarnings("ConstantValue") + public GTRecipeJS EUt(EnergyStack.WithIO eu) { + if (eu.isEmpty()) { throw new RecipeExceptionJS(String.format("EUt can't be explicitly set to 0, id: %s", id)); } + if (eu.amperage() < 1) { + throw new RecipeExceptionJS(String.format("Amperage must be a positive integer, id: %s", id)); + } var lastPerTick = perTick; perTick = true; - if (eu > 0) { - inputEU(eu); - } else if (eu < 0) { - outputEU(-eu); + if (eu.isInput()) { + inputEU(eu.stack()); + } else if (eu.isOutput()) { + outputEU(eu.stack()); } perTick = lastPerTick; return this; } - public GTRecipeJS outputEU(long eu) { + public GTRecipeJS EUt(long voltage, long amperage) { + return EUt(EnergyStack.WithIO.fromVA(voltage, amperage)); + } + + public GTRecipeJS outputEU(EnergyStack eu) { return output(EURecipeCapability.CAP, eu); } + public GTRecipeJS outputEU(long voltage, long amperage) { + return outputEU(new EnergyStack(voltage, amperage)); + } + public GTRecipeJS inputCWU(int cwu) { return input(CWURecipeCapability.CAP, cwu); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java new file mode 100644 index 00000000000..78cc410e131 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/KJSHelpers.java @@ -0,0 +1,107 @@ +package com.gregtechceu.gtceu.integration.kjs.recipe; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; + +import dev.latvian.mods.kubejs.util.MapJS; +import dev.latvian.mods.kubejs.util.UtilsJS; +import dev.latvian.mods.rhino.Wrapper; +import it.unimi.dsi.fastutil.longs.LongLongPair; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class KJSHelpers { + + // this regex should match any of these, with or without spaces and/or 'V' & 'A' + // - V @ A + // - x + // - * + // also allows specifying a negative voltage for input/output in GTRecipeSchema#EUt + public static final Pattern VALUE_REGEX = Pattern.compile( + "^(?[+-]?\\d+)V?\\s*(?:@|x|\\*)?\\s*?(?\\+?[1-9]\\d*)A?$", + Pattern.CASE_INSENSITIVE); + + private static final Set VOLTAGE_KEYS = Set.of("voltage", "v", "V", "eu", "EU", ""); + private static final Set AMPERAGE_KEYS = Set.of("amperage", "a", "A"); + private static final long DEFAULT_VOLTAGE = 0; + private static final long DEFAULT_AMPERAGE = 1; + + public static EnergyStack.WithIO parseIOEnergyStack(Object o) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + + if (o instanceof EnergyStack.WithIO stack) { + return stack; + } else if (o instanceof EnergyStack stack) { + return new EnergyStack.WithIO(stack, IO.IN); + } else if (o instanceof Number n) { + long value = n.longValue(); + return EnergyStack.WithIO.fromVoltage(value); + } else { + LongLongPair pair = parseEnergyStackValues(o); + if (pair == null) { + return EnergyStack.WithIO.EMPTY; + } + return EnergyStack.WithIO.fromVA(pair.firstLong(), pair.secondLong()); + } + } + + public static EnergyStack parseEnergyStack(Object o) { + if (o instanceof Wrapper w) { + o = w.unwrap(); + } + + if (o instanceof EnergyStack stack) { + return stack; + } else if (o instanceof EnergyStack.WithIO stack) { + return stack.stack(); + } else if (o instanceof Number n) { + return new EnergyStack(n.longValue()); + } else { + LongLongPair pair = parseEnergyStackValues(o); + if (pair == null) { + return EnergyStack.EMPTY; + } + return new EnergyStack(Math.abs(pair.firstLong()), Math.abs(pair.secondLong())); + } + } + + private static @Nullable LongLongPair parseEnergyStackValues(Object o) { + long voltage = DEFAULT_VOLTAGE; + long amperage = DEFAULT_AMPERAGE; + + if (o instanceof CharSequence) { + String s = o.toString(); + + Matcher match = VALUE_REGEX.matcher(s); + if (!match.matches()) { + return null; + } + voltage = Long.parseLong(match.group("v")); + if (match.group("a") != null) { + amperage = Long.parseLong(match.group("a")); + } + } else { + Map map = MapJS.of(o); + if (map == null) { + return null; + } + for (String key : VOLTAGE_KEYS) { + if (!map.containsKey(key)) continue; + voltage = UtilsJS.parseLong(map.get(key), DEFAULT_VOLTAGE); + if (voltage != DEFAULT_VOLTAGE) break; + } + for (String key : AMPERAGE_KEYS) { + if (!map.containsKey(key)) continue; + amperage = UtilsJS.parseLong(map.get(key), DEFAULT_AMPERAGE); + if (amperage != DEFAULT_AMPERAGE) break; + } + } + return LongLongPair.of(voltage, amperage); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index de027a533d6..c0b3333d5a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -5,9 +5,11 @@ import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.recipe.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; +import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; @@ -19,6 +21,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.JsonOps; import dev.latvian.mods.kubejs.fluid.FluidLike; import dev.latvian.mods.kubejs.fluid.FluidStackJS; import dev.latvian.mods.kubejs.fluid.InputFluid; @@ -342,6 +345,28 @@ public String toString() { return componentType(); } }; + public static final RecipeComponent ENERGY_STACK = new RecipeComponent<>() { + + @Override + public String componentType() { + return "energy_stack"; + } + + @Override + public Class componentClass() { + return EnergyStack.class; + } + + @Override + public JsonElement write(RecipeJS recipe, EnergyStack.WithIO value) { + return EnergyStack.WithIO.CODEC.encodeStart(JsonOps.INSTANCE, value).result().orElse(null); + } + + @Override + public EnergyStack.WithIO read(RecipeJS recipe, Object from) { + return KJSHelpers.parseIOEnergyStack(from); + } + }; public static final ContentJS ITEM_IN = new ContentJS<>(ItemComponents.INPUT, GTRecipeCapabilities.ITEM, false); @@ -351,9 +376,9 @@ public String toString() { GTRecipeCapabilities.FLUID, false); public static final ContentJS FLUID_OUT = new ContentJS<>(FLUID_INGREDIENT_OUT, GTRecipeCapabilities.FLUID, true); - public static final ContentJS EU_IN = new ContentJS<>(NumberComponent.ANY_LONG, GTRecipeCapabilities.EU, + public static final ContentJS EU_IN = new ContentJS<>(ENERGY_STACK, GTRecipeCapabilities.EU, false); - public static final ContentJS EU_OUT = new ContentJS<>(NumberComponent.ANY_LONG, GTRecipeCapabilities.EU, + public static final ContentJS EU_OUT = new ContentJS<>(ENERGY_STACK, GTRecipeCapabilities.EU, true); public static final ContentJS CWU_IN = new ContentJS<>(NumberComponent.INT, GTRecipeCapabilities.CWU, false); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index cec5bf914ff..0f01adf4d54 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -6,10 +6,10 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.utils.LocalizationUtils; - import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -41,49 +41,39 @@ protected RecipeLogic getCapability(Level level, BlockPos pos, @Nullable Directi @Override protected void addProbeInfo(RecipeLogic capability, IProbeInfo probeInfo, Player player, BlockEntity blockEntity, IProbeHitData data) { - // do not show energy usage on machines that do not use energy if (capability.isWorking()) { - // TODO PrimitiveRecipeLogic - // if (capability instanceof PrimitiveRecipeLogic) { - // return; // do not show info for primitive machines, as they are supposed to appear powerless - // } var recipe = capability.getLastRecipe(); if (recipe != null) { - long EUt = recipe.getInputEUt(); - boolean isInput = true; - if (EUt == 0) { - isInput = false; - EUt = recipe.getOutputEUt(); + var EUt = RecipeHelper.getRealEUtWithIO(recipe); + if (EUt.isEmpty()) { + // do not show energy usage on machines that do not use energy + return; } - long absEUt = Math.abs(EUt); - String text = null; + String formatted = FormattingUtil.formatNumbers(EUt.getTotalEU()) + TextStyleClass.INFO; + Component text = null; if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { var machine = machineBlockEntity.getMetaMachine(); if (machine instanceof SteamMachine) { - text = ChatFormatting.RED.toString() + absEUt + TextStyleClass.INFO + " mB/t " + - LocalizationUtils.format("material.steam"); + text = Component.literal(formatted + " mB/t").withStyle(ChatFormatting.GREEN); } } if (text == null) { - // Default behavior, if this TE is not a steam machine (or somehow not instanceof - // IGregTechTileEntity...) - text = ChatFormatting.RED.toString() + absEUt + TextStyleClass.INFO + " EU/t" + - ChatFormatting.GREEN + " (" + GTValues.VNF[GTUtil.getTierByVoltage(absEUt)] + - ChatFormatting.GREEN + ")"; + text = Component.literal(formatted + " EU/t ").withStyle(ChatFormatting.RED) + .append(Component.literal("(").withStyle(ChatFormatting.GREEN)) + .append(GTValues.VNF[GTUtil.getTierByVoltage(EUt.voltage())]) + .append(Component.literal(")").withStyle(ChatFormatting.GREEN)); } - if (EUt > 0) { - if (isInput) { - probeInfo.text(CompoundText.create() - .text(Component.translatable("gtceu.top.energy_consumption").append(" ").append(text)) - .style(TextStyleClass.INFO)); - } else { - probeInfo.text(CompoundText.create() - .text(Component.translatable("gtceu.top.energy_production").append(" ").append(text)) - .style(TextStyleClass.INFO)); - } + if (EUt.isInput()) { + probeInfo.text(CompoundText.create() + .text(Component.translatable("gtceu.top.energy_consumption").append(" ").append(text)) + .style(TextStyleClass.INFO)); + } else { + probeInfo.text(CompoundText.create() + .text(Component.translatable("gtceu.top.energy_production").append(" ").append(text)) + .style(TextStyleClass.INFO)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 3348dd15186..4f4d4d8f13e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.WidgetUtils; +import com.gregtechceu.gtceu.api.gui.widget.ButtonWidget; import com.gregtechceu.gtceu.api.gui.widget.PredicatedButtonWidget; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; @@ -15,9 +16,11 @@ import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.recipe.condition.DimensionCondition; +import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; @@ -102,13 +105,10 @@ private void setRecipeWidget() { addWidget(group); - long EUt = recipe.getInputEUt(); - if (EUt == 0) { - EUt = recipe.getOutputEUt(); - } + EnergyStack EUt = RecipeHelper.getRealEUt(recipe); int yOffset = 5 + size.height; this.yOffset = yOffset; - yOffset += EUt > 0 ? 20 : 0; + yOffset += !EUt.isEmpty() ? 30 : 0; if (recipe.data.getBoolean("duration_is_total_cwu")) { yOffset -= 10; } @@ -147,16 +147,15 @@ private void initializeRecipeTextWidget() { String tierText = GTValues.VNF[tier]; int textsY = yOffset - 10; int duration = recipe.duration; - long inputEUt = recipe.getInputEUt(); - long outputEUt = recipe.getOutputEUt(); - List texts = getRecipeParaText(recipe, duration, inputEUt, outputEUt); + var EUt = RecipeHelper.getRealEUtWithIO(recipe); + List texts = getRecipeParaText(recipe, duration, EUt); for (Component text : texts) { textsY += 10; LabelWidget labelWidget = new LabelWidget(3 - xOffset, textsY, text).setTextColor(-1).setDropShadow(true); addWidget(labelWidget); recipeParaTexts.add(labelWidget); } - if (inputEUt > 0) { + if (EUt.isInput()) { LabelWidget voltageTextWidget = new LabelWidget(getVoltageXOffset() - xOffset, getSize().height - 10, tierText).setTextColor(-1).setDropShadow(false); if (recipe.recipeType.isOffsetVoltageText()) { @@ -167,30 +166,21 @@ private void initializeRecipeTextWidget() { addWidget(new ButtonWidget(voltageTextWidget.getPositionX(), voltageTextWidget.getPositionY(), voltageTextWidget.getSizeWidth(), voltageTextWidget.getSizeHeight(), cd -> setRecipeOC(cd.button, cd.isShiftClick)) - .setHoverTooltips( - Component.translatable("gtceu.oc.tooltip.0", GTValues.VNF[minTier]), - Component.translatable("gtceu.oc.tooltip.1"), - Component.translatable("gtceu.oc.tooltip.2"), - Component.translatable("gtceu.oc.tooltip.3"), - Component.translatable("gtceu.oc.tooltip.4"))); + .setHoverTooltips(LangHandler.getMultiLang("gtceu.oc.tooltip", GTValues.VNF[minTier]) + .toArray(Component[]::new))); addWidget(this.voltageTextWidget = voltageTextWidget); } } @NotNull - private static List getRecipeParaText(GTRecipe recipe, int duration, long inputEUt, long outputEUt) { + private static List getRecipeParaText(GTRecipe recipe, int duration, + EnergyStack.WithIO eu) { List texts = new ArrayList<>(); if (!recipe.data.getBoolean("hide_duration")) { texts.add(Component.translatable("gtceu.recipe.duration", FormattingUtil.formatNumbers(duration / 20f))); } - var EUt = inputEUt; - boolean isOutput = false; - if (EUt == 0) { - EUt = outputEUt; - isOutput = true; - } - if (EUt > 0) { - long euTotal = EUt * duration; + if (eu.voltage() > 0) { + long euTotal = eu.getTotalEU() * duration; // sadly we still need a custom override here, since computation uses duration and EU/t very differently if (recipe.data.getBoolean("duration_is_total_cwu") && recipe.tickInputs.containsKey(CWURecipeCapability.CAP)) { @@ -201,8 +191,10 @@ private static List getRecipeParaText(GTRecipe recipe, int duration, } else { texts.add(Component.translatable("gtceu.recipe.total", FormattingUtil.formatNumbers(euTotal))); } - texts.add(Component.translatable(!isOutput ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", - FormattingUtil.formatNumbers(EUt))); + texts.add(Component.translatable(eu.isInput() ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", + FormattingUtil.formatNumbers(eu.getTotalEU()))); + texts.add(Component.translatable("gtceu.recipe.voltage", + FormattingUtil.formatNumbers(eu.voltage()), FormattingUtil.formatNumbers(eu.amperage()))); } return texts; @@ -248,24 +240,24 @@ public void setRecipeOC(int button, boolean isShiftClick) { if (recipe.recipeType == GTRecipeTypes.FUSION_RECIPES) { oc = FusionReactorMachine.FUSION_OC; } - setRecipeTextWidget(oc); + setRecipeOverclockWidget(oc); setRecipeWidget(); } - private void setRecipeTextWidget(OverclockingLogic logic) { - long inputEUt = recipe.getInputEUt(); + private void setRecipeOverclockWidget(OverclockingLogic logic) { + EnergyStack inputEUt = recipe.getInputEUt(); int duration = recipe.duration; String tierText = GTValues.VNF[tier]; - if (tier > minTier && inputEUt != 0) { + if (tier > minTier && !inputEUt.isEmpty()) { int ocs = tier - minTier; if (minTier == ULV) ocs--; - var params = new OverclockingLogic.OCParams(inputEUt, recipe.duration, ocs, 1); + var params = new OverclockingLogic.OCParams(inputEUt.voltage(), recipe.duration, ocs, 1); var result = logic.runOverclockingLogic(params, V[tier]); duration = (int) (duration * result.durationMultiplier()); - inputEUt = (long) (inputEUt * result.eutMultiplier()); + inputEUt = inputEUt.multiplyVoltage(result.eutMultiplier()); tierText = tierText.formatted(ChatFormatting.ITALIC); } - List texts = getRecipeParaText(recipe, duration, inputEUt, 0); + List texts = getRecipeParaText(recipe, duration, new EnergyStack.WithIO(inputEUt, IO.IN)); for (int i = 0; i < texts.size(); i++) { recipeParaTexts.get(i).setComponent(texts.get(i)); } From aa9351617a7da99479667756dbe53ea770b43a5a Mon Sep 17 00:00:00 2001 From: IamNotBrianZ <74340257+IamNotBrianZ@users.noreply.github.com> Date: Sun, 6 Jul 2025 19:48:23 +0800 Subject: [PATCH 113/270] Update zh_tw.json (#3283) --- .../resources/assets/gtceu/lang/zh_tw.json | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_tw.json b/src/main/resources/assets/gtceu/lang/zh_tw.json index 9440ee33e3f..412cf332802 100644 --- a/src/main/resources/assets/gtceu/lang/zh_tw.json +++ b/src/main/resources/assets/gtceu/lang/zh_tw.json @@ -1063,7 +1063,7 @@ "block.gtceu.small_light_concrete_bricks": "淺色混凝土小塊磚", "block.gtceu.small_marble_bricks": "大理岩小塊磚", "block.gtceu.small_red_granite_bricks": "紅花崗岩小塊磚", - "block.gtceu.solid_machine_casing": "脫氧機械方塊", + "block.gtceu.solid_machine_casing": "脫氧鋼機械方塊", "block.gtceu.spatial_storage_hazard_sign_block": "空間儲存危害警示方塊", "block.gtceu.square_dark_concrete_bricks": "深色混凝土方形磚", "block.gtceu.square_light_concrete_bricks": "淺色混凝土方形磚", @@ -1097,7 +1097,7 @@ "block.gtceu.steel_firebox_casing": "鋼製燃燒室", "block.gtceu.steel_gearbox": "鋼齒輪箱機械方塊", "block.gtceu.steel_large_boiler": "大型鋼鍋爐", - "block.gtceu.steel_machine_casing": "脫氧鋼機械方塊", + "block.gtceu.steel_machine_casing": "牢固機械方塊", "block.gtceu.steel_multiblock_tank": "鋼製多方塊儲罐", "block.gtceu.steel_pipe_casing": "鋼管道方塊", "block.gtceu.steel_tank_valve": "鋼製儲罐閥門", @@ -1972,6 +1972,10 @@ "cover.ender_fluid_link.private.tooltip.disabled.1": "私有權歸最初加裝該覆蓋板的玩家所有", "cover.ender_fluid_link.private.tooltip.enabled": "切換至公共儲罐模式", "cover.ender_fluid_link.title": "終界流體連線", + "cover.ender_fluid_link.tooltip.channel_description": "把輸入文本設為頻道描述", + "cover.ender_fluid_link.tooltip.channel_name": "把輸入文本設為頻道名", + "cover.ender_fluid_link.tooltip.clear_button": "清除頻道描述", + "cover.ender_fluid_link.tooltip.list_button": "顯示頻道列表", "cover.filter.blacklist.disabled": "白名單", "cover.filter.blacklist.enabled": "黑名單", "cover.filter.mode.filter_both": "過濾兩者", @@ -2057,9 +2061,9 @@ "cover.universal.manual_import_export.mode.description.0": "§e禁用§r-僅依照覆蓋板與內部過濾卡的指定規則傳輸。", "cover.universal.manual_import_export.mode.description.1": "§e過濾§r-外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", "cover.universal.manual_import_export.mode.description.2": "§e無過濾§r-外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", - "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", - "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b過濾\\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", - "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b無過濾\\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", + "cover.universal.manual_import_export.mode.disabled": "特殊I/O模式:§b禁用\n§7僅依照覆蓋板與內部過濾卡的指定規則傳輸。", + "cover.universal.manual_import_export.mode.filtered": "特殊I/O模式:§b過濾\n§7外部I/O將只根據過濾卡的指定規則傳輸,不受覆蓋板的限制。", + "cover.universal.manual_import_export.mode.unfiltered": "特殊I/O模式:§b無過濾\n§7外部I/O無視所有傳輸規則,過濾卡將僅控制覆蓋板進行的I/O。", "cover.voiding.label.disabled": "禁用", "cover.voiding.label.enabled": "啟用", "cover.voiding.message.disabled": "已禁用銷毀覆蓋板", @@ -2164,6 +2168,7 @@ "gtceu.canner": "裝罐機", "gtceu.centrifuge": "離心機", "gtceu.chance_logic.and": "AND", + "gtceu.chance_logic.first": "第一", "gtceu.chance_logic.none": "NONE", "gtceu.chance_logic.or": "OR", "gtceu.chance_logic.xor": "XOR", @@ -2354,7 +2359,7 @@ "gtceu.gui.multiblock_item_voiding.0": "銷毀模式", "gtceu.gui.multiblock_item_voiding.1": "§7銷毀§6物品", "gtceu.gui.multiblock_no_voiding.0": "銷毀模式", - "gtceu.gui.multiblock_no_voiding.1": "§7不進行銷毀", + "gtceu.gui.multiblock_no_voiding.1": "§7不銷毀", "gtceu.gui.output_setting.title": "輸出設定", "gtceu.gui.output_setting.tooltips.0": "左擊以自動輸出物品", "gtceu.gui.output_setting.tooltips.1": "右擊以自動輸出流體", @@ -2881,20 +2886,20 @@ "gtceu.machine.maintenance_hatch_tape_slot.tooltip": "放入膠帶以防止出現故障", "gtceu.machine.maintenance_hatch_tool_slot.tooltip": "所需工具處於物品欄時空手點選該槽位來進行維修", "gtceu.machine.me.copy_paste.tooltip": "手持快閃記憶體,左擊複製設定,右擊貼上設定", - "gtceu.machine.me.export.tooltip": "在連線到ME網路之前,它具有無限容量。", + "gtceu.machine.me.export.tooltip": "在連線到ME網路之前,具有無限容量。", "gtceu.machine.me.fluid_export.tooltip": "將流體直接儲存到ME網路中。", "gtceu.machine.me.fluid_import.data_stick.name": "§oME輸入倉設定資料", - "gtceu.machine.me.fluid_import.tooltip": "自動從ME網路獲取流體。", + "gtceu.machine.me.fluid_import.tooltip": "自動從ME網路取出定量流體。", "gtceu.machine.me.import_copy_settings": "已將設定儲存到快閃記憶體", - "gtceu.machine.me.import_paste_settings": "已從快閃記憶體應用設定", + "gtceu.machine.me.import_paste_settings": "已應用快閃記憶體中的設定", "gtceu.machine.me.item_export.tooltip": "將物品直接儲存到ME網路中。", "gtceu.machine.me.item_import.data_stick.name": "§oME輸入匯流排設定資料", - "gtceu.machine.me.item_import.tooltip": "自動從ME網路獲取物品。", + "gtceu.machine.me.item_import.tooltip": "自動從ME網路取出定量物品。", "gtceu.machine.me.stocking_auto_pull_disabled": "ME自動拉取已停用", "gtceu.machine.me.stocking_auto_pull_enabled": "ME自動拉取已啟用", - "gtceu.machine.me.stocking_fluid.tooltip.0": "直接從ME網路抽取流體", + "gtceu.machine.me.stocking_fluid.tooltip.0": "直接從ME網路取用流體", "gtceu.machine.me.stocking_fluid.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種流體,每5秒更新一次。", - "gtceu.machine.me.stocking_item.tooltip.0": "直接從ME網路抽取物品", + "gtceu.machine.me.stocking_item.tooltip.0": "直接從ME網路取用物品", "gtceu.machine.me.stocking_item.tooltip.1": "ME自動拉取模式將自動標記ME網路中的前16種物品,每5秒更新一次。", "gtceu.machine.me_import_fluid_hatch.configs.tooltip": "可標記16種流體", "gtceu.machine.me_import_item_hatch.configs.tooltip": "可標記16種物品", @@ -3179,8 +3184,9 @@ "gtceu.multiblock.computation.usage": "使用:%s", "gtceu.multiblock.cracker.description": "裂解機是一種用於將輕燃油和重燃油裂解為相應裂解物的多方塊結構。", "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", - "gtceu.multiblock.data_bank.description": "資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更復雜的研究資料。", + "gtceu.multiblock.data_bank.description": "資料庫是一個用於在多個裝配線間分享研究資料的多方塊結構。此外,它也能讓裝配線讀取資料模組裡更複雜的研究資料。", "gtceu.multiblock.data_bank.providing": "提供資料。", + "gtceu.multiblock.dimension": "§e維度:§r%sx%sx%s", "gtceu.multiblock.distillation_tower.description": "蒸餾塔是一種用於蒸餾不同石油及其副產品的多方塊結構。", "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸餾%s", "gtceu.multiblock.electric_blast_furnace.description": "電力高爐是一種用來熔鍊合金、熔化金屬或冶煉礦的多方塊結構。也可用於獲取高階的合金和金屬,例如鋁、不鏽鋼、鈦或矽岩合金。", @@ -3190,13 +3196,13 @@ "gtceu.multiblock.fluid_rig.drilled_fluid": "流體:%s", "gtceu.multiblock.fluid_rig.fluid_amount": "抽取速率:%s", "gtceu.multiblock.fluid_rig.no_fluid_in_area": "區域內沒有。", - "gtceu.multiblock.fluid_rig.vein_depleted": "礦脈已耗盡", + "gtceu.multiblock.fluid_rig.vein_depleted": "礦脈已枯竭", "gtceu.multiblock.fluid_rig.vein_depletion": "礦脈大小:%s", "gtceu.multiblock.fusion_reactor.energy": "EU:%d / %d", "gtceu.multiblock.fusion_reactor.heat": "熱量:%d", "gtceu.multiblock.generation_eu": "輸出功率:§a%s EU/t", "gtceu.multiblock.hpca.computation": "提供:%s", - "gtceu.multiblock.hpca.description": "高效能運算陣列(HPCA)是個多方塊結構,用於為更復雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", + "gtceu.multiblock.hpca.description": "高效能運算陣列(HPCA)是個多方塊結構,用於為更複雜的裝配線研究資料提供計算工作單元(CWU/t)。該結構中有3×3的區域可以以任意方式填充HPCA元件,不同的元件提供不同數量的算力,冷卻與能源成本,並且影響熱量的產出與冷卻液的消耗。當存在橋接元件時,HPCA可以連線入網路交換機,讓不同來源的算力整合並輸出到一個或多個目的地。", "gtceu.multiblock.hpca.energy": "使用:%s / %s EU/t (%s)", "gtceu.multiblock.hpca.error_damaged": "計算元件損壞!", "gtceu.multiblock.hpca.error_temperature": "溫度超過100℃,可能導致計算元件損壞!", @@ -3339,7 +3345,7 @@ "gtceu.multiblock.pyrolyse_oven.description": "熱解爐是一種用於將原木處理為木炭、雜酚油、灰燼或重油的多方塊結構。", "gtceu.multiblock.pyrolyse_oven.speed": "處理速度:%s%%", "gtceu.multiblock.require_steam_parts": "需要蒸汽倉與輸入/輸出匯流排(蒸汽)!", - "gtceu.multiblock.research_station.description": "研究站是個多方塊結構,用於研究更復雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", + "gtceu.multiblock.research_station.description": "研究站是個多方塊結構,用於研究更複雜的裝配線研究資料。任何需要資料球或資料模組的研究必須使用研究站而非掃描器來掃描。研究站需要計算工作單位(CWU/t)來進行工作,這由高效能運算陣列(HPCA)提供。", "gtceu.multiblock.research_station.researching": "§6研究中…", "gtceu.multiblock.running": "執行正常。", "gtceu.multiblock.steam.duration_modifier": "處理耗時為基礎的§f1.5§7倍,不受物品數量影響。", @@ -3358,7 +3364,7 @@ "gtceu.multiblock.turbine.rotor_durability": "轉子耐久度:%s%%", "gtceu.multiblock.turbine.rotor_speed": "轉子轉速:%s/%sRPM", "gtceu.multiblock.universal.distinct": "匯流排隔離:", - "gtceu.multiblock.universal.distinct.info": "啟用時,每個物品匯流排將在配方識別中被視為完全獨立。對於消耗材料相同,使用的非消耗材料(模具、透鏡等)不同則產物也不同的配方來說作用顯著。", + "gtceu.multiblock.universal.distinct.info": "啟用時,每個物品匯流排將在配方識別中完全獨立。對於消耗材料相同,但是非消耗材料(模具、透鏡等)不同的配方來說作用顯著。", "gtceu.multiblock.universal.distinct.no": "否", "gtceu.multiblock.universal.distinct.yes": "是", "gtceu.multiblock.universal.has_problems": "存在故障!", @@ -3688,7 +3694,7 @@ "item.gtceu.basic_integrated_circuit.tooltip.0": "§7更小也更強", "item.gtceu.basic_integrated_circuit.tooltip.1": "§6LV級電路", "item.gtceu.basic_tape": "膠帶", - "item.gtceu.basic_tape.tooltip": "強度不足,無法解決機械故障\\n可以带走板條箱,且不丟失物品", + "item.gtceu.basic_tape.tooltip": "強度不足,無法解決機械故障\n可以带走板條箱,且不丟失物品", "item.gtceu.battery.charge_detailed": "%s/%sEU-%s級§7(剩餘供能時長:%s/%s%s§7)", "item.gtceu.battery.charge_time": "§a最大供能時長:%s%s(%s)", "item.gtceu.battery.charge_unit.hour": "時", @@ -3722,8 +3728,8 @@ "item.gtceu.capacitor": "電容", "item.gtceu.capacitor.tooltip": "§7基礎電子元件", "item.gtceu.carbon_fiber_mesh": "碳纖維網", - "item.gtceu.carbon_fiber_plate": "碳板", - "item.gtceu.carbon_fibers": "生碳纖維", + "item.gtceu.carbon_fiber_plate": "碳纖維板", + "item.gtceu.carbon_fibers": "碳纖維", "item.gtceu.casing_casting_mold.tooltip": "§7用來製作外殼的鑄造模具", "item.gtceu.casing_extruder_mold.tooltip": "§7用來製作外殼的擠壓模具", "item.gtceu.cassiterite_sand_dust": "錫石礦砂", @@ -4007,7 +4013,6 @@ "item.gtceu.lime_dye_spray_can": "噴漆罐(淺綠色)", "item.gtceu.lime_glass_lens": "玻璃透鏡(淺綠色)", "item.gtceu.liquid_fuel_jetpack": "液體燃料噴射背包", - "item.gtceu.long_rod_extruder_mold": "擠壓模具(長桿)", "item.gtceu.long_treated_wood_rod": "長防腐木棍", "item.gtceu.long_wood_rod": "長木棍", "item.gtceu.lpic_chip": "LPIC晶片", @@ -4698,6 +4703,9 @@ "material.gtceu.bastnasite": "氟碳鑭鈰", "material.gtceu.battery_alloy": "電池合金", "material.gtceu.bauxite": "鋁土", + "material.gtceu.bauxite_slag": "鋁土礦渣", + "material.gtceu.bauxite_sludge": "鋁土泥渣", + "material.gtceu.bauxite_slurry": "鋁土漿液", "material.gtceu.bentonite": "膨潤土", "material.gtceu.benzene": "苯", "material.gtceu.berkelium": "鉳", @@ -4718,7 +4726,7 @@ "material.gtceu.blue_dye": "藍色染料", "material.gtceu.blue_steel": "藍鋼", "material.gtceu.blue_topaz": "藍黃玉", - "material.gtceu.bohrium": "釒波", + "material.gtceu.bohrium": "𨨏", "material.gtceu.bone": "骨頭", "material.gtceu.borax": "硼砂", "material.gtceu.bornite": "斑銅", @@ -4780,6 +4788,7 @@ "material.gtceu.cooperite": "謝爾頓", "material.gtceu.copernicium": "鎶", "material.gtceu.copper": "銅", + "material.gtceu.cracked_bauxite_slurry": "裂解鋁土漿液", "material.gtceu.creosote": "雜酚油", "material.gtceu.cumene": "異丙苯", "material.gtceu.cupric_oxide": "氧化銅", @@ -4791,6 +4800,7 @@ "material.gtceu.damascus_steel": "大馬士革鋼", "material.gtceu.dark_ash": "黑色灰燼", "material.gtceu.darmstadtium": "鐽", + "material.gtceu.decalcified_bauxite_sludge": "脫鈣鋁土泥渣", "material.gtceu.deepslate": "深板岩", "material.gtceu.depleted_uranium_hexafluoride": "枯竭六氟化鈾", "material.gtceu.deuterium": "氘", @@ -4816,7 +4826,7 @@ "material.gtceu.dissolved_calcium_acetate": "乙酸鈣溶液", "material.gtceu.distilled_water": "蒸餾水", "material.gtceu.drilling_fluid": "鑽井液", - "material.gtceu.dubnium": "釒杜", + "material.gtceu.dubnium": "𨧀", "material.gtceu.duranium": "鏗鈾", "material.gtceu.dysprosium": "鏑", "material.gtceu.echo_shard": "回聲碎片", @@ -4893,7 +4903,7 @@ "material.gtceu.gunpowder": "火藥", "material.gtceu.gypsum": "石膏", "material.gtceu.hafnium": "鉿", - "material.gtceu.hassium": "釒黑", + "material.gtceu.hassium": "𨭆", "material.gtceu.hastelloy_c_276": "哈斯特洛依合金 C-276", "material.gtceu.hastelloy_x": "哈斯特洛依合金-X", "material.gtceu.heavy_fuel": "重燃油", @@ -4922,6 +4932,7 @@ "material.gtceu.hypochlorous_acid": "次氯酸", "material.gtceu.ice": "冰", "material.gtceu.ilmenite": "鈦鐵", + "material.gtceu.ilmenite_slag": "鈦鐵礦渣", "material.gtceu.impure_enriched_naquadah_solution": "含雜富集矽岩溶液", "material.gtceu.impure_naquadria_solution": "含雜超能矽岩溶液", "material.gtceu.incoloy_ma_956": "耐熱鉻鐵合金 MA-956", @@ -5048,7 +5059,7 @@ "material.gtceu.nobelium": "鍩", "material.gtceu.obsidian": "黑曜石", "material.gtceu.octane": "辛烷", - "material.gtceu.oganesson": "氣奧", + "material.gtceu.oganesson": "鿫", "material.gtceu.oil": "石油", "material.gtceu.oil_heavy": "重油", "material.gtceu.oil_light": "輕油", @@ -5167,7 +5178,7 @@ "material.gtceu.scandium": "鈧", "material.gtceu.scheelite": "白鎢", "material.gtceu.sculk": "伏聆", - "material.gtceu.seaborgium": "釒喜", + "material.gtceu.seaborgium": "𨭎", "material.gtceu.seed_oil": "種子油", "material.gtceu.selenium": "硒", "material.gtceu.severely_hydro_cracked_gas": "重度加氫裂解煉油氣", @@ -5232,7 +5243,7 @@ "material.gtceu.tantalum_carbide": "碳化鉭", "material.gtceu.technetium": "鎝", "material.gtceu.tellurium": "碲", - "material.gtceu.tennessine": "石田", + "material.gtceu.tennessine": "鿬", "material.gtceu.terbium": "鋱", "material.gtceu.tetrafluoroethylene": "四氟乙烯", "material.gtceu.tetrahedrite": "黝銅", @@ -5364,9 +5375,9 @@ "metaitem.cover.digital.wireless.tooltip.1": "§f手持右擊中央監控器§7來進行遠端綁定。", "metaitem.cover.digital.wireless.tooltip.2": "§f手持並潛行右擊§7則可移除現有綁定。", "metaitem.cover.digital.wireless.tooltip.3": "§a綁定至:§f%s", - "metaitem.crushed.tooltip.purify": "右擊盛有水的鍋釜以清洗", + "metaitem.crushed.tooltip.purify": "右擊裝水的鍋釜以清洗", "metaitem.debug_scanner.tooltip": "三錄儀", - "metaitem.dust.tooltip.purify": "右擊盛有水的鍋釜以清洗", + "metaitem.dust.tooltip.purify": "右擊裝水的鍋釜以清洗", "metaitem.electric.discharge_mode.disabled": "§e釋能模式已禁用", "metaitem.electric.discharge_mode.enabled": "§e釋能模式已啟用", "metaitem.electric.discharge_mode.tooltip": "潛行右擊以開關釋能模式", @@ -5511,6 +5522,7 @@ "tagprefix.spring": "%s彈簧", "tagprefix.stairs": "%s階梯", "tagprefix.stone": "%s礦", + "tagprefix.surface_rock": "地表岩石(%s)", "tagprefix.tiny_dust": "小撮%s粉", "tagprefix.tuff": "凝灰岩%s礦", "tagprefix.turbine_blade": "%s渦輪扇葉", From 1f67e2a5257ee7416e6ce9b2f70254bc110f0207 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 6 Jul 2025 08:03:53 -0400 Subject: [PATCH 114/270] Update README.md Fix Logo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ca15d2312d5..d7d278e903e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -

Logo

+

Logo

GregTech CEu: Modern

-

GregTech:CEu built on modern Minecraft versions for Forge(1.20.1) & NeoForge(1.21+).

+

GregTech:CEu for modern Minecraft versions MinecraftForge (1.20.1) & NeoForge (1.21.1+).

Supported Versions License From 217b528a2505a81fec55830de11fc728a8182f1d Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 6 Jul 2025 06:43:22 -0600 Subject: [PATCH 115/270] add cape (#3330) --- .../java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java index f866beb4f39..b7018839ff7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cosmetics/GTCapes.java @@ -64,6 +64,7 @@ public static void giveDevCapes(RegisterGTCapesEvent event) { event.unlockCapeFor(UUID.fromString("c43b3c3d-7da6-4c2b-b335-703fce2ed795"), GREGTECH_CAPE); // Ghostipedia event.unlockCapeFor(UUID.fromString("88374b6a-4710-46cd-bb04-a1580905a918"), GREGTECH_CAPE); // Ghzdude event.unlockCapeFor(UUID.fromString("5d7073e3-882f-4c4a-94b3-0e5ba1c11e02"), GREGTECH_CAPE); // htmlcsjs + event.unlockCapeFor(UUID.fromString("c18c1d7f-3174-42c6-81dc-3c7ff9f720c3"), GREGTECH_CAPE); // jurrejelle event.unlockCapeFor(UUID.fromString("29f1e04c-58d8-4a3b-9eff-f85be7825256"), GREGTECH_CAPE); // kross000 event.unlockCapeFor(UUID.fromString("2fa297a6-7803-4629-8360-7059155cf43e"), GREGTECH_CAPE); // KilaBash event.unlockCapeFor(UUID.fromString("44f38ff8-aad7-49c3-acb3-d92317af9078"), GREGTECH_CAPE); // LAGIdiot From 9e9b472c0b923bcd635c6c4cdabdbab8434e399b Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 6 Jul 2025 06:54:34 -0600 Subject: [PATCH 116/270] Enable Remapping on markAndNotifyBlock (#3333) --- .../java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index b02242dc89d..fa7e47b7edb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -63,7 +63,8 @@ public abstract class LevelMixin implements LevelAccessor { @SuppressWarnings("ConstantValue") @Inject(method = "markAndNotifyBlock", at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/level/Level;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V"), + target = "Lnet/minecraft/world/level/Level;blockUpdated(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/Block;)V", + remap = true), remap = false) private void gtceu$updateChunkMultiblocks(BlockPos pos, LevelChunk chunk, BlockState oldState, BlockState newState, int flags, int recursionLeft, From 0c12d3d5658ed769e0ac7478607ba3f61e0fc7da Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 6 Jul 2025 09:14:08 -0400 Subject: [PATCH 117/270] Add Textures for Quad / Nonuple Pipes & Batch GUI Button (#3335) --- .../gtceu/textures/block/pipe/pipe_non_side.png | Bin 0 -> 428 bytes .../textures/block/pipe/pipe_quad_side.png | Bin 0 -> 416 bytes .../gtceu/textures/gui/widget/button_batch.png | Bin 447 -> 382 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png create mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/pipe_quad_side.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png b/src/main/resources/assets/gtceu/textures/block/pipe/pipe_non_side.png new file mode 100644 index 0000000000000000000000000000000000000000..18778e9f9798a4b516f9586ac787d23699793140 GIT binary patch literal 428 zcmV;d0aN~oP)f7 zu4zyrm!xoH#RKpcku4j+&s9(M-P61C^XhWBysD}KKx>VZlK&8MwAN%*RdG6<==&ak z{eI7Gw@XCE7yzub0D*6eAp_|9o?#dO7=|I#-w^XNt#ufyEK8cEK?o7Z)>`Iy2B0Vk z0F+W_tpQj|De1Zn;HOv!LEE+fbX`ZD=Zgg&qA@1;9mf%CZD?56HO3gmaZK!Fz9`Ew zglDY{O+ADV;XKZ0{T@&}_Ph8Kk_KMv!}=tCZ@%{4KVAM3LzKZZO+24Zgb>tq4Z!_= zPp0$OY&K~Fe|b0@Lh5ml^E|WNZh_@Fl~O^I`GtUG3){B+I(AVM$;LY8$fT5Ex0O=d zZZ}|g))>RK$7CD5ou+93xL&WxUs#>b=U1NR066FH^*6*E=Ny07 Whv6{G@@o?S0000I^RSxG_T!U{KtxC2Mv0yzv9;4nxW zAvFz3ze(3&oB%C zY`0rBn@uKi&H>=P2Z(&<90kBI426GWm!I3kPttK<*#xkIS78FsH!Rxrou3lB|a~g%XbIBSMfAWZ!R(iGH0zdTI;ND?|sZ@o@cby+-|pb2lx9u z_N|nPVu4H}<;D-Bp?yj_6^lDLFJvL$xrJ@p{wYp3HiST7jETG5_dVzH8OTTVYFqf% z>ova%&N+6wT{Z==+cXUTr_(9B3yZ_y@F>d?fDi&we?!U%A@B literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png b/src/main/resources/assets/gtceu/textures/gui/widget/button_batch.png index 9fbd717d7c85b8b1dae3386f0509cdc0872040ac..aede89d9b918bb51c40fc8a7245a48dfdaab2426 100644 GIT binary patch delta 347 zcmV-h0i^!F1O5V#EPuoR01m_fl`9S#0003nNkl z2MP87CT0RXLT0=y#0Llz3O3zaDztUwX}22IaG>>u=j%+ zS!*94ueNQY8>VRr&h3AG2rW(pS%Cn6nV(~&)CwjAdkIBQN`FBqwSdN~1wo|>f|wc1 zys+kFt<48X);48SDzR$7cjY8&*`VCbQBbP!vOrze0RYBvjP^_tq_y6hnRrG%vue;h zvuqF%iJe-iUDGtxH>B43VQq_*xr{N(Gdkan(GBmXkKo+uutSSeLBy(EjCqdx*~8#r zQn29P-xHxHT2w$|*8ct)@tO3(n`fw86C0>1;0EPufO01m+cxRGn^00043Nkl-@25JhpuMT*>qv|Jz+ zN1@0OG6P4U$^~eBAQ$P9JTp7KbcVmhK9Jrlr<(-9ZM~ zw$0k&br^>1+9Q#!l!R!GHVPnx=6Z$crbUn%0Gi3Jemx69WPb)A-o%`*08*3o-ss0K zenQ8j(qy{k`v5v?^q_Dw6Vx0FPe{b1rSezSN|gm6u7RKrN2@&&5Gny#3KjtBn7N}$ zKwemrt_Z40Lx3yqBHkyhb?N)Q`3*Ua<9@SgT56i6^i%u#etpXO{P@Xg!p$xTaUX3I zK-ukNQenDj5r1@ho5bFA@Av(e#>@&tm<0hbBO(uF&Q}1bNqcYfoaZvLM7Y5cJ__{`o+3rV@}nY#0IR_!%q#d2vm;BB& Date: Sun, 6 Jul 2025 15:35:26 +0200 Subject: [PATCH 118/270] Remove shouldSearchContent (#3334) --- .../gtceu/api/capability/recipe/FluidRecipeCapability.java | 2 -- .../gtceu/api/capability/recipe/IRecipeHandler.java | 2 ++ .../gtceu/api/capability/recipe/ItemRecipeCapability.java | 2 -- .../com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java | 2 +- .../gtceu/api/machine/trait/NotifiableItemStackHandler.java | 3 +++ .../machine/multiblock/electric/AssemblyLineMachine.java | 3 --- .../common/machine/multiblock/part/FluidHatchPartMachine.java | 2 +- .../common/machine/multiblock/part/ItemBusPartMachine.java | 2 +- .../common/machine/trait/customlogic/ArcFurnaceLogic.java | 1 - .../gtceu/common/machine/trait/customlogic/BreweryLogic.java | 2 -- .../gtceu/common/machine/trait/customlogic/CannerLogic.java | 2 -- .../common/machine/trait/customlogic/FormingPressLogic.java | 1 - .../gtceu/common/machine/trait/customlogic/MaceratorLogic.java | 1 - 13 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index d1fa2147a6b..4734250c4e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -259,7 +259,6 @@ private static List> getInputContents(IRecipeCapabilit var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); for (IRecipeHandler handler : handlers) { Object2IntOpenHashMap distinctInv = new Object2IntOpenHashMap<>(); - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof FluidStack stack && !stack.isEmpty()) { distinctInv.addTo(stack, stack.getAmount()); @@ -277,7 +276,6 @@ private static List> getInputContents(IRecipeCapabilit var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); Object2IntOpenHashMap inventory = new Object2IntOpenHashMap<>(); for (var handler : handlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof FluidStack stack && !stack.isEmpty()) { inventory.addTo(stack, stack.getAmount()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java index 69d2261afdc..debdf34eba8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java @@ -60,7 +60,9 @@ default boolean isDistinct() { * The main use of this is differentiating circuit inventories from item inventories * * @return {@code true} if this {@code IRecipeHandler} has content to be searched + * @deprecated since all contents should be searched. */ + @Deprecated(since = "7.0.0", forRemoval = true) default boolean shouldSearchContent() { return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 723b1e6e36b..25013138eff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -316,7 +316,6 @@ private static List> getInputContents(IRecipeCapability var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); for (IRecipeHandler handler : handlers) { Object2IntOpenCustomHashMap distinctInv = new Object2IntOpenCustomHashMap<>(strat); - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { distinctInv.addTo(stack, stack.getCount()); @@ -334,7 +333,6 @@ private static List> getInputContents(IRecipeCapability var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); Object2IntOpenCustomHashMap inventory = new Object2IntOpenCustomHashMap<>(strat); for (var handler : handlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { inventory.addTo(stack, stack.getCount()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 8039a8f4b75..c83db4b559f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -111,7 +111,7 @@ public SimpleTieredMachine(IMachineBlockEntity holder, int tier, Int2IntFunction this.outputFacingItems = hasFrontFacing() ? getFrontFacing().getOpposite() : Direction.UP; this.outputFacingFluids = outputFacingItems; this.chargerInventory = createChargerItemHandler(args); - this.circuitInventory = createCircuitItemHandler(args).shouldSearchContent(false); + this.circuitInventory = createCircuitItemHandler(args); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index f59c2aa3e1f..2b613b5b463 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -45,6 +45,9 @@ public class NotifiableItemStackHandler extends NotifiableRecipeHandlerTrait container.getContents().stream() .filter(ItemStack.class::isInstance) .map(ItemStack.class::cast) @@ -102,7 +100,6 @@ private boolean checkFluidInputs(@NotNull GTRecipe recipe) { if (fluidHandlers.size() < inputsSize) return false; var fluidInventory = fluidHandlers.stream() - .filter(IRecipeHandler::shouldSearchContent) .map(container -> container.getContents().stream() .filter(FluidStack.class::isInstance) .map(FluidStack.class::cast) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index dc19d510e2f..fd0a8719c1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -88,7 +88,7 @@ public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int in this.slots = slots; this.tank = createTank(initialCapacity, slots, args); this.circuitSlotEnabled = true; - this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); + this.circuitInventory = createCircuitItemHandler(io); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 8bb9992f24a..2d989accdfc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -83,7 +83,7 @@ public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... super(holder, tier, io); this.inventory = createInventory(args); this.circuitSlotEnabled = true; - this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); + this.circuitInventory = createCircuitItemHandler(io); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java index 9f5cdc3eb7f..5a9d9c32d3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/ArcFurnaceLogic.java @@ -35,7 +35,6 @@ public enum ArcFurnaceLogic implements GTRecipeType.ICustomRecipeLogic { public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { var recipeHandlers = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); for (var handler : recipeHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (!(content instanceof ItemStack stack)) continue; if (stack.isEmpty()) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java index 77246d2f241..065d89b49ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/BreweryLogic.java @@ -260,7 +260,6 @@ private static boolean collect(RecipeHandlerList rhl, List itemStacks private static boolean collect(List> itemHandlers, List> fluidHandlers, List itemStacks, List fluidStacks) { for (var handler : itemHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { itemStacks.add(stack); @@ -269,7 +268,6 @@ private static boolean collect(List> itemHandlers, List itemStacks private static boolean collect(List> itemHandlers, List> fluidHandlers, List itemStacks, List fluidStacks) { for (var handler : itemHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { itemStacks.add(stack); @@ -180,7 +179,6 @@ private static boolean collect(List> itemHandlers, List collect(List> handlers) { if (handlers.isEmpty()) return Collections.emptyList(); List list = new ArrayList<>(); for (var handler : handlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { list.add(stack); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java index 427cafee25f..1be615852ae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/customlogic/MaceratorLogic.java @@ -36,7 +36,6 @@ public enum MaceratorLogic implements GTRecipeType.ICustomRecipeLogic { public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { var recipeHandlers = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP); for (var handler : recipeHandlers) { - if (!handler.shouldSearchContent()) continue; for (var content : handler.getContents()) { if (!(content instanceof ItemStack stack)) continue; if (stack.isEmpty()) continue; From 37b790f407739f4fff668237f9f59f8a56cbcda9 Mon Sep 17 00:00:00 2001 From: Spicierspace153 Date: Sun, 6 Jul 2025 07:38:13 -0600 Subject: [PATCH 119/270] refactor material builder api to allow for custom tags (#3307) Co-authored-by: jurrejelle --- .../api/data/chemical/material/Material.java | 17 +++++++++++++++++ .../gregtechceu/gtceu/core/MixinHelpers.java | 7 +++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index dd38d4f5cb2..b677b4fb0d1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -83,6 +83,13 @@ public class Material implements Comparable { */ private String chemicalFormula; + /** + * Material specific tags + */ + @Setter + @Getter + private List> itemTags = new ArrayList<>(); + private String calculateChemicalFormula() { if (chemicalFormula != null) return this.chemicalFormula; if (materialInfo.element != null) { @@ -551,6 +558,8 @@ public static class Builder extends BuilderBase { private final MaterialFlags flags; private Set ignoredTagPrefixes = null; + private final List> itemTags = new ArrayList<>(); + private String formula = null; /* @@ -582,6 +591,11 @@ public Builder(ResourceLocation resourceLocation) { flags = new MaterialFlags(); } + public Builder customTags(TagKey key) { + this.itemTags.add(key); + return this; + } + /* * Material Types */ @@ -1282,6 +1296,9 @@ public Material buildAndRegister() { } var mat = new Material(materialInfo, properties, flags); + if (!itemTags.isEmpty()) { + mat.setItemTags(itemTags); + } if (formula != null) { mat.setFormula(formula); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 767d7d05aca..30d46f78ca7 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -72,8 +72,11 @@ public static void generateGTDynamicTags(Map materialTag : materialTags) { + var prefixTagKeys = entry.tagPrefix().getAllItemTags(material); + for (TagKey prefixTag : prefixTagKeys) { + tagMap.computeIfAbsent(prefixTag.location(), path -> new ArrayList<>()).addAll(entries); + } + for (TagKey materialTag : material.getItemTags()) { tagMap.computeIfAbsent(materialTag.location(), path -> new ArrayList<>()).addAll(entries); } From c3579731933be6cf55dff7c9ddfbb3c8b970038a Mon Sep 17 00:00:00 2001 From: DilithiumThoride Date: Sun, 6 Jul 2025 08:46:46 -0500 Subject: [PATCH 120/270] Implement Ranged Fluid Outputs (V3) (#3269) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_us.json | 1 + .../recipe/FluidRecipeCapability.java | 31 +++- .../machine/trait/NotifiableFluidTank.java | 32 +++- .../gtceu/api/recipe/content/Content.java | 27 +++- .../recipe/ingredient/FluidIngredient.java | 9 +- .../IntProviderFluidIngredient.java | 116 +++++++++++++++ .../common/valueprovider/AddedFloat.java | 4 +- .../common/valueprovider/MultipliedFloat.java | 4 +- .../gtceu/data/lang/LangHandler.java | 1 + .../data/recipe/builder/GTRecipeBuilder.java | 8 + .../jade/provider/RecipeOutputProvider.java | 140 ++++++++++++------ .../kjs/recipe/GTRecipeSchema.java | 29 ++++ .../recipe/components/GTRecipeComponents.java | 3 + .../top/provider/RecipeOutputProvider.java | 46 ++++-- 14 files changed, 369 insertions(+), 82 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 2faf4a6757f..e799c329788 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2327,6 +2327,7 @@ "gtceu.gui.content.chance_tier_boost_minus": "Bonus Chance: -%s%%/tier", "gtceu.gui.content.chance_tier_boost_plus": "Bonus Chance: +%s%%/tier", "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.fluid_range": "%s-%smB", "gtceu.gui.content.per_tick": "§aConsumed/Produced Per Tick§r", "gtceu.gui.content.tips.per_second_short": "§a/second§r", "gtceu.gui.content.tips.per_tick_short": "§a/tick§r", diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 4734250c4e6..d035747be4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -10,11 +10,16 @@ import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.recipe.content.SerializerFluidIngredient; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; import com.gregtechceu.gtceu.api.recipe.modifier.ParallelLogic; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.client.TooltipsHandler; +import com.gregtechceu.gtceu.common.valueprovider.AddedFloat; +import com.gregtechceu.gtceu.common.valueprovider.CastedFloat; +import com.gregtechceu.gtceu.common.valueprovider.FlooredInt; +import com.gregtechceu.gtceu.common.valueprovider.MultipliedFloat; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidEntryList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidStackList; import com.gregtechceu.gtceu.integration.xei.entry.fluid.FluidTagList; @@ -25,8 +30,11 @@ import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.jei.IngredientIO; +import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.util.valueproviders.ConstantFloat; +import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.item.TooltipFlag; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; @@ -57,6 +65,15 @@ public FluidIngredient copyInner(FluidIngredient content) { @Override public FluidIngredient copyWithModifier(FluidIngredient content, ContentModifier modifier) { if (content.isEmpty()) return content.copy(); + if (content instanceof IntProviderFluidIngredient provider) { + return IntProviderFluidIngredient.of(provider.getInner(), + new FlooredInt( + new AddedFloat( + new MultipliedFloat( + new CastedFloat(provider.getCountProvider()), + ConstantFloat.of((float) modifier.multiplier())), + ConstantFloat.of((float) modifier.addition())))); + } FluidIngredient copy = content.copy(); copy.setAmount(modifier.apply(copy.getAmount())); return copy; @@ -350,7 +367,12 @@ public void applyWidgetInfo(@NotNull Widget widget, FluidStack stack = ingredient.getStacks()[0]; TooltipsHandler.appendFluidTooltips(stack, tooltips::add, TooltipFlag.NORMAL); } - + if (ingredient instanceof IntProviderFluidIngredient provider) { + IntProvider countProvider = provider.getCountProvider(); + tooltips.add(Component.translatable("gtceu.gui.content.fluid_range", + countProvider.getMinValue(), countProvider.getMaxValue()) + .withStyle(ChatFormatting.GOLD)); + } GTRecipeWidget.setConsumedChance(content, recipe.getChanceLogicForCapability(this, io, isTickSlot(index, io, recipe)), tooltips, recipeTier, chanceTier, recipeType.getChanceFunction()); @@ -367,7 +389,12 @@ public void applyWidgetInfo(@NotNull Widget widget, // Maps fluids to a FluidEntryList for XEI: either a FluidTagList or a FluidStackList public static FluidEntryList mapFluid(FluidIngredient ingredient) { - int amount = ingredient.getAmount(); + int amount; + if (ingredient instanceof IntProviderFluidIngredient provider) { + amount = provider.getCountProvider().getMaxValue(); + } else { + amount = ingredient.getAmount(); + } CompoundTag tag = ingredient.getNbt(); FluidTagList tags = new FluidTagList(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index f7a61dce97b..6241f375621 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.utils.GTTransferUtils; @@ -116,13 +117,32 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List 5) { s = "X-Y"; - color = 0xEE0000; + color = ChatFormatting.GOLD.getColor(); // Orange? } graphics.drawString(fontRenderer, s, (int) ((x + (width / 3f)) * 2 - fontRenderer.width(s) + 21), (int) ((y + (height / 3f) + 6) * 2), color, true); @@ -130,15 +132,24 @@ public void drawFluidAmount(GuiGraphics graphics, float x, float y, int width, i graphics.pose().pushPose(); graphics.pose().translate(0, 0, 400); graphics.pose().scale(0.5f, 0.5f, 1); - int amount = ingredient.getAmount(); Font fontRenderer = Minecraft.getInstance().font; - String s = FormattingUtil.formatBuckets(amount); - if (fontRenderer.width(s) > 32) - s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_1F, "B"); - if (fontRenderer.width(s) > 32) - s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_0F, "B"); + int color; + String s; + if (content instanceof IntProviderFluidIngredient) { + // with only 5 characters worth of space, that's not enough for a fluid range + color = ChatFormatting.GOLD.getColor(); + s = "X-Y"; + } else { + int amount = ingredient.getAmount(); + color = 0xFFFFFF; + s = FormattingUtil.formatBuckets(amount); + if (fontRenderer.width(s) > 32) + s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_1F, "B"); + if (fontRenderer.width(s) > 32) + s = FormattingUtil.formatNumberReadable(amount, true, FormattingUtil.DECIMAL_FORMAT_0F, "B"); + } graphics.drawString(fontRenderer, s, (int) ((x + (width / 3f)) * 2 - fontRenderer.width(s) + 22), - (int) ((y + (height / 3f) + 6) * 2), 0xFFFFFF, true); + (int) ((y + (height / 3f) + 6) * 2), color, true); graphics.pose().popPose(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java index 31e735c3740..b84c0fe6840 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java @@ -38,10 +38,10 @@ public class FluidIngredient implements Predicate { @Nullable public FluidStack[] stacks; @Getter - private int amount; + protected int amount; @Getter - private CompoundTag nbt; - private boolean changed = true; + protected CompoundTag nbt; + protected boolean changed = true; protected FluidIngredient(Value[] values, int amount, @Nullable CompoundTag nbt) { this.values = values; @@ -231,6 +231,9 @@ public static FluidIngredient fromJson(@Nullable JsonElement json, boolean allow throw new JsonSyntaxException("Expected fluid ingredient to be object"); } JsonObject jsonObject = GsonHelper.convertToJsonObject(json, "ingredient"); + if (GsonHelper.isObjectNode(jsonObject, "count_provider")) { + return IntProviderFluidIngredient.fromJson(json); + } int amount = GsonHelper.getAsInt(jsonObject, "amount", 0); CompoundTag nbt = jsonObject.has("nbt") ? CraftingHelper.getNBT(jsonObject.get("nbt")) : null; if (GsonHelper.isObjectNode(jsonObject, "value")) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java new file mode 100644 index 00000000000..7a592e78c63 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java @@ -0,0 +1,116 @@ +package com.gregtechceu.gtceu.api.recipe.ingredient; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraftforge.fluids.FluidStack; + +import com.google.gson.*; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +public class IntProviderFluidIngredient extends FluidIngredient { + + public static final Codec CODEC = ExtraCodecs.JSON + .xmap(IntProviderFluidIngredient::fromJson, IntProviderFluidIngredient::toJson); + + @Getter + private final IntProvider countProvider; + @Setter + protected int sampledCount = -1; + @Getter + private final FluidIngredient inner; + @Setter + protected FluidStack[] fluidStacks = null; + + protected IntProviderFluidIngredient(FluidIngredient inner, IntProvider provider) { + super(inner.values, provider.getMaxValue(), null); + this.inner = inner; + this.countProvider = provider; + } + + @Override + public IntProviderFluidIngredient copy() { + IntProviderFluidIngredient ipfi = new IntProviderFluidIngredient(this.inner, this.countProvider); + ipfi.setSampledCount(this.sampledCount); + return ipfi; + } + + @Override + public int getAmount() { + return -1; + } + + @Override + public FluidStack[] getStacks() { + if (fluidStacks == null) { + inner.setAmount(getSampledCount(GTValues.RNG)); + fluidStacks = inner.getStacks(); + } + return fluidStacks; + } + + public @NotNull FluidStack getMaxSizeStack() { + FluidStack[] in = inner.getStacks(); + if (in.length == 0) return FluidStack.EMPTY; + return new FluidStack(in[0], countProvider.getMaxValue()); + } + + public int getSampledCount(@NotNull RandomSource random) { + if (sampledCount == -1) { + sampledCount = countProvider.sample(random); + } + return sampledCount; + } + + @Override + public boolean isEmpty() { + return inner.isEmpty(); + } + + public static IntProviderFluidIngredient of(FluidIngredient inner, IntProvider provider) { + return new IntProviderFluidIngredient(inner, provider); + } + + public static IntProviderFluidIngredient of(FluidStack inner, int min, int max) { + return IntProviderFluidIngredient.of(FluidIngredient.of(inner), UniformInt.of(min, max)); + } + + @Override + public @NotNull JsonElement toJson() { + JsonObject json = new JsonObject(); + json.add("count_provider", IntProvider.CODEC.encodeStart(JsonOps.INSTANCE, countProvider) + .getOrThrow(false, GTCEu.LOGGER::error)); + json.add("inner", inner.toJson()); + return json; + } + + public static IntProviderFluidIngredient fromJson(JsonElement json) { + if (json == null || json.isJsonNull()) { + throw new JsonSyntaxException("Fluid ingredient cannot be null"); + } + JsonObject jsonObject = GsonHelper.convertToJsonObject(json, "ingredient"); + IntProvider amount = IntProvider.CODEC.parse(JsonOps.INSTANCE, jsonObject.get("count_provider")) + .getOrThrow(false, GTCEu.LOGGER::error); + FluidIngredient inner = FluidIngredient.fromJson(jsonObject.get("inner")); + return new IntProviderFluidIngredient(inner, amount); + } + + public CompoundTag toNBT() { + return (CompoundTag) JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, this.toJson()); + } + + public static IntProviderFluidIngredient fromNBT(CompoundTag nbt) { + return IntProviderFluidIngredient.fromJson(NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbt)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java index 661e015f32f..d4b265ce907 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/AddedFloat.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTValueProviderTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProviderType; @@ -41,7 +42,8 @@ public float getMinValue() { @Override public float getMaxValue() { - return this.source.getMaxValue() + this.modifier.getMaxValue(); + return this.source.getMaxValue() + + (this.modifier instanceof ConstantFloat c ? c.getValue() : this.modifier.getMaxValue()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java index fe7fd084cf2..55de210bdc3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java +++ b/src/main/java/com/gregtechceu/gtceu/common/valueprovider/MultipliedFloat.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.common.data.GTValueProviderTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.FloatProvider; import net.minecraft.util.valueproviders.FloatProviderType; @@ -41,7 +42,8 @@ public float getMinValue() { @Override public float getMaxValue() { - return this.source.getMaxValue() * this.multiplier.getMaxValue(); + return this.source.getMaxValue() * + (this.multiplier instanceof ConstantFloat c ? c.getValue() : this.multiplier.getMaxValue()); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 7454aec174c..a044e861e0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1349,6 +1349,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.content.chance_boosted", "Chance at Tier: %s%%"); provider.add("gtceu.gui.content.chance_boosted_logic", "Chance at Tier: %s%% (%s)"); provider.add("gtceu.gui.content.count_range", "%s-%sx"); + provider.add("gtceu.gui.content.fluid_range", "%s-%smB"); provider.add("gtceu.chance_logic.or", "OR"); provider.add("gtceu.chance_logic.and", "AND"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 7e9e01f3dc5..9b27b1f4f3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -968,6 +968,14 @@ public GTRecipeBuilder outputFluids(FluidIngredient... outputs) { return output(FluidRecipeCapability.CAP, outputs); } + public GTRecipeBuilder outputFluidsRanged(FluidStack output, IntProvider intProvider) { + return outputFluidsRanged(FluidIngredient.of(output), intProvider); + } + + protected GTRecipeBuilder outputFluidsRanged(FluidIngredient output, IntProvider intProvider) { + return outputFluids(IntProviderFluidIngredient.of(output, intProvider)); + } + ////////////////////////////////////// // ********** DATA ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java index 1107ed5f059..97c1003e080 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java @@ -6,6 +6,10 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; import com.gregtechceu.gtceu.integration.jade.GTElementHelper; import com.gregtechceu.gtceu.utils.GTUtil; @@ -14,15 +18,21 @@ import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; +import com.google.gson.JsonObject; +import com.mojang.serialization.JsonOps; import org.jetbrains.annotations.Nullable; import snownee.jade.api.BlockAccessor; import snownee.jade.api.ITooltip; @@ -59,19 +69,22 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { ListTag itemTags = new ListTag(); for (var item : itemContents) { - var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); - if (stacks.length == 0) continue; - if (stacks[0].isEmpty()) continue; - var stack = stacks[0]; - var itemTag = new CompoundTag(); - GTUtil.saveItemStack(stack, itemTag); - if (item.chance < item.maxChance) { - int count = stack.getCount(); - double countD = (double) count * recipe.parallels * - function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; - count = countD < 1 ? 1 : (int) Math.round(countD); - itemTag.putInt("Count", count); + if (item.content instanceof IntProviderIngredient provider) { + // don't bother rolling output + itemTag = (CompoundTag) JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, provider.toJson()); + } else { + var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); + if (stacks.length == 0 || stacks[0].isEmpty()) continue; + var stack = stacks[0]; + GTUtil.saveItemStack(stack, itemTag); + if (item.chance < item.maxChance) { + int count = stack.getCount(); + double countD = (double) count * recipe.parallels * + function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; + count = countD < 1 ? 1 : (int) Math.round(countD); + itemTag.putInt("Count", count); + } } itemTags.add(itemTag); } @@ -82,19 +95,24 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { ListTag fluidTags = new ListTag(); for (var fluid : fluidContents) { - var stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); - if (stacks.length == 0) continue; - if (stacks[0].isEmpty()) continue; - var stack = stacks[0]; - var fluidTag = new CompoundTag(); - stack.writeToNBT(fluidTag); - if (fluid.chance < fluid.maxChance) { - int amount = stack.getAmount(); - double amountD = (double) amount * recipe.parallels * - function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; - amount = amountD < 1 ? 1 : (int) Math.round(amountD); - fluidTag.putInt("Amount", amount); + if (fluid.content instanceof IntProviderFluidIngredient provider) { + // don't bother rolling output for nothing + fluidTag = provider.toNBT(); + } else { + FluidStack[] stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); + if (stacks.length == 0) continue; + if (stacks[0].isEmpty()) continue; + var stack = stacks[0]; + stack.writeToNBT(fluidTag); + + if (fluid.chance < fluid.maxChance) { + int amount = stacks[0].getAmount(); + double amountD = (double) amount * recipe.parallels * + function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; + amount = amountD < 1 ? 1 : (int) Math.round(amountD); + fluidTag.putInt("Amount", amount); + } } fluidTags.add(fluidTag); } @@ -110,28 +128,39 @@ protected void write(CompoundTag data, RecipeLogic recipeLogic) { protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, BlockEntity blockEntity, IPluginConfig config) { if (capData.getBoolean("Working")) { - List outputItems = new ArrayList<>(); + List outputItems = new ArrayList<>(); if (capData.contains("OutputItems", Tag.TAG_LIST)) { ListTag itemTags = capData.getList("OutputItems", Tag.TAG_COMPOUND); if (!itemTags.isEmpty()) { for (Tag tag : itemTags) { if (tag instanceof CompoundTag tCompoundTag) { - var stack = GTUtil.loadItemStack(tCompoundTag); - if (!stack.isEmpty()) { - outputItems.add(stack); + if (tCompoundTag.contains("count_provider")) { + var ingredient = IntProviderIngredient.SERIALIZER + .parse((JsonObject) NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, tCompoundTag)); + outputItems.add(ingredient); + } else { + var stack = GTUtil.loadItemStack(tCompoundTag); + if (!stack.isEmpty()) { + outputItems.add(SizedIngredient.create(stack)); + } } } } } } - List outputFluids = new ArrayList<>(); + List outputFluids = new ArrayList<>(); if (capData.contains("OutputFluids", Tag.TAG_LIST)) { ListTag fluidTags = capData.getList("OutputFluids", Tag.TAG_COMPOUND); for (Tag tag : fluidTags) { if (tag instanceof CompoundTag tCompoundTag) { - var stack = FluidStack.loadFluidStackFromNBT(tCompoundTag); - if (!stack.isEmpty()) { - outputFluids.add(stack); + if (tCompoundTag.contains("count_provider")) { + var ingredient = IntProviderFluidIngredient.fromNBT(tCompoundTag); + outputFluids.add(ingredient); + } else { + var stack = FluidStack.loadFluidStackFromNBT(tCompoundTag); + if (!stack.isEmpty()) { + outputFluids.add(FluidIngredient.of(stack)); + } } } } @@ -144,31 +173,46 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, } } - private void addItemTooltips(ITooltip iTooltip, List outputItems) { + private void addItemTooltips(ITooltip iTooltip, List outputItems) { IElementHelper helper = iTooltip.getElementHelper(); - for (ItemStack itemOutput : outputItems) { + for (Ingredient itemOutput : outputItems) { if (itemOutput != null && !itemOutput.isEmpty()) { - int count = itemOutput.getCount(); - itemOutput.setCount(1); - iTooltip.add(helper.smallItem(itemOutput)); - Component text = Component.literal(" ") - .append(String.valueOf(count)) - .append("× ") - .append(getItemName(itemOutput)) + ItemStack item = itemOutput.getItems()[0]; + int count = item.getCount(); + item.setCount(1); + iTooltip.add(helper.smallItem(item)); + MutableComponent text = CommonComponents.space(); + if (itemOutput instanceof IntProviderIngredient provider) { + text.append(String.valueOf(provider.getCountProvider().getMinValue())) + .append("-") + .append(String.valueOf(provider.getCountProvider().getMaxValue())); + } else { + text.append(String.valueOf(count)); + } + text.append("× ") + .append(getItemName(item)) .withStyle(ChatFormatting.WHITE); iTooltip.append(text); } } } - private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { - for (FluidStack fluidOutput : outputFluids) { + private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { + for (FluidIngredient fluidOutput : outputFluids) { if (fluidOutput != null && !fluidOutput.isEmpty()) { - iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput))); - Component text = Component.literal(" ") - .append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)) - .append(" ") - .append(getFluidName(fluidOutput)) + iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput.getStacks()[0]))); + MutableComponent text = CommonComponents.space(); + if (fluidOutput instanceof IntProviderFluidIngredient provider) { + text.append(FluidTextHelper.getUnicodeMillibuckets( + provider.getCountProvider().getMinValue(), true)) + .append("-") + .append(FluidTextHelper.getUnicodeMillibuckets( + provider.getCountProvider().getMaxValue(), true)); + } else { + text.append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)); + } + text.append(CommonComponents.space()) + .append(getFluidName(fluidOutput.getStacks()[0])) .withStyle(ChatFormatting.WHITE); iTooltip.append(text); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index 42d55bd98b3..a6d0dd72582 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -35,6 +35,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -42,12 +43,14 @@ import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.level.biome.Biome; import net.minecraftforge.common.crafting.StrictNBTIngredient; +import net.minecraftforge.fluids.FluidStack; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import dev.ftb.mods.ftbquests.quest.QuestObjectBase; import dev.latvian.mods.kubejs.fluid.FluidStackJS; import dev.latvian.mods.kubejs.fluid.InputFluid; +import dev.latvian.mods.kubejs.fluid.OutputFluid; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; import dev.latvian.mods.kubejs.recipe.RecipeExceptionJS; @@ -695,6 +698,16 @@ public GTRecipeJS outputFluids(FluidStackJS... outputs) { return output(FluidRecipeCapability.CAP, (Object[]) outputs); } + public GTRecipeJS outputFluidsRanged(FluidStackJS output, int min, int max) { + return outputFluidsRanged(output, UniformInt.of(min, max)); + } + + public GTRecipeJS outputFluidsRanged(FluidStackJS output, IntProvider range) { + FluidStack stack = new FluidStack(output.getFluid(), (int) output.getAmount(), output.getNbt()); + return output(FluidRecipeCapability.CAP, + IntProviderFluidIngredient.of(FluidIngredient.of(stack), range)); + } + ////////////////////////////////////// // ********** DATA ***********// ////////////////////////////////////// @@ -1087,6 +1100,22 @@ public JsonElement writeInputFluid(InputFluid value) { public InputFluid readInputFluid(Object from) { return super.readInputFluid(from); } + + @Override + public OutputFluid readOutputFluid(Object from) { + return GTRecipeComponents.FluidIngredientJS.of(from); + } + + @Override + public JsonElement writeOutputFluid(OutputFluid value) { + if (value instanceof FluidIngredient ingredient) { + return ingredient.toJson(); + } else if (value instanceof GTRecipeComponents.FluidIngredientJS ingredientJS) { + return ingredientJS.getIngredient().toJson(); + } + var fluid = ((FluidStackJS) value).getFluidStack(); + return FluidIngredient.of((int) fluid.getAmount(), fluid.getFluid()).toJson(); + } } RecipeKey ID = GTRecipeComponents.RESOURCE_LOCATION.key("id"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index c0b3333d5a4..3a58c5e223a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; @@ -442,6 +443,8 @@ public boolean matches(FluidLike other) { public static FluidIngredientJS of(Object o) { if (o instanceof FluidIngredientJS ingredientJS) { return ingredientJS; + } else if (o instanceof IntProviderFluidIngredient ingredient) { + return new FluidIngredientJS(ingredient.copy()); } else if (o instanceof FluidIngredient ingredient) { return new FluidIngredientJS(ingredient); } else if (o instanceof JsonElement json) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java index 23215c14a6c..a636e708dc0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java @@ -6,6 +6,9 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderFluidIngredient; +import com.gregtechceu.gtceu.api.recipe.ingredient.IntProviderIngredient; import com.gregtechceu.gtceu.integration.top.element.FluidStackElement; import com.gregtechceu.gtceu.integration.top.element.FluidStyle; @@ -14,10 +17,9 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.fluids.FluidStack; import mcjty.theoneprobe.api.CompoundText; import mcjty.theoneprobe.api.ElementAlignment; @@ -54,7 +56,7 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play var itemContents = recipe.getOutputContents(ItemRecipeCapability.CAP); var fluidContents = recipe.getOutputContents(FluidRecipeCapability.CAP); - List itemOutputs = new ArrayList<>(); + List itemOutputs = new ArrayList<>(); for (var item : itemContents) { var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); if (stacks.length == 0) continue; @@ -68,10 +70,10 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play count = countD < 1 ? 1 : (int) Math.round(countD); stack.setCount(count); } - itemOutputs.add(stack); + itemOutputs.add(Ingredient.of(stack)); } - List fluidOutputs = new ArrayList<>(); + List fluidOutputs = new ArrayList<>(); for (var fluid : fluidContents) { var stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); if (stacks.length == 0) continue; @@ -85,7 +87,7 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play amount = amountD < 1 ? 1 : (int) Math.round(amountD); stack.setAmount(amount); } - fluidOutputs.add(stack); + fluidOutputs.add(FluidIngredient.of(stack)); } if (!itemOutputs.isEmpty() || !fluidOutputs.isEmpty()) { @@ -99,25 +101,43 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play } } - private void addItemInfo(IProbeInfo verticalPane, List outputItems) { + private void addItemInfo(IProbeInfo verticalPane, List outputItems) { IProbeInfo horizontalPane; - for (ItemStack itemOutput : outputItems) { + for (Ingredient itemOutput : outputItems) { if (itemOutput != null && !itemOutput.isEmpty()) { horizontalPane = verticalPane .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontalPane.item(itemOutput, new ItemStyle().width(16).height(16)).text(" ").itemLabel(itemOutput); + String spacer = " "; + if (itemOutput instanceof IntProviderIngredient provider) { + spacer += provider.getCountProvider().getMinValue() + "-" + + provider.getCountProvider().getMaxValue() + " "; + provider.setItemStacks(null); // no roll + provider.setSampledCount(1); + } + horizontalPane.item(itemOutput.getItems()[0], + new ItemStyle().width(16).height(16)) + .text(spacer) + .itemLabel(itemOutput.getItems()[0]); } } } - private void addFluidInfo(IProbeInfo verticalPane, List outputFluids) { + private void addFluidInfo(IProbeInfo verticalPane, List outputFluids) { IProbeInfo horizontalPane; - for (FluidStack fluidOutput : outputFluids) { + for (FluidIngredient fluidOutput : outputFluids) { if (fluidOutput != null && !fluidOutput.isEmpty()) { horizontalPane = verticalPane .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - horizontalPane.element(new FluidStackElement(fluidOutput, new FluidStyle())).text(" ") - .text(fluidOutput.getDisplayName()); + String spacer = " "; + if (fluidOutput instanceof IntProviderFluidIngredient provider) { + spacer += provider.getCountProvider().getMinValue() + "-" + + provider.getCountProvider().getMaxValue() + " "; + fluidOutput.setAmount(provider.getCountProvider().getMaxValue()); // no roll + } + horizontalPane.element(new FluidStackElement(fluidOutput.getStacks()[0], + new FluidStyle())) + .text(spacer) + .text(fluidOutput.getStacks()[0].getDisplayName()); } } } From f41225f093aa232b43ebc4ca4468059034c43d5d Mon Sep 17 00:00:00 2001 From: marisathewitch Date: Sun, 6 Jul 2025 17:47:54 +0400 Subject: [PATCH 121/270] Translated using Weblate (Russian) for 1.20.1 (#3282) Co-authored-by: Western01 Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../resources/assets/gtceu/lang/ru_ru.json | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index c5680b354e4..3c6f765d7ec 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -2629,7 +2629,7 @@ "item.gtceu.tool.harvest_level.2": "§aЖелезо", "item.gtceu.tool.harvest_level.3": "§bАлмаз", "item.gtceu.tool.harvest_level.4": "§dНезерит", - "item.gtceu.tool.harvest_level.5": "§9Дураний", + "item.gtceu.tool.harvest_level.5": "§9Дюраний", "item.gtceu.tool.harvest_level.6": "§cНейтроний", "item.gtceu.tool.hoe": "Мотыга (%s)", "item.gtceu.tool.knife": "Нож (%s)", @@ -4232,7 +4232,7 @@ "material.gtceu.distilled_water": "Дистиллированная вода", "material.gtceu.drilling_fluid": "Буровой раствор", "material.gtceu.dubnium": "Дубний", - "material.gtceu.duranium": "Дураний", + "material.gtceu.duranium": "Дюраний", "material.gtceu.dysprosium": "Диспрозий", "material.gtceu.einsteinium": "Эйнштейний", "material.gtceu.electrum": "Электрум", @@ -4242,7 +4242,7 @@ "material.gtceu.ender_eye": "Око Эндера", "material.gtceu.ender_pearl": "Эндер-жемчуг", "material.gtceu.enriched_naquadah_sulfate": "Обогащенный сульфат наквады", - "material.gtceu.enriched_naquadah_trinium_europium_duranide": "Обогащенный наквада триний европий дураний", + "material.gtceu.enriched_naquadah_trinium_europium_duranide": "Обогащенный наквада триний европий дюраний", "material.gtceu.enriched_naquadah_waste": "Обогащенные отходы наквады", "material.gtceu.epichlorohydrin": "Эпихлоргидрин", "material.gtceu.erbium": "Эрбий", @@ -5541,5 +5541,35 @@ "ldlib.gui.editor.register.widget.container.gtm_phantom_fluid_slot": "Слот фантомной жидкости GTM", "ldlib.gui.editor.register.widget.container.gtm_fluid_slot": "Жидкостный слот GTM", "ldlib.gui.editor.register.widget.container.gtm_item_slot": "Предметный слот GTM", - "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "Слот фантомного предмета GTM" + "ldlib.gui.editor.register.widget.container.gtm_phantom_item_slot": "Слот фантомного предмета GTM", + "command.gtceu.cape.give.success.single": "Разблокировано %s плащей для %s", + "command.gtceu.cape.take.failed": "Нет плащей для удаления", + "command.gtceu.cape.take.success.multiple": "Забрали %s плащей от %s игроков", + "command.gtceu.cape.take.success.single": "Забрали %ы плащей у %s", + "command.gtceu.cape.use.success": "%s теперь использует плащ %s", + "command.gtceu.cape.use.success.none": "%s больше не использует плащ", + "cover.ender_fluid_link.tooltip.channel_name": "Установить название канала введённым текстом", + "cover.ender_fluid_link.tooltip.clear_button": "Очистить описание канала", + "gtceu.multiblock.dimensions.0": "Размеры: ", + "command.gtceu.cape.give.failed": "Новые плащи не были открыты", + "command.gtceu.cape.give.success.multiple": "Разблокировано %s плащей для %s игроков", + "command.gtceu.cape.use.failed": "%s не может использовать плащ %s, так как у него его нет (или его не существует)!", + "gtceu.chance_logic.first": "ПЕРВЫЙ", + "cover.ender_fluid_link.tooltip.channel_description": "Установить описание канала введённым текстом", + "cover.ender_fluid_link.tooltip.list_button": "Показать список каналов", + "gtceu.multiblock.dimensions.1": " §c§lШирина§r: %s, §a§lВысота§r: %s, §9§lГлубина§r: %s ", + "material.gtceu.bauxite_slurry": "Бокситовая суспензия", + "tagprefix.surface_rock": "Поверхностная порода (%s)", + "material.gtceu.bauxite_sludge": "Шлам боксита", + "material.gtceu.cracked_bauxite_slurry": "Бокситовая суспензия прошедшая крекинг", + "material.gtceu.decalcified_bauxite_sludge": "Декальцинированный шлам боксита", + "material.gtceu.ilmenite_slag": "Ильменитовый шлак", + "material.gtceu.bauxite_slag": "Бокситовый шлак", + "config.gtceu.option.coloredTieredMachineOutline": "coloredTieredMachineOutline", + "item.gtceu.armor.boots": "Ботинки (%s)", + "gtceu.multiblock.dimension": "§eРазмер: §r%sx%sx%s", + "config.gtceu.option.coloredWireOutline": "coloredWireOutline", + "item.gtceu.armor.chestplate": "Нагрудник (%s)", + "item.gtceu.armor.helmet": "Шлем (%s)", + "item.gtceu.armor.leggings": "Поножи (%s)" } From b3718ffaf0ddf105295309a194ea28e6d4f8a1b0 Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+ofoxsmith@users.noreply.github.com> Date: Sun, 6 Jul 2025 23:56:56 +1000 Subject: [PATCH 122/270] Switch networking code to use forge SimpleChannel directly, instead of ldlib networking wrapper (#3332) --- .../gtceu/api/cosmetics/CapeRegistry.java | 7 +- .../EnvironmentalHazardSavedData.java | 10 +- .../common/commands/GTClientCommands.java | 2 +- .../common/item/PortableScannerBehavior.java | 2 +- .../machine/electric/AirScrubberMachine.java | 2 +- .../gtceu/common/network/GTNetwork.java | 98 +++++++++++++++---- .../network/packets/CPacketKeysPressed.java | 32 +++--- .../packets/SCPacketShareProspection.java | 43 ++++---- .../packets/SPacketNotifyCapeChange.java | 23 +++-- .../network/packets/SPacketSendWorldID.java | 18 ++-- .../packets/SPacketSyncBedrockOreVeins.java | 34 +++---- .../packets/SPacketSyncFluidVeins.java | 34 +++---- .../network/packets/SPacketSyncOreVeins.java | 32 +++--- .../packets/hazard/SPacketAddHazardZone.java | 23 +++-- .../hazard/SPacketRemoveHazardZone.java | 21 ++-- .../hazard/SPacketSyncHazardZoneStrength.java | 23 +++-- .../hazard/SPacketSyncLevelHazards.java | 29 +++--- .../packets/prospecting/SPacketProspect.java | 36 +++---- .../SPacketProspectBedrockFluid.java | 11 ++- .../SPacketProspectBedrockOre.java | 10 +- .../prospecting/SPacketProspectOre.java | 10 +- .../gtceu/forge/ForgeCommonEventListener.java | 28 +++--- .../map/cache/server/ServerCache.java | 8 +- .../gtceu/utils/input/KeyBind.java | 2 +- 24 files changed, 300 insertions(+), 238 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java index 5199af65205..5390b0e87d4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java @@ -248,7 +248,7 @@ public static boolean setActiveCape(UUID player, @Nullable ResourceLocation cape return false; } CURRENT_CAPES.put(player, cape); - GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(player, cape)); + GTNetwork.sendToAll(new SPacketNotifyCapeChange(player, cape)); save(); return true; } @@ -258,12 +258,11 @@ public static void loadCurrentCapesOnLogin(Player player) { if (player instanceof ServerPlayer serverPlayer) { UUID uuid = player.getUUID(); // sync to others - GTNetwork.NETWORK.sendToAll(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); + GTNetwork.sendToAll(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); // sync to the one who's logging in for (ServerPlayer otherPlayer : serverPlayer.getServer().getPlayerList().getPlayers()) { uuid = otherPlayer.getUUID(); - GTNetwork.NETWORK.sendToPlayer(new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid)), - serverPlayer); + GTNetwork.sendToPlayer(serverPlayer, new SPacketNotifyCapeChange(uuid, CURRENT_CAPES.get(uuid))); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java b/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java index 414cfc7dfe4..c15fe81bafc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/common/capability/EnvironmentalHazardSavedData.java @@ -104,7 +104,7 @@ public void tick() { hazardZones.remove(pos); if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(pos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(pos)); } } @@ -137,7 +137,7 @@ public void tick() { hazardZones.remove(pos); if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(pos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(pos)); } } this.setDirty(); @@ -210,7 +210,7 @@ public void removeZone(ChunkPos chunkPos) { this.hazardZones.remove(chunkPos); if (this.serverLevel.hasChunk(chunkPos.x, chunkPos.z)) { LevelChunk chunk = this.serverLevel.getChunk(chunkPos.x, chunkPos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(chunkPos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(chunkPos)); } } @@ -323,14 +323,14 @@ public static HazardZone fromNetwork(FriendlyByteBuf buf) { public void sendAddZonePacket(ChunkPos pos, HazardZone zone) { if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketAddHazardZone(pos, zone), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketAddHazardZone(pos, zone)); } } public void sendSyncZonePacket(ChunkPos pos, HazardZone zone) { if (this.serverLevel.hasChunk(pos.x, pos.z)) { LevelChunk chunk = this.serverLevel.getChunk(pos.x, pos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketSyncHazardZoneStrength(pos, zone.strength()), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketSyncHazardZoneStrength(pos, zone.strength())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java index bf628334abc..00e671aab77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTClientCommands.java @@ -47,7 +47,7 @@ public ProspectingShareTask(UUID sender, UUID reciever) { public void run() { boolean first = true; for (ClientCacheManager.ProspectionInfo info : prospectionData) { - GTNetwork.NETWORK.sendToServer(new SCPacketShareProspection(sender, reciever, info.cacheName, info.key, + GTNetwork.sendToServer(new SCPacketShareProspection(sender, reciever, info.cacheName, info.key, info.isDimCache, info.dim, info.data, first)); first = false; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 4c379f2755b..593b28b213e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -398,7 +398,7 @@ else if (machine instanceof IDataInfoProvider) var fluidInfo = ProspectorMode.FluidInfo .fromVeinWorldEntry(veinData.getFluidVeinWorldEntry(chunkX, chunkZ)); var packet = new SPacketProspectBedrockFluid(level.dimension(), pos, fluidInfo); - GTNetwork.NETWORK.sendToPlayer(packet, (ServerPlayer) player); + GTNetwork.sendToPlayer((ServerPlayer) player, packet); if (player.isCreative()) { list.add(Component.translatable("behavior.portable_scanner.bedrock_fluid.amount", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java index 844a879b34c..34333331774 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/AirScrubberMachine.java @@ -127,7 +127,7 @@ public boolean onWorking() { if (zone.strength() <= 0) { if (serverLevel.hasChunk(chunkPos.x, chunkPos.z)) { LevelChunk chunk = serverLevel.getChunk(chunkPos.x, chunkPos.z); - GTNetwork.NETWORK.sendToTrackingChunk(new SPacketRemoveHazardZone(chunkPos), chunk); + GTNetwork.sendToAllPlayersTrackingChunk(chunk, new SPacketRemoveHazardZone(chunkPos)); } return null; } else return zone; diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java index a2c1e0c3deb..ce34f98bb8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java @@ -10,29 +10,89 @@ import com.gregtechceu.gtceu.common.network.packets.prospecting.SPacketProspectBedrockOre; import com.gregtechceu.gtceu.common.network.packets.prospecting.SPacketProspectOre; -import com.lowdragmc.lowdraglib.networking.INetworking; -import com.lowdragmc.lowdraglib.networking.forge.LDLNetworkingImpl; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.simple.SimpleChannel; + +import java.util.Optional; +import java.util.function.Function; public class GTNetwork { - public static final INetworking NETWORK = LDLNetworkingImpl.createNetworking(GTCEu.id("network"), "0.0.1"); + private static final String PROTOCOL_VERSION = "1.0.0"; + private static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(GTCEu.id("network"), + () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + + private static int nextPacketId = 0; + + public static void sendToServer(INetPacket packet) { + INSTANCE.sendToServer(packet); + } + + public static void sendToPlayersInLevel(ResourceKey level, INetPacket packet) { + INSTANCE.send(PacketDistributor.DIMENSION.with(() -> level), packet); + } + + public static void sendToPlayersNearPoint(PacketDistributor.TargetPoint point, INetPacket packet) { + INSTANCE.send(PacketDistributor.NEAR.with(() -> point), packet); + } + + public static void sendToAllPlayersTrackingEntity(Entity entity, boolean includeSelf, INetPacket packet) { + INSTANCE.send(includeSelf ? PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity) : + PacketDistributor.TRACKING_ENTITY.with(() -> entity), packet); + } + + public static void sendToAllPlayersTrackingChunk(LevelChunk chunk, INetPacket packet) { + INSTANCE.send(PacketDistributor.TRACKING_CHUNK.with(() -> chunk), packet); + } + + public static void sendToAll(INetPacket packet) { + INSTANCE.send(PacketDistributor.ALL.noArg(), packet); + } + + public static void sendToPlayer(ServerPlayer player, INetPacket packet) { + INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), packet); + } + + public interface INetPacket { + + void encode(FriendlyByteBuf buffer); + + void execute(NetworkEvent.Context context); + } + + public static void register(Class cls, Function decode, + NetworkDirection direction) { + INSTANCE.registerMessage(nextPacketId++, cls, INetPacket::encode, decode, (msg, ctx) -> { + ctx.get().enqueueWork(() -> msg.execute(ctx.get())); + ctx.get().setPacketHandled(true); + }, Optional.ofNullable(direction)); + } public static void init() { - NETWORK.registerC2S(CPacketKeysPressed.class); - NETWORK.registerS2C(SPacketSyncOreVeins.class); - NETWORK.registerS2C(SPacketSyncFluidVeins.class); - NETWORK.registerS2C(SPacketSyncBedrockOreVeins.class); - - NETWORK.registerS2C(SPacketAddHazardZone.class); - NETWORK.registerS2C(SPacketRemoveHazardZone.class); - NETWORK.registerS2C(SPacketSyncHazardZoneStrength.class); - NETWORK.registerS2C(SPacketSyncLevelHazards.class); - NETWORK.registerS2C(SPacketProspectOre.class); - NETWORK.registerS2C(SPacketProspectBedrockFluid.class); - NETWORK.registerS2C(SPacketProspectBedrockOre.class); - NETWORK.registerS2C(SPacketSendWorldID.class); - NETWORK.registerS2C(SPacketNotifyCapeChange.class); - - NETWORK.registerBoth(SCPacketShareProspection.class); + register(CPacketKeysPressed.class, CPacketKeysPressed::new, NetworkDirection.PLAY_TO_SERVER); + register(SPacketSyncOreVeins.class, SPacketSyncOreVeins::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncFluidVeins.class, SPacketSyncFluidVeins::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncBedrockOreVeins.class, SPacketSyncBedrockOreVeins::new, NetworkDirection.PLAY_TO_CLIENT); + + register(SPacketAddHazardZone.class, SPacketAddHazardZone::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketRemoveHazardZone.class, SPacketRemoveHazardZone::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncHazardZoneStrength.class, SPacketSyncHazardZoneStrength::new, + NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSyncLevelHazards.class, SPacketSyncLevelHazards::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectOre.class, SPacketProspectOre::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectBedrockOre.class, SPacketProspectBedrockOre::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketProspectBedrockFluid.class, SPacketProspectBedrockFluid::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketSendWorldID.class, SPacketSendWorldID::new, NetworkDirection.PLAY_TO_CLIENT); + register(SPacketNotifyCapeChange.class, SPacketNotifyCapeChange::new, NetworkDirection.PLAY_TO_CLIENT); + register(SCPacketShareProspection.class, SCPacketShareProspection::new, null); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java index 3aa6800e1c1..fca6d60615a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeysPressed.java @@ -1,11 +1,10 @@ package com.gregtechceu.gtceu.common.network.packets; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.utils.input.KeyBind; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; import it.unimi.dsi.fastutil.booleans.BooleanBooleanPair; import lombok.NoArgsConstructor; @@ -14,7 +13,7 @@ @SuppressWarnings("unchecked") @NoArgsConstructor -public class CPacketKeysPressed implements IPacket { +public class CPacketKeysPressed implements GTNetwork.INetPacket { private Object updateKeys; @@ -22,6 +21,15 @@ public CPacketKeysPressed(List updateKeys) { this.updateKeys = updateKeys; } + public CPacketKeysPressed(FriendlyByteBuf buf) { + this.updateKeys = new BooleanBooleanPair[KeyBind.VALUES.length]; + BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; + int size = buf.readVarInt(); + for (int i = 0; i < size; i++) { + updateKeys[buf.readVarInt()] = BooleanBooleanPair.of(buf.readBoolean(), buf.readBoolean()); + } + } + @Override public void encode(FriendlyByteBuf buf) { List updateKeys = (List) this.updateKeys; @@ -34,24 +42,14 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - this.updateKeys = new BooleanBooleanPair[KeyBind.VALUES.length]; - BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; - int size = buf.readVarInt(); - for (int i = 0; i < size; i++) { - updateKeys[buf.readVarInt()] = BooleanBooleanPair.of(buf.readBoolean(), buf.readBoolean()); - } - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.getPlayer() != null) { + public void execute(NetworkEvent.Context context) { + if (context.getSender() != null) { KeyBind[] keybinds = KeyBind.VALUES; BooleanBooleanPair[] updateKeys = (BooleanBooleanPair[]) this.updateKeys; for (int i = 0; i < updateKeys.length; i++) { BooleanBooleanPair pair = updateKeys[i]; if (pair != null) { - keybinds[i].update(pair.firstBoolean(), pair.secondBoolean(), handler.getPlayer()); + keybinds[i].update(pair.firstBoolean(), pair.secondBoolean(), context.getSender()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java index 091fa9a2096..ba8f80f3c25 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketShareProspection.java @@ -4,9 +4,6 @@ import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.core.registries.Registries; @@ -15,13 +12,16 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; +import java.util.Objects; import java.util.UUID; @AllArgsConstructor -public class SCPacketShareProspection implements IPacket { +public class SCPacketShareProspection implements GTNetwork.INetPacket { private UUID sender; private UUID receiver; @@ -32,8 +32,20 @@ public class SCPacketShareProspection implements IPacket { private CompoundTag data; private boolean first; + @SuppressWarnings("unused") public SCPacketShareProspection() {} + public SCPacketShareProspection(FriendlyByteBuf buf) { + sender = buf.readUUID(); + receiver = buf.readUUID(); + cacheName = buf.readUtf(); + key = buf.readUtf(); + isDimCache = buf.readBoolean(); + dimension = buf.readResourceKey(Registries.DIMENSION); + data = buf.readNbt(); + first = buf.readBoolean(); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeUUID(sender); @@ -47,22 +59,11 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - sender = buf.readUUID(); - receiver = buf.readUUID(); - cacheName = buf.readUtf(); - key = buf.readUtf(); - isDimCache = buf.readBoolean(); - dimension = buf.readResourceKey(Registries.DIMENSION); - data = buf.readNbt(); - first = buf.readBoolean(); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { if (first) { - PlayerInfo senderInfo = Minecraft.getInstance().getConnection().getPlayerInfo(sender); + PlayerInfo senderInfo = Objects.requireNonNull(Minecraft.getInstance().getConnection()) + .getPlayerInfo(sender); if (senderInfo == null) { return; } @@ -70,6 +71,7 @@ public void execute(IHandlerContext handler) { Component playerName = senderInfo.getTabListDisplayName() != null ? senderInfo.getTabListDisplayName() : Component.literal(senderInfo.getProfile().getName()); + assert Minecraft.getInstance().player != null; Minecraft.getInstance().player.sendSystemMessage(Component .translatable("command.gtceu.share_prospection_data.notification", playerName)); } @@ -79,8 +81,7 @@ public void execute(IHandlerContext handler) { cacheName, key, isDimCache, dimension, data, first); - GTNetwork.NETWORK.sendToPlayer(newPacket, - GTCEu.getMinecraftServer().getPlayerList().getPlayer(receiver)); + GTNetwork.sendToPlayer(GTCEu.getMinecraftServer().getPlayerList().getPlayer(receiver), newPacket); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java index 9a817109a24..2409ba2e25b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketNotifyCapeChange.java @@ -1,12 +1,12 @@ package com.gregtechceu.gtceu.common.network.packets; import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @@ -15,11 +15,16 @@ @NoArgsConstructor @AllArgsConstructor -public class SPacketNotifyCapeChange implements IPacket { +public class SPacketNotifyCapeChange implements GTNetwork.INetPacket { public UUID uuid; public ResourceLocation cape; + public SPacketNotifyCapeChange(FriendlyByteBuf buf) { + uuid = buf.readUUID(); + cape = buf.readBoolean() ? buf.readResourceLocation() : null; + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeUUID(this.uuid); @@ -30,14 +35,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - this.uuid = buf.readUUID(); - this.cape = buf.readBoolean() ? buf.readResourceLocation() : null; - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { CapeRegistry.giveRawCape(uuid, cape); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java index 6bc3b54513d..2db91dead03 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSendWorldID.java @@ -1,32 +1,30 @@ package com.gregtechceu.gtceu.common.network.packets; import com.gregtechceu.gtceu.common.capability.WorldIDSaveData; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; import lombok.NoArgsConstructor; @NoArgsConstructor -public class SPacketSendWorldID implements IPacket { +public class SPacketSendWorldID implements GTNetwork.INetPacket { private String worldId; - @Override - public void encode(FriendlyByteBuf buf) { - buf.writeUtf(WorldIDSaveData.getWorldID()); + public SPacketSendWorldID(FriendlyByteBuf buf) { + worldId = buf.readUtf(); } @Override - public void decode(FriendlyByteBuf buf) { - this.worldId = buf.readUtf(); + public void encode(FriendlyByteBuf buf) { + buf.writeUtf(WorldIDSaveData.getWorldID()); } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientCacheManager.init(worldId); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java index d74d9596179..05fb72d1f39 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncBedrockOreVeins.java @@ -4,9 +4,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; @@ -14,6 +12,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -22,14 +21,27 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncBedrockOreVeins implements IPacket { +public class SPacketSyncBedrockOreVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncBedrockOreVeins() { this.veins = new HashMap<>(); } + public SPacketSyncBedrockOreVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + BedrockOreDefinition def = BedrockOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, + GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -44,19 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - BedrockOreDefinition def = BedrockOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, - GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_BEDROCK_ORE_VEINS.clear(); ClientProxy.CLIENT_BEDROCK_ORE_VEINS.putAll(veins); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java index 450006be88e..ef757939c89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncFluidVeins.java @@ -4,9 +4,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; @@ -14,6 +12,7 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -22,14 +21,27 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncFluidVeins implements IPacket { +public class SPacketSyncFluidVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncFluidVeins() { this.veins = new HashMap<>(); } + public SPacketSyncFluidVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + BedrockFluidDefinition def = BedrockFluidDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, + GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -44,19 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - BedrockFluidDefinition def = BedrockFluidDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, - GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_FLUID_VEINS.clear(); ClientProxy.CLIENT_FLUID_VEINS.putAll(veins); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java index 522df81bab8..2ce18a9ef3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketSyncOreVeins.java @@ -4,17 +4,16 @@ import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.ClientProxy; +import com.gregtechceu.gtceu.common.network.GTNetwork; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; - import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.network.NetworkEvent; import lombok.RequiredArgsConstructor; @@ -23,14 +22,26 @@ import java.util.stream.Stream; @RequiredArgsConstructor -public class SPacketSyncOreVeins implements IPacket { +public class SPacketSyncOreVeins implements GTNetwork.INetPacket { private final Map veins; + @SuppressWarnings("unused") public SPacketSyncOreVeins() { this.veins = new HashMap<>(); } + public SPacketSyncOreVeins(FriendlyByteBuf buf) { + this(); + RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); + Stream.generate(() -> { + ResourceLocation id = buf.readResourceLocation(); + CompoundTag tag = buf.readAnySizeNbt(); + GTOreDefinition def = GTOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, GTCEu.LOGGER::error); + return Map.entry(id, def); + }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); + } + @Override public void encode(FriendlyByteBuf buf) { RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); @@ -45,18 +56,7 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - RegistryOps ops = RegistryOps.create(NbtOps.INSTANCE, GTRegistries.builtinRegistry()); - Stream.generate(() -> { - ResourceLocation id = buf.readResourceLocation(); - CompoundTag tag = buf.readAnySizeNbt(); - GTOreDefinition def = GTOreDefinition.FULL_CODEC.parse(ops, tag).getOrThrow(false, GTCEu.LOGGER::error); - return Map.entry(id, def); - }).limit(buf.readVarInt()).forEach(entry -> veins.put(entry.getKey(), entry.getValue())); - } - - @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { ClientProxy.CLIENT_ORE_VEINS.clear(); ClientProxy.CLIENT_ORE_VEINS.putAll(veins); GTClientCache.instance.oreVeinDefinitionsChanged(ClientProxy.CLIENT_ORE_VEINS); diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java index 7df9db61019..e60d1ab648b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketAddHazardZone.java @@ -2,23 +2,28 @@ import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketAddHazardZone implements IPacket { +public class SPacketAddHazardZone implements GTNetwork.INetPacket { private ChunkPos pos; private EnvironmentalHazardSavedData.HazardZone zone; + public SPacketAddHazardZone(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); + zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeChunkPos(pos); @@ -26,14 +31,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); - zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.addHazardZone(pos, zone); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java index 1aac8d808af..06d5fc6974d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketRemoveHazardZone.java @@ -1,35 +1,34 @@ package com.gregtechceu.gtceu.common.network.packets.hazard; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketRemoveHazardZone implements IPacket { +public class SPacketRemoveHazardZone implements GTNetwork.INetPacket { public ChunkPos pos; - @Override - public void encode(FriendlyByteBuf buf) { - buf.writeChunkPos(pos); + public SPacketRemoveHazardZone(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); + public void encode(FriendlyByteBuf buf) { + buf.writeChunkPos(pos); } @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.removeHazardZone(pos); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java index d6df530483f..a5bcb9c1e48 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncHazardZoneStrength.java @@ -1,23 +1,28 @@ package com.gregtechceu.gtceu.common.network.packets.hazard; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor -public class SPacketSyncHazardZoneStrength implements IPacket { +public class SPacketSyncHazardZoneStrength implements GTNetwork.INetPacket { public ChunkPos pos; public float newAmount; + public SPacketSyncHazardZoneStrength(FriendlyByteBuf buf) { + pos = buf.readChunkPos(); + this.newAmount = buf.readFloat(); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeChunkPos(pos); @@ -25,14 +30,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - pos = buf.readChunkPos(); - this.newAmount = buf.readFloat(); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.updateHazardStrength(pos, newAmount); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java index 8a16adabfdb..66be221fd81 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/hazard/SPacketSyncLevelHazards.java @@ -2,12 +2,12 @@ import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; - -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.level.ChunkPos; +import net.minecraftforge.network.NetworkDirection; +import net.minecraftforge.network.NetworkEvent; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @@ -18,10 +18,18 @@ @NoArgsConstructor @AllArgsConstructor -public class SPacketSyncLevelHazards implements IPacket { +public class SPacketSyncLevelHazards implements GTNetwork.INetPacket { private Map map; + public SPacketSyncLevelHazards(FriendlyByteBuf buf) { + map = Stream.generate(() -> { + ChunkPos pos = buf.readChunkPos(); + var zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); + return Map.entry(pos, zone); + }).limit(buf.readVarInt()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } + @Override public void encode(FriendlyByteBuf buf) { buf.writeVarInt(map.size()); @@ -32,17 +40,8 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - map = Stream.generate(() -> { - ChunkPos pos = buf.readChunkPos(); - var zone = EnvironmentalHazardSavedData.HazardZone.fromNetwork(buf); - return Map.entry(pos, zone); - }).limit(buf.readVarInt()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - @Override - public void execute(IHandlerContext handler) { - if (handler.isClient()) { + public void execute(NetworkEvent.Context context) { + if (context.getDirection() == NetworkDirection.PLAY_TO_CLIENT) { EnvironmentalHazardClientHandler.INSTANCE.updateHazardMap(this.map); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java index bbdda38f3d1..1264173ca23 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspect.java @@ -1,20 +1,20 @@ package com.gregtechceu.gtceu.common.network.packets.prospecting; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; -import com.lowdragmc.lowdraglib.networking.IPacket; +import com.gregtechceu.gtceu.common.network.GTNetwork; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.util.Collection; -public abstract class SPacketProspect implements IPacket { +public abstract class SPacketProspect implements GTNetwork.INetPacket { protected final Table, BlockPos, T> data; @@ -51,6 +51,20 @@ protected SPacketProspect(ResourceKey key, BlockPos position, T prospecte data.put(key, position, prospected); } + public SPacketProspect(FriendlyByteBuf buf) { + this(); + var rowCount = buf.readInt(); + for (int i = 0; i < rowCount; i++) { + var rowKey = buf.readResourceKey(Registries.DIMENSION); + var entryCount = buf.readInt(); + for (int j = 0; j < entryCount; j++) { + var blockPos = buf.readBlockPos(); + var t = decodeData(buf); + data.put(rowKey, blockPos, t); + } + } + } + public abstract void encodeData(FriendlyByteBuf buf, T data); public abstract T decodeData(FriendlyByteBuf buf); @@ -69,19 +83,5 @@ public void encode(FriendlyByteBuf buf) { } @Override - public void decode(FriendlyByteBuf buf) { - var rowCount = buf.readInt(); - for (int i = 0; i < rowCount; i++) { - var rowKey = buf.readResourceKey(Registries.DIMENSION); - var entryCount = buf.readInt(); - for (int j = 0; j < entryCount; j++) { - var blockPos = buf.readBlockPos(); - var t = decodeData(buf); - data.put(rowKey, blockPos, t); - } - } - } - - @Override - public abstract void execute(IHandlerContext handler); + public abstract void execute(NetworkEvent.Context context); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java index 92f06679e1f..0beb48db846 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockFluid.java @@ -3,21 +3,26 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import java.util.Collection; public class SPacketProspectBedrockFluid extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectBedrockFluid() { super(); } + public SPacketProspectBedrockFluid(FriendlyByteBuf buf) { + super(buf); + } + + @SuppressWarnings("unused") public SPacketProspectBedrockFluid(ResourceKey key, Collection positions, Collection prospected) { super(key, positions, prospected); @@ -38,7 +43,7 @@ public ProspectorMode.FluidInfo decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { data.rowMap().forEach((level, fluids) -> fluids .forEach((blockPos, fluid) -> GTClientCache.instance.addFluid(level, blockPos.getX() >> 4, blockPos.getZ() >> 4, fluid))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java index 27b52e5f268..2ee47f2d3d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectBedrockOre.java @@ -2,16 +2,20 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; public class SPacketProspectBedrockOre extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectBedrockOre() { super(); } + public SPacketProspectBedrockOre(FriendlyByteBuf buf) { + super(buf); + } + @Override public void encodeData(FriendlyByteBuf buf, ProspectorMode.OreInfo data) { ProspectorMode.BEDROCK_ORE.serialize(data, buf); @@ -23,7 +27,7 @@ public ProspectorMode.OreInfo decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { // todo: add cache for bedrock ore veins } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java index 1cdc440af91..bd3609d7ee0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/prospecting/SPacketProspectOre.java @@ -3,20 +3,24 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.GeneratedVeinMetadata; import com.gregtechceu.gtceu.integration.map.cache.client.GTClientCache; -import com.lowdragmc.lowdraglib.networking.IHandlerContext; - import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; +import net.minecraftforge.network.NetworkEvent; import java.util.Collection; public class SPacketProspectOre extends SPacketProspect { + @SuppressWarnings("unused") public SPacketProspectOre() { super(); } + public SPacketProspectOre(FriendlyByteBuf buf) { + super(buf); + } + public SPacketProspectOre(ResourceKey key, Collection veins) { super(key, veins.stream().map(GeneratedVeinMetadata::center).toList(), veins); } @@ -32,7 +36,7 @@ public GeneratedVeinMetadata decodeData(FriendlyByteBuf buf) { } @Override - public void execute(IHandlerContext handler) { + public void execute(NetworkEvent.Context context) { data.rowMap().forEach((level, ores) -> ores .forEach((blockPos, vein) -> GTClientCache.instance.addVein(level, blockPos.getX() >> 4, blockPos.getZ() >> 4, vein))); diff --git a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java index 0e987fa81e3..31745264737 100644 --- a/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/forge/ForgeCommonEventListener.java @@ -315,14 +315,14 @@ public static void serverStopping(ServerStoppingEvent event) { public static void onPlayerJoinServer(PlayerEvent.PlayerLoggedInEvent event) { Player player = event.getEntity(); if (player instanceof ServerPlayer serverPlayer) { - GTNetwork.NETWORK.sendToPlayer(new SPacketSendWorldID(), serverPlayer); + GTNetwork.sendToPlayer(serverPlayer, new SPacketSendWorldID()); if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) return; ServerLevel level = serverPlayer.serverLevel(); var data = EnvironmentalHazardSavedData.getOrCreate(level); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncLevelHazards(data.getHazardZones()), serverPlayer); + GTNetwork.sendToPlayer(serverPlayer, new SPacketSyncLevelHazards(data.getHazardZones())); } CapeRegistry.detectNewCapes(player); CapeRegistry.loadCurrentCapesOnLogin(player); @@ -333,17 +333,16 @@ public static void onDatapackSync(OnDatapackSyncEvent event) { ServerPlayer player = event.getPlayer(); if (player == null) { // if player == null, the /reload command was ran. sync to all players. - GTNetwork.NETWORK.sendToAll(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); - GTNetwork.NETWORK.sendToAll(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); - GTNetwork.NETWORK - .sendToAll(new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); + GTNetwork.sendToAll(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); + GTNetwork.sendToAll(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); + GTNetwork.sendToAll(new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); } else { // else it's a player logging in. sync to only that player. - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry()), player); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry()), - player); - GTNetwork.NETWORK.sendToPlayer( - new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry()), player); + GTNetwork.sendToPlayer(player, new SPacketSyncOreVeins(GTRegistries.ORE_VEINS.registry())); + GTNetwork.sendToPlayer(player, + new SPacketSyncFluidVeins(GTRegistries.BEDROCK_FLUID_DEFINITIONS.registry())); + GTNetwork.sendToPlayer(player, + new SPacketSyncBedrockOreVeins(GTRegistries.BEDROCK_ORE_DEFINITIONS.registry())); } } @@ -420,8 +419,7 @@ public static void onPlayerLevelChange(PlayerEvent.PlayerChangedDimensionEvent e ServerLevel newLevel = event.getEntity().getServer().getLevel(event.getTo()); var data = EnvironmentalHazardSavedData.getOrCreate(newLevel); - GTNetwork.NETWORK.sendToPlayer(new SPacketSyncLevelHazards(data.getHazardZones()), - (ServerPlayer) event.getEntity()); + GTNetwork.sendToPlayer((ServerPlayer) event.getEntity(), new SPacketSyncLevelHazards(data.getHazardZones())); } @SubscribeEvent @@ -432,7 +430,7 @@ public static void onChunkWatch(ChunkWatchEvent.Watch event) { var zone = data.getZoneByPos(pos); if (zone != null) { - GTNetwork.NETWORK.sendToPlayer(new SPacketAddHazardZone(pos, zone), player); + GTNetwork.sendToPlayer(player, new SPacketAddHazardZone(pos, zone)); } } @@ -444,7 +442,7 @@ public static void onChunkUnWatch(ChunkWatchEvent.UnWatch event) { var zone = data.getZoneByPos(pos); if (zone != null) { - GTNetwork.NETWORK.sendToPlayer(new SPacketRemoveHazardZone(pos), player); + GTNetwork.sendToPlayer(player, new SPacketRemoveHazardZone(pos)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java index a48f4e76a5c..629e6447852 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/server/ServerCache.java @@ -82,7 +82,7 @@ public void prospectBySurfaceRockMaterial(ResourceKey dim, final Material } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectByOreMaterial(ResourceKey dim, Material material, BlockPos origin, ServerPlayer player, @@ -95,7 +95,7 @@ public void prospectByOreMaterial(ResourceKey dim, Material material, Blo foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectByDepositName(ResourceKey dim, String depositName, BlockPos origin, ServerPlayer player, @@ -108,7 +108,7 @@ public void prospectByDepositName(ResourceKey dim, String depositName, Bl foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void prospectAllInChunk(ResourceKey dim, ChunkPos pos, ServerPlayer player) { @@ -119,7 +119,7 @@ public void prospectAllInChunk(ResourceKey dim, ChunkPos pos, ServerPlaye foundVeins.add(nearbyVein); } } - GTNetwork.NETWORK.sendToPlayer(new SPacketProspectOre(dim, foundVeins), player); + GTNetwork.sendToPlayer(player, new SPacketProspectOre(dim, foundVeins)); } public void removeAllInChunk(ResourceKey dim, ChunkPos pos) { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java index 3e43687d093..5ee64866ed9 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java @@ -68,7 +68,7 @@ public static void onInputEvent(InputEvent.Key event) { } if (!updating.isEmpty()) { try { - GTNetwork.NETWORK.sendToServer(new CPacketKeysPressed(updating)); + GTNetwork.sendToServer(new CPacketKeysPressed(updating)); } catch (NullPointerException exception) { GTCEu.LOGGER.error("Keys pressed packet failed to send with an exception", exception); } From 9061b29f3da58309c7ad55f25d54c5baaeaff11d Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 6 Jul 2025 18:12:03 +0300 Subject: [PATCH 123/270] Remove LDLib renderer usage from machine models & allow them to be modified by resource packs (#3275) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Co-authored-by: Ghostipedia --- gradle/forge.versions.toml | 2 +- gradle/scripts/moddevgradle.gradle | 12 +- lombok.config | 16 + .../gtceu/blockstates/active_transformer.json | 114 +++ .../advanced_data_access_hatch.json | 28 + .../blockstates/alloy_blast_smelter.json | 114 +++ .../gtceu/blockstates/aluminium_crate.json | 7 + .../gtceu/blockstates/aluminium_drum.json | 7 + .../gtceu/blockstates/assembly_line.json | 114 +++ .../blockstates/auto_maintenance_hatch.json | 28 + .../gtceu/blockstates/bronze_crate.json | 7 + .../assets/gtceu/blockstates/bronze_drum.json | 7 + .../blockstates/bronze_large_boiler.json | 19 + .../blockstates/charcoal_pile_igniter.json | 7 + .../cleaning_maintenance_hatch.json | 28 + .../assets/gtceu/blockstates/cleanroom.json | 7 + .../assets/gtceu/blockstates/coke_oven.json | 114 +++ .../gtceu/blockstates/coke_oven_hatch.json | 28 + .../computation_receiver_hatch.json | 28 + .../computation_transmitter_hatch.json | 28 + .../configurable_maintenance_hatch.json | 28 + .../assets/gtceu/blockstates/cracker.json | 114 +++ .../gtceu/blockstates/creative_chest.json | 114 +++ .../creative_computation_provider.json | 7 + .../creative_data_access_hatch.json | 28 + .../gtceu/blockstates/creative_energy.json | 7 + .../gtceu/blockstates/creative_tank.json | 114 +++ .../gtceu/blockstates/data_access_hatch.json | 28 + .../assets/gtceu/blockstates/data_bank.json | 76 ++ .../blockstates/data_receiver_hatch.json | 28 + .../blockstates/data_transmitter_hatch.json | 28 + .../gtceu/blockstates/distillation_tower.json | 19 + .../blockstates/electric_blast_furnace.json | 114 +++ .../blockstates/ev_16a_energy_converter.json | 28 + .../blockstates/ev_1a_energy_converter.json | 28 + .../blockstates/ev_4a_energy_converter.json | 28 + .../blockstates/ev_8a_energy_converter.json | 28 + .../gtceu/blockstates/ev_air_scrubber.json | 19 + .../gtceu/blockstates/ev_alloy_smelter.json | 19 + .../gtceu/blockstates/ev_arc_furnace.json | 19 + .../gtceu/blockstates/ev_assembler.json | 19 + .../gtceu/blockstates/ev_autoclave.json | 19 + .../blockstates/ev_battery_buffer_16x.json | 28 + .../blockstates/ev_battery_buffer_4x.json | 28 + .../blockstates/ev_battery_buffer_8x.json | 28 + .../blockstates/ev_bedrock_ore_miner.json | 76 ++ .../assets/gtceu/blockstates/ev_bender.json | 19 + .../gtceu/blockstates/ev_block_breaker.json | 19 + .../assets/gtceu/blockstates/ev_brewery.json | 19 + .../assets/gtceu/blockstates/ev_canner.json | 19 + .../gtceu/blockstates/ev_centrifuge.json | 19 + .../gtceu/blockstates/ev_charger_4x.json | 28 + .../gtceu/blockstates/ev_chemical_bath.json | 19 + .../blockstates/ev_chemical_reactor.json | 19 + .../blockstates/ev_circuit_assembler.json | 19 + .../gtceu/blockstates/ev_compressor.json | 19 + .../assets/gtceu/blockstates/ev_cutter.json | 19 + .../assets/gtceu/blockstates/ev_diode.json | 28 + .../gtceu/blockstates/ev_distillery.json | 19 + .../blockstates/ev_electric_furnace.json | 19 + .../gtceu/blockstates/ev_electrolyzer.json | 19 + .../ev_electromagnetic_separator.json | 19 + .../blockstates/ev_energy_input_hatch.json | 28 + .../ev_energy_input_hatch_16a.json | 28 + .../blockstates/ev_energy_input_hatch_4a.json | 28 + .../blockstates/ev_energy_output_hatch.json | 28 + .../ev_energy_output_hatch_16a.json | 28 + .../ev_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/ev_extractor.json | 19 + .../assets/gtceu/blockstates/ev_extruder.json | 19 + .../gtceu/blockstates/ev_fermenter.json | 19 + .../assets/gtceu/blockstates/ev_fisher.json | 28 + .../blockstates/ev_fluid_drilling_rig.json | 114 +++ .../gtceu/blockstates/ev_fluid_heater.json | 19 + .../ev_fluid_passthrough_hatch.json | 28 + .../blockstates/ev_fluid_solidifier.json | 19 + .../gtceu/blockstates/ev_forge_hammer.json | 19 + .../gtceu/blockstates/ev_forming_press.json | 19 + .../gtceu/blockstates/ev_gas_collector.json | 19 + .../gtceu/blockstates/ev_input_bus.json | 28 + .../gtceu/blockstates/ev_input_hatch.json | 28 + .../gtceu/blockstates/ev_input_hatch_4x.json | 28 + .../gtceu/blockstates/ev_input_hatch_9x.json | 28 + .../gtceu/blockstates/ev_item_collector.json | 7 + .../ev_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/ev_large_miner.json | 76 ++ .../gtceu/blockstates/ev_laser_engraver.json | 19 + .../assets/gtceu/blockstates/ev_lathe.json | 19 + .../gtceu/blockstates/ev_macerator.json | 19 + .../gtceu/blockstates/ev_machine_hull.json | 28 + .../assets/gtceu/blockstates/ev_mixer.json | 19 + .../gtceu/blockstates/ev_muffler_hatch.json | 28 + .../gtceu/blockstates/ev_ore_washer.json | 19 + .../gtceu/blockstates/ev_output_bus.json | 28 + .../gtceu/blockstates/ev_output_hatch.json | 28 + .../gtceu/blockstates/ev_output_hatch_4x.json | 28 + .../gtceu/blockstates/ev_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/ev_packer.json | 19 + .../gtceu/blockstates/ev_polarizer.json | 19 + .../assets/gtceu/blockstates/ev_pump.json | 28 + .../gtceu/blockstates/ev_rock_crusher.json | 19 + .../gtceu/blockstates/ev_rotor_holder.json | 28 + .../assets/gtceu/blockstates/ev_scanner.json | 19 + .../assets/gtceu/blockstates/ev_sifter.json | 19 + .../ev_substation_input_hatch_64a.json | 28 + .../ev_substation_output_hatch_64a.json | 28 + .../gtceu/blockstates/ev_super_chest.json | 114 +++ .../gtceu/blockstates/ev_super_tank.json | 114 +++ .../blockstates/ev_thermal_centrifuge.json | 19 + .../gtceu/blockstates/ev_transformer_16a.json | 28 + .../gtceu/blockstates/ev_transformer_1a.json | 28 + .../gtceu/blockstates/ev_transformer_2a.json | 28 + .../gtceu/blockstates/ev_transformer_4a.json | 28 + .../assets/gtceu/blockstates/ev_wiremill.json | 19 + .../blockstates/ev_world_accelerator.json | 7 + .../extreme_combustion_engine.json | 114 +++ .../gtceu/blockstates/gas_large_turbine.json | 114 +++ .../assets/gtceu/blockstates/gold_drum.json | 7 + .../high_performance_computation_array.json | 76 ++ .../blockstates/hp_steam_alloy_smelter.json | 28 + .../blockstates/hp_steam_compressor.json | 28 + .../gtceu/blockstates/hp_steam_extractor.json | 28 + .../blockstates/hp_steam_forge_hammer.json | 28 + .../gtceu/blockstates/hp_steam_furnace.json | 28 + .../blockstates/hp_steam_liquid_boiler.json | 28 + .../gtceu/blockstates/hp_steam_macerator.json | 19 + .../gtceu/blockstates/hp_steam_miner.json | 19 + .../blockstates/hp_steam_rock_crusher.json | 28 + .../blockstates/hp_steam_solar_boiler.json | 19 + .../blockstates/hp_steam_solid_boiler.json | 28 + .../hpca_active_cooler_component.json | 28 + .../hpca_advanced_computation_component.json | 28 + .../blockstates/hpca_bridge_component.json | 28 + .../hpca_computation_component.json | 28 + .../blockstates/hpca_empty_component.json | 28 + .../blockstates/hpca_heat_sink_component.json | 28 + .../blockstates/hv_16a_energy_converter.json | 28 + .../blockstates/hv_1a_energy_converter.json | 28 + .../blockstates/hv_4a_energy_converter.json | 28 + .../blockstates/hv_8a_energy_converter.json | 28 + .../gtceu/blockstates/hv_air_scrubber.json | 19 + .../gtceu/blockstates/hv_alloy_smelter.json | 19 + .../gtceu/blockstates/hv_arc_furnace.json | 19 + .../gtceu/blockstates/hv_assembler.json | 19 + .../gtceu/blockstates/hv_autoclave.json | 19 + .../blockstates/hv_battery_buffer_16x.json | 28 + .../blockstates/hv_battery_buffer_4x.json | 28 + .../blockstates/hv_battery_buffer_8x.json | 28 + .../blockstates/hv_bedrock_ore_miner.json | 76 ++ .../assets/gtceu/blockstates/hv_bender.json | 19 + .../gtceu/blockstates/hv_block_breaker.json | 19 + .../assets/gtceu/blockstates/hv_brewery.json | 19 + .../assets/gtceu/blockstates/hv_buffer.json | 7 + .../assets/gtceu/blockstates/hv_canner.json | 19 + .../gtceu/blockstates/hv_centrifuge.json | 19 + .../gtceu/blockstates/hv_charger_4x.json | 28 + .../gtceu/blockstates/hv_chemical_bath.json | 19 + .../blockstates/hv_chemical_reactor.json | 19 + .../blockstates/hv_circuit_assembler.json | 19 + .../gtceu/blockstates/hv_combustion.json | 28 + .../gtceu/blockstates/hv_compressor.json | 19 + .../assets/gtceu/blockstates/hv_cutter.json | 19 + .../assets/gtceu/blockstates/hv_diode.json | 28 + .../gtceu/blockstates/hv_distillery.json | 19 + .../blockstates/hv_electric_furnace.json | 19 + .../gtceu/blockstates/hv_electrolyzer.json | 19 + .../hv_electromagnetic_separator.json | 19 + .../blockstates/hv_energy_input_hatch.json | 28 + .../blockstates/hv_energy_output_hatch.json | 28 + .../gtceu/blockstates/hv_extractor.json | 19 + .../assets/gtceu/blockstates/hv_extruder.json | 19 + .../gtceu/blockstates/hv_fermenter.json | 19 + .../assets/gtceu/blockstates/hv_fisher.json | 28 + .../blockstates/hv_fluid_drilling_rig.json | 114 +++ .../gtceu/blockstates/hv_fluid_heater.json | 19 + .../hv_fluid_passthrough_hatch.json | 28 + .../blockstates/hv_fluid_solidifier.json | 19 + .../gtceu/blockstates/hv_forge_hammer.json | 19 + .../gtceu/blockstates/hv_forming_press.json | 19 + .../gtceu/blockstates/hv_gas_collector.json | 19 + .../gtceu/blockstates/hv_gas_turbine.json | 28 + .../gtceu/blockstates/hv_input_bus.json | 28 + .../gtceu/blockstates/hv_input_hatch.json | 28 + .../gtceu/blockstates/hv_item_collector.json | 7 + .../hv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/hv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/hv_lathe.json | 19 + .../gtceu/blockstates/hv_macerator.json | 19 + .../gtceu/blockstates/hv_machine_hull.json | 28 + .../assets/gtceu/blockstates/hv_miner.json | 19 + .../assets/gtceu/blockstates/hv_mixer.json | 19 + .../gtceu/blockstates/hv_muffler_hatch.json | 28 + .../gtceu/blockstates/hv_ore_washer.json | 19 + .../gtceu/blockstates/hv_output_bus.json | 28 + .../gtceu/blockstates/hv_output_hatch.json | 28 + .../assets/gtceu/blockstates/hv_packer.json | 19 + .../gtceu/blockstates/hv_polarizer.json | 19 + .../assets/gtceu/blockstates/hv_pump.json | 28 + .../gtceu/blockstates/hv_rock_crusher.json | 19 + .../gtceu/blockstates/hv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/hv_scanner.json | 19 + .../assets/gtceu/blockstates/hv_sifter.json | 19 + .../gtceu/blockstates/hv_steam_turbine.json | 28 + .../gtceu/blockstates/hv_super_chest.json | 114 +++ .../gtceu/blockstates/hv_super_tank.json | 114 +++ .../blockstates/hv_thermal_centrifuge.json | 19 + .../gtceu/blockstates/hv_transformer_16a.json | 28 + .../gtceu/blockstates/hv_transformer_1a.json | 28 + .../gtceu/blockstates/hv_transformer_2a.json | 28 + .../gtceu/blockstates/hv_transformer_4a.json | 28 + .../assets/gtceu/blockstates/hv_wiremill.json | 19 + .../blockstates/hv_world_accelerator.json | 7 + .../blockstates/implosion_compressor.json | 114 +++ .../iv_1024a_laser_source_hatch.json | 28 + .../iv_1024a_laser_target_hatch.json | 28 + .../blockstates/iv_16a_energy_converter.json | 28 + .../blockstates/iv_1a_energy_converter.json | 28 + .../iv_256a_laser_source_hatch.json | 28 + .../iv_256a_laser_target_hatch.json | 28 + .../iv_4096a_laser_source_hatch.json | 28 + .../iv_4096a_laser_target_hatch.json | 28 + .../blockstates/iv_4a_energy_converter.json | 28 + .../blockstates/iv_8a_energy_converter.json | 28 + .../gtceu/blockstates/iv_alloy_smelter.json | 19 + .../gtceu/blockstates/iv_arc_furnace.json | 19 + .../gtceu/blockstates/iv_assembler.json | 19 + .../gtceu/blockstates/iv_autoclave.json | 19 + .../blockstates/iv_battery_buffer_16x.json | 28 + .../blockstates/iv_battery_buffer_4x.json | 28 + .../blockstates/iv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/iv_bender.json | 19 + .../assets/gtceu/blockstates/iv_brewery.json | 19 + .../assets/gtceu/blockstates/iv_canner.json | 19 + .../gtceu/blockstates/iv_centrifuge.json | 19 + .../gtceu/blockstates/iv_charger_4x.json | 28 + .../gtceu/blockstates/iv_chemical_bath.json | 19 + .../blockstates/iv_chemical_reactor.json | 19 + .../blockstates/iv_circuit_assembler.json | 19 + .../gtceu/blockstates/iv_compressor.json | 19 + .../assets/gtceu/blockstates/iv_cutter.json | 19 + .../assets/gtceu/blockstates/iv_diode.json | 28 + .../gtceu/blockstates/iv_distillery.json | 19 + .../blockstates/iv_electric_furnace.json | 19 + .../gtceu/blockstates/iv_electrolyzer.json | 19 + .../iv_electromagnetic_separator.json | 19 + .../blockstates/iv_energy_input_hatch.json | 28 + .../iv_energy_input_hatch_16a.json | 28 + .../blockstates/iv_energy_input_hatch_4a.json | 28 + .../blockstates/iv_energy_output_hatch.json | 28 + .../iv_energy_output_hatch_16a.json | 28 + .../iv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/iv_extractor.json | 19 + .../assets/gtceu/blockstates/iv_extruder.json | 19 + .../gtceu/blockstates/iv_fermenter.json | 19 + .../assets/gtceu/blockstates/iv_fisher.json | 28 + .../gtceu/blockstates/iv_fluid_heater.json | 19 + .../iv_fluid_passthrough_hatch.json | 28 + .../blockstates/iv_fluid_solidifier.json | 19 + .../gtceu/blockstates/iv_forge_hammer.json | 19 + .../gtceu/blockstates/iv_forming_press.json | 19 + .../gtceu/blockstates/iv_gas_collector.json | 19 + .../gtceu/blockstates/iv_input_bus.json | 28 + .../gtceu/blockstates/iv_input_hatch.json | 28 + .../gtceu/blockstates/iv_input_hatch_4x.json | 28 + .../gtceu/blockstates/iv_input_hatch_9x.json | 28 + .../iv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/iv_large_miner.json | 76 ++ .../gtceu/blockstates/iv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/iv_lathe.json | 19 + .../gtceu/blockstates/iv_macerator.json | 19 + .../gtceu/blockstates/iv_machine_hull.json | 28 + .../assets/gtceu/blockstates/iv_mixer.json | 19 + .../gtceu/blockstates/iv_muffler_hatch.json | 28 + .../gtceu/blockstates/iv_ore_washer.json | 19 + .../gtceu/blockstates/iv_output_bus.json | 28 + .../gtceu/blockstates/iv_output_hatch.json | 28 + .../gtceu/blockstates/iv_output_hatch_4x.json | 28 + .../gtceu/blockstates/iv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/iv_packer.json | 19 + .../gtceu/blockstates/iv_parallel_hatch.json | 28 + .../gtceu/blockstates/iv_polarizer.json | 19 + .../gtceu/blockstates/iv_quantum_chest.json | 114 +++ .../gtceu/blockstates/iv_quantum_tank.json | 114 +++ .../gtceu/blockstates/iv_rock_crusher.json | 19 + .../gtceu/blockstates/iv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/iv_scanner.json | 19 + .../assets/gtceu/blockstates/iv_sifter.json | 19 + .../iv_substation_input_hatch_64a.json | 28 + .../iv_substation_output_hatch_64a.json | 28 + .../blockstates/iv_thermal_centrifuge.json | 19 + .../gtceu/blockstates/iv_transformer_16a.json | 28 + .../gtceu/blockstates/iv_transformer_1a.json | 28 + .../gtceu/blockstates/iv_transformer_2a.json | 28 + .../gtceu/blockstates/iv_transformer_4a.json | 28 + .../assets/gtceu/blockstates/iv_wiremill.json | 19 + .../blockstates/iv_world_accelerator.json | 7 + .../gtceu/blockstates/large_arc_smelter.json | 114 +++ .../gtceu/blockstates/large_assembler.json | 114 +++ .../gtceu/blockstates/large_autoclave.json | 114 +++ .../gtceu/blockstates/large_brewer.json | 114 +++ .../gtceu/blockstates/large_centrifuge.json | 114 +++ .../blockstates/large_chemical_bath.json | 114 +++ .../blockstates/large_chemical_reactor.json | 114 +++ .../blockstates/large_circuit_assembler.json | 114 +++ .../blockstates/large_combustion_engine.json | 114 +++ .../gtceu/blockstates/large_cutter.json | 114 +++ .../gtceu/blockstates/large_distillery.json | 19 + .../gtceu/blockstates/large_electrolyzer.json | 114 +++ .../blockstates/large_electromagnet.json | 114 +++ .../blockstates/large_engraving_laser.json | 114 +++ .../gtceu/blockstates/large_extractor.json | 114 +++ .../gtceu/blockstates/large_extruder.json | 114 +++ .../blockstates/large_maceration_tower.json | 114 +++ .../blockstates/large_material_press.json | 114 +++ .../assets/gtceu/blockstates/large_mixer.json | 114 +++ .../gtceu/blockstates/large_packer.json | 114 +++ .../blockstates/large_sifting_funnel.json | 114 +++ .../gtceu/blockstates/large_solidifier.json | 114 +++ .../gtceu/blockstates/large_wiremill.json | 114 +++ ...long_distance_fluid_pipeline_endpoint.json | 7 + .../long_distance_item_pipeline_endpoint.json | 7 + .../blockstates/lp_steam_alloy_smelter.json | 28 + .../blockstates/lp_steam_compressor.json | 28 + .../gtceu/blockstates/lp_steam_extractor.json | 28 + .../blockstates/lp_steam_forge_hammer.json | 28 + .../gtceu/blockstates/lp_steam_furnace.json | 28 + .../blockstates/lp_steam_liquid_boiler.json | 28 + .../gtceu/blockstates/lp_steam_macerator.json | 19 + .../gtceu/blockstates/lp_steam_miner.json | 19 + .../blockstates/lp_steam_rock_crusher.json | 28 + .../blockstates/lp_steam_solar_boiler.json | 19 + .../blockstates/lp_steam_solid_boiler.json | 28 + .../luv_1024a_laser_source_hatch.json | 28 + .../luv_1024a_laser_target_hatch.json | 28 + .../blockstates/luv_16a_energy_converter.json | 28 + .../blockstates/luv_1a_energy_converter.json | 28 + .../luv_256a_laser_source_hatch.json | 28 + .../luv_256a_laser_target_hatch.json | 28 + .../luv_4096a_laser_source_hatch.json | 28 + .../luv_4096a_laser_target_hatch.json | 28 + .../blockstates/luv_4a_energy_converter.json | 28 + .../blockstates/luv_8a_energy_converter.json | 28 + .../gtceu/blockstates/luv_alloy_smelter.json | 19 + .../gtceu/blockstates/luv_arc_furnace.json | 19 + .../gtceu/blockstates/luv_assembler.json | 19 + .../gtceu/blockstates/luv_autoclave.json | 19 + .../blockstates/luv_battery_buffer_16x.json | 28 + .../blockstates/luv_battery_buffer_4x.json | 28 + .../blockstates/luv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/luv_bender.json | 19 + .../assets/gtceu/blockstates/luv_brewery.json | 19 + .../assets/gtceu/blockstates/luv_canner.json | 19 + .../gtceu/blockstates/luv_centrifuge.json | 19 + .../gtceu/blockstates/luv_charger_4x.json | 28 + .../gtceu/blockstates/luv_chemical_bath.json | 19 + .../blockstates/luv_chemical_reactor.json | 19 + .../blockstates/luv_circuit_assembler.json | 19 + .../gtceu/blockstates/luv_compressor.json | 19 + .../assets/gtceu/blockstates/luv_cutter.json | 19 + .../assets/gtceu/blockstates/luv_diode.json | 28 + .../gtceu/blockstates/luv_distillery.json | 19 + .../blockstates/luv_dual_input_hatch.json | 28 + .../blockstates/luv_dual_output_hatch.json | 28 + .../blockstates/luv_electric_furnace.json | 19 + .../gtceu/blockstates/luv_electrolyzer.json | 19 + .../luv_electromagnetic_separator.json | 19 + .../blockstates/luv_energy_input_hatch.json | 28 + .../luv_energy_input_hatch_16a.json | 28 + .../luv_energy_input_hatch_4a.json | 28 + .../blockstates/luv_energy_output_hatch.json | 28 + .../luv_energy_output_hatch_16a.json | 28 + .../luv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/luv_extractor.json | 19 + .../gtceu/blockstates/luv_extruder.json | 19 + .../gtceu/blockstates/luv_fermenter.json | 19 + .../assets/gtceu/blockstates/luv_fisher.json | 28 + .../gtceu/blockstates/luv_fluid_heater.json | 19 + .../luv_fluid_passthrough_hatch.json | 28 + .../blockstates/luv_fluid_solidifier.json | 19 + .../gtceu/blockstates/luv_forge_hammer.json | 19 + .../gtceu/blockstates/luv_forming_press.json | 19 + .../gtceu/blockstates/luv_fusion_reactor.json | 114 +++ .../gtceu/blockstates/luv_gas_collector.json | 19 + .../gtceu/blockstates/luv_input_bus.json | 28 + .../gtceu/blockstates/luv_input_hatch.json | 28 + .../gtceu/blockstates/luv_input_hatch_4x.json | 28 + .../gtceu/blockstates/luv_input_hatch_9x.json | 28 + .../luv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/luv_large_miner.json | 76 ++ .../gtceu/blockstates/luv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/luv_lathe.json | 19 + .../gtceu/blockstates/luv_macerator.json | 19 + .../gtceu/blockstates/luv_machine_hull.json | 28 + .../assets/gtceu/blockstates/luv_mixer.json | 19 + .../gtceu/blockstates/luv_muffler_hatch.json | 28 + .../gtceu/blockstates/luv_ore_washer.json | 19 + .../gtceu/blockstates/luv_output_bus.json | 28 + .../gtceu/blockstates/luv_output_hatch.json | 28 + .../blockstates/luv_output_hatch_4x.json | 28 + .../blockstates/luv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/luv_packer.json | 19 + .../gtceu/blockstates/luv_parallel_hatch.json | 28 + .../gtceu/blockstates/luv_polarizer.json | 19 + .../gtceu/blockstates/luv_quantum_chest.json | 114 +++ .../gtceu/blockstates/luv_quantum_tank.json | 114 +++ .../gtceu/blockstates/luv_rock_crusher.json | 19 + .../gtceu/blockstates/luv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/luv_scanner.json | 19 + .../assets/gtceu/blockstates/luv_sifter.json | 19 + .../luv_substation_input_hatch_64a.json | 28 + .../luv_substation_output_hatch_64a.json | 28 + .../blockstates/luv_thermal_centrifuge.json | 19 + .../blockstates/luv_transformer_16a.json | 28 + .../gtceu/blockstates/luv_transformer_1a.json | 28 + .../gtceu/blockstates/luv_transformer_2a.json | 28 + .../gtceu/blockstates/luv_transformer_4a.json | 28 + .../gtceu/blockstates/luv_wiremill.json | 19 + .../blockstates/luv_world_accelerator.json | 7 + .../blockstates/lv_16a_energy_converter.json | 28 + .../blockstates/lv_1a_energy_converter.json | 28 + .../blockstates/lv_4a_energy_converter.json | 28 + .../blockstates/lv_8a_energy_converter.json | 28 + .../gtceu/blockstates/lv_air_scrubber.json | 19 + .../gtceu/blockstates/lv_alloy_smelter.json | 19 + .../gtceu/blockstates/lv_arc_furnace.json | 19 + .../gtceu/blockstates/lv_assembler.json | 19 + .../gtceu/blockstates/lv_autoclave.json | 19 + .../blockstates/lv_battery_buffer_16x.json | 28 + .../blockstates/lv_battery_buffer_4x.json | 28 + .../blockstates/lv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/lv_bender.json | 19 + .../gtceu/blockstates/lv_block_breaker.json | 19 + .../assets/gtceu/blockstates/lv_brewery.json | 19 + .../assets/gtceu/blockstates/lv_buffer.json | 7 + .../assets/gtceu/blockstates/lv_canner.json | 19 + .../gtceu/blockstates/lv_centrifuge.json | 19 + .../gtceu/blockstates/lv_charger_4x.json | 28 + .../gtceu/blockstates/lv_chemical_bath.json | 19 + .../blockstates/lv_chemical_reactor.json | 19 + .../blockstates/lv_circuit_assembler.json | 19 + .../gtceu/blockstates/lv_combustion.json | 28 + .../gtceu/blockstates/lv_compressor.json | 19 + .../assets/gtceu/blockstates/lv_cutter.json | 19 + .../assets/gtceu/blockstates/lv_diode.json | 28 + .../gtceu/blockstates/lv_distillery.json | 19 + .../blockstates/lv_electric_furnace.json | 19 + .../gtceu/blockstates/lv_electrolyzer.json | 19 + .../lv_electromagnetic_separator.json | 19 + .../blockstates/lv_energy_input_hatch.json | 28 + .../blockstates/lv_energy_output_hatch.json | 28 + .../gtceu/blockstates/lv_extractor.json | 19 + .../assets/gtceu/blockstates/lv_extruder.json | 19 + .../gtceu/blockstates/lv_fermenter.json | 19 + .../assets/gtceu/blockstates/lv_fisher.json | 28 + .../gtceu/blockstates/lv_fluid_heater.json | 19 + .../lv_fluid_passthrough_hatch.json | 28 + .../blockstates/lv_fluid_solidifier.json | 19 + .../gtceu/blockstates/lv_forge_hammer.json | 19 + .../gtceu/blockstates/lv_forming_press.json | 19 + .../gtceu/blockstates/lv_gas_collector.json | 19 + .../gtceu/blockstates/lv_gas_turbine.json | 28 + .../gtceu/blockstates/lv_input_bus.json | 28 + .../gtceu/blockstates/lv_input_hatch.json | 28 + .../gtceu/blockstates/lv_item_collector.json | 7 + .../lv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/lv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/lv_lathe.json | 19 + .../gtceu/blockstates/lv_macerator.json | 19 + .../gtceu/blockstates/lv_machine_hull.json | 28 + .../assets/gtceu/blockstates/lv_miner.json | 19 + .../assets/gtceu/blockstates/lv_mixer.json | 19 + .../gtceu/blockstates/lv_muffler_hatch.json | 28 + .../gtceu/blockstates/lv_ore_washer.json | 19 + .../gtceu/blockstates/lv_output_bus.json | 28 + .../gtceu/blockstates/lv_output_hatch.json | 28 + .../assets/gtceu/blockstates/lv_packer.json | 19 + .../gtceu/blockstates/lv_polarizer.json | 19 + .../assets/gtceu/blockstates/lv_pump.json | 28 + .../gtceu/blockstates/lv_rock_crusher.json | 19 + .../assets/gtceu/blockstates/lv_scanner.json | 19 + .../assets/gtceu/blockstates/lv_sifter.json | 19 + .../gtceu/blockstates/lv_steam_turbine.json | 28 + .../gtceu/blockstates/lv_super_chest.json | 114 +++ .../gtceu/blockstates/lv_super_tank.json | 114 +++ .../blockstates/lv_thermal_centrifuge.json | 19 + .../gtceu/blockstates/lv_transformer_16a.json | 28 + .../gtceu/blockstates/lv_transformer_1a.json | 28 + .../gtceu/blockstates/lv_transformer_2a.json | 28 + .../gtceu/blockstates/lv_transformer_4a.json | 28 + .../assets/gtceu/blockstates/lv_wiremill.json | 19 + .../blockstates/lv_world_accelerator.json | 7 + .../gtceu/blockstates/maintenance_hatch.json | 28 + .../blockstates/max_16a_energy_converter.json | 28 + .../blockstates/max_1a_energy_converter.json | 28 + .../blockstates/max_4a_energy_converter.json | 28 + .../blockstates/max_8a_energy_converter.json | 28 + .../blockstates/max_battery_buffer_16x.json | 28 + .../blockstates/max_battery_buffer_4x.json | 28 + .../blockstates/max_battery_buffer_8x.json | 28 + .../gtceu/blockstates/max_charger_4x.json | 28 + .../blockstates/max_dual_input_hatch.json | 28 + .../blockstates/max_dual_output_hatch.json | 28 + .../blockstates/max_energy_input_hatch.json | 28 + .../max_energy_input_hatch_16a.json | 28 + .../max_energy_input_hatch_4a.json | 28 + .../blockstates/max_energy_output_hatch.json | 28 + .../max_energy_output_hatch_16a.json | 28 + .../max_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/max_input_bus.json | 28 + .../gtceu/blockstates/max_input_hatch.json | 28 + .../gtceu/blockstates/max_input_hatch_4x.json | 28 + .../gtceu/blockstates/max_input_hatch_9x.json | 28 + .../gtceu/blockstates/max_machine_hull.json | 28 + .../gtceu/blockstates/max_output_bus.json | 28 + .../gtceu/blockstates/max_output_hatch.json | 28 + .../blockstates/max_output_hatch_4x.json | 28 + .../blockstates/max_output_hatch_9x.json | 28 + .../max_substation_input_hatch_64a.json | 28 + .../max_substation_output_hatch_64a.json | 28 + .../gtceu/blockstates/me_input_bus.json | 28 + .../gtceu/blockstates/me_input_hatch.json | 28 + .../gtceu/blockstates/me_output_bus.json | 28 + .../gtceu/blockstates/me_output_hatch.json | 28 + .../gtceu/blockstates/me_pattern_buffer.json | 28 + .../blockstates/me_pattern_buffer_proxy.json | 28 + .../blockstates/me_stocking_input_bus.json | 28 + .../blockstates/me_stocking_input_hatch.json | 28 + .../gtceu/blockstates/mega_blast_furnace.json | 114 +++ .../blockstates/mega_vacuum_freezer.json | 114 +++ .../gtceu/blockstates/multi_smelter.json | 114 +++ .../blockstates/mv_16a_energy_converter.json | 28 + .../blockstates/mv_1a_energy_converter.json | 28 + .../blockstates/mv_4a_energy_converter.json | 28 + .../blockstates/mv_8a_energy_converter.json | 28 + .../gtceu/blockstates/mv_air_scrubber.json | 19 + .../gtceu/blockstates/mv_alloy_smelter.json | 19 + .../gtceu/blockstates/mv_arc_furnace.json | 19 + .../gtceu/blockstates/mv_assembler.json | 19 + .../gtceu/blockstates/mv_autoclave.json | 19 + .../blockstates/mv_battery_buffer_16x.json | 28 + .../blockstates/mv_battery_buffer_4x.json | 28 + .../blockstates/mv_battery_buffer_8x.json | 28 + .../blockstates/mv_bedrock_ore_miner.json | 76 ++ .../assets/gtceu/blockstates/mv_bender.json | 19 + .../gtceu/blockstates/mv_block_breaker.json | 19 + .../assets/gtceu/blockstates/mv_brewery.json | 19 + .../assets/gtceu/blockstates/mv_buffer.json | 7 + .../assets/gtceu/blockstates/mv_canner.json | 19 + .../gtceu/blockstates/mv_centrifuge.json | 19 + .../gtceu/blockstates/mv_charger_4x.json | 28 + .../gtceu/blockstates/mv_chemical_bath.json | 19 + .../blockstates/mv_chemical_reactor.json | 19 + .../blockstates/mv_circuit_assembler.json | 19 + .../gtceu/blockstates/mv_combustion.json | 28 + .../gtceu/blockstates/mv_compressor.json | 19 + .../assets/gtceu/blockstates/mv_cutter.json | 19 + .../assets/gtceu/blockstates/mv_diode.json | 28 + .../gtceu/blockstates/mv_distillery.json | 19 + .../blockstates/mv_electric_furnace.json | 19 + .../gtceu/blockstates/mv_electrolyzer.json | 19 + .../mv_electromagnetic_separator.json | 19 + .../blockstates/mv_energy_input_hatch.json | 28 + .../blockstates/mv_energy_output_hatch.json | 28 + .../gtceu/blockstates/mv_extractor.json | 19 + .../assets/gtceu/blockstates/mv_extruder.json | 19 + .../gtceu/blockstates/mv_fermenter.json | 19 + .../assets/gtceu/blockstates/mv_fisher.json | 28 + .../blockstates/mv_fluid_drilling_rig.json | 114 +++ .../gtceu/blockstates/mv_fluid_heater.json | 19 + .../mv_fluid_passthrough_hatch.json | 28 + .../blockstates/mv_fluid_solidifier.json | 19 + .../gtceu/blockstates/mv_forge_hammer.json | 19 + .../gtceu/blockstates/mv_forming_press.json | 19 + .../gtceu/blockstates/mv_gas_collector.json | 19 + .../gtceu/blockstates/mv_gas_turbine.json | 28 + .../gtceu/blockstates/mv_input_bus.json | 28 + .../gtceu/blockstates/mv_input_hatch.json | 28 + .../gtceu/blockstates/mv_item_collector.json | 7 + .../mv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/mv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/mv_lathe.json | 19 + .../gtceu/blockstates/mv_macerator.json | 19 + .../gtceu/blockstates/mv_machine_hull.json | 28 + .../assets/gtceu/blockstates/mv_miner.json | 19 + .../assets/gtceu/blockstates/mv_mixer.json | 19 + .../gtceu/blockstates/mv_muffler_hatch.json | 28 + .../gtceu/blockstates/mv_ore_washer.json | 19 + .../gtceu/blockstates/mv_output_bus.json | 28 + .../gtceu/blockstates/mv_output_hatch.json | 28 + .../assets/gtceu/blockstates/mv_packer.json | 19 + .../gtceu/blockstates/mv_polarizer.json | 19 + .../assets/gtceu/blockstates/mv_pump.json | 28 + .../gtceu/blockstates/mv_rock_crusher.json | 19 + .../assets/gtceu/blockstates/mv_scanner.json | 19 + .../assets/gtceu/blockstates/mv_sifter.json | 19 + .../gtceu/blockstates/mv_steam_turbine.json | 28 + .../gtceu/blockstates/mv_super_chest.json | 114 +++ .../gtceu/blockstates/mv_super_tank.json | 114 +++ .../blockstates/mv_thermal_centrifuge.json | 19 + .../gtceu/blockstates/mv_transformer_16a.json | 28 + .../gtceu/blockstates/mv_transformer_1a.json | 28 + .../gtceu/blockstates/mv_transformer_2a.json | 28 + .../gtceu/blockstates/mv_transformer_4a.json | 28 + .../assets/gtceu/blockstates/mv_wiremill.json | 19 + .../blockstates/mv_world_accelerator.json | 7 + .../gtceu/blockstates/network_switch.json | 76 ++ .../gtceu/blockstates/object_holder.json | 28 + .../opv_1024a_laser_source_hatch.json | 28 + .../opv_1024a_laser_target_hatch.json | 28 + .../blockstates/opv_16a_energy_converter.json | 28 + .../blockstates/opv_1a_energy_converter.json | 28 + .../opv_256a_laser_source_hatch.json | 28 + .../opv_256a_laser_target_hatch.json | 28 + .../opv_4096a_laser_source_hatch.json | 28 + .../opv_4096a_laser_target_hatch.json | 28 + .../blockstates/opv_4a_energy_converter.json | 28 + .../blockstates/opv_8a_energy_converter.json | 28 + .../gtceu/blockstates/opv_alloy_smelter.json | 19 + .../gtceu/blockstates/opv_arc_furnace.json | 19 + .../gtceu/blockstates/opv_assembler.json | 19 + .../gtceu/blockstates/opv_autoclave.json | 19 + .../blockstates/opv_battery_buffer_16x.json | 28 + .../blockstates/opv_battery_buffer_4x.json | 28 + .../blockstates/opv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/opv_bender.json | 19 + .../assets/gtceu/blockstates/opv_brewery.json | 19 + .../assets/gtceu/blockstates/opv_canner.json | 19 + .../gtceu/blockstates/opv_centrifuge.json | 19 + .../gtceu/blockstates/opv_charger_4x.json | 28 + .../gtceu/blockstates/opv_chemical_bath.json | 19 + .../blockstates/opv_chemical_reactor.json | 19 + .../blockstates/opv_circuit_assembler.json | 19 + .../gtceu/blockstates/opv_compressor.json | 19 + .../assets/gtceu/blockstates/opv_cutter.json | 19 + .../assets/gtceu/blockstates/opv_diode.json | 28 + .../gtceu/blockstates/opv_distillery.json | 19 + .../blockstates/opv_dual_input_hatch.json | 28 + .../blockstates/opv_dual_output_hatch.json | 28 + .../blockstates/opv_electric_furnace.json | 19 + .../gtceu/blockstates/opv_electrolyzer.json | 19 + .../opv_electromagnetic_separator.json | 19 + .../blockstates/opv_energy_input_hatch.json | 28 + .../opv_energy_input_hatch_16a.json | 28 + .../opv_energy_input_hatch_4a.json | 28 + .../blockstates/opv_energy_output_hatch.json | 28 + .../opv_energy_output_hatch_16a.json | 28 + .../opv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/opv_extractor.json | 19 + .../gtceu/blockstates/opv_extruder.json | 19 + .../gtceu/blockstates/opv_fermenter.json | 19 + .../gtceu/blockstates/opv_fluid_heater.json | 19 + .../opv_fluid_passthrough_hatch.json | 28 + .../blockstates/opv_fluid_solidifier.json | 19 + .../gtceu/blockstates/opv_forge_hammer.json | 19 + .../gtceu/blockstates/opv_forming_press.json | 19 + .../gtceu/blockstates/opv_gas_collector.json | 19 + .../gtceu/blockstates/opv_input_bus.json | 28 + .../gtceu/blockstates/opv_input_hatch.json | 28 + .../gtceu/blockstates/opv_input_hatch_4x.json | 28 + .../gtceu/blockstates/opv_input_hatch_9x.json | 28 + .../opv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/opv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/opv_lathe.json | 19 + .../gtceu/blockstates/opv_macerator.json | 19 + .../gtceu/blockstates/opv_machine_hull.json | 28 + .../assets/gtceu/blockstates/opv_mixer.json | 19 + .../gtceu/blockstates/opv_muffler_hatch.json | 28 + .../gtceu/blockstates/opv_ore_washer.json | 19 + .../gtceu/blockstates/opv_output_bus.json | 28 + .../gtceu/blockstates/opv_output_hatch.json | 28 + .../blockstates/opv_output_hatch_4x.json | 28 + .../blockstates/opv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/opv_packer.json | 19 + .../gtceu/blockstates/opv_polarizer.json | 19 + .../gtceu/blockstates/opv_quantum_chest.json | 114 +++ .../gtceu/blockstates/opv_quantum_tank.json | 114 +++ .../gtceu/blockstates/opv_rock_crusher.json | 19 + .../gtceu/blockstates/opv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/opv_scanner.json | 19 + .../assets/gtceu/blockstates/opv_sifter.json | 19 + .../opv_substation_input_hatch_64a.json | 28 + .../opv_substation_output_hatch_64a.json | 28 + .../blockstates/opv_thermal_centrifuge.json | 19 + .../blockstates/opv_transformer_16a.json | 28 + .../gtceu/blockstates/opv_transformer_1a.json | 28 + .../gtceu/blockstates/opv_transformer_2a.json | 28 + .../gtceu/blockstates/opv_transformer_4a.json | 28 + .../gtceu/blockstates/opv_wiremill.json | 19 + .../blockstates/plasma_large_turbine.json | 114 +++ .../gtceu/blockstates/power_substation.json | 114 +++ .../blockstates/primitive_blast_furnace.json | 114 +++ .../gtceu/blockstates/primitive_pump.json | 19 + .../assets/gtceu/blockstates/pump_hatch.json | 28 + .../gtceu/blockstates/pyrolyse_oven.json | 114 +++ .../gtceu/blockstates/research_station.json | 76 ++ .../gtceu/blockstates/reservoir_hatch.json | 28 + .../blockstates/stainless_steel_crate.json | 7 + .../blockstates/stainless_steel_drum.json | 7 + .../gtceu/blockstates/steam_grinder.json | 114 +++ .../gtceu/blockstates/steam_input_bus.json | 28 + .../gtceu/blockstates/steam_input_hatch.json | 28 + .../blockstates/steam_large_turbine.json | 114 +++ .../gtceu/blockstates/steam_output_bus.json | 28 + .../assets/gtceu/blockstates/steam_oven.json | 114 +++ .../assets/gtceu/blockstates/steel_crate.json | 7 + .../assets/gtceu/blockstates/steel_drum.json | 7 + .../gtceu/blockstates/steel_large_boiler.json | 19 + .../blockstates/steel_multiblock_tank.json | 114 +++ .../gtceu/blockstates/steel_tank_valve.json | 28 + .../gtceu/blockstates/titanium_crate.json | 7 + .../gtceu/blockstates/titanium_drum.json | 7 + .../blockstates/titanium_large_boiler.json | 19 + .../blockstates/tungsten_steel_crate.json | 7 + .../blockstates/tungsten_steel_drum.json | 7 + .../tungstensteel_large_boiler.json | 19 + .../uev_1024a_laser_source_hatch.json | 28 + .../uev_1024a_laser_target_hatch.json | 28 + .../blockstates/uev_16a_energy_converter.json | 28 + .../blockstates/uev_1a_energy_converter.json | 28 + .../uev_256a_laser_source_hatch.json | 28 + .../uev_256a_laser_target_hatch.json | 28 + .../uev_4096a_laser_source_hatch.json | 28 + .../uev_4096a_laser_target_hatch.json | 28 + .../blockstates/uev_4a_energy_converter.json | 28 + .../blockstates/uev_8a_energy_converter.json | 28 + .../gtceu/blockstates/uev_alloy_smelter.json | 19 + .../gtceu/blockstates/uev_arc_furnace.json | 19 + .../gtceu/blockstates/uev_assembler.json | 19 + .../gtceu/blockstates/uev_autoclave.json | 19 + .../blockstates/uev_battery_buffer_16x.json | 28 + .../blockstates/uev_battery_buffer_4x.json | 28 + .../blockstates/uev_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/uev_bender.json | 19 + .../assets/gtceu/blockstates/uev_brewery.json | 19 + .../assets/gtceu/blockstates/uev_canner.json | 19 + .../gtceu/blockstates/uev_centrifuge.json | 19 + .../gtceu/blockstates/uev_charger_4x.json | 28 + .../gtceu/blockstates/uev_chemical_bath.json | 19 + .../blockstates/uev_chemical_reactor.json | 19 + .../blockstates/uev_circuit_assembler.json | 19 + .../gtceu/blockstates/uev_compressor.json | 19 + .../assets/gtceu/blockstates/uev_cutter.json | 19 + .../assets/gtceu/blockstates/uev_diode.json | 28 + .../gtceu/blockstates/uev_distillery.json | 19 + .../blockstates/uev_dual_input_hatch.json | 28 + .../blockstates/uev_dual_output_hatch.json | 28 + .../blockstates/uev_electric_furnace.json | 19 + .../gtceu/blockstates/uev_electrolyzer.json | 19 + .../uev_electromagnetic_separator.json | 19 + .../blockstates/uev_energy_input_hatch.json | 28 + .../uev_energy_input_hatch_16a.json | 28 + .../uev_energy_input_hatch_4a.json | 28 + .../blockstates/uev_energy_output_hatch.json | 28 + .../uev_energy_output_hatch_16a.json | 28 + .../uev_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/uev_extractor.json | 19 + .../gtceu/blockstates/uev_extruder.json | 19 + .../gtceu/blockstates/uev_fermenter.json | 19 + .../gtceu/blockstates/uev_fluid_heater.json | 19 + .../uev_fluid_passthrough_hatch.json | 28 + .../blockstates/uev_fluid_solidifier.json | 19 + .../gtceu/blockstates/uev_forge_hammer.json | 19 + .../gtceu/blockstates/uev_forming_press.json | 19 + .../gtceu/blockstates/uev_gas_collector.json | 19 + .../gtceu/blockstates/uev_input_bus.json | 28 + .../gtceu/blockstates/uev_input_hatch.json | 28 + .../gtceu/blockstates/uev_input_hatch_4x.json | 28 + .../gtceu/blockstates/uev_input_hatch_9x.json | 28 + .../uev_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/uev_laser_engraver.json | 19 + .../assets/gtceu/blockstates/uev_lathe.json | 19 + .../gtceu/blockstates/uev_macerator.json | 19 + .../gtceu/blockstates/uev_machine_hull.json | 28 + .../assets/gtceu/blockstates/uev_mixer.json | 19 + .../gtceu/blockstates/uev_muffler_hatch.json | 28 + .../gtceu/blockstates/uev_ore_washer.json | 19 + .../gtceu/blockstates/uev_output_bus.json | 28 + .../gtceu/blockstates/uev_output_hatch.json | 28 + .../blockstates/uev_output_hatch_4x.json | 28 + .../blockstates/uev_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/uev_packer.json | 19 + .../gtceu/blockstates/uev_polarizer.json | 19 + .../gtceu/blockstates/uev_quantum_chest.json | 114 +++ .../gtceu/blockstates/uev_quantum_tank.json | 114 +++ .../gtceu/blockstates/uev_rock_crusher.json | 19 + .../gtceu/blockstates/uev_rotor_holder.json | 28 + .../assets/gtceu/blockstates/uev_scanner.json | 19 + .../assets/gtceu/blockstates/uev_sifter.json | 19 + .../uev_substation_input_hatch_64a.json | 28 + .../uev_substation_output_hatch_64a.json | 28 + .../blockstates/uev_thermal_centrifuge.json | 19 + .../blockstates/uev_transformer_16a.json | 28 + .../gtceu/blockstates/uev_transformer_1a.json | 28 + .../gtceu/blockstates/uev_transformer_2a.json | 28 + .../gtceu/blockstates/uev_transformer_4a.json | 28 + .../gtceu/blockstates/uev_wiremill.json | 19 + .../uhv_1024a_laser_source_hatch.json | 28 + .../uhv_1024a_laser_target_hatch.json | 28 + .../blockstates/uhv_16a_energy_converter.json | 28 + .../blockstates/uhv_1a_energy_converter.json | 28 + .../uhv_256a_laser_source_hatch.json | 28 + .../uhv_256a_laser_target_hatch.json | 28 + .../uhv_4096a_laser_source_hatch.json | 28 + .../uhv_4096a_laser_target_hatch.json | 28 + .../blockstates/uhv_4a_energy_converter.json | 28 + .../blockstates/uhv_8a_energy_converter.json | 28 + .../gtceu/blockstates/uhv_alloy_smelter.json | 19 + .../gtceu/blockstates/uhv_arc_furnace.json | 19 + .../gtceu/blockstates/uhv_assembler.json | 19 + .../gtceu/blockstates/uhv_autoclave.json | 19 + .../blockstates/uhv_battery_buffer_16x.json | 28 + .../blockstates/uhv_battery_buffer_4x.json | 28 + .../blockstates/uhv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/uhv_bender.json | 19 + .../assets/gtceu/blockstates/uhv_brewery.json | 19 + .../assets/gtceu/blockstates/uhv_canner.json | 19 + .../gtceu/blockstates/uhv_centrifuge.json | 19 + .../gtceu/blockstates/uhv_charger_4x.json | 28 + .../gtceu/blockstates/uhv_chemical_bath.json | 19 + .../blockstates/uhv_chemical_reactor.json | 19 + .../blockstates/uhv_circuit_assembler.json | 19 + .../gtceu/blockstates/uhv_compressor.json | 19 + .../assets/gtceu/blockstates/uhv_cutter.json | 19 + .../assets/gtceu/blockstates/uhv_diode.json | 28 + .../gtceu/blockstates/uhv_distillery.json | 19 + .../blockstates/uhv_dual_input_hatch.json | 28 + .../blockstates/uhv_dual_output_hatch.json | 28 + .../blockstates/uhv_electric_furnace.json | 19 + .../gtceu/blockstates/uhv_electrolyzer.json | 19 + .../uhv_electromagnetic_separator.json | 19 + .../blockstates/uhv_energy_input_hatch.json | 28 + .../uhv_energy_input_hatch_16a.json | 28 + .../uhv_energy_input_hatch_4a.json | 28 + .../blockstates/uhv_energy_output_hatch.json | 28 + .../uhv_energy_output_hatch_16a.json | 28 + .../uhv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/uhv_extractor.json | 19 + .../gtceu/blockstates/uhv_extruder.json | 19 + .../gtceu/blockstates/uhv_fermenter.json | 19 + .../gtceu/blockstates/uhv_fluid_heater.json | 19 + .../uhv_fluid_passthrough_hatch.json | 28 + .../blockstates/uhv_fluid_solidifier.json | 19 + .../gtceu/blockstates/uhv_forge_hammer.json | 19 + .../gtceu/blockstates/uhv_forming_press.json | 19 + .../gtceu/blockstates/uhv_gas_collector.json | 19 + .../gtceu/blockstates/uhv_input_bus.json | 28 + .../gtceu/blockstates/uhv_input_hatch.json | 28 + .../gtceu/blockstates/uhv_input_hatch_4x.json | 28 + .../gtceu/blockstates/uhv_input_hatch_9x.json | 28 + .../uhv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/uhv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/uhv_lathe.json | 19 + .../gtceu/blockstates/uhv_macerator.json | 19 + .../gtceu/blockstates/uhv_machine_hull.json | 28 + .../assets/gtceu/blockstates/uhv_mixer.json | 19 + .../gtceu/blockstates/uhv_muffler_hatch.json | 28 + .../gtceu/blockstates/uhv_ore_washer.json | 19 + .../gtceu/blockstates/uhv_output_bus.json | 28 + .../gtceu/blockstates/uhv_output_hatch.json | 28 + .../blockstates/uhv_output_hatch_4x.json | 28 + .../blockstates/uhv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/uhv_packer.json | 19 + .../gtceu/blockstates/uhv_polarizer.json | 19 + .../gtceu/blockstates/uhv_quantum_chest.json | 114 +++ .../gtceu/blockstates/uhv_quantum_tank.json | 114 +++ .../gtceu/blockstates/uhv_rock_crusher.json | 19 + .../gtceu/blockstates/uhv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/uhv_scanner.json | 19 + .../assets/gtceu/blockstates/uhv_sifter.json | 19 + .../uhv_substation_input_hatch_64a.json | 28 + .../uhv_substation_output_hatch_64a.json | 28 + .../blockstates/uhv_thermal_centrifuge.json | 19 + .../blockstates/uhv_transformer_16a.json | 28 + .../gtceu/blockstates/uhv_transformer_1a.json | 28 + .../gtceu/blockstates/uhv_transformer_2a.json | 28 + .../gtceu/blockstates/uhv_transformer_4a.json | 28 + .../gtceu/blockstates/uhv_wiremill.json | 19 + .../uiv_1024a_laser_source_hatch.json | 28 + .../uiv_1024a_laser_target_hatch.json | 28 + .../blockstates/uiv_16a_energy_converter.json | 28 + .../blockstates/uiv_1a_energy_converter.json | 28 + .../uiv_256a_laser_source_hatch.json | 28 + .../uiv_256a_laser_target_hatch.json | 28 + .../uiv_4096a_laser_source_hatch.json | 28 + .../uiv_4096a_laser_target_hatch.json | 28 + .../blockstates/uiv_4a_energy_converter.json | 28 + .../blockstates/uiv_8a_energy_converter.json | 28 + .../gtceu/blockstates/uiv_alloy_smelter.json | 19 + .../gtceu/blockstates/uiv_arc_furnace.json | 19 + .../gtceu/blockstates/uiv_assembler.json | 19 + .../gtceu/blockstates/uiv_autoclave.json | 19 + .../blockstates/uiv_battery_buffer_16x.json | 28 + .../blockstates/uiv_battery_buffer_4x.json | 28 + .../blockstates/uiv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/uiv_bender.json | 19 + .../assets/gtceu/blockstates/uiv_brewery.json | 19 + .../assets/gtceu/blockstates/uiv_canner.json | 19 + .../gtceu/blockstates/uiv_centrifuge.json | 19 + .../gtceu/blockstates/uiv_charger_4x.json | 28 + .../gtceu/blockstates/uiv_chemical_bath.json | 19 + .../blockstates/uiv_chemical_reactor.json | 19 + .../blockstates/uiv_circuit_assembler.json | 19 + .../gtceu/blockstates/uiv_compressor.json | 19 + .../assets/gtceu/blockstates/uiv_cutter.json | 19 + .../assets/gtceu/blockstates/uiv_diode.json | 28 + .../gtceu/blockstates/uiv_distillery.json | 19 + .../blockstates/uiv_dual_input_hatch.json | 28 + .../blockstates/uiv_dual_output_hatch.json | 28 + .../blockstates/uiv_electric_furnace.json | 19 + .../gtceu/blockstates/uiv_electrolyzer.json | 19 + .../uiv_electromagnetic_separator.json | 19 + .../blockstates/uiv_energy_input_hatch.json | 28 + .../uiv_energy_input_hatch_16a.json | 28 + .../uiv_energy_input_hatch_4a.json | 28 + .../blockstates/uiv_energy_output_hatch.json | 28 + .../uiv_energy_output_hatch_16a.json | 28 + .../uiv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/uiv_extractor.json | 19 + .../gtceu/blockstates/uiv_extruder.json | 19 + .../gtceu/blockstates/uiv_fermenter.json | 19 + .../gtceu/blockstates/uiv_fluid_heater.json | 19 + .../uiv_fluid_passthrough_hatch.json | 28 + .../blockstates/uiv_fluid_solidifier.json | 19 + .../gtceu/blockstates/uiv_forge_hammer.json | 19 + .../gtceu/blockstates/uiv_forming_press.json | 19 + .../gtceu/blockstates/uiv_gas_collector.json | 19 + .../gtceu/blockstates/uiv_input_bus.json | 28 + .../gtceu/blockstates/uiv_input_hatch.json | 28 + .../gtceu/blockstates/uiv_input_hatch_4x.json | 28 + .../gtceu/blockstates/uiv_input_hatch_9x.json | 28 + .../uiv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/uiv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/uiv_lathe.json | 19 + .../gtceu/blockstates/uiv_macerator.json | 19 + .../gtceu/blockstates/uiv_machine_hull.json | 28 + .../assets/gtceu/blockstates/uiv_mixer.json | 19 + .../gtceu/blockstates/uiv_muffler_hatch.json | 28 + .../gtceu/blockstates/uiv_ore_washer.json | 19 + .../gtceu/blockstates/uiv_output_bus.json | 28 + .../gtceu/blockstates/uiv_output_hatch.json | 28 + .../blockstates/uiv_output_hatch_4x.json | 28 + .../blockstates/uiv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/uiv_packer.json | 19 + .../gtceu/blockstates/uiv_polarizer.json | 19 + .../gtceu/blockstates/uiv_quantum_chest.json | 114 +++ .../gtceu/blockstates/uiv_quantum_tank.json | 114 +++ .../gtceu/blockstates/uiv_rock_crusher.json | 19 + .../gtceu/blockstates/uiv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/uiv_scanner.json | 19 + .../assets/gtceu/blockstates/uiv_sifter.json | 19 + .../uiv_substation_input_hatch_64a.json | 28 + .../uiv_substation_output_hatch_64a.json | 28 + .../blockstates/uiv_thermal_centrifuge.json | 19 + .../blockstates/uiv_transformer_16a.json | 28 + .../gtceu/blockstates/uiv_transformer_1a.json | 28 + .../gtceu/blockstates/uiv_transformer_2a.json | 28 + .../gtceu/blockstates/uiv_transformer_4a.json | 28 + .../gtceu/blockstates/uiv_wiremill.json | 19 + .../blockstates/ulv_16a_energy_converter.json | 28 + .../blockstates/ulv_1a_energy_converter.json | 28 + .../blockstates/ulv_4a_energy_converter.json | 28 + .../blockstates/ulv_8a_energy_converter.json | 28 + .../blockstates/ulv_battery_buffer_16x.json | 28 + .../blockstates/ulv_battery_buffer_4x.json | 28 + .../blockstates/ulv_battery_buffer_8x.json | 28 + .../gtceu/blockstates/ulv_charger_4x.json | 28 + .../blockstates/ulv_energy_input_hatch.json | 28 + .../blockstates/ulv_energy_output_hatch.json | 28 + .../gtceu/blockstates/ulv_input_bus.json | 28 + .../gtceu/blockstates/ulv_input_hatch.json | 28 + .../gtceu/blockstates/ulv_machine_hull.json | 28 + .../gtceu/blockstates/ulv_output_bus.json | 28 + .../gtceu/blockstates/ulv_output_hatch.json | 28 + .../blockstates/ulv_transformer_16a.json | 28 + .../gtceu/blockstates/ulv_transformer_1a.json | 28 + .../gtceu/blockstates/ulv_transformer_2a.json | 28 + .../gtceu/blockstates/ulv_transformer_4a.json | 28 + .../uv_1024a_laser_source_hatch.json | 28 + .../uv_1024a_laser_target_hatch.json | 28 + .../blockstates/uv_16a_energy_converter.json | 28 + .../blockstates/uv_1a_energy_converter.json | 28 + .../uv_256a_laser_source_hatch.json | 28 + .../uv_256a_laser_target_hatch.json | 28 + .../uv_4096a_laser_source_hatch.json | 28 + .../uv_4096a_laser_target_hatch.json | 28 + .../blockstates/uv_4a_energy_converter.json | 28 + .../blockstates/uv_8a_energy_converter.json | 28 + .../gtceu/blockstates/uv_alloy_smelter.json | 19 + .../gtceu/blockstates/uv_arc_furnace.json | 19 + .../gtceu/blockstates/uv_assembler.json | 19 + .../gtceu/blockstates/uv_autoclave.json | 19 + .../blockstates/uv_battery_buffer_16x.json | 28 + .../blockstates/uv_battery_buffer_4x.json | 28 + .../blockstates/uv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/uv_bender.json | 19 + .../assets/gtceu/blockstates/uv_brewery.json | 19 + .../assets/gtceu/blockstates/uv_canner.json | 19 + .../gtceu/blockstates/uv_centrifuge.json | 19 + .../gtceu/blockstates/uv_charger_4x.json | 28 + .../gtceu/blockstates/uv_chemical_bath.json | 19 + .../blockstates/uv_chemical_reactor.json | 19 + .../blockstates/uv_circuit_assembler.json | 19 + .../gtceu/blockstates/uv_compressor.json | 19 + .../assets/gtceu/blockstates/uv_cutter.json | 19 + .../assets/gtceu/blockstates/uv_diode.json | 28 + .../gtceu/blockstates/uv_distillery.json | 19 + .../blockstates/uv_dual_input_hatch.json | 28 + .../blockstates/uv_dual_output_hatch.json | 28 + .../blockstates/uv_electric_furnace.json | 19 + .../gtceu/blockstates/uv_electrolyzer.json | 19 + .../uv_electromagnetic_separator.json | 19 + .../blockstates/uv_energy_input_hatch.json | 28 + .../uv_energy_input_hatch_16a.json | 28 + .../blockstates/uv_energy_input_hatch_4a.json | 28 + .../blockstates/uv_energy_output_hatch.json | 28 + .../uv_energy_output_hatch_16a.json | 28 + .../uv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/uv_extractor.json | 19 + .../assets/gtceu/blockstates/uv_extruder.json | 19 + .../gtceu/blockstates/uv_fermenter.json | 19 + .../gtceu/blockstates/uv_fluid_heater.json | 19 + .../uv_fluid_passthrough_hatch.json | 28 + .../blockstates/uv_fluid_solidifier.json | 19 + .../gtceu/blockstates/uv_forge_hammer.json | 19 + .../gtceu/blockstates/uv_forming_press.json | 19 + .../gtceu/blockstates/uv_fusion_reactor.json | 114 +++ .../gtceu/blockstates/uv_gas_collector.json | 19 + .../gtceu/blockstates/uv_input_bus.json | 28 + .../gtceu/blockstates/uv_input_hatch.json | 28 + .../gtceu/blockstates/uv_input_hatch_4x.json | 28 + .../gtceu/blockstates/uv_input_hatch_9x.json | 28 + .../uv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/uv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/uv_lathe.json | 19 + .../gtceu/blockstates/uv_macerator.json | 19 + .../gtceu/blockstates/uv_machine_hull.json | 28 + .../assets/gtceu/blockstates/uv_mixer.json | 19 + .../gtceu/blockstates/uv_muffler_hatch.json | 28 + .../gtceu/blockstates/uv_ore_washer.json | 19 + .../gtceu/blockstates/uv_output_bus.json | 28 + .../gtceu/blockstates/uv_output_hatch.json | 28 + .../gtceu/blockstates/uv_output_hatch_4x.json | 28 + .../gtceu/blockstates/uv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/uv_packer.json | 19 + .../gtceu/blockstates/uv_parallel_hatch.json | 28 + .../gtceu/blockstates/uv_polarizer.json | 19 + .../gtceu/blockstates/uv_quantum_chest.json | 114 +++ .../gtceu/blockstates/uv_quantum_tank.json | 114 +++ .../gtceu/blockstates/uv_rock_crusher.json | 19 + .../gtceu/blockstates/uv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/uv_scanner.json | 19 + .../assets/gtceu/blockstates/uv_sifter.json | 19 + .../uv_substation_input_hatch_64a.json | 28 + .../uv_substation_output_hatch_64a.json | 28 + .../blockstates/uv_thermal_centrifuge.json | 19 + .../gtceu/blockstates/uv_transformer_16a.json | 28 + .../gtceu/blockstates/uv_transformer_1a.json | 28 + .../gtceu/blockstates/uv_transformer_2a.json | 28 + .../gtceu/blockstates/uv_transformer_4a.json | 28 + .../assets/gtceu/blockstates/uv_wiremill.json | 19 + .../blockstates/uv_world_accelerator.json | 7 + .../uxv_1024a_laser_source_hatch.json | 28 + .../uxv_1024a_laser_target_hatch.json | 28 + .../blockstates/uxv_16a_energy_converter.json | 28 + .../blockstates/uxv_1a_energy_converter.json | 28 + .../uxv_256a_laser_source_hatch.json | 28 + .../uxv_256a_laser_target_hatch.json | 28 + .../uxv_4096a_laser_source_hatch.json | 28 + .../uxv_4096a_laser_target_hatch.json | 28 + .../blockstates/uxv_4a_energy_converter.json | 28 + .../blockstates/uxv_8a_energy_converter.json | 28 + .../gtceu/blockstates/uxv_alloy_smelter.json | 19 + .../gtceu/blockstates/uxv_arc_furnace.json | 19 + .../gtceu/blockstates/uxv_assembler.json | 19 + .../gtceu/blockstates/uxv_autoclave.json | 19 + .../blockstates/uxv_battery_buffer_16x.json | 28 + .../blockstates/uxv_battery_buffer_4x.json | 28 + .../blockstates/uxv_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/uxv_bender.json | 19 + .../assets/gtceu/blockstates/uxv_brewery.json | 19 + .../assets/gtceu/blockstates/uxv_canner.json | 19 + .../gtceu/blockstates/uxv_centrifuge.json | 19 + .../gtceu/blockstates/uxv_charger_4x.json | 28 + .../gtceu/blockstates/uxv_chemical_bath.json | 19 + .../blockstates/uxv_chemical_reactor.json | 19 + .../blockstates/uxv_circuit_assembler.json | 19 + .../gtceu/blockstates/uxv_compressor.json | 19 + .../assets/gtceu/blockstates/uxv_cutter.json | 19 + .../assets/gtceu/blockstates/uxv_diode.json | 28 + .../gtceu/blockstates/uxv_distillery.json | 19 + .../blockstates/uxv_dual_input_hatch.json | 28 + .../blockstates/uxv_dual_output_hatch.json | 28 + .../blockstates/uxv_electric_furnace.json | 19 + .../gtceu/blockstates/uxv_electrolyzer.json | 19 + .../uxv_electromagnetic_separator.json | 19 + .../blockstates/uxv_energy_input_hatch.json | 28 + .../uxv_energy_input_hatch_16a.json | 28 + .../uxv_energy_input_hatch_4a.json | 28 + .../blockstates/uxv_energy_output_hatch.json | 28 + .../uxv_energy_output_hatch_16a.json | 28 + .../uxv_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/uxv_extractor.json | 19 + .../gtceu/blockstates/uxv_extruder.json | 19 + .../gtceu/blockstates/uxv_fermenter.json | 19 + .../gtceu/blockstates/uxv_fluid_heater.json | 19 + .../uxv_fluid_passthrough_hatch.json | 28 + .../blockstates/uxv_fluid_solidifier.json | 19 + .../gtceu/blockstates/uxv_forge_hammer.json | 19 + .../gtceu/blockstates/uxv_forming_press.json | 19 + .../gtceu/blockstates/uxv_gas_collector.json | 19 + .../gtceu/blockstates/uxv_input_bus.json | 28 + .../gtceu/blockstates/uxv_input_hatch.json | 28 + .../gtceu/blockstates/uxv_input_hatch_4x.json | 28 + .../gtceu/blockstates/uxv_input_hatch_9x.json | 28 + .../uxv_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/uxv_laser_engraver.json | 19 + .../assets/gtceu/blockstates/uxv_lathe.json | 19 + .../gtceu/blockstates/uxv_macerator.json | 19 + .../gtceu/blockstates/uxv_machine_hull.json | 28 + .../assets/gtceu/blockstates/uxv_mixer.json | 19 + .../gtceu/blockstates/uxv_muffler_hatch.json | 28 + .../gtceu/blockstates/uxv_ore_washer.json | 19 + .../gtceu/blockstates/uxv_output_bus.json | 28 + .../gtceu/blockstates/uxv_output_hatch.json | 28 + .../blockstates/uxv_output_hatch_4x.json | 28 + .../blockstates/uxv_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/uxv_packer.json | 19 + .../gtceu/blockstates/uxv_polarizer.json | 19 + .../gtceu/blockstates/uxv_quantum_chest.json | 114 +++ .../gtceu/blockstates/uxv_quantum_tank.json | 114 +++ .../gtceu/blockstates/uxv_rock_crusher.json | 19 + .../gtceu/blockstates/uxv_rotor_holder.json | 28 + .../assets/gtceu/blockstates/uxv_scanner.json | 19 + .../assets/gtceu/blockstates/uxv_sifter.json | 19 + .../uxv_substation_input_hatch_64a.json | 28 + .../uxv_substation_output_hatch_64a.json | 28 + .../blockstates/uxv_thermal_centrifuge.json | 19 + .../blockstates/uxv_transformer_16a.json | 28 + .../gtceu/blockstates/uxv_transformer_1a.json | 28 + .../gtceu/blockstates/uxv_transformer_2a.json | 28 + .../gtceu/blockstates/uxv_transformer_4a.json | 28 + .../gtceu/blockstates/uxv_wiremill.json | 19 + .../gtceu/blockstates/vacuum_freezer.json | 114 +++ .../assets/gtceu/blockstates/wood_crate.json | 7 + .../assets/gtceu/blockstates/wood_drum.json | 7 + .../blockstates/wooden_multiblock_tank.json | 114 +++ .../gtceu/blockstates/wooden_tank_valve.json | 28 + .../zpm_1024a_laser_source_hatch.json | 28 + .../zpm_1024a_laser_target_hatch.json | 28 + .../blockstates/zpm_16a_energy_converter.json | 28 + .../blockstates/zpm_1a_energy_converter.json | 28 + .../zpm_256a_laser_source_hatch.json | 28 + .../zpm_256a_laser_target_hatch.json | 28 + .../zpm_4096a_laser_source_hatch.json | 28 + .../zpm_4096a_laser_target_hatch.json | 28 + .../blockstates/zpm_4a_energy_converter.json | 28 + .../blockstates/zpm_8a_energy_converter.json | 28 + .../gtceu/blockstates/zpm_alloy_smelter.json | 19 + .../gtceu/blockstates/zpm_arc_furnace.json | 19 + .../gtceu/blockstates/zpm_assembler.json | 19 + .../gtceu/blockstates/zpm_autoclave.json | 19 + .../blockstates/zpm_battery_buffer_16x.json | 28 + .../blockstates/zpm_battery_buffer_4x.json | 28 + .../blockstates/zpm_battery_buffer_8x.json | 28 + .../assets/gtceu/blockstates/zpm_bender.json | 19 + .../assets/gtceu/blockstates/zpm_brewery.json | 19 + .../assets/gtceu/blockstates/zpm_canner.json | 19 + .../gtceu/blockstates/zpm_centrifuge.json | 19 + .../gtceu/blockstates/zpm_charger_4x.json | 28 + .../gtceu/blockstates/zpm_chemical_bath.json | 19 + .../blockstates/zpm_chemical_reactor.json | 19 + .../blockstates/zpm_circuit_assembler.json | 19 + .../gtceu/blockstates/zpm_compressor.json | 19 + .../assets/gtceu/blockstates/zpm_cutter.json | 19 + .../assets/gtceu/blockstates/zpm_diode.json | 28 + .../gtceu/blockstates/zpm_distillery.json | 19 + .../blockstates/zpm_dual_input_hatch.json | 28 + .../blockstates/zpm_dual_output_hatch.json | 28 + .../blockstates/zpm_electric_furnace.json | 19 + .../gtceu/blockstates/zpm_electrolyzer.json | 19 + .../zpm_electromagnetic_separator.json | 19 + .../blockstates/zpm_energy_input_hatch.json | 28 + .../zpm_energy_input_hatch_16a.json | 28 + .../zpm_energy_input_hatch_4a.json | 28 + .../blockstates/zpm_energy_output_hatch.json | 28 + .../zpm_energy_output_hatch_16a.json | 28 + .../zpm_energy_output_hatch_4a.json | 28 + .../gtceu/blockstates/zpm_extractor.json | 19 + .../gtceu/blockstates/zpm_extruder.json | 19 + .../gtceu/blockstates/zpm_fermenter.json | 19 + .../gtceu/blockstates/zpm_fluid_heater.json | 19 + .../zpm_fluid_passthrough_hatch.json | 28 + .../blockstates/zpm_fluid_solidifier.json | 19 + .../gtceu/blockstates/zpm_forge_hammer.json | 19 + .../gtceu/blockstates/zpm_forming_press.json | 19 + .../gtceu/blockstates/zpm_fusion_reactor.json | 114 +++ .../gtceu/blockstates/zpm_gas_collector.json | 19 + .../gtceu/blockstates/zpm_input_bus.json | 28 + .../gtceu/blockstates/zpm_input_hatch.json | 28 + .../gtceu/blockstates/zpm_input_hatch_4x.json | 28 + .../gtceu/blockstates/zpm_input_hatch_9x.json | 28 + .../zpm_item_passthrough_hatch.json | 28 + .../gtceu/blockstates/zpm_laser_engraver.json | 19 + .../assets/gtceu/blockstates/zpm_lathe.json | 19 + .../gtceu/blockstates/zpm_macerator.json | 19 + .../gtceu/blockstates/zpm_machine_hull.json | 28 + .../assets/gtceu/blockstates/zpm_mixer.json | 19 + .../gtceu/blockstates/zpm_muffler_hatch.json | 28 + .../gtceu/blockstates/zpm_ore_washer.json | 19 + .../gtceu/blockstates/zpm_output_bus.json | 28 + .../gtceu/blockstates/zpm_output_hatch.json | 28 + .../blockstates/zpm_output_hatch_4x.json | 28 + .../blockstates/zpm_output_hatch_9x.json | 28 + .../assets/gtceu/blockstates/zpm_packer.json | 19 + .../gtceu/blockstates/zpm_parallel_hatch.json | 28 + .../gtceu/blockstates/zpm_polarizer.json | 19 + .../gtceu/blockstates/zpm_quantum_chest.json | 114 +++ .../gtceu/blockstates/zpm_quantum_tank.json | 114 +++ .../gtceu/blockstates/zpm_rock_crusher.json | 19 + .../gtceu/blockstates/zpm_rotor_holder.json | 28 + .../assets/gtceu/blockstates/zpm_scanner.json | 19 + .../assets/gtceu/blockstates/zpm_sifter.json | 19 + .../zpm_substation_input_hatch_64a.json | 28 + .../zpm_substation_output_hatch_64a.json | 28 + .../blockstates/zpm_thermal_centrifuge.json | 19 + .../blockstates/zpm_transformer_16a.json | 28 + .../gtceu/blockstates/zpm_transformer_1a.json | 28 + .../gtceu/blockstates/zpm_transformer_2a.json | 28 + .../gtceu/blockstates/zpm_transformer_4a.json | 28 + .../gtceu/blockstates/zpm_wiremill.json | 19 + .../blockstates/zpm_world_accelerator.json | 7 + .../resources/assets/gtceu/lang/en_ud.json | 1 + .../block/casings/steam/bricked_bronze.json | 8 + .../block/casings/steam/bricked_steel.json | 8 + .../models/block/casings/voltage/ev.json | 8 + .../models/block/casings/voltage/hv.json | 8 + .../models/block/casings/voltage/iv.json | 8 + .../models/block/casings/voltage/luv.json | 8 + .../models/block/casings/voltage/lv.json | 8 + .../models/block/casings/voltage/max.json | 8 + .../models/block/casings/voltage/mv.json | 8 + .../models/block/casings/voltage/opv.json | 8 + .../models/block/casings/voltage/uev.json | 8 + .../models/block/casings/voltage/uhv.json | 8 + .../models/block/casings/voltage/uiv.json | 8 + .../models/block/casings/voltage/ulv.json | 8 + .../models/block/casings/voltage/uv.json | 8 + .../models/block/casings/voltage/uxv.json | 8 + .../models/block/casings/voltage/zpm.json | 8 + .../models/block/ev_hermetic_casing.json | 3 +- .../hpca_active_cooler_component_base.json | 10 + ...a_advanced_computation_component_base.json | 10 + .../block/hpca_bridge_component_base.json | 10 + .../hpca_computation_component_base.json | 10 + .../block/hpca_empty_component_base.json | 10 + .../block/hpca_heat_sink_component_base.json | 10 + .../models/block/hv_hermetic_casing.json | 3 +- .../models/block/iv_hermetic_casing.json | 3 +- .../models/block/luv_hermetic_casing.json | 3 +- .../models/block/lv_hermetic_casing.json | 3 +- .../block/machine/active_transformer.json | 90 ++ .../machine/advanced_data_access_hatch.json | 22 + .../block/machine/alloy_blast_smelter.json | 90 ++ .../models/block/machine/aluminium_crate.json | 13 + .../models/block/machine/aluminium_drum.json | 10 + .../models/block/machine/assembly_line.json | 90 ++ .../block/machine/auto_maintenance_hatch.json | 22 + .../models/block/machine/bronze_crate.json | 13 + .../models/block/machine/bronze_drum.json | 10 + .../block/machine/bronze_large_boiler.json | 110 +++ .../block/machine/charcoal_pile_igniter.json | 90 ++ .../machine/cleaning_maintenance_hatch.json | 22 + .../gtceu/models/block/machine/cleanroom.json | 90 ++ .../gtceu/models/block/machine/coke_oven.json | 90 ++ .../models/block/machine/coke_oven_hatch.json | 13 + .../machine/computation_receiver_hatch.json | 22 + .../computation_transmitter_hatch.json | 22 + .../configurable_maintenance_hatch.json | 33 + .../gtceu/models/block/machine/cracker.json | 90 ++ .../models/block/machine/creative_chest.json | 15 + .../creative_computation_provider.json | 24 + .../machine/creative_data_access_hatch.json | 22 + .../models/block/machine/creative_energy.json | 24 + .../models/block/machine/creative_tank.json | 15 + .../block/machine/data_access_hatch.json | 22 + .../gtceu/models/block/machine/data_bank.json | 90 ++ .../block/machine/data_receiver_hatch.json | 22 + .../block/machine/data_transmitter_hatch.json | 22 + .../block/machine/distillation_tower.json | 90 ++ .../block/machine/electric_blast_furnace.json | 90 ++ .../machine/ev_16a_energy_converter.json | 33 + .../block/machine/ev_1a_energy_converter.json | 33 + .../block/machine/ev_4a_energy_converter.json | 33 + .../block/machine/ev_8a_energy_converter.json | 33 + .../models/block/machine/ev_air_scrubber.json | 75 ++ .../block/machine/ev_alloy_smelter.json | 43 + .../models/block/machine/ev_arc_furnace.json | 67 ++ .../models/block/machine/ev_assembler.json | 51 ++ .../models/block/machine/ev_autoclave.json | 67 ++ .../block/machine/ev_battery_buffer_16x.json | 20 + .../block/machine/ev_battery_buffer_4x.json | 20 + .../block/machine/ev_battery_buffer_8x.json | 20 + .../block/machine/ev_bedrock_ore_miner.json | 90 ++ .../gtceu/models/block/machine/ev_bender.json | 41 + .../block/machine/ev_block_breaker.json | 39 + .../models/block/machine/ev_brewery.json | 51 ++ .../gtceu/models/block/machine/ev_canner.json | 51 ++ .../models/block/machine/ev_centrifuge.json | 51 ++ .../models/block/machine/ev_charger_4x.json | 42 + .../block/machine/ev_chemical_bath.json | 51 ++ .../block/machine/ev_chemical_reactor.json | 43 + .../block/machine/ev_circuit_assembler.json | 51 ++ .../models/block/machine/ev_compressor.json | 59 ++ .../gtceu/models/block/machine/ev_cutter.json | 43 + .../gtceu/models/block/machine/ev_diode.json | 82 ++ .../models/block/machine/ev_distillery.json | 57 ++ .../block/machine/ev_electric_furnace.json | 43 + .../models/block/machine/ev_electrolyzer.json | 59 ++ .../machine/ev_electromagnetic_separator.json | 51 ++ .../block/machine/ev_energy_input_hatch.json | 22 + .../machine/ev_energy_input_hatch_16a.json | 22 + .../machine/ev_energy_input_hatch_4a.json | 22 + .../block/machine/ev_energy_output_hatch.json | 22 + .../machine/ev_energy_output_hatch_16a.json | 22 + .../machine/ev_energy_output_hatch_4a.json | 22 + .../models/block/machine/ev_extractor.json | 59 ++ .../models/block/machine/ev_extruder.json | 51 ++ .../models/block/machine/ev_fermenter.json | 57 ++ .../gtceu/models/block/machine/ev_fisher.json | 19 + .../block/machine/ev_fluid_drilling_rig.json | 90 ++ .../models/block/machine/ev_fluid_heater.json | 59 ++ .../machine/ev_fluid_passthrough_hatch.json | 22 + .../block/machine/ev_fluid_solidifier.json | 43 + .../models/block/machine/ev_forge_hammer.json | 41 + .../block/machine/ev_forming_press.json | 59 ++ .../block/machine/ev_gas_collector.json | 75 ++ .../models/block/machine/ev_input_bus.json | 36 + .../models/block/machine/ev_input_hatch.json | 36 + .../block/machine/ev_input_hatch_4x.json | 36 + .../block/machine/ev_input_hatch_9x.json | 36 + .../block/machine/ev_item_collector.json | 55 ++ .../machine/ev_item_passthrough_hatch.json | 22 + .../models/block/machine/ev_large_miner.json | 90 ++ .../block/machine/ev_laser_engraver.json | 43 + .../gtceu/models/block/machine/ev_lathe.json | 41 + .../models/block/machine/ev_macerator.json | 51 ++ .../models/block/machine/ev_machine_hull.json | 22 + .../gtceu/models/block/machine/ev_mixer.json | 51 ++ .../block/machine/ev_muffler_hatch.json | 22 + .../models/block/machine/ev_ore_washer.json | 51 ++ .../models/block/machine/ev_output_bus.json | 36 + .../models/block/machine/ev_output_hatch.json | 36 + .../block/machine/ev_output_hatch_4x.json | 36 + .../block/machine/ev_output_hatch_9x.json | 36 + .../gtceu/models/block/machine/ev_packer.json | 39 + .../models/block/machine/ev_polarizer.json | 51 ++ .../gtceu/models/block/machine/ev_pump.json | 17 + .../models/block/machine/ev_rock_crusher.json | 39 + .../models/block/machine/ev_rotor_holder.json | 76 ++ .../models/block/machine/ev_scanner.json | 43 + .../gtceu/models/block/machine/ev_sifter.json | 51 ++ .../ev_substation_input_hatch_64a.json | 22 + .../ev_substation_output_hatch_64a.json | 22 + .../models/block/machine/ev_super_chest.json | 22 + .../models/block/machine/ev_super_tank.json | 22 + .../block/machine/ev_thermal_centrifuge.json | 49 ++ .../block/machine/ev_transformer_16a.json | 35 + .../block/machine/ev_transformer_1a.json | 35 + .../block/machine/ev_transformer_2a.json | 35 + .../block/machine/ev_transformer_4a.json | 35 + .../models/block/machine/ev_wiremill.json | 57 ++ .../block/machine/ev_world_accelerator.json | 135 +++ .../machine/extreme_combustion_engine.json | 90 ++ .../block/machine/gas_large_turbine.json | 90 ++ .../gtceu/models/block/machine/gold_drum.json | 10 + .../high_performance_computation_array.json | 108 +++ .../block/machine/hp_steam_alloy_smelter.json | 116 +++ .../block/machine/hp_steam_compressor.json | 132 +++ .../block/machine/hp_steam_extractor.json | 132 +++ .../block/machine/hp_steam_forge_hammer.json | 114 +++ .../block/machine/hp_steam_furnace.json | 116 +++ .../block/machine/hp_steam_liquid_boiler.json | 63 ++ .../block/machine/hp_steam_macerator.json | 124 +++ .../models/block/machine/hp_steam_miner.json | 124 +++ .../block/machine/hp_steam_rock_crusher.json | 112 +++ .../block/machine/hp_steam_solar_boiler.json | 59 ++ .../block/machine/hp_steam_solid_boiler.json | 63 ++ .../machine/hpca_active_cooler_component.json | 43 + .../hpca_advanced_computation_component.json | 43 + .../block/machine/hpca_bridge_component.json | 43 + .../machine/hpca_computation_component.json | 43 + .../block/machine/hpca_empty_component.json | 43 + .../machine/hpca_heat_sink_component.json | 43 + .../machine/hv_16a_energy_converter.json | 33 + .../block/machine/hv_1a_energy_converter.json | 33 + .../block/machine/hv_4a_energy_converter.json | 33 + .../block/machine/hv_8a_energy_converter.json | 33 + .../models/block/machine/hv_air_scrubber.json | 75 ++ .../block/machine/hv_alloy_smelter.json | 43 + .../models/block/machine/hv_arc_furnace.json | 67 ++ .../models/block/machine/hv_assembler.json | 51 ++ .../models/block/machine/hv_autoclave.json | 67 ++ .../block/machine/hv_battery_buffer_16x.json | 20 + .../block/machine/hv_battery_buffer_4x.json | 20 + .../block/machine/hv_battery_buffer_8x.json | 20 + .../block/machine/hv_bedrock_ore_miner.json | 90 ++ .../gtceu/models/block/machine/hv_bender.json | 41 + .../block/machine/hv_block_breaker.json | 39 + .../models/block/machine/hv_brewery.json | 51 ++ .../gtceu/models/block/machine/hv_buffer.json | 24 + .../gtceu/models/block/machine/hv_canner.json | 51 ++ .../models/block/machine/hv_centrifuge.json | 51 ++ .../models/block/machine/hv_charger_4x.json | 42 + .../block/machine/hv_chemical_bath.json | 51 ++ .../block/machine/hv_chemical_reactor.json | 43 + .../block/machine/hv_circuit_assembler.json | 51 ++ .../models/block/machine/hv_combustion.json | 59 ++ .../models/block/machine/hv_compressor.json | 59 ++ .../gtceu/models/block/machine/hv_cutter.json | 43 + .../gtceu/models/block/machine/hv_diode.json | 82 ++ .../models/block/machine/hv_distillery.json | 57 ++ .../block/machine/hv_electric_furnace.json | 43 + .../models/block/machine/hv_electrolyzer.json | 59 ++ .../machine/hv_electromagnetic_separator.json | 51 ++ .../block/machine/hv_energy_input_hatch.json | 22 + .../block/machine/hv_energy_output_hatch.json | 22 + .../models/block/machine/hv_extractor.json | 59 ++ .../models/block/machine/hv_extruder.json | 51 ++ .../models/block/machine/hv_fermenter.json | 57 ++ .../gtceu/models/block/machine/hv_fisher.json | 19 + .../block/machine/hv_fluid_drilling_rig.json | 90 ++ .../models/block/machine/hv_fluid_heater.json | 59 ++ .../machine/hv_fluid_passthrough_hatch.json | 22 + .../block/machine/hv_fluid_solidifier.json | 43 + .../models/block/machine/hv_forge_hammer.json | 41 + .../block/machine/hv_forming_press.json | 59 ++ .../block/machine/hv_gas_collector.json | 75 ++ .../models/block/machine/hv_gas_turbine.json | 59 ++ .../models/block/machine/hv_input_bus.json | 36 + .../models/block/machine/hv_input_hatch.json | 36 + .../block/machine/hv_item_collector.json | 55 ++ .../machine/hv_item_passthrough_hatch.json | 22 + .../block/machine/hv_laser_engraver.json | 43 + .../gtceu/models/block/machine/hv_lathe.json | 41 + .../models/block/machine/hv_macerator.json | 51 ++ .../models/block/machine/hv_machine_hull.json | 22 + .../gtceu/models/block/machine/hv_miner.json | 51 ++ .../gtceu/models/block/machine/hv_mixer.json | 51 ++ .../block/machine/hv_muffler_hatch.json | 22 + .../models/block/machine/hv_ore_washer.json | 51 ++ .../models/block/machine/hv_output_bus.json | 36 + .../models/block/machine/hv_output_hatch.json | 36 + .../gtceu/models/block/machine/hv_packer.json | 39 + .../models/block/machine/hv_polarizer.json | 51 ++ .../gtceu/models/block/machine/hv_pump.json | 17 + .../models/block/machine/hv_rock_crusher.json | 39 + .../models/block/machine/hv_rotor_holder.json | 76 ++ .../models/block/machine/hv_scanner.json | 43 + .../gtceu/models/block/machine/hv_sifter.json | 51 ++ .../block/machine/hv_steam_turbine.json | 59 ++ .../models/block/machine/hv_super_chest.json | 22 + .../models/block/machine/hv_super_tank.json | 22 + .../block/machine/hv_thermal_centrifuge.json | 49 ++ .../block/machine/hv_transformer_16a.json | 35 + .../block/machine/hv_transformer_1a.json | 35 + .../block/machine/hv_transformer_2a.json | 35 + .../block/machine/hv_transformer_4a.json | 35 + .../models/block/machine/hv_wiremill.json | 57 ++ .../block/machine/hv_world_accelerator.json | 135 +++ .../block/machine/implosion_compressor.json | 90 ++ .../machine/iv_1024a_laser_source_hatch.json | 22 + .../machine/iv_1024a_laser_target_hatch.json | 22 + .../machine/iv_16a_energy_converter.json | 33 + .../block/machine/iv_1a_energy_converter.json | 33 + .../machine/iv_256a_laser_source_hatch.json | 22 + .../machine/iv_256a_laser_target_hatch.json | 22 + .../machine/iv_4096a_laser_source_hatch.json | 22 + .../machine/iv_4096a_laser_target_hatch.json | 22 + .../block/machine/iv_4a_energy_converter.json | 33 + .../block/machine/iv_8a_energy_converter.json | 33 + .../block/machine/iv_alloy_smelter.json | 43 + .../models/block/machine/iv_arc_furnace.json | 67 ++ .../models/block/machine/iv_assembler.json | 51 ++ .../models/block/machine/iv_autoclave.json | 67 ++ .../block/machine/iv_battery_buffer_16x.json | 20 + .../block/machine/iv_battery_buffer_4x.json | 20 + .../block/machine/iv_battery_buffer_8x.json | 20 + .../gtceu/models/block/machine/iv_bender.json | 41 + .../models/block/machine/iv_brewery.json | 51 ++ .../gtceu/models/block/machine/iv_canner.json | 51 ++ .../models/block/machine/iv_centrifuge.json | 51 ++ .../models/block/machine/iv_charger_4x.json | 42 + .../block/machine/iv_chemical_bath.json | 51 ++ .../block/machine/iv_chemical_reactor.json | 43 + .../block/machine/iv_circuit_assembler.json | 51 ++ .../models/block/machine/iv_compressor.json | 59 ++ .../gtceu/models/block/machine/iv_cutter.json | 43 + .../gtceu/models/block/machine/iv_diode.json | 82 ++ .../models/block/machine/iv_distillery.json | 57 ++ .../block/machine/iv_electric_furnace.json | 43 + .../models/block/machine/iv_electrolyzer.json | 59 ++ .../machine/iv_electromagnetic_separator.json | 51 ++ .../block/machine/iv_energy_input_hatch.json | 22 + .../machine/iv_energy_input_hatch_16a.json | 22 + .../machine/iv_energy_input_hatch_4a.json | 22 + .../block/machine/iv_energy_output_hatch.json | 22 + .../machine/iv_energy_output_hatch_16a.json | 22 + .../machine/iv_energy_output_hatch_4a.json | 22 + .../models/block/machine/iv_extractor.json | 59 ++ .../models/block/machine/iv_extruder.json | 51 ++ .../models/block/machine/iv_fermenter.json | 57 ++ .../gtceu/models/block/machine/iv_fisher.json | 19 + .../models/block/machine/iv_fluid_heater.json | 59 ++ .../machine/iv_fluid_passthrough_hatch.json | 22 + .../block/machine/iv_fluid_solidifier.json | 43 + .../models/block/machine/iv_forge_hammer.json | 41 + .../block/machine/iv_forming_press.json | 59 ++ .../block/machine/iv_gas_collector.json | 75 ++ .../models/block/machine/iv_input_bus.json | 36 + .../models/block/machine/iv_input_hatch.json | 36 + .../block/machine/iv_input_hatch_4x.json | 36 + .../block/machine/iv_input_hatch_9x.json | 36 + .../machine/iv_item_passthrough_hatch.json | 22 + .../models/block/machine/iv_large_miner.json | 90 ++ .../block/machine/iv_laser_engraver.json | 43 + .../gtceu/models/block/machine/iv_lathe.json | 41 + .../models/block/machine/iv_macerator.json | 51 ++ .../models/block/machine/iv_machine_hull.json | 22 + .../gtceu/models/block/machine/iv_mixer.json | 51 ++ .../block/machine/iv_muffler_hatch.json | 22 + .../models/block/machine/iv_ore_washer.json | 51 ++ .../models/block/machine/iv_output_bus.json | 36 + .../models/block/machine/iv_output_hatch.json | 36 + .../block/machine/iv_output_hatch_4x.json | 36 + .../block/machine/iv_output_hatch_9x.json | 36 + .../gtceu/models/block/machine/iv_packer.json | 39 + .../block/machine/iv_parallel_hatch.json | 48 ++ .../models/block/machine/iv_polarizer.json | 51 ++ .../block/machine/iv_quantum_chest.json | 22 + .../models/block/machine/iv_quantum_tank.json | 22 + .../models/block/machine/iv_rock_crusher.json | 39 + .../models/block/machine/iv_rotor_holder.json | 76 ++ .../models/block/machine/iv_scanner.json | 43 + .../gtceu/models/block/machine/iv_sifter.json | 51 ++ .../iv_substation_input_hatch_64a.json | 22 + .../iv_substation_output_hatch_64a.json | 22 + .../block/machine/iv_thermal_centrifuge.json | 49 ++ .../block/machine/iv_transformer_16a.json | 35 + .../block/machine/iv_transformer_1a.json | 35 + .../block/machine/iv_transformer_2a.json | 35 + .../block/machine/iv_transformer_4a.json | 35 + .../models/block/machine/iv_wiremill.json | 57 ++ .../block/machine/iv_world_accelerator.json | 135 +++ .../block/machine/large_arc_smelter.json | 90 ++ .../models/block/machine/large_assembler.json | 90 ++ .../models/block/machine/large_autoclave.json | 90 ++ .../models/block/machine/large_brewer.json | 90 ++ .../block/machine/large_centrifuge.json | 90 ++ .../block/machine/large_chemical_bath.json | 99 +++ .../block/machine/large_chemical_reactor.json | 90 ++ .../machine/large_circuit_assembler.json | 90 ++ .../machine/large_combustion_engine.json | 90 ++ .../models/block/machine/large_cutter.json | 90 ++ .../block/machine/large_distillery.json | 90 ++ .../block/machine/large_electrolyzer.json | 90 ++ .../block/machine/large_electromagnet.json | 90 ++ .../block/machine/large_engraving_laser.json | 90 ++ .../models/block/machine/large_extractor.json | 90 ++ .../models/block/machine/large_extruder.json | 90 ++ .../block/machine/large_maceration_tower.json | 90 ++ .../block/machine/large_material_press.json | 90 ++ .../models/block/machine/large_mixer.json | 99 +++ .../models/block/machine/large_packer.json | 90 ++ .../block/machine/large_sifting_funnel.json | 90 ++ .../block/machine/large_solidifier.json | 90 ++ .../models/block/machine/large_wiremill.json | 90 ++ .../block/machine/lp_steam_alloy_smelter.json | 116 +++ .../block/machine/lp_steam_compressor.json | 132 +++ .../block/machine/lp_steam_extractor.json | 132 +++ .../block/machine/lp_steam_forge_hammer.json | 114 +++ .../block/machine/lp_steam_furnace.json | 116 +++ .../block/machine/lp_steam_liquid_boiler.json | 63 ++ .../block/machine/lp_steam_macerator.json | 124 +++ .../models/block/machine/lp_steam_miner.json | 124 +++ .../block/machine/lp_steam_rock_crusher.json | 112 +++ .../block/machine/lp_steam_solar_boiler.json | 59 ++ .../block/machine/lp_steam_solid_boiler.json | 63 ++ .../machine/luv_1024a_laser_source_hatch.json | 22 + .../machine/luv_1024a_laser_target_hatch.json | 22 + .../machine/luv_16a_energy_converter.json | 33 + .../machine/luv_1a_energy_converter.json | 33 + .../machine/luv_256a_laser_source_hatch.json | 22 + .../machine/luv_256a_laser_target_hatch.json | 22 + .../machine/luv_4096a_laser_source_hatch.json | 22 + .../machine/luv_4096a_laser_target_hatch.json | 22 + .../machine/luv_4a_energy_converter.json | 33 + .../machine/luv_8a_energy_converter.json | 33 + .../block/machine/luv_alloy_smelter.json | 43 + .../models/block/machine/luv_arc_furnace.json | 67 ++ .../models/block/machine/luv_assembler.json | 51 ++ .../models/block/machine/luv_autoclave.json | 67 ++ .../block/machine/luv_battery_buffer_16x.json | 20 + .../block/machine/luv_battery_buffer_4x.json | 20 + .../block/machine/luv_battery_buffer_8x.json | 20 + .../models/block/machine/luv_bender.json | 41 + .../models/block/machine/luv_brewery.json | 51 ++ .../models/block/machine/luv_canner.json | 51 ++ .../models/block/machine/luv_centrifuge.json | 51 ++ .../models/block/machine/luv_charger_4x.json | 42 + .../block/machine/luv_chemical_bath.json | 51 ++ .../block/machine/luv_chemical_reactor.json | 43 + .../block/machine/luv_circuit_assembler.json | 51 ++ .../models/block/machine/luv_compressor.json | 59 ++ .../models/block/machine/luv_cutter.json | 43 + .../gtceu/models/block/machine/luv_diode.json | 82 ++ .../models/block/machine/luv_distillery.json | 57 ++ .../block/machine/luv_dual_input_hatch.json | 22 + .../block/machine/luv_dual_output_hatch.json | 22 + .../block/machine/luv_electric_furnace.json | 43 + .../block/machine/luv_electrolyzer.json | 59 ++ .../luv_electromagnetic_separator.json | 51 ++ .../block/machine/luv_energy_input_hatch.json | 22 + .../machine/luv_energy_input_hatch_16a.json | 22 + .../machine/luv_energy_input_hatch_4a.json | 22 + .../machine/luv_energy_output_hatch.json | 22 + .../machine/luv_energy_output_hatch_16a.json | 22 + .../machine/luv_energy_output_hatch_4a.json | 22 + .../models/block/machine/luv_extractor.json | 59 ++ .../models/block/machine/luv_extruder.json | 51 ++ .../models/block/machine/luv_fermenter.json | 57 ++ .../models/block/machine/luv_fisher.json | 19 + .../block/machine/luv_fluid_heater.json | 59 ++ .../machine/luv_fluid_passthrough_hatch.json | 22 + .../block/machine/luv_fluid_solidifier.json | 43 + .../block/machine/luv_forge_hammer.json | 41 + .../block/machine/luv_forming_press.json | 59 ++ .../block/machine/luv_fusion_reactor.json | 95 +++ .../block/machine/luv_gas_collector.json | 75 ++ .../models/block/machine/luv_input_bus.json | 36 + .../models/block/machine/luv_input_hatch.json | 36 + .../block/machine/luv_input_hatch_4x.json | 36 + .../block/machine/luv_input_hatch_9x.json | 36 + .../machine/luv_item_passthrough_hatch.json | 22 + .../models/block/machine/luv_large_miner.json | 90 ++ .../block/machine/luv_laser_engraver.json | 43 + .../gtceu/models/block/machine/luv_lathe.json | 41 + .../models/block/machine/luv_macerator.json | 51 ++ .../block/machine/luv_machine_hull.json | 22 + .../gtceu/models/block/machine/luv_mixer.json | 51 ++ .../block/machine/luv_muffler_hatch.json | 22 + .../models/block/machine/luv_ore_washer.json | 51 ++ .../models/block/machine/luv_output_bus.json | 36 + .../block/machine/luv_output_hatch.json | 36 + .../block/machine/luv_output_hatch_4x.json | 36 + .../block/machine/luv_output_hatch_9x.json | 36 + .../models/block/machine/luv_packer.json | 39 + .../block/machine/luv_parallel_hatch.json | 48 ++ .../models/block/machine/luv_polarizer.json | 51 ++ .../block/machine/luv_quantum_chest.json | 22 + .../block/machine/luv_quantum_tank.json | 22 + .../block/machine/luv_rock_crusher.json | 39 + .../block/machine/luv_rotor_holder.json | 76 ++ .../models/block/machine/luv_scanner.json | 43 + .../models/block/machine/luv_sifter.json | 51 ++ .../luv_substation_input_hatch_64a.json | 22 + .../luv_substation_output_hatch_64a.json | 22 + .../block/machine/luv_thermal_centrifuge.json | 49 ++ .../block/machine/luv_transformer_16a.json | 35 + .../block/machine/luv_transformer_1a.json | 35 + .../block/machine/luv_transformer_2a.json | 35 + .../block/machine/luv_transformer_4a.json | 35 + .../models/block/machine/luv_wiremill.json | 57 ++ .../block/machine/luv_world_accelerator.json | 135 +++ .../machine/lv_16a_energy_converter.json | 33 + .../block/machine/lv_1a_energy_converter.json | 33 + .../block/machine/lv_4a_energy_converter.json | 33 + .../block/machine/lv_8a_energy_converter.json | 33 + .../models/block/machine/lv_air_scrubber.json | 75 ++ .../block/machine/lv_alloy_smelter.json | 43 + .../models/block/machine/lv_arc_furnace.json | 67 ++ .../models/block/machine/lv_assembler.json | 51 ++ .../models/block/machine/lv_autoclave.json | 67 ++ .../block/machine/lv_battery_buffer_16x.json | 20 + .../block/machine/lv_battery_buffer_4x.json | 20 + .../block/machine/lv_battery_buffer_8x.json | 20 + .../gtceu/models/block/machine/lv_bender.json | 41 + .../block/machine/lv_block_breaker.json | 39 + .../models/block/machine/lv_brewery.json | 51 ++ .../gtceu/models/block/machine/lv_buffer.json | 24 + .../gtceu/models/block/machine/lv_canner.json | 51 ++ .../models/block/machine/lv_centrifuge.json | 51 ++ .../models/block/machine/lv_charger_4x.json | 42 + .../block/machine/lv_chemical_bath.json | 51 ++ .../block/machine/lv_chemical_reactor.json | 43 + .../block/machine/lv_circuit_assembler.json | 51 ++ .../models/block/machine/lv_combustion.json | 59 ++ .../models/block/machine/lv_compressor.json | 59 ++ .../gtceu/models/block/machine/lv_cutter.json | 43 + .../gtceu/models/block/machine/lv_diode.json | 82 ++ .../models/block/machine/lv_distillery.json | 57 ++ .../block/machine/lv_electric_furnace.json | 43 + .../models/block/machine/lv_electrolyzer.json | 59 ++ .../machine/lv_electromagnetic_separator.json | 51 ++ .../block/machine/lv_energy_input_hatch.json | 22 + .../block/machine/lv_energy_output_hatch.json | 22 + .../models/block/machine/lv_extractor.json | 59 ++ .../models/block/machine/lv_extruder.json | 51 ++ .../models/block/machine/lv_fermenter.json | 57 ++ .../gtceu/models/block/machine/lv_fisher.json | 19 + .../models/block/machine/lv_fluid_heater.json | 59 ++ .../machine/lv_fluid_passthrough_hatch.json | 22 + .../block/machine/lv_fluid_solidifier.json | 43 + .../models/block/machine/lv_forge_hammer.json | 41 + .../block/machine/lv_forming_press.json | 59 ++ .../block/machine/lv_gas_collector.json | 75 ++ .../models/block/machine/lv_gas_turbine.json | 59 ++ .../models/block/machine/lv_input_bus.json | 36 + .../models/block/machine/lv_input_hatch.json | 36 + .../block/machine/lv_item_collector.json | 55 ++ .../machine/lv_item_passthrough_hatch.json | 22 + .../block/machine/lv_laser_engraver.json | 43 + .../gtceu/models/block/machine/lv_lathe.json | 41 + .../models/block/machine/lv_macerator.json | 51 ++ .../models/block/machine/lv_machine_hull.json | 22 + .../gtceu/models/block/machine/lv_miner.json | 51 ++ .../gtceu/models/block/machine/lv_mixer.json | 51 ++ .../block/machine/lv_muffler_hatch.json | 22 + .../models/block/machine/lv_ore_washer.json | 51 ++ .../models/block/machine/lv_output_bus.json | 36 + .../models/block/machine/lv_output_hatch.json | 36 + .../gtceu/models/block/machine/lv_packer.json | 39 + .../models/block/machine/lv_polarizer.json | 51 ++ .../gtceu/models/block/machine/lv_pump.json | 17 + .../models/block/machine/lv_rock_crusher.json | 39 + .../models/block/machine/lv_scanner.json | 43 + .../gtceu/models/block/machine/lv_sifter.json | 51 ++ .../block/machine/lv_steam_turbine.json | 59 ++ .../models/block/machine/lv_super_chest.json | 22 + .../models/block/machine/lv_super_tank.json | 22 + .../block/machine/lv_thermal_centrifuge.json | 49 ++ .../block/machine/lv_transformer_16a.json | 35 + .../block/machine/lv_transformer_1a.json | 35 + .../block/machine/lv_transformer_2a.json | 35 + .../block/machine/lv_transformer_4a.json | 35 + .../models/block/machine/lv_wiremill.json | 57 ++ .../block/machine/lv_world_accelerator.json | 135 +++ .../block/machine/maintenance_hatch.json | 33 + .../machine/max_16a_energy_converter.json | 33 + .../machine/max_1a_energy_converter.json | 33 + .../machine/max_4a_energy_converter.json | 33 + .../machine/max_8a_energy_converter.json | 33 + .../block/machine/max_battery_buffer_16x.json | 20 + .../block/machine/max_battery_buffer_4x.json | 20 + .../block/machine/max_battery_buffer_8x.json | 20 + .../models/block/machine/max_charger_4x.json | 42 + .../block/machine/max_dual_input_hatch.json | 22 + .../block/machine/max_dual_output_hatch.json | 22 + .../block/machine/max_energy_input_hatch.json | 22 + .../machine/max_energy_input_hatch_16a.json | 22 + .../machine/max_energy_input_hatch_4a.json | 22 + .../machine/max_energy_output_hatch.json | 22 + .../machine/max_energy_output_hatch_16a.json | 22 + .../machine/max_energy_output_hatch_4a.json | 22 + .../models/block/machine/max_input_bus.json | 36 + .../models/block/machine/max_input_hatch.json | 36 + .../block/machine/max_input_hatch_4x.json | 36 + .../block/machine/max_input_hatch_9x.json | 36 + .../block/machine/max_machine_hull.json | 22 + .../models/block/machine/max_output_bus.json | 36 + .../block/machine/max_output_hatch.json | 36 + .../block/machine/max_output_hatch_4x.json | 36 + .../block/machine/max_output_hatch_9x.json | 36 + .../max_substation_input_hatch_64a.json | 22 + .../max_substation_output_hatch_64a.json | 22 + .../models/block/machine/me_input_bus.json | 34 + .../models/block/machine/me_input_hatch.json | 34 + .../models/block/machine/me_output_bus.json | 34 + .../models/block/machine/me_output_hatch.json | 34 + .../block/machine/me_pattern_buffer.json | 34 + .../machine/me_pattern_buffer_proxy.json | 34 + .../block/machine/me_stocking_input_bus.json | 34 + .../machine/me_stocking_input_hatch.json | 34 + .../block/machine/mega_blast_furnace.json | 90 ++ .../block/machine/mega_vacuum_freezer.json | 90 ++ .../models/block/machine/multi_smelter.json | 90 ++ .../machine/mv_16a_energy_converter.json | 33 + .../block/machine/mv_1a_energy_converter.json | 33 + .../block/machine/mv_4a_energy_converter.json | 33 + .../block/machine/mv_8a_energy_converter.json | 33 + .../models/block/machine/mv_air_scrubber.json | 75 ++ .../block/machine/mv_alloy_smelter.json | 43 + .../models/block/machine/mv_arc_furnace.json | 67 ++ .../models/block/machine/mv_assembler.json | 51 ++ .../models/block/machine/mv_autoclave.json | 67 ++ .../block/machine/mv_battery_buffer_16x.json | 20 + .../block/machine/mv_battery_buffer_4x.json | 20 + .../block/machine/mv_battery_buffer_8x.json | 20 + .../block/machine/mv_bedrock_ore_miner.json | 90 ++ .../gtceu/models/block/machine/mv_bender.json | 41 + .../block/machine/mv_block_breaker.json | 39 + .../models/block/machine/mv_brewery.json | 51 ++ .../gtceu/models/block/machine/mv_buffer.json | 24 + .../gtceu/models/block/machine/mv_canner.json | 51 ++ .../models/block/machine/mv_centrifuge.json | 51 ++ .../models/block/machine/mv_charger_4x.json | 42 + .../block/machine/mv_chemical_bath.json | 51 ++ .../block/machine/mv_chemical_reactor.json | 43 + .../block/machine/mv_circuit_assembler.json | 51 ++ .../models/block/machine/mv_combustion.json | 59 ++ .../models/block/machine/mv_compressor.json | 59 ++ .../gtceu/models/block/machine/mv_cutter.json | 43 + .../gtceu/models/block/machine/mv_diode.json | 82 ++ .../models/block/machine/mv_distillery.json | 57 ++ .../block/machine/mv_electric_furnace.json | 43 + .../models/block/machine/mv_electrolyzer.json | 59 ++ .../machine/mv_electromagnetic_separator.json | 51 ++ .../block/machine/mv_energy_input_hatch.json | 22 + .../block/machine/mv_energy_output_hatch.json | 22 + .../models/block/machine/mv_extractor.json | 59 ++ .../models/block/machine/mv_extruder.json | 51 ++ .../models/block/machine/mv_fermenter.json | 57 ++ .../gtceu/models/block/machine/mv_fisher.json | 19 + .../block/machine/mv_fluid_drilling_rig.json | 90 ++ .../models/block/machine/mv_fluid_heater.json | 59 ++ .../machine/mv_fluid_passthrough_hatch.json | 22 + .../block/machine/mv_fluid_solidifier.json | 43 + .../models/block/machine/mv_forge_hammer.json | 41 + .../block/machine/mv_forming_press.json | 59 ++ .../block/machine/mv_gas_collector.json | 75 ++ .../models/block/machine/mv_gas_turbine.json | 59 ++ .../models/block/machine/mv_input_bus.json | 36 + .../models/block/machine/mv_input_hatch.json | 36 + .../block/machine/mv_item_collector.json | 55 ++ .../machine/mv_item_passthrough_hatch.json | 22 + .../block/machine/mv_laser_engraver.json | 43 + .../gtceu/models/block/machine/mv_lathe.json | 41 + .../models/block/machine/mv_macerator.json | 51 ++ .../models/block/machine/mv_machine_hull.json | 22 + .../gtceu/models/block/machine/mv_miner.json | 51 ++ .../gtceu/models/block/machine/mv_mixer.json | 51 ++ .../block/machine/mv_muffler_hatch.json | 22 + .../models/block/machine/mv_ore_washer.json | 51 ++ .../models/block/machine/mv_output_bus.json | 36 + .../models/block/machine/mv_output_hatch.json | 36 + .../gtceu/models/block/machine/mv_packer.json | 39 + .../models/block/machine/mv_polarizer.json | 51 ++ .../gtceu/models/block/machine/mv_pump.json | 17 + .../models/block/machine/mv_rock_crusher.json | 39 + .../models/block/machine/mv_scanner.json | 43 + .../gtceu/models/block/machine/mv_sifter.json | 51 ++ .../block/machine/mv_steam_turbine.json | 59 ++ .../models/block/machine/mv_super_chest.json | 22 + .../models/block/machine/mv_super_tank.json | 22 + .../block/machine/mv_thermal_centrifuge.json | 49 ++ .../block/machine/mv_transformer_16a.json | 35 + .../block/machine/mv_transformer_1a.json | 35 + .../block/machine/mv_transformer_2a.json | 35 + .../block/machine/mv_transformer_4a.json | 35 + .../models/block/machine/mv_wiremill.json | 57 ++ .../block/machine/mv_world_accelerator.json | 135 +++ .../models/block/machine/network_switch.json | 108 +++ .../models/block/machine/object_holder.json | 46 ++ .../machine/opv_1024a_laser_source_hatch.json | 22 + .../machine/opv_1024a_laser_target_hatch.json | 22 + .../machine/opv_16a_energy_converter.json | 33 + .../machine/opv_1a_energy_converter.json | 33 + .../machine/opv_256a_laser_source_hatch.json | 22 + .../machine/opv_256a_laser_target_hatch.json | 22 + .../machine/opv_4096a_laser_source_hatch.json | 22 + .../machine/opv_4096a_laser_target_hatch.json | 22 + .../machine/opv_4a_energy_converter.json | 33 + .../machine/opv_8a_energy_converter.json | 33 + .../block/machine/opv_alloy_smelter.json | 43 + .../models/block/machine/opv_arc_furnace.json | 67 ++ .../models/block/machine/opv_assembler.json | 51 ++ .../models/block/machine/opv_autoclave.json | 67 ++ .../block/machine/opv_battery_buffer_16x.json | 20 + .../block/machine/opv_battery_buffer_4x.json | 20 + .../block/machine/opv_battery_buffer_8x.json | 20 + .../models/block/machine/opv_bender.json | 41 + .../models/block/machine/opv_brewery.json | 51 ++ .../models/block/machine/opv_canner.json | 51 ++ .../models/block/machine/opv_centrifuge.json | 51 ++ .../models/block/machine/opv_charger_4x.json | 42 + .../block/machine/opv_chemical_bath.json | 51 ++ .../block/machine/opv_chemical_reactor.json | 43 + .../block/machine/opv_circuit_assembler.json | 51 ++ .../models/block/machine/opv_compressor.json | 59 ++ .../models/block/machine/opv_cutter.json | 43 + .../gtceu/models/block/machine/opv_diode.json | 82 ++ .../models/block/machine/opv_distillery.json | 57 ++ .../block/machine/opv_dual_input_hatch.json | 22 + .../block/machine/opv_dual_output_hatch.json | 22 + .../block/machine/opv_electric_furnace.json | 43 + .../block/machine/opv_electrolyzer.json | 59 ++ .../opv_electromagnetic_separator.json | 51 ++ .../block/machine/opv_energy_input_hatch.json | 22 + .../machine/opv_energy_input_hatch_16a.json | 22 + .../machine/opv_energy_input_hatch_4a.json | 22 + .../machine/opv_energy_output_hatch.json | 22 + .../machine/opv_energy_output_hatch_16a.json | 22 + .../machine/opv_energy_output_hatch_4a.json | 22 + .../models/block/machine/opv_extractor.json | 59 ++ .../models/block/machine/opv_extruder.json | 51 ++ .../models/block/machine/opv_fermenter.json | 57 ++ .../block/machine/opv_fluid_heater.json | 59 ++ .../machine/opv_fluid_passthrough_hatch.json | 22 + .../block/machine/opv_fluid_solidifier.json | 43 + .../block/machine/opv_forge_hammer.json | 41 + .../block/machine/opv_forming_press.json | 59 ++ .../block/machine/opv_gas_collector.json | 75 ++ .../models/block/machine/opv_input_bus.json | 36 + .../models/block/machine/opv_input_hatch.json | 36 + .../block/machine/opv_input_hatch_4x.json | 36 + .../block/machine/opv_input_hatch_9x.json | 36 + .../machine/opv_item_passthrough_hatch.json | 22 + .../block/machine/opv_laser_engraver.json | 43 + .../gtceu/models/block/machine/opv_lathe.json | 41 + .../models/block/machine/opv_macerator.json | 51 ++ .../block/machine/opv_machine_hull.json | 22 + .../gtceu/models/block/machine/opv_mixer.json | 51 ++ .../block/machine/opv_muffler_hatch.json | 22 + .../models/block/machine/opv_ore_washer.json | 51 ++ .../models/block/machine/opv_output_bus.json | 36 + .../block/machine/opv_output_hatch.json | 36 + .../block/machine/opv_output_hatch_4x.json | 36 + .../block/machine/opv_output_hatch_9x.json | 36 + .../models/block/machine/opv_packer.json | 39 + .../models/block/machine/opv_polarizer.json | 51 ++ .../block/machine/opv_quantum_chest.json | 22 + .../block/machine/opv_quantum_tank.json | 22 + .../block/machine/opv_rock_crusher.json | 39 + .../block/machine/opv_rotor_holder.json | 76 ++ .../models/block/machine/opv_scanner.json | 43 + .../models/block/machine/opv_sifter.json | 51 ++ .../opv_substation_input_hatch_64a.json | 22 + .../opv_substation_output_hatch_64a.json | 22 + .../block/machine/opv_thermal_centrifuge.json | 49 ++ .../block/machine/opv_transformer_16a.json | 35 + .../block/machine/opv_transformer_1a.json | 35 + .../block/machine/opv_transformer_2a.json | 35 + .../block/machine/opv_transformer_4a.json | 35 + .../models/block/machine/opv_wiremill.json | 57 ++ .../block/machine/plasma_large_turbine.json | 90 ++ .../block/machine/power_substation.json | 86 ++ .../machine/primitive_blast_furnace.json | 100 +++ .../models/block/machine/primitive_pump.json | 100 +++ .../models/block/machine/pump_hatch.json | 15 + .../models/block/machine/pyrolyse_oven.json | 90 ++ .../block/machine/research_station.json | 108 +++ .../models/block/machine/reservoir_hatch.json | 22 + .../block/machine/stainless_steel_crate.json | 13 + .../block/machine/stainless_steel_drum.json | 10 + .../models/block/machine/steam_grinder.json | 90 ++ .../models/block/machine/steam_input_bus.json | 36 + .../block/machine/steam_input_hatch.json | 33 + .../block/machine/steam_large_turbine.json | 90 ++ .../block/machine/steam_output_bus.json | 36 + .../models/block/machine/steam_oven.json | 110 +++ .../models/block/machine/steel_crate.json | 13 + .../models/block/machine/steel_drum.json | 10 + .../block/machine/steel_large_boiler.json | 110 +++ .../block/machine/steel_multiblock_tank.json | 82 ++ .../block/machine/steel_tank_valve.json | 46 ++ .../models/block/machine/titanium_crate.json | 13 + .../models/block/machine/titanium_drum.json | 10 + .../block/machine/titanium_large_boiler.json | 110 +++ .../block/machine/tungsten_steel_crate.json | 13 + .../block/machine/tungsten_steel_drum.json | 10 + .../machine/tungstensteel_large_boiler.json | 110 +++ .../machine/uev_1024a_laser_source_hatch.json | 22 + .../machine/uev_1024a_laser_target_hatch.json | 22 + .../machine/uev_16a_energy_converter.json | 33 + .../machine/uev_1a_energy_converter.json | 33 + .../machine/uev_256a_laser_source_hatch.json | 22 + .../machine/uev_256a_laser_target_hatch.json | 22 + .../machine/uev_4096a_laser_source_hatch.json | 22 + .../machine/uev_4096a_laser_target_hatch.json | 22 + .../machine/uev_4a_energy_converter.json | 33 + .../machine/uev_8a_energy_converter.json | 33 + .../block/machine/uev_alloy_smelter.json | 43 + .../models/block/machine/uev_arc_furnace.json | 67 ++ .../models/block/machine/uev_assembler.json | 51 ++ .../models/block/machine/uev_autoclave.json | 67 ++ .../block/machine/uev_battery_buffer_16x.json | 20 + .../block/machine/uev_battery_buffer_4x.json | 20 + .../block/machine/uev_battery_buffer_8x.json | 20 + .../models/block/machine/uev_bender.json | 41 + .../models/block/machine/uev_brewery.json | 51 ++ .../models/block/machine/uev_canner.json | 51 ++ .../models/block/machine/uev_centrifuge.json | 51 ++ .../models/block/machine/uev_charger_4x.json | 42 + .../block/machine/uev_chemical_bath.json | 51 ++ .../block/machine/uev_chemical_reactor.json | 43 + .../block/machine/uev_circuit_assembler.json | 51 ++ .../models/block/machine/uev_compressor.json | 59 ++ .../models/block/machine/uev_cutter.json | 43 + .../gtceu/models/block/machine/uev_diode.json | 82 ++ .../models/block/machine/uev_distillery.json | 57 ++ .../block/machine/uev_dual_input_hatch.json | 22 + .../block/machine/uev_dual_output_hatch.json | 22 + .../block/machine/uev_electric_furnace.json | 43 + .../block/machine/uev_electrolyzer.json | 59 ++ .../uev_electromagnetic_separator.json | 51 ++ .../block/machine/uev_energy_input_hatch.json | 22 + .../machine/uev_energy_input_hatch_16a.json | 22 + .../machine/uev_energy_input_hatch_4a.json | 22 + .../machine/uev_energy_output_hatch.json | 22 + .../machine/uev_energy_output_hatch_16a.json | 22 + .../machine/uev_energy_output_hatch_4a.json | 22 + .../models/block/machine/uev_extractor.json | 59 ++ .../models/block/machine/uev_extruder.json | 51 ++ .../models/block/machine/uev_fermenter.json | 57 ++ .../block/machine/uev_fluid_heater.json | 59 ++ .../machine/uev_fluid_passthrough_hatch.json | 22 + .../block/machine/uev_fluid_solidifier.json | 43 + .../block/machine/uev_forge_hammer.json | 41 + .../block/machine/uev_forming_press.json | 59 ++ .../block/machine/uev_gas_collector.json | 75 ++ .../models/block/machine/uev_input_bus.json | 36 + .../models/block/machine/uev_input_hatch.json | 36 + .../block/machine/uev_input_hatch_4x.json | 36 + .../block/machine/uev_input_hatch_9x.json | 36 + .../machine/uev_item_passthrough_hatch.json | 22 + .../block/machine/uev_laser_engraver.json | 43 + .../gtceu/models/block/machine/uev_lathe.json | 41 + .../models/block/machine/uev_macerator.json | 51 ++ .../block/machine/uev_machine_hull.json | 22 + .../gtceu/models/block/machine/uev_mixer.json | 51 ++ .../block/machine/uev_muffler_hatch.json | 22 + .../models/block/machine/uev_ore_washer.json | 51 ++ .../models/block/machine/uev_output_bus.json | 36 + .../block/machine/uev_output_hatch.json | 36 + .../block/machine/uev_output_hatch_4x.json | 36 + .../block/machine/uev_output_hatch_9x.json | 36 + .../models/block/machine/uev_packer.json | 39 + .../models/block/machine/uev_polarizer.json | 51 ++ .../block/machine/uev_quantum_chest.json | 22 + .../block/machine/uev_quantum_tank.json | 22 + .../block/machine/uev_rock_crusher.json | 39 + .../block/machine/uev_rotor_holder.json | 76 ++ .../models/block/machine/uev_scanner.json | 43 + .../models/block/machine/uev_sifter.json | 51 ++ .../uev_substation_input_hatch_64a.json | 22 + .../uev_substation_output_hatch_64a.json | 22 + .../block/machine/uev_thermal_centrifuge.json | 49 ++ .../block/machine/uev_transformer_16a.json | 35 + .../block/machine/uev_transformer_1a.json | 35 + .../block/machine/uev_transformer_2a.json | 35 + .../block/machine/uev_transformer_4a.json | 35 + .../models/block/machine/uev_wiremill.json | 57 ++ .../machine/uhv_1024a_laser_source_hatch.json | 22 + .../machine/uhv_1024a_laser_target_hatch.json | 22 + .../machine/uhv_16a_energy_converter.json | 33 + .../machine/uhv_1a_energy_converter.json | 33 + .../machine/uhv_256a_laser_source_hatch.json | 22 + .../machine/uhv_256a_laser_target_hatch.json | 22 + .../machine/uhv_4096a_laser_source_hatch.json | 22 + .../machine/uhv_4096a_laser_target_hatch.json | 22 + .../machine/uhv_4a_energy_converter.json | 33 + .../machine/uhv_8a_energy_converter.json | 33 + .../block/machine/uhv_alloy_smelter.json | 43 + .../models/block/machine/uhv_arc_furnace.json | 67 ++ .../models/block/machine/uhv_assembler.json | 51 ++ .../models/block/machine/uhv_autoclave.json | 67 ++ .../block/machine/uhv_battery_buffer_16x.json | 20 + .../block/machine/uhv_battery_buffer_4x.json | 20 + .../block/machine/uhv_battery_buffer_8x.json | 20 + .../models/block/machine/uhv_bender.json | 41 + .../models/block/machine/uhv_brewery.json | 51 ++ .../models/block/machine/uhv_canner.json | 51 ++ .../models/block/machine/uhv_centrifuge.json | 51 ++ .../models/block/machine/uhv_charger_4x.json | 42 + .../block/machine/uhv_chemical_bath.json | 51 ++ .../block/machine/uhv_chemical_reactor.json | 43 + .../block/machine/uhv_circuit_assembler.json | 51 ++ .../models/block/machine/uhv_compressor.json | 59 ++ .../models/block/machine/uhv_cutter.json | 43 + .../gtceu/models/block/machine/uhv_diode.json | 82 ++ .../models/block/machine/uhv_distillery.json | 57 ++ .../block/machine/uhv_dual_input_hatch.json | 22 + .../block/machine/uhv_dual_output_hatch.json | 22 + .../block/machine/uhv_electric_furnace.json | 43 + .../block/machine/uhv_electrolyzer.json | 59 ++ .../uhv_electromagnetic_separator.json | 51 ++ .../block/machine/uhv_energy_input_hatch.json | 22 + .../machine/uhv_energy_input_hatch_16a.json | 22 + .../machine/uhv_energy_input_hatch_4a.json | 22 + .../machine/uhv_energy_output_hatch.json | 22 + .../machine/uhv_energy_output_hatch_16a.json | 22 + .../machine/uhv_energy_output_hatch_4a.json | 22 + .../models/block/machine/uhv_extractor.json | 59 ++ .../models/block/machine/uhv_extruder.json | 51 ++ .../models/block/machine/uhv_fermenter.json | 57 ++ .../block/machine/uhv_fluid_heater.json | 59 ++ .../machine/uhv_fluid_passthrough_hatch.json | 22 + .../block/machine/uhv_fluid_solidifier.json | 43 + .../block/machine/uhv_forge_hammer.json | 41 + .../block/machine/uhv_forming_press.json | 59 ++ .../block/machine/uhv_gas_collector.json | 75 ++ .../models/block/machine/uhv_input_bus.json | 36 + .../models/block/machine/uhv_input_hatch.json | 36 + .../block/machine/uhv_input_hatch_4x.json | 36 + .../block/machine/uhv_input_hatch_9x.json | 36 + .../machine/uhv_item_passthrough_hatch.json | 22 + .../block/machine/uhv_laser_engraver.json | 43 + .../gtceu/models/block/machine/uhv_lathe.json | 41 + .../models/block/machine/uhv_macerator.json | 51 ++ .../block/machine/uhv_machine_hull.json | 22 + .../gtceu/models/block/machine/uhv_mixer.json | 51 ++ .../block/machine/uhv_muffler_hatch.json | 22 + .../models/block/machine/uhv_ore_washer.json | 51 ++ .../models/block/machine/uhv_output_bus.json | 36 + .../block/machine/uhv_output_hatch.json | 36 + .../block/machine/uhv_output_hatch_4x.json | 36 + .../block/machine/uhv_output_hatch_9x.json | 36 + .../models/block/machine/uhv_packer.json | 39 + .../models/block/machine/uhv_polarizer.json | 51 ++ .../block/machine/uhv_quantum_chest.json | 22 + .../block/machine/uhv_quantum_tank.json | 22 + .../block/machine/uhv_rock_crusher.json | 39 + .../block/machine/uhv_rotor_holder.json | 76 ++ .../models/block/machine/uhv_scanner.json | 43 + .../models/block/machine/uhv_sifter.json | 51 ++ .../uhv_substation_input_hatch_64a.json | 22 + .../uhv_substation_output_hatch_64a.json | 22 + .../block/machine/uhv_thermal_centrifuge.json | 49 ++ .../block/machine/uhv_transformer_16a.json | 35 + .../block/machine/uhv_transformer_1a.json | 35 + .../block/machine/uhv_transformer_2a.json | 35 + .../block/machine/uhv_transformer_4a.json | 35 + .../models/block/machine/uhv_wiremill.json | 57 ++ .../machine/uiv_1024a_laser_source_hatch.json | 22 + .../machine/uiv_1024a_laser_target_hatch.json | 22 + .../machine/uiv_16a_energy_converter.json | 33 + .../machine/uiv_1a_energy_converter.json | 33 + .../machine/uiv_256a_laser_source_hatch.json | 22 + .../machine/uiv_256a_laser_target_hatch.json | 22 + .../machine/uiv_4096a_laser_source_hatch.json | 22 + .../machine/uiv_4096a_laser_target_hatch.json | 22 + .../machine/uiv_4a_energy_converter.json | 33 + .../machine/uiv_8a_energy_converter.json | 33 + .../block/machine/uiv_alloy_smelter.json | 43 + .../models/block/machine/uiv_arc_furnace.json | 67 ++ .../models/block/machine/uiv_assembler.json | 51 ++ .../models/block/machine/uiv_autoclave.json | 67 ++ .../block/machine/uiv_battery_buffer_16x.json | 20 + .../block/machine/uiv_battery_buffer_4x.json | 20 + .../block/machine/uiv_battery_buffer_8x.json | 20 + .../models/block/machine/uiv_bender.json | 41 + .../models/block/machine/uiv_brewery.json | 51 ++ .../models/block/machine/uiv_canner.json | 51 ++ .../models/block/machine/uiv_centrifuge.json | 51 ++ .../models/block/machine/uiv_charger_4x.json | 42 + .../block/machine/uiv_chemical_bath.json | 51 ++ .../block/machine/uiv_chemical_reactor.json | 43 + .../block/machine/uiv_circuit_assembler.json | 51 ++ .../models/block/machine/uiv_compressor.json | 59 ++ .../models/block/machine/uiv_cutter.json | 43 + .../gtceu/models/block/machine/uiv_diode.json | 82 ++ .../models/block/machine/uiv_distillery.json | 57 ++ .../block/machine/uiv_dual_input_hatch.json | 22 + .../block/machine/uiv_dual_output_hatch.json | 22 + .../block/machine/uiv_electric_furnace.json | 43 + .../block/machine/uiv_electrolyzer.json | 59 ++ .../uiv_electromagnetic_separator.json | 51 ++ .../block/machine/uiv_energy_input_hatch.json | 22 + .../machine/uiv_energy_input_hatch_16a.json | 22 + .../machine/uiv_energy_input_hatch_4a.json | 22 + .../machine/uiv_energy_output_hatch.json | 22 + .../machine/uiv_energy_output_hatch_16a.json | 22 + .../machine/uiv_energy_output_hatch_4a.json | 22 + .../models/block/machine/uiv_extractor.json | 59 ++ .../models/block/machine/uiv_extruder.json | 51 ++ .../models/block/machine/uiv_fermenter.json | 57 ++ .../block/machine/uiv_fluid_heater.json | 59 ++ .../machine/uiv_fluid_passthrough_hatch.json | 22 + .../block/machine/uiv_fluid_solidifier.json | 43 + .../block/machine/uiv_forge_hammer.json | 41 + .../block/machine/uiv_forming_press.json | 59 ++ .../block/machine/uiv_gas_collector.json | 75 ++ .../models/block/machine/uiv_input_bus.json | 36 + .../models/block/machine/uiv_input_hatch.json | 36 + .../block/machine/uiv_input_hatch_4x.json | 36 + .../block/machine/uiv_input_hatch_9x.json | 36 + .../machine/uiv_item_passthrough_hatch.json | 22 + .../block/machine/uiv_laser_engraver.json | 43 + .../gtceu/models/block/machine/uiv_lathe.json | 41 + .../models/block/machine/uiv_macerator.json | 51 ++ .../block/machine/uiv_machine_hull.json | 22 + .../gtceu/models/block/machine/uiv_mixer.json | 51 ++ .../block/machine/uiv_muffler_hatch.json | 22 + .../models/block/machine/uiv_ore_washer.json | 51 ++ .../models/block/machine/uiv_output_bus.json | 36 + .../block/machine/uiv_output_hatch.json | 36 + .../block/machine/uiv_output_hatch_4x.json | 36 + .../block/machine/uiv_output_hatch_9x.json | 36 + .../models/block/machine/uiv_packer.json | 39 + .../models/block/machine/uiv_polarizer.json | 51 ++ .../block/machine/uiv_quantum_chest.json | 22 + .../block/machine/uiv_quantum_tank.json | 22 + .../block/machine/uiv_rock_crusher.json | 39 + .../block/machine/uiv_rotor_holder.json | 76 ++ .../models/block/machine/uiv_scanner.json | 43 + .../models/block/machine/uiv_sifter.json | 51 ++ .../uiv_substation_input_hatch_64a.json | 22 + .../uiv_substation_output_hatch_64a.json | 22 + .../block/machine/uiv_thermal_centrifuge.json | 49 ++ .../block/machine/uiv_transformer_16a.json | 35 + .../block/machine/uiv_transformer_1a.json | 35 + .../block/machine/uiv_transformer_2a.json | 35 + .../block/machine/uiv_transformer_4a.json | 35 + .../models/block/machine/uiv_wiremill.json | 57 ++ .../machine/ulv_16a_energy_converter.json | 33 + .../machine/ulv_1a_energy_converter.json | 33 + .../machine/ulv_4a_energy_converter.json | 33 + .../machine/ulv_8a_energy_converter.json | 33 + .../block/machine/ulv_battery_buffer_16x.json | 20 + .../block/machine/ulv_battery_buffer_4x.json | 20 + .../block/machine/ulv_battery_buffer_8x.json | 20 + .../models/block/machine/ulv_charger_4x.json | 42 + .../block/machine/ulv_energy_input_hatch.json | 22 + .../machine/ulv_energy_output_hatch.json | 22 + .../models/block/machine/ulv_input_bus.json | 36 + .../models/block/machine/ulv_input_hatch.json | 36 + .../block/machine/ulv_machine_hull.json | 22 + .../models/block/machine/ulv_output_bus.json | 36 + .../block/machine/ulv_output_hatch.json | 36 + .../block/machine/ulv_transformer_16a.json | 35 + .../block/machine/ulv_transformer_1a.json | 35 + .../block/machine/ulv_transformer_2a.json | 35 + .../block/machine/ulv_transformer_4a.json | 35 + .../machine/uv_1024a_laser_source_hatch.json | 22 + .../machine/uv_1024a_laser_target_hatch.json | 22 + .../machine/uv_16a_energy_converter.json | 33 + .../block/machine/uv_1a_energy_converter.json | 33 + .../machine/uv_256a_laser_source_hatch.json | 22 + .../machine/uv_256a_laser_target_hatch.json | 22 + .../machine/uv_4096a_laser_source_hatch.json | 22 + .../machine/uv_4096a_laser_target_hatch.json | 22 + .../block/machine/uv_4a_energy_converter.json | 33 + .../block/machine/uv_8a_energy_converter.json | 33 + .../block/machine/uv_alloy_smelter.json | 43 + .../models/block/machine/uv_arc_furnace.json | 67 ++ .../models/block/machine/uv_assembler.json | 51 ++ .../models/block/machine/uv_autoclave.json | 67 ++ .../block/machine/uv_battery_buffer_16x.json | 20 + .../block/machine/uv_battery_buffer_4x.json | 20 + .../block/machine/uv_battery_buffer_8x.json | 20 + .../gtceu/models/block/machine/uv_bender.json | 41 + .../models/block/machine/uv_brewery.json | 51 ++ .../gtceu/models/block/machine/uv_canner.json | 51 ++ .../models/block/machine/uv_centrifuge.json | 51 ++ .../models/block/machine/uv_charger_4x.json | 42 + .../block/machine/uv_chemical_bath.json | 51 ++ .../block/machine/uv_chemical_reactor.json | 43 + .../block/machine/uv_circuit_assembler.json | 51 ++ .../models/block/machine/uv_compressor.json | 59 ++ .../gtceu/models/block/machine/uv_cutter.json | 43 + .../gtceu/models/block/machine/uv_diode.json | 82 ++ .../models/block/machine/uv_distillery.json | 57 ++ .../block/machine/uv_dual_input_hatch.json | 22 + .../block/machine/uv_dual_output_hatch.json | 22 + .../block/machine/uv_electric_furnace.json | 43 + .../models/block/machine/uv_electrolyzer.json | 59 ++ .../machine/uv_electromagnetic_separator.json | 51 ++ .../block/machine/uv_energy_input_hatch.json | 22 + .../machine/uv_energy_input_hatch_16a.json | 22 + .../machine/uv_energy_input_hatch_4a.json | 22 + .../block/machine/uv_energy_output_hatch.json | 22 + .../machine/uv_energy_output_hatch_16a.json | 22 + .../machine/uv_energy_output_hatch_4a.json | 22 + .../models/block/machine/uv_extractor.json | 59 ++ .../models/block/machine/uv_extruder.json | 51 ++ .../models/block/machine/uv_fermenter.json | 57 ++ .../models/block/machine/uv_fluid_heater.json | 59 ++ .../machine/uv_fluid_passthrough_hatch.json | 22 + .../block/machine/uv_fluid_solidifier.json | 43 + .../models/block/machine/uv_forge_hammer.json | 41 + .../block/machine/uv_forming_press.json | 59 ++ .../block/machine/uv_fusion_reactor.json | 95 +++ .../block/machine/uv_gas_collector.json | 75 ++ .../models/block/machine/uv_input_bus.json | 36 + .../models/block/machine/uv_input_hatch.json | 36 + .../block/machine/uv_input_hatch_4x.json | 36 + .../block/machine/uv_input_hatch_9x.json | 36 + .../machine/uv_item_passthrough_hatch.json | 22 + .../block/machine/uv_laser_engraver.json | 43 + .../gtceu/models/block/machine/uv_lathe.json | 41 + .../models/block/machine/uv_macerator.json | 51 ++ .../models/block/machine/uv_machine_hull.json | 22 + .../gtceu/models/block/machine/uv_mixer.json | 51 ++ .../block/machine/uv_muffler_hatch.json | 22 + .../models/block/machine/uv_ore_washer.json | 51 ++ .../models/block/machine/uv_output_bus.json | 36 + .../models/block/machine/uv_output_hatch.json | 36 + .../block/machine/uv_output_hatch_4x.json | 36 + .../block/machine/uv_output_hatch_9x.json | 36 + .../gtceu/models/block/machine/uv_packer.json | 39 + .../block/machine/uv_parallel_hatch.json | 48 ++ .../models/block/machine/uv_polarizer.json | 51 ++ .../block/machine/uv_quantum_chest.json | 22 + .../models/block/machine/uv_quantum_tank.json | 22 + .../models/block/machine/uv_rock_crusher.json | 39 + .../models/block/machine/uv_rotor_holder.json | 76 ++ .../models/block/machine/uv_scanner.json | 43 + .../gtceu/models/block/machine/uv_sifter.json | 51 ++ .../uv_substation_input_hatch_64a.json | 22 + .../uv_substation_output_hatch_64a.json | 22 + .../block/machine/uv_thermal_centrifuge.json | 49 ++ .../block/machine/uv_transformer_16a.json | 35 + .../block/machine/uv_transformer_1a.json | 35 + .../block/machine/uv_transformer_2a.json | 35 + .../block/machine/uv_transformer_4a.json | 35 + .../models/block/machine/uv_wiremill.json | 57 ++ .../block/machine/uv_world_accelerator.json | 135 +++ .../machine/uxv_1024a_laser_source_hatch.json | 22 + .../machine/uxv_1024a_laser_target_hatch.json | 22 + .../machine/uxv_16a_energy_converter.json | 33 + .../machine/uxv_1a_energy_converter.json | 33 + .../machine/uxv_256a_laser_source_hatch.json | 22 + .../machine/uxv_256a_laser_target_hatch.json | 22 + .../machine/uxv_4096a_laser_source_hatch.json | 22 + .../machine/uxv_4096a_laser_target_hatch.json | 22 + .../machine/uxv_4a_energy_converter.json | 33 + .../machine/uxv_8a_energy_converter.json | 33 + .../block/machine/uxv_alloy_smelter.json | 43 + .../models/block/machine/uxv_arc_furnace.json | 67 ++ .../models/block/machine/uxv_assembler.json | 51 ++ .../models/block/machine/uxv_autoclave.json | 67 ++ .../block/machine/uxv_battery_buffer_16x.json | 20 + .../block/machine/uxv_battery_buffer_4x.json | 20 + .../block/machine/uxv_battery_buffer_8x.json | 20 + .../models/block/machine/uxv_bender.json | 41 + .../models/block/machine/uxv_brewery.json | 51 ++ .../models/block/machine/uxv_canner.json | 51 ++ .../models/block/machine/uxv_centrifuge.json | 51 ++ .../models/block/machine/uxv_charger_4x.json | 42 + .../block/machine/uxv_chemical_bath.json | 51 ++ .../block/machine/uxv_chemical_reactor.json | 43 + .../block/machine/uxv_circuit_assembler.json | 51 ++ .../models/block/machine/uxv_compressor.json | 59 ++ .../models/block/machine/uxv_cutter.json | 43 + .../gtceu/models/block/machine/uxv_diode.json | 82 ++ .../models/block/machine/uxv_distillery.json | 57 ++ .../block/machine/uxv_dual_input_hatch.json | 22 + .../block/machine/uxv_dual_output_hatch.json | 22 + .../block/machine/uxv_electric_furnace.json | 43 + .../block/machine/uxv_electrolyzer.json | 59 ++ .../uxv_electromagnetic_separator.json | 51 ++ .../block/machine/uxv_energy_input_hatch.json | 22 + .../machine/uxv_energy_input_hatch_16a.json | 22 + .../machine/uxv_energy_input_hatch_4a.json | 22 + .../machine/uxv_energy_output_hatch.json | 22 + .../machine/uxv_energy_output_hatch_16a.json | 22 + .../machine/uxv_energy_output_hatch_4a.json | 22 + .../models/block/machine/uxv_extractor.json | 59 ++ .../models/block/machine/uxv_extruder.json | 51 ++ .../models/block/machine/uxv_fermenter.json | 57 ++ .../block/machine/uxv_fluid_heater.json | 59 ++ .../machine/uxv_fluid_passthrough_hatch.json | 22 + .../block/machine/uxv_fluid_solidifier.json | 43 + .../block/machine/uxv_forge_hammer.json | 41 + .../block/machine/uxv_forming_press.json | 59 ++ .../block/machine/uxv_gas_collector.json | 75 ++ .../models/block/machine/uxv_input_bus.json | 36 + .../models/block/machine/uxv_input_hatch.json | 36 + .../block/machine/uxv_input_hatch_4x.json | 36 + .../block/machine/uxv_input_hatch_9x.json | 36 + .../machine/uxv_item_passthrough_hatch.json | 22 + .../block/machine/uxv_laser_engraver.json | 43 + .../gtceu/models/block/machine/uxv_lathe.json | 41 + .../models/block/machine/uxv_macerator.json | 51 ++ .../block/machine/uxv_machine_hull.json | 22 + .../gtceu/models/block/machine/uxv_mixer.json | 51 ++ .../block/machine/uxv_muffler_hatch.json | 22 + .../models/block/machine/uxv_ore_washer.json | 51 ++ .../models/block/machine/uxv_output_bus.json | 36 + .../block/machine/uxv_output_hatch.json | 36 + .../block/machine/uxv_output_hatch_4x.json | 36 + .../block/machine/uxv_output_hatch_9x.json | 36 + .../models/block/machine/uxv_packer.json | 39 + .../models/block/machine/uxv_polarizer.json | 51 ++ .../block/machine/uxv_quantum_chest.json | 22 + .../block/machine/uxv_quantum_tank.json | 22 + .../block/machine/uxv_rock_crusher.json | 39 + .../block/machine/uxv_rotor_holder.json | 76 ++ .../models/block/machine/uxv_scanner.json | 43 + .../models/block/machine/uxv_sifter.json | 51 ++ .../uxv_substation_input_hatch_64a.json | 22 + .../uxv_substation_output_hatch_64a.json | 22 + .../block/machine/uxv_thermal_centrifuge.json | 49 ++ .../block/machine/uxv_transformer_16a.json | 35 + .../block/machine/uxv_transformer_1a.json | 35 + .../block/machine/uxv_transformer_2a.json | 35 + .../block/machine/uxv_transformer_4a.json | 35 + .../models/block/machine/uxv_wiremill.json | 57 ++ .../models/block/machine/vacuum_freezer.json | 90 ++ .../models/block/machine/wood_crate.json | 13 + .../gtceu/models/block/machine/wood_drum.json | 10 + .../block/machine/wooden_multiblock_tank.json | 100 +++ .../block/machine/wooden_tank_valve.json | 56 ++ .../machine/zpm_1024a_laser_source_hatch.json | 22 + .../machine/zpm_1024a_laser_target_hatch.json | 22 + .../machine/zpm_16a_energy_converter.json | 33 + .../machine/zpm_1a_energy_converter.json | 33 + .../machine/zpm_256a_laser_source_hatch.json | 22 + .../machine/zpm_256a_laser_target_hatch.json | 22 + .../machine/zpm_4096a_laser_source_hatch.json | 22 + .../machine/zpm_4096a_laser_target_hatch.json | 22 + .../machine/zpm_4a_energy_converter.json | 33 + .../machine/zpm_8a_energy_converter.json | 33 + .../block/machine/zpm_alloy_smelter.json | 43 + .../models/block/machine/zpm_arc_furnace.json | 67 ++ .../models/block/machine/zpm_assembler.json | 51 ++ .../models/block/machine/zpm_autoclave.json | 67 ++ .../block/machine/zpm_battery_buffer_16x.json | 20 + .../block/machine/zpm_battery_buffer_4x.json | 20 + .../block/machine/zpm_battery_buffer_8x.json | 20 + .../models/block/machine/zpm_bender.json | 41 + .../models/block/machine/zpm_brewery.json | 51 ++ .../models/block/machine/zpm_canner.json | 51 ++ .../models/block/machine/zpm_centrifuge.json | 51 ++ .../models/block/machine/zpm_charger_4x.json | 42 + .../block/machine/zpm_chemical_bath.json | 51 ++ .../block/machine/zpm_chemical_reactor.json | 43 + .../block/machine/zpm_circuit_assembler.json | 51 ++ .../models/block/machine/zpm_compressor.json | 59 ++ .../models/block/machine/zpm_cutter.json | 43 + .../gtceu/models/block/machine/zpm_diode.json | 82 ++ .../models/block/machine/zpm_distillery.json | 57 ++ .../block/machine/zpm_dual_input_hatch.json | 22 + .../block/machine/zpm_dual_output_hatch.json | 22 + .../block/machine/zpm_electric_furnace.json | 43 + .../block/machine/zpm_electrolyzer.json | 59 ++ .../zpm_electromagnetic_separator.json | 51 ++ .../block/machine/zpm_energy_input_hatch.json | 22 + .../machine/zpm_energy_input_hatch_16a.json | 22 + .../machine/zpm_energy_input_hatch_4a.json | 22 + .../machine/zpm_energy_output_hatch.json | 22 + .../machine/zpm_energy_output_hatch_16a.json | 22 + .../machine/zpm_energy_output_hatch_4a.json | 22 + .../models/block/machine/zpm_extractor.json | 59 ++ .../models/block/machine/zpm_extruder.json | 51 ++ .../models/block/machine/zpm_fermenter.json | 57 ++ .../block/machine/zpm_fluid_heater.json | 59 ++ .../machine/zpm_fluid_passthrough_hatch.json | 22 + .../block/machine/zpm_fluid_solidifier.json | 43 + .../block/machine/zpm_forge_hammer.json | 41 + .../block/machine/zpm_forming_press.json | 59 ++ .../block/machine/zpm_fusion_reactor.json | 95 +++ .../block/machine/zpm_gas_collector.json | 75 ++ .../models/block/machine/zpm_input_bus.json | 36 + .../models/block/machine/zpm_input_hatch.json | 36 + .../block/machine/zpm_input_hatch_4x.json | 36 + .../block/machine/zpm_input_hatch_9x.json | 36 + .../machine/zpm_item_passthrough_hatch.json | 22 + .../block/machine/zpm_laser_engraver.json | 43 + .../gtceu/models/block/machine/zpm_lathe.json | 41 + .../models/block/machine/zpm_macerator.json | 51 ++ .../block/machine/zpm_machine_hull.json | 22 + .../gtceu/models/block/machine/zpm_mixer.json | 51 ++ .../block/machine/zpm_muffler_hatch.json | 22 + .../models/block/machine/zpm_ore_washer.json | 51 ++ .../models/block/machine/zpm_output_bus.json | 36 + .../block/machine/zpm_output_hatch.json | 36 + .../block/machine/zpm_output_hatch_4x.json | 36 + .../block/machine/zpm_output_hatch_9x.json | 36 + .../models/block/machine/zpm_packer.json | 39 + .../block/machine/zpm_parallel_hatch.json | 48 ++ .../models/block/machine/zpm_polarizer.json | 51 ++ .../block/machine/zpm_quantum_chest.json | 22 + .../block/machine/zpm_quantum_tank.json | 22 + .../block/machine/zpm_rock_crusher.json | 39 + .../block/machine/zpm_rotor_holder.json | 76 ++ .../models/block/machine/zpm_scanner.json | 43 + .../models/block/machine/zpm_sifter.json | 51 ++ .../zpm_substation_input_hatch_64a.json | 22 + .../zpm_substation_output_hatch_64a.json | 22 + .../block/machine/zpm_thermal_centrifuge.json | 49 ++ .../block/machine/zpm_transformer_16a.json | 35 + .../block/machine/zpm_transformer_1a.json | 35 + .../block/machine/zpm_transformer_2a.json | 35 + .../block/machine/zpm_transformer_4a.json | 35 + .../models/block/machine/zpm_wiremill.json | 57 ++ .../block/machine/zpm_world_accelerator.json | 135 +++ .../models/block/mv_hermetic_casing.json | 3 +- .../overlay/machine/overlay_steam_vent.json | 391 +++++++++ .../models/block/uhv_hermetic_casing.json | 3 +- .../models/block/uv_hermetic_casing.json | 3 +- .../models/block/zpm_hermetic_casing.json | 3 +- .../gtceu/models/item/active_transformer.json | 3 + .../item/advanced_data_access_hatch.json | 3 + .../models/item/alloy_blast_smelter.json | 3 + .../gtceu/models/item/aluminium_crate.json | 3 + .../gtceu/models/item/aluminium_drum.json | 3 + .../gtceu/models/item/assembly_line.json | 3 + .../models/item/auto_maintenance_hatch.json | 3 + .../gtceu/models/item/bronze_crate.json | 3 + .../assets/gtceu/models/item/bronze_drum.json | 3 + .../models/item/bronze_large_boiler.json | 3 + .../models/item/charcoal_pile_igniter.json | 3 + .../item/cleaning_maintenance_hatch.json | 3 + .../assets/gtceu/models/item/cleanroom.json | 3 + .../assets/gtceu/models/item/coke_oven.json | 3 + .../gtceu/models/item/coke_oven_hatch.json | 3 + .../item/computation_receiver_hatch.json | 3 + .../item/computation_transmitter_hatch.json | 3 + .../item/configurable_maintenance_hatch.json | 3 + .../assets/gtceu/models/item/cracker.json | 3 + .../gtceu/models/item/creative_chest.json | 3 + .../item/creative_computation_provider.json | 3 + .../item/creative_data_access_hatch.json | 3 + .../gtceu/models/item/creative_energy.json | 3 + .../gtceu/models/item/creative_tank.json | 3 + .../gtceu/models/item/data_access_hatch.json | 3 + .../assets/gtceu/models/item/data_bank.json | 3 + .../models/item/data_receiver_hatch.json | 3 + .../models/item/data_transmitter_hatch.json | 3 + .../gtceu/models/item/distillation_tower.json | 3 + .../models/item/electric_blast_furnace.json | 3 + .../models/item/ev_16a_energy_converter.json | 3 + .../models/item/ev_1a_energy_converter.json | 3 + .../models/item/ev_4a_energy_converter.json | 3 + .../models/item/ev_8a_energy_converter.json | 3 + .../gtceu/models/item/ev_air_scrubber.json | 3 + .../gtceu/models/item/ev_alloy_smelter.json | 3 + .../gtceu/models/item/ev_arc_furnace.json | 3 + .../gtceu/models/item/ev_assembler.json | 3 + .../gtceu/models/item/ev_autoclave.json | 3 + .../models/item/ev_battery_buffer_16x.json | 3 + .../models/item/ev_battery_buffer_4x.json | 3 + .../models/item/ev_battery_buffer_8x.json | 3 + .../models/item/ev_bedrock_ore_miner.json | 3 + .../assets/gtceu/models/item/ev_bender.json | 3 + .../gtceu/models/item/ev_block_breaker.json | 3 + .../assets/gtceu/models/item/ev_brewery.json | 3 + .../assets/gtceu/models/item/ev_canner.json | 3 + .../gtceu/models/item/ev_centrifuge.json | 3 + .../gtceu/models/item/ev_charger_4x.json | 3 + .../gtceu/models/item/ev_chemical_bath.json | 3 + .../models/item/ev_chemical_reactor.json | 3 + .../models/item/ev_circuit_assembler.json | 3 + .../gtceu/models/item/ev_compressor.json | 3 + .../assets/gtceu/models/item/ev_cutter.json | 3 + .../assets/gtceu/models/item/ev_diode.json | 3 + .../gtceu/models/item/ev_distillery.json | 3 + .../models/item/ev_electric_furnace.json | 3 + .../gtceu/models/item/ev_electrolyzer.json | 3 + .../item/ev_electromagnetic_separator.json | 3 + .../models/item/ev_energy_input_hatch.json | 3 + .../item/ev_energy_input_hatch_16a.json | 3 + .../models/item/ev_energy_input_hatch_4a.json | 3 + .../models/item/ev_energy_output_hatch.json | 3 + .../item/ev_energy_output_hatch_16a.json | 3 + .../item/ev_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/ev_extractor.json | 3 + .../assets/gtceu/models/item/ev_extruder.json | 3 + .../gtceu/models/item/ev_fermenter.json | 3 + .../assets/gtceu/models/item/ev_fisher.json | 3 + .../models/item/ev_fluid_drilling_rig.json | 3 + .../gtceu/models/item/ev_fluid_heater.json | 3 + .../item/ev_fluid_passthrough_hatch.json | 3 + .../models/item/ev_fluid_solidifier.json | 3 + .../gtceu/models/item/ev_forge_hammer.json | 3 + .../gtceu/models/item/ev_forming_press.json | 3 + .../gtceu/models/item/ev_gas_collector.json | 3 + .../gtceu/models/item/ev_input_bus.json | 3 + .../gtceu/models/item/ev_input_hatch.json | 3 + .../gtceu/models/item/ev_input_hatch_4x.json | 3 + .../gtceu/models/item/ev_input_hatch_9x.json | 3 + .../gtceu/models/item/ev_item_collector.json | 3 + .../item/ev_item_passthrough_hatch.json | 3 + .../gtceu/models/item/ev_large_miner.json | 3 + .../gtceu/models/item/ev_laser_engraver.json | 3 + .../assets/gtceu/models/item/ev_lathe.json | 3 + .../gtceu/models/item/ev_macerator.json | 3 + .../gtceu/models/item/ev_machine_hull.json | 3 + .../assets/gtceu/models/item/ev_mixer.json | 3 + .../gtceu/models/item/ev_muffler_hatch.json | 3 + .../gtceu/models/item/ev_ore_washer.json | 3 + .../gtceu/models/item/ev_output_bus.json | 3 + .../gtceu/models/item/ev_output_hatch.json | 3 + .../gtceu/models/item/ev_output_hatch_4x.json | 3 + .../gtceu/models/item/ev_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/ev_packer.json | 3 + .../gtceu/models/item/ev_polarizer.json | 3 + .../assets/gtceu/models/item/ev_pump.json | 3 + .../gtceu/models/item/ev_rock_crusher.json | 3 + .../gtceu/models/item/ev_rotor_holder.json | 3 + .../assets/gtceu/models/item/ev_scanner.json | 3 + .../assets/gtceu/models/item/ev_sifter.json | 3 + .../item/ev_substation_input_hatch_64a.json | 3 + .../item/ev_substation_output_hatch_64a.json | 3 + .../gtceu/models/item/ev_super_chest.json | 3 + .../gtceu/models/item/ev_super_tank.json | 3 + .../models/item/ev_thermal_centrifuge.json | 3 + .../gtceu/models/item/ev_transformer_16a.json | 3 + .../gtceu/models/item/ev_transformer_1a.json | 3 + .../gtceu/models/item/ev_transformer_2a.json | 3 + .../gtceu/models/item/ev_transformer_4a.json | 3 + .../assets/gtceu/models/item/ev_wiremill.json | 3 + .../models/item/ev_world_accelerator.json | 3 + .../item/extreme_combustion_engine.json | 3 + .../gtceu/models/item/gas_large_turbine.json | 3 + .../assets/gtceu/models/item/gold_drum.json | 3 + .../high_performance_computation_array.json | 3 + .../models/item/hp_steam_alloy_smelter.json | 3 + .../models/item/hp_steam_compressor.json | 3 + .../gtceu/models/item/hp_steam_extractor.json | 3 + .../models/item/hp_steam_forge_hammer.json | 3 + .../gtceu/models/item/hp_steam_furnace.json | 3 + .../models/item/hp_steam_liquid_boiler.json | 3 + .../gtceu/models/item/hp_steam_macerator.json | 3 + .../gtceu/models/item/hp_steam_miner.json | 3 + .../models/item/hp_steam_rock_crusher.json | 3 + .../models/item/hp_steam_solar_boiler.json | 3 + .../models/item/hp_steam_solid_boiler.json | 3 + .../item/hpca_active_cooler_component.json | 3 + .../hpca_advanced_computation_component.json | 3 + .../models/item/hpca_bridge_component.json | 3 + .../item/hpca_computation_component.json | 3 + .../models/item/hpca_empty_component.json | 3 + .../models/item/hpca_heat_sink_component.json | 3 + .../models/item/hv_16a_energy_converter.json | 3 + .../models/item/hv_1a_energy_converter.json | 3 + .../models/item/hv_4a_energy_converter.json | 3 + .../models/item/hv_8a_energy_converter.json | 3 + .../gtceu/models/item/hv_air_scrubber.json | 3 + .../gtceu/models/item/hv_alloy_smelter.json | 3 + .../gtceu/models/item/hv_arc_furnace.json | 3 + .../gtceu/models/item/hv_assembler.json | 3 + .../gtceu/models/item/hv_autoclave.json | 3 + .../models/item/hv_battery_buffer_16x.json | 3 + .../models/item/hv_battery_buffer_4x.json | 3 + .../models/item/hv_battery_buffer_8x.json | 3 + .../models/item/hv_bedrock_ore_miner.json | 3 + .../assets/gtceu/models/item/hv_bender.json | 3 + .../gtceu/models/item/hv_block_breaker.json | 3 + .../assets/gtceu/models/item/hv_brewery.json | 3 + .../assets/gtceu/models/item/hv_buffer.json | 3 + .../assets/gtceu/models/item/hv_canner.json | 3 + .../gtceu/models/item/hv_centrifuge.json | 3 + .../gtceu/models/item/hv_charger_4x.json | 3 + .../gtceu/models/item/hv_chemical_bath.json | 3 + .../models/item/hv_chemical_reactor.json | 3 + .../models/item/hv_circuit_assembler.json | 3 + .../gtceu/models/item/hv_combustion.json | 3 + .../gtceu/models/item/hv_compressor.json | 3 + .../assets/gtceu/models/item/hv_cutter.json | 3 + .../assets/gtceu/models/item/hv_diode.json | 3 + .../gtceu/models/item/hv_distillery.json | 3 + .../models/item/hv_electric_furnace.json | 3 + .../gtceu/models/item/hv_electrolyzer.json | 3 + .../item/hv_electromagnetic_separator.json | 3 + .../models/item/hv_energy_input_hatch.json | 3 + .../models/item/hv_energy_output_hatch.json | 3 + .../gtceu/models/item/hv_extractor.json | 3 + .../assets/gtceu/models/item/hv_extruder.json | 3 + .../gtceu/models/item/hv_fermenter.json | 3 + .../assets/gtceu/models/item/hv_fisher.json | 3 + .../models/item/hv_fluid_drilling_rig.json | 3 + .../gtceu/models/item/hv_fluid_heater.json | 3 + .../item/hv_fluid_passthrough_hatch.json | 3 + .../models/item/hv_fluid_solidifier.json | 3 + .../gtceu/models/item/hv_forge_hammer.json | 3 + .../gtceu/models/item/hv_forming_press.json | 3 + .../gtceu/models/item/hv_gas_collector.json | 3 + .../gtceu/models/item/hv_gas_turbine.json | 3 + .../gtceu/models/item/hv_input_bus.json | 3 + .../gtceu/models/item/hv_input_hatch.json | 3 + .../gtceu/models/item/hv_item_collector.json | 3 + .../item/hv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/hv_laser_engraver.json | 3 + .../assets/gtceu/models/item/hv_lathe.json | 3 + .../gtceu/models/item/hv_macerator.json | 3 + .../gtceu/models/item/hv_machine_hull.json | 3 + .../assets/gtceu/models/item/hv_miner.json | 3 + .../assets/gtceu/models/item/hv_mixer.json | 3 + .../gtceu/models/item/hv_muffler_hatch.json | 3 + .../gtceu/models/item/hv_ore_washer.json | 3 + .../gtceu/models/item/hv_output_bus.json | 3 + .../gtceu/models/item/hv_output_hatch.json | 3 + .../assets/gtceu/models/item/hv_packer.json | 3 + .../gtceu/models/item/hv_polarizer.json | 3 + .../assets/gtceu/models/item/hv_pump.json | 3 + .../gtceu/models/item/hv_rock_crusher.json | 3 + .../gtceu/models/item/hv_rotor_holder.json | 3 + .../assets/gtceu/models/item/hv_scanner.json | 3 + .../assets/gtceu/models/item/hv_sifter.json | 3 + .../gtceu/models/item/hv_steam_turbine.json | 3 + .../gtceu/models/item/hv_super_chest.json | 3 + .../gtceu/models/item/hv_super_tank.json | 3 + .../models/item/hv_thermal_centrifuge.json | 3 + .../gtceu/models/item/hv_transformer_16a.json | 3 + .../gtceu/models/item/hv_transformer_1a.json | 3 + .../gtceu/models/item/hv_transformer_2a.json | 3 + .../gtceu/models/item/hv_transformer_4a.json | 3 + .../assets/gtceu/models/item/hv_wiremill.json | 3 + .../models/item/hv_world_accelerator.json | 3 + .../models/item/implosion_compressor.json | 3 + .../item/iv_1024a_laser_source_hatch.json | 3 + .../item/iv_1024a_laser_target_hatch.json | 3 + .../models/item/iv_16a_energy_converter.json | 3 + .../models/item/iv_1a_energy_converter.json | 3 + .../item/iv_256a_laser_source_hatch.json | 3 + .../item/iv_256a_laser_target_hatch.json | 3 + .../item/iv_4096a_laser_source_hatch.json | 3 + .../item/iv_4096a_laser_target_hatch.json | 3 + .../models/item/iv_4a_energy_converter.json | 3 + .../models/item/iv_8a_energy_converter.json | 3 + .../gtceu/models/item/iv_alloy_smelter.json | 3 + .../gtceu/models/item/iv_arc_furnace.json | 3 + .../gtceu/models/item/iv_assembler.json | 3 + .../gtceu/models/item/iv_autoclave.json | 3 + .../models/item/iv_battery_buffer_16x.json | 3 + .../models/item/iv_battery_buffer_4x.json | 3 + .../models/item/iv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/iv_bender.json | 3 + .../assets/gtceu/models/item/iv_brewery.json | 3 + .../assets/gtceu/models/item/iv_canner.json | 3 + .../gtceu/models/item/iv_centrifuge.json | 3 + .../gtceu/models/item/iv_charger_4x.json | 3 + .../gtceu/models/item/iv_chemical_bath.json | 3 + .../models/item/iv_chemical_reactor.json | 3 + .../models/item/iv_circuit_assembler.json | 3 + .../gtceu/models/item/iv_compressor.json | 3 + .../assets/gtceu/models/item/iv_cutter.json | 3 + .../assets/gtceu/models/item/iv_diode.json | 3 + .../gtceu/models/item/iv_distillery.json | 3 + .../models/item/iv_electric_furnace.json | 3 + .../gtceu/models/item/iv_electrolyzer.json | 3 + .../item/iv_electromagnetic_separator.json | 3 + .../models/item/iv_energy_input_hatch.json | 3 + .../item/iv_energy_input_hatch_16a.json | 3 + .../models/item/iv_energy_input_hatch_4a.json | 3 + .../models/item/iv_energy_output_hatch.json | 3 + .../item/iv_energy_output_hatch_16a.json | 3 + .../item/iv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/iv_extractor.json | 3 + .../assets/gtceu/models/item/iv_extruder.json | 3 + .../gtceu/models/item/iv_fermenter.json | 3 + .../assets/gtceu/models/item/iv_fisher.json | 3 + .../gtceu/models/item/iv_fluid_heater.json | 3 + .../item/iv_fluid_passthrough_hatch.json | 3 + .../models/item/iv_fluid_solidifier.json | 3 + .../gtceu/models/item/iv_forge_hammer.json | 3 + .../gtceu/models/item/iv_forming_press.json | 3 + .../gtceu/models/item/iv_gas_collector.json | 3 + .../gtceu/models/item/iv_input_bus.json | 3 + .../gtceu/models/item/iv_input_hatch.json | 3 + .../gtceu/models/item/iv_input_hatch_4x.json | 3 + .../gtceu/models/item/iv_input_hatch_9x.json | 3 + .../item/iv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/iv_large_miner.json | 3 + .../gtceu/models/item/iv_laser_engraver.json | 3 + .../assets/gtceu/models/item/iv_lathe.json | 3 + .../gtceu/models/item/iv_macerator.json | 3 + .../gtceu/models/item/iv_machine_hull.json | 3 + .../assets/gtceu/models/item/iv_mixer.json | 3 + .../gtceu/models/item/iv_muffler_hatch.json | 3 + .../gtceu/models/item/iv_ore_washer.json | 3 + .../gtceu/models/item/iv_output_bus.json | 3 + .../gtceu/models/item/iv_output_hatch.json | 3 + .../gtceu/models/item/iv_output_hatch_4x.json | 3 + .../gtceu/models/item/iv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/iv_packer.json | 3 + .../gtceu/models/item/iv_parallel_hatch.json | 3 + .../gtceu/models/item/iv_polarizer.json | 3 + .../gtceu/models/item/iv_quantum_chest.json | 3 + .../gtceu/models/item/iv_quantum_tank.json | 3 + .../gtceu/models/item/iv_rock_crusher.json | 3 + .../gtceu/models/item/iv_rotor_holder.json | 3 + .../assets/gtceu/models/item/iv_scanner.json | 3 + .../assets/gtceu/models/item/iv_sifter.json | 3 + .../item/iv_substation_input_hatch_64a.json | 3 + .../item/iv_substation_output_hatch_64a.json | 3 + .../models/item/iv_thermal_centrifuge.json | 3 + .../gtceu/models/item/iv_transformer_16a.json | 3 + .../gtceu/models/item/iv_transformer_1a.json | 3 + .../gtceu/models/item/iv_transformer_2a.json | 3 + .../gtceu/models/item/iv_transformer_4a.json | 3 + .../assets/gtceu/models/item/iv_wiremill.json | 3 + .../models/item/iv_world_accelerator.json | 3 + .../gtceu/models/item/large_arc_smelter.json | 3 + .../gtceu/models/item/large_assembler.json | 3 + .../gtceu/models/item/large_autoclave.json | 3 + .../gtceu/models/item/large_brewer.json | 3 + .../gtceu/models/item/large_centrifuge.json | 3 + .../models/item/large_chemical_bath.json | 3 + .../models/item/large_chemical_reactor.json | 3 + .../models/item/large_circuit_assembler.json | 3 + .../models/item/large_combustion_engine.json | 3 + .../gtceu/models/item/large_cutter.json | 3 + .../gtceu/models/item/large_distillery.json | 3 + .../gtceu/models/item/large_electrolyzer.json | 3 + .../models/item/large_electromagnet.json | 3 + .../models/item/large_engraving_laser.json | 3 + .../gtceu/models/item/large_extractor.json | 3 + .../gtceu/models/item/large_extruder.json | 3 + .../models/item/large_maceration_tower.json | 3 + .../models/item/large_material_press.json | 3 + .../assets/gtceu/models/item/large_mixer.json | 3 + .../gtceu/models/item/large_packer.json | 3 + .../models/item/large_sifting_funnel.json | 3 + .../gtceu/models/item/large_solidifier.json | 3 + .../gtceu/models/item/large_wiremill.json | 3 + ...long_distance_fluid_pipeline_endpoint.json | 3 + .../long_distance_item_pipeline_endpoint.json | 3 + .../models/item/lp_steam_alloy_smelter.json | 3 + .../models/item/lp_steam_compressor.json | 3 + .../gtceu/models/item/lp_steam_extractor.json | 3 + .../models/item/lp_steam_forge_hammer.json | 3 + .../gtceu/models/item/lp_steam_furnace.json | 3 + .../models/item/lp_steam_liquid_boiler.json | 3 + .../gtceu/models/item/lp_steam_macerator.json | 3 + .../gtceu/models/item/lp_steam_miner.json | 3 + .../models/item/lp_steam_rock_crusher.json | 3 + .../models/item/lp_steam_solar_boiler.json | 3 + .../models/item/lp_steam_solid_boiler.json | 3 + .../item/luv_1024a_laser_source_hatch.json | 3 + .../item/luv_1024a_laser_target_hatch.json | 3 + .../models/item/luv_16a_energy_converter.json | 3 + .../models/item/luv_1a_energy_converter.json | 3 + .../item/luv_256a_laser_source_hatch.json | 3 + .../item/luv_256a_laser_target_hatch.json | 3 + .../item/luv_4096a_laser_source_hatch.json | 3 + .../item/luv_4096a_laser_target_hatch.json | 3 + .../models/item/luv_4a_energy_converter.json | 3 + .../models/item/luv_8a_energy_converter.json | 3 + .../gtceu/models/item/luv_alloy_smelter.json | 3 + .../gtceu/models/item/luv_arc_furnace.json | 3 + .../gtceu/models/item/luv_assembler.json | 3 + .../gtceu/models/item/luv_autoclave.json | 3 + .../models/item/luv_battery_buffer_16x.json | 3 + .../models/item/luv_battery_buffer_4x.json | 3 + .../models/item/luv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/luv_bender.json | 3 + .../assets/gtceu/models/item/luv_brewery.json | 3 + .../assets/gtceu/models/item/luv_canner.json | 3 + .../gtceu/models/item/luv_centrifuge.json | 3 + .../gtceu/models/item/luv_charger_4x.json | 3 + .../gtceu/models/item/luv_chemical_bath.json | 3 + .../models/item/luv_chemical_reactor.json | 3 + .../models/item/luv_circuit_assembler.json | 3 + .../gtceu/models/item/luv_compressor.json | 3 + .../assets/gtceu/models/item/luv_cutter.json | 3 + .../assets/gtceu/models/item/luv_diode.json | 3 + .../gtceu/models/item/luv_distillery.json | 3 + .../models/item/luv_dual_input_hatch.json | 3 + .../models/item/luv_dual_output_hatch.json | 3 + .../models/item/luv_electric_furnace.json | 3 + .../gtceu/models/item/luv_electrolyzer.json | 3 + .../item/luv_electromagnetic_separator.json | 3 + .../models/item/luv_energy_input_hatch.json | 3 + .../item/luv_energy_input_hatch_16a.json | 3 + .../item/luv_energy_input_hatch_4a.json | 3 + .../models/item/luv_energy_output_hatch.json | 3 + .../item/luv_energy_output_hatch_16a.json | 3 + .../item/luv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/luv_extractor.json | 3 + .../gtceu/models/item/luv_extruder.json | 3 + .../gtceu/models/item/luv_fermenter.json | 3 + .../assets/gtceu/models/item/luv_fisher.json | 3 + .../gtceu/models/item/luv_fluid_heater.json | 3 + .../item/luv_fluid_passthrough_hatch.json | 3 + .../models/item/luv_fluid_solidifier.json | 3 + .../gtceu/models/item/luv_forge_hammer.json | 3 + .../gtceu/models/item/luv_forming_press.json | 3 + .../gtceu/models/item/luv_fusion_reactor.json | 3 + .../gtceu/models/item/luv_gas_collector.json | 3 + .../gtceu/models/item/luv_input_bus.json | 3 + .../gtceu/models/item/luv_input_hatch.json | 3 + .../gtceu/models/item/luv_input_hatch_4x.json | 3 + .../gtceu/models/item/luv_input_hatch_9x.json | 3 + .../item/luv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/luv_large_miner.json | 3 + .../gtceu/models/item/luv_laser_engraver.json | 3 + .../assets/gtceu/models/item/luv_lathe.json | 3 + .../gtceu/models/item/luv_macerator.json | 3 + .../gtceu/models/item/luv_machine_hull.json | 3 + .../assets/gtceu/models/item/luv_mixer.json | 3 + .../gtceu/models/item/luv_muffler_hatch.json | 3 + .../gtceu/models/item/luv_ore_washer.json | 3 + .../gtceu/models/item/luv_output_bus.json | 3 + .../gtceu/models/item/luv_output_hatch.json | 3 + .../models/item/luv_output_hatch_4x.json | 3 + .../models/item/luv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/luv_packer.json | 3 + .../gtceu/models/item/luv_parallel_hatch.json | 3 + .../gtceu/models/item/luv_polarizer.json | 3 + .../gtceu/models/item/luv_quantum_chest.json | 3 + .../gtceu/models/item/luv_quantum_tank.json | 3 + .../gtceu/models/item/luv_rock_crusher.json | 3 + .../gtceu/models/item/luv_rotor_holder.json | 3 + .../assets/gtceu/models/item/luv_scanner.json | 3 + .../assets/gtceu/models/item/luv_sifter.json | 3 + .../item/luv_substation_input_hatch_64a.json | 3 + .../item/luv_substation_output_hatch_64a.json | 3 + .../models/item/luv_thermal_centrifuge.json | 3 + .../models/item/luv_transformer_16a.json | 3 + .../gtceu/models/item/luv_transformer_1a.json | 3 + .../gtceu/models/item/luv_transformer_2a.json | 3 + .../gtceu/models/item/luv_transformer_4a.json | 3 + .../gtceu/models/item/luv_wiremill.json | 3 + .../models/item/luv_world_accelerator.json | 3 + .../models/item/lv_16a_energy_converter.json | 3 + .../models/item/lv_1a_energy_converter.json | 3 + .../models/item/lv_4a_energy_converter.json | 3 + .../models/item/lv_8a_energy_converter.json | 3 + .../gtceu/models/item/lv_air_scrubber.json | 3 + .../gtceu/models/item/lv_alloy_smelter.json | 3 + .../gtceu/models/item/lv_arc_furnace.json | 3 + .../gtceu/models/item/lv_assembler.json | 3 + .../gtceu/models/item/lv_autoclave.json | 3 + .../models/item/lv_battery_buffer_16x.json | 3 + .../models/item/lv_battery_buffer_4x.json | 3 + .../models/item/lv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/lv_bender.json | 3 + .../gtceu/models/item/lv_block_breaker.json | 3 + .../assets/gtceu/models/item/lv_brewery.json | 3 + .../assets/gtceu/models/item/lv_buffer.json | 3 + .../assets/gtceu/models/item/lv_canner.json | 3 + .../gtceu/models/item/lv_centrifuge.json | 3 + .../gtceu/models/item/lv_charger_4x.json | 3 + .../gtceu/models/item/lv_chemical_bath.json | 3 + .../models/item/lv_chemical_reactor.json | 3 + .../models/item/lv_circuit_assembler.json | 3 + .../gtceu/models/item/lv_combustion.json | 3 + .../gtceu/models/item/lv_compressor.json | 3 + .../assets/gtceu/models/item/lv_cutter.json | 3 + .../assets/gtceu/models/item/lv_diode.json | 3 + .../gtceu/models/item/lv_distillery.json | 3 + .../models/item/lv_electric_furnace.json | 3 + .../gtceu/models/item/lv_electrolyzer.json | 3 + .../item/lv_electromagnetic_separator.json | 3 + .../models/item/lv_energy_input_hatch.json | 3 + .../models/item/lv_energy_output_hatch.json | 3 + .../gtceu/models/item/lv_extractor.json | 3 + .../assets/gtceu/models/item/lv_extruder.json | 3 + .../gtceu/models/item/lv_fermenter.json | 3 + .../assets/gtceu/models/item/lv_fisher.json | 3 + .../gtceu/models/item/lv_fluid_heater.json | 3 + .../item/lv_fluid_passthrough_hatch.json | 3 + .../models/item/lv_fluid_solidifier.json | 3 + .../gtceu/models/item/lv_forge_hammer.json | 3 + .../gtceu/models/item/lv_forming_press.json | 3 + .../gtceu/models/item/lv_gas_collector.json | 3 + .../gtceu/models/item/lv_gas_turbine.json | 3 + .../gtceu/models/item/lv_input_bus.json | 3 + .../gtceu/models/item/lv_input_hatch.json | 3 + .../gtceu/models/item/lv_item_collector.json | 3 + .../item/lv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/lv_laser_engraver.json | 3 + .../assets/gtceu/models/item/lv_lathe.json | 3 + .../gtceu/models/item/lv_macerator.json | 3 + .../gtceu/models/item/lv_machine_hull.json | 3 + .../assets/gtceu/models/item/lv_miner.json | 3 + .../assets/gtceu/models/item/lv_mixer.json | 3 + .../gtceu/models/item/lv_muffler_hatch.json | 3 + .../gtceu/models/item/lv_ore_washer.json | 3 + .../gtceu/models/item/lv_output_bus.json | 3 + .../gtceu/models/item/lv_output_hatch.json | 3 + .../assets/gtceu/models/item/lv_packer.json | 3 + .../gtceu/models/item/lv_polarizer.json | 3 + .../assets/gtceu/models/item/lv_pump.json | 3 + .../gtceu/models/item/lv_rock_crusher.json | 3 + .../assets/gtceu/models/item/lv_scanner.json | 3 + .../assets/gtceu/models/item/lv_sifter.json | 3 + .../gtceu/models/item/lv_steam_turbine.json | 3 + .../gtceu/models/item/lv_super_chest.json | 3 + .../gtceu/models/item/lv_super_tank.json | 3 + .../models/item/lv_thermal_centrifuge.json | 3 + .../gtceu/models/item/lv_transformer_16a.json | 3 + .../gtceu/models/item/lv_transformer_1a.json | 3 + .../gtceu/models/item/lv_transformer_2a.json | 3 + .../gtceu/models/item/lv_transformer_4a.json | 3 + .../assets/gtceu/models/item/lv_wiremill.json | 3 + .../models/item/lv_world_accelerator.json | 3 + .../gtceu/models/item/maintenance_hatch.json | 3 + .../models/item/max_16a_energy_converter.json | 3 + .../models/item/max_1a_energy_converter.json | 3 + .../models/item/max_4a_energy_converter.json | 3 + .../models/item/max_8a_energy_converter.json | 3 + .../models/item/max_battery_buffer_16x.json | 3 + .../models/item/max_battery_buffer_4x.json | 3 + .../models/item/max_battery_buffer_8x.json | 3 + .../gtceu/models/item/max_charger_4x.json | 3 + .../models/item/max_dual_input_hatch.json | 3 + .../models/item/max_dual_output_hatch.json | 3 + .../models/item/max_energy_input_hatch.json | 3 + .../item/max_energy_input_hatch_16a.json | 3 + .../item/max_energy_input_hatch_4a.json | 3 + .../models/item/max_energy_output_hatch.json | 3 + .../item/max_energy_output_hatch_16a.json | 3 + .../item/max_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/max_input_bus.json | 3 + .../gtceu/models/item/max_input_hatch.json | 3 + .../gtceu/models/item/max_input_hatch_4x.json | 3 + .../gtceu/models/item/max_input_hatch_9x.json | 3 + .../gtceu/models/item/max_machine_hull.json | 3 + .../gtceu/models/item/max_output_bus.json | 3 + .../gtceu/models/item/max_output_hatch.json | 3 + .../models/item/max_output_hatch_4x.json | 3 + .../models/item/max_output_hatch_9x.json | 3 + .../item/max_substation_input_hatch_64a.json | 3 + .../item/max_substation_output_hatch_64a.json | 3 + .../gtceu/models/item/me_input_bus.json | 3 + .../gtceu/models/item/me_input_hatch.json | 3 + .../gtceu/models/item/me_output_bus.json | 3 + .../gtceu/models/item/me_output_hatch.json | 3 + .../gtceu/models/item/me_pattern_buffer.json | 3 + .../models/item/me_pattern_buffer_proxy.json | 3 + .../models/item/me_stocking_input_bus.json | 3 + .../models/item/me_stocking_input_hatch.json | 3 + .../gtceu/models/item/mega_blast_furnace.json | 3 + .../models/item/mega_vacuum_freezer.json | 3 + .../gtceu/models/item/multi_smelter.json | 3 + .../models/item/mv_16a_energy_converter.json | 3 + .../models/item/mv_1a_energy_converter.json | 3 + .../models/item/mv_4a_energy_converter.json | 3 + .../models/item/mv_8a_energy_converter.json | 3 + .../gtceu/models/item/mv_air_scrubber.json | 3 + .../gtceu/models/item/mv_alloy_smelter.json | 3 + .../gtceu/models/item/mv_arc_furnace.json | 3 + .../gtceu/models/item/mv_assembler.json | 3 + .../gtceu/models/item/mv_autoclave.json | 3 + .../models/item/mv_battery_buffer_16x.json | 3 + .../models/item/mv_battery_buffer_4x.json | 3 + .../models/item/mv_battery_buffer_8x.json | 3 + .../models/item/mv_bedrock_ore_miner.json | 3 + .../assets/gtceu/models/item/mv_bender.json | 3 + .../gtceu/models/item/mv_block_breaker.json | 3 + .../assets/gtceu/models/item/mv_brewery.json | 3 + .../assets/gtceu/models/item/mv_buffer.json | 3 + .../assets/gtceu/models/item/mv_canner.json | 3 + .../gtceu/models/item/mv_centrifuge.json | 3 + .../gtceu/models/item/mv_charger_4x.json | 3 + .../gtceu/models/item/mv_chemical_bath.json | 3 + .../models/item/mv_chemical_reactor.json | 3 + .../models/item/mv_circuit_assembler.json | 3 + .../gtceu/models/item/mv_combustion.json | 3 + .../gtceu/models/item/mv_compressor.json | 3 + .../assets/gtceu/models/item/mv_cutter.json | 3 + .../assets/gtceu/models/item/mv_diode.json | 3 + .../gtceu/models/item/mv_distillery.json | 3 + .../models/item/mv_electric_furnace.json | 3 + .../gtceu/models/item/mv_electrolyzer.json | 3 + .../item/mv_electromagnetic_separator.json | 3 + .../models/item/mv_energy_input_hatch.json | 3 + .../models/item/mv_energy_output_hatch.json | 3 + .../gtceu/models/item/mv_extractor.json | 3 + .../assets/gtceu/models/item/mv_extruder.json | 3 + .../gtceu/models/item/mv_fermenter.json | 3 + .../assets/gtceu/models/item/mv_fisher.json | 3 + .../models/item/mv_fluid_drilling_rig.json | 3 + .../gtceu/models/item/mv_fluid_heater.json | 3 + .../item/mv_fluid_passthrough_hatch.json | 3 + .../models/item/mv_fluid_solidifier.json | 3 + .../gtceu/models/item/mv_forge_hammer.json | 3 + .../gtceu/models/item/mv_forming_press.json | 3 + .../gtceu/models/item/mv_gas_collector.json | 3 + .../gtceu/models/item/mv_gas_turbine.json | 3 + .../gtceu/models/item/mv_input_bus.json | 3 + .../gtceu/models/item/mv_input_hatch.json | 3 + .../gtceu/models/item/mv_item_collector.json | 3 + .../item/mv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/mv_laser_engraver.json | 3 + .../assets/gtceu/models/item/mv_lathe.json | 3 + .../gtceu/models/item/mv_macerator.json | 3 + .../gtceu/models/item/mv_machine_hull.json | 3 + .../assets/gtceu/models/item/mv_miner.json | 3 + .../assets/gtceu/models/item/mv_mixer.json | 3 + .../gtceu/models/item/mv_muffler_hatch.json | 3 + .../gtceu/models/item/mv_ore_washer.json | 3 + .../gtceu/models/item/mv_output_bus.json | 3 + .../gtceu/models/item/mv_output_hatch.json | 3 + .../assets/gtceu/models/item/mv_packer.json | 3 + .../gtceu/models/item/mv_polarizer.json | 3 + .../assets/gtceu/models/item/mv_pump.json | 3 + .../gtceu/models/item/mv_rock_crusher.json | 3 + .../assets/gtceu/models/item/mv_scanner.json | 3 + .../assets/gtceu/models/item/mv_sifter.json | 3 + .../gtceu/models/item/mv_steam_turbine.json | 3 + .../gtceu/models/item/mv_super_chest.json | 3 + .../gtceu/models/item/mv_super_tank.json | 3 + .../models/item/mv_thermal_centrifuge.json | 3 + .../gtceu/models/item/mv_transformer_16a.json | 3 + .../gtceu/models/item/mv_transformer_1a.json | 3 + .../gtceu/models/item/mv_transformer_2a.json | 3 + .../gtceu/models/item/mv_transformer_4a.json | 3 + .../assets/gtceu/models/item/mv_wiremill.json | 3 + .../models/item/mv_world_accelerator.json | 3 + .../gtceu/models/item/network_switch.json | 3 + .../gtceu/models/item/object_holder.json | 3 + .../item/opv_1024a_laser_source_hatch.json | 3 + .../item/opv_1024a_laser_target_hatch.json | 3 + .../models/item/opv_16a_energy_converter.json | 3 + .../models/item/opv_1a_energy_converter.json | 3 + .../item/opv_256a_laser_source_hatch.json | 3 + .../item/opv_256a_laser_target_hatch.json | 3 + .../item/opv_4096a_laser_source_hatch.json | 3 + .../item/opv_4096a_laser_target_hatch.json | 3 + .../models/item/opv_4a_energy_converter.json | 3 + .../models/item/opv_8a_energy_converter.json | 3 + .../gtceu/models/item/opv_alloy_smelter.json | 3 + .../gtceu/models/item/opv_arc_furnace.json | 3 + .../gtceu/models/item/opv_assembler.json | 3 + .../gtceu/models/item/opv_autoclave.json | 3 + .../models/item/opv_battery_buffer_16x.json | 3 + .../models/item/opv_battery_buffer_4x.json | 3 + .../models/item/opv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/opv_bender.json | 3 + .../assets/gtceu/models/item/opv_brewery.json | 3 + .../assets/gtceu/models/item/opv_canner.json | 3 + .../gtceu/models/item/opv_centrifuge.json | 3 + .../gtceu/models/item/opv_charger_4x.json | 3 + .../gtceu/models/item/opv_chemical_bath.json | 3 + .../models/item/opv_chemical_reactor.json | 3 + .../models/item/opv_circuit_assembler.json | 3 + .../gtceu/models/item/opv_compressor.json | 3 + .../assets/gtceu/models/item/opv_cutter.json | 3 + .../assets/gtceu/models/item/opv_diode.json | 3 + .../gtceu/models/item/opv_distillery.json | 3 + .../models/item/opv_dual_input_hatch.json | 3 + .../models/item/opv_dual_output_hatch.json | 3 + .../models/item/opv_electric_furnace.json | 3 + .../gtceu/models/item/opv_electrolyzer.json | 3 + .../item/opv_electromagnetic_separator.json | 3 + .../models/item/opv_energy_input_hatch.json | 3 + .../item/opv_energy_input_hatch_16a.json | 3 + .../item/opv_energy_input_hatch_4a.json | 3 + .../models/item/opv_energy_output_hatch.json | 3 + .../item/opv_energy_output_hatch_16a.json | 3 + .../item/opv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/opv_extractor.json | 3 + .../gtceu/models/item/opv_extruder.json | 3 + .../gtceu/models/item/opv_fermenter.json | 3 + .../gtceu/models/item/opv_fluid_heater.json | 3 + .../item/opv_fluid_passthrough_hatch.json | 3 + .../models/item/opv_fluid_solidifier.json | 3 + .../gtceu/models/item/opv_forge_hammer.json | 3 + .../gtceu/models/item/opv_forming_press.json | 3 + .../gtceu/models/item/opv_gas_collector.json | 3 + .../gtceu/models/item/opv_input_bus.json | 3 + .../gtceu/models/item/opv_input_hatch.json | 3 + .../gtceu/models/item/opv_input_hatch_4x.json | 3 + .../gtceu/models/item/opv_input_hatch_9x.json | 3 + .../item/opv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/opv_laser_engraver.json | 3 + .../assets/gtceu/models/item/opv_lathe.json | 3 + .../gtceu/models/item/opv_macerator.json | 3 + .../gtceu/models/item/opv_machine_hull.json | 3 + .../assets/gtceu/models/item/opv_mixer.json | 3 + .../gtceu/models/item/opv_muffler_hatch.json | 3 + .../gtceu/models/item/opv_ore_washer.json | 3 + .../gtceu/models/item/opv_output_bus.json | 3 + .../gtceu/models/item/opv_output_hatch.json | 3 + .../models/item/opv_output_hatch_4x.json | 3 + .../models/item/opv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/opv_packer.json | 3 + .../gtceu/models/item/opv_polarizer.json | 3 + .../gtceu/models/item/opv_quantum_chest.json | 3 + .../gtceu/models/item/opv_quantum_tank.json | 3 + .../gtceu/models/item/opv_rock_crusher.json | 3 + .../gtceu/models/item/opv_rotor_holder.json | 3 + .../assets/gtceu/models/item/opv_scanner.json | 3 + .../assets/gtceu/models/item/opv_sifter.json | 3 + .../item/opv_substation_input_hatch_64a.json | 3 + .../item/opv_substation_output_hatch_64a.json | 3 + .../models/item/opv_thermal_centrifuge.json | 3 + .../models/item/opv_transformer_16a.json | 3 + .../gtceu/models/item/opv_transformer_1a.json | 3 + .../gtceu/models/item/opv_transformer_2a.json | 3 + .../gtceu/models/item/opv_transformer_4a.json | 3 + .../gtceu/models/item/opv_wiremill.json | 3 + .../models/item/plasma_large_turbine.json | 3 + .../gtceu/models/item/power_substation.json | 3 + .../models/item/primitive_blast_furnace.json | 3 + .../gtceu/models/item/primitive_pump.json | 3 + .../assets/gtceu/models/item/pump_hatch.json | 3 + .../gtceu/models/item/pyrolyse_oven.json | 3 + .../gtceu/models/item/research_station.json | 3 + .../gtceu/models/item/reservoir_hatch.json | 3 + .../models/item/stainless_steel_crate.json | 3 + .../models/item/stainless_steel_drum.json | 3 + .../gtceu/models/item/steam_grinder.json | 3 + .../gtceu/models/item/steam_input_bus.json | 3 + .../gtceu/models/item/steam_input_hatch.json | 3 + .../models/item/steam_large_turbine.json | 3 + .../gtceu/models/item/steam_output_bus.json | 3 + .../assets/gtceu/models/item/steam_oven.json | 3 + .../assets/gtceu/models/item/steel_crate.json | 3 + .../assets/gtceu/models/item/steel_drum.json | 3 + .../gtceu/models/item/steel_large_boiler.json | 3 + .../models/item/steel_multiblock_tank.json | 3 + .../gtceu/models/item/steel_tank_valve.json | 3 + .../gtceu/models/item/titanium_crate.json | 3 + .../gtceu/models/item/titanium_drum.json | 3 + .../models/item/titanium_large_boiler.json | 3 + .../models/item/tungsten_steel_crate.json | 3 + .../models/item/tungsten_steel_drum.json | 3 + .../item/tungstensteel_large_boiler.json | 3 + .../item/uev_1024a_laser_source_hatch.json | 3 + .../item/uev_1024a_laser_target_hatch.json | 3 + .../models/item/uev_16a_energy_converter.json | 3 + .../models/item/uev_1a_energy_converter.json | 3 + .../item/uev_256a_laser_source_hatch.json | 3 + .../item/uev_256a_laser_target_hatch.json | 3 + .../item/uev_4096a_laser_source_hatch.json | 3 + .../item/uev_4096a_laser_target_hatch.json | 3 + .../models/item/uev_4a_energy_converter.json | 3 + .../models/item/uev_8a_energy_converter.json | 3 + .../gtceu/models/item/uev_alloy_smelter.json | 3 + .../gtceu/models/item/uev_arc_furnace.json | 3 + .../gtceu/models/item/uev_assembler.json | 3 + .../gtceu/models/item/uev_autoclave.json | 3 + .../models/item/uev_battery_buffer_16x.json | 3 + .../models/item/uev_battery_buffer_4x.json | 3 + .../models/item/uev_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/uev_bender.json | 3 + .../assets/gtceu/models/item/uev_brewery.json | 3 + .../assets/gtceu/models/item/uev_canner.json | 3 + .../gtceu/models/item/uev_centrifuge.json | 3 + .../gtceu/models/item/uev_charger_4x.json | 3 + .../gtceu/models/item/uev_chemical_bath.json | 3 + .../models/item/uev_chemical_reactor.json | 3 + .../models/item/uev_circuit_assembler.json | 3 + .../gtceu/models/item/uev_compressor.json | 3 + .../assets/gtceu/models/item/uev_cutter.json | 3 + .../assets/gtceu/models/item/uev_diode.json | 3 + .../gtceu/models/item/uev_distillery.json | 3 + .../models/item/uev_dual_input_hatch.json | 3 + .../models/item/uev_dual_output_hatch.json | 3 + .../models/item/uev_electric_furnace.json | 3 + .../gtceu/models/item/uev_electrolyzer.json | 3 + .../item/uev_electromagnetic_separator.json | 3 + .../models/item/uev_energy_input_hatch.json | 3 + .../item/uev_energy_input_hatch_16a.json | 3 + .../item/uev_energy_input_hatch_4a.json | 3 + .../models/item/uev_energy_output_hatch.json | 3 + .../item/uev_energy_output_hatch_16a.json | 3 + .../item/uev_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/uev_extractor.json | 3 + .../gtceu/models/item/uev_extruder.json | 3 + .../gtceu/models/item/uev_fermenter.json | 3 + .../gtceu/models/item/uev_fluid_heater.json | 3 + .../item/uev_fluid_passthrough_hatch.json | 3 + .../models/item/uev_fluid_solidifier.json | 3 + .../gtceu/models/item/uev_forge_hammer.json | 3 + .../gtceu/models/item/uev_forming_press.json | 3 + .../gtceu/models/item/uev_gas_collector.json | 3 + .../gtceu/models/item/uev_input_bus.json | 3 + .../gtceu/models/item/uev_input_hatch.json | 3 + .../gtceu/models/item/uev_input_hatch_4x.json | 3 + .../gtceu/models/item/uev_input_hatch_9x.json | 3 + .../item/uev_item_passthrough_hatch.json | 3 + .../gtceu/models/item/uev_laser_engraver.json | 3 + .../assets/gtceu/models/item/uev_lathe.json | 3 + .../gtceu/models/item/uev_macerator.json | 3 + .../gtceu/models/item/uev_machine_hull.json | 3 + .../assets/gtceu/models/item/uev_mixer.json | 3 + .../gtceu/models/item/uev_muffler_hatch.json | 3 + .../gtceu/models/item/uev_ore_washer.json | 3 + .../gtceu/models/item/uev_output_bus.json | 3 + .../gtceu/models/item/uev_output_hatch.json | 3 + .../models/item/uev_output_hatch_4x.json | 3 + .../models/item/uev_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/uev_packer.json | 3 + .../gtceu/models/item/uev_polarizer.json | 3 + .../gtceu/models/item/uev_quantum_chest.json | 3 + .../gtceu/models/item/uev_quantum_tank.json | 3 + .../gtceu/models/item/uev_rock_crusher.json | 3 + .../gtceu/models/item/uev_rotor_holder.json | 3 + .../assets/gtceu/models/item/uev_scanner.json | 3 + .../assets/gtceu/models/item/uev_sifter.json | 3 + .../item/uev_substation_input_hatch_64a.json | 3 + .../item/uev_substation_output_hatch_64a.json | 3 + .../models/item/uev_thermal_centrifuge.json | 3 + .../models/item/uev_transformer_16a.json | 3 + .../gtceu/models/item/uev_transformer_1a.json | 3 + .../gtceu/models/item/uev_transformer_2a.json | 3 + .../gtceu/models/item/uev_transformer_4a.json | 3 + .../gtceu/models/item/uev_wiremill.json | 3 + .../item/uhv_1024a_laser_source_hatch.json | 3 + .../item/uhv_1024a_laser_target_hatch.json | 3 + .../models/item/uhv_16a_energy_converter.json | 3 + .../models/item/uhv_1a_energy_converter.json | 3 + .../item/uhv_256a_laser_source_hatch.json | 3 + .../item/uhv_256a_laser_target_hatch.json | 3 + .../item/uhv_4096a_laser_source_hatch.json | 3 + .../item/uhv_4096a_laser_target_hatch.json | 3 + .../models/item/uhv_4a_energy_converter.json | 3 + .../models/item/uhv_8a_energy_converter.json | 3 + .../gtceu/models/item/uhv_alloy_smelter.json | 3 + .../gtceu/models/item/uhv_arc_furnace.json | 3 + .../gtceu/models/item/uhv_assembler.json | 3 + .../gtceu/models/item/uhv_autoclave.json | 3 + .../models/item/uhv_battery_buffer_16x.json | 3 + .../models/item/uhv_battery_buffer_4x.json | 3 + .../models/item/uhv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/uhv_bender.json | 3 + .../assets/gtceu/models/item/uhv_brewery.json | 3 + .../assets/gtceu/models/item/uhv_canner.json | 3 + .../gtceu/models/item/uhv_centrifuge.json | 3 + .../gtceu/models/item/uhv_charger_4x.json | 3 + .../gtceu/models/item/uhv_chemical_bath.json | 3 + .../models/item/uhv_chemical_reactor.json | 3 + .../models/item/uhv_circuit_assembler.json | 3 + .../gtceu/models/item/uhv_compressor.json | 3 + .../assets/gtceu/models/item/uhv_cutter.json | 3 + .../assets/gtceu/models/item/uhv_diode.json | 3 + .../gtceu/models/item/uhv_distillery.json | 3 + .../models/item/uhv_dual_input_hatch.json | 3 + .../models/item/uhv_dual_output_hatch.json | 3 + .../models/item/uhv_electric_furnace.json | 3 + .../gtceu/models/item/uhv_electrolyzer.json | 3 + .../item/uhv_electromagnetic_separator.json | 3 + .../models/item/uhv_energy_input_hatch.json | 3 + .../item/uhv_energy_input_hatch_16a.json | 3 + .../item/uhv_energy_input_hatch_4a.json | 3 + .../models/item/uhv_energy_output_hatch.json | 3 + .../item/uhv_energy_output_hatch_16a.json | 3 + .../item/uhv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/uhv_extractor.json | 3 + .../gtceu/models/item/uhv_extruder.json | 3 + .../gtceu/models/item/uhv_fermenter.json | 3 + .../gtceu/models/item/uhv_fluid_heater.json | 3 + .../item/uhv_fluid_passthrough_hatch.json | 3 + .../models/item/uhv_fluid_solidifier.json | 3 + .../gtceu/models/item/uhv_forge_hammer.json | 3 + .../gtceu/models/item/uhv_forming_press.json | 3 + .../gtceu/models/item/uhv_gas_collector.json | 3 + .../gtceu/models/item/uhv_input_bus.json | 3 + .../gtceu/models/item/uhv_input_hatch.json | 3 + .../gtceu/models/item/uhv_input_hatch_4x.json | 3 + .../gtceu/models/item/uhv_input_hatch_9x.json | 3 + .../item/uhv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/uhv_laser_engraver.json | 3 + .../assets/gtceu/models/item/uhv_lathe.json | 3 + .../gtceu/models/item/uhv_macerator.json | 3 + .../gtceu/models/item/uhv_machine_hull.json | 3 + .../assets/gtceu/models/item/uhv_mixer.json | 3 + .../gtceu/models/item/uhv_muffler_hatch.json | 3 + .../gtceu/models/item/uhv_ore_washer.json | 3 + .../gtceu/models/item/uhv_output_bus.json | 3 + .../gtceu/models/item/uhv_output_hatch.json | 3 + .../models/item/uhv_output_hatch_4x.json | 3 + .../models/item/uhv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/uhv_packer.json | 3 + .../gtceu/models/item/uhv_polarizer.json | 3 + .../gtceu/models/item/uhv_quantum_chest.json | 3 + .../gtceu/models/item/uhv_quantum_tank.json | 3 + .../gtceu/models/item/uhv_rock_crusher.json | 3 + .../gtceu/models/item/uhv_rotor_holder.json | 3 + .../assets/gtceu/models/item/uhv_scanner.json | 3 + .../assets/gtceu/models/item/uhv_sifter.json | 3 + .../item/uhv_substation_input_hatch_64a.json | 3 + .../item/uhv_substation_output_hatch_64a.json | 3 + .../models/item/uhv_thermal_centrifuge.json | 3 + .../models/item/uhv_transformer_16a.json | 3 + .../gtceu/models/item/uhv_transformer_1a.json | 3 + .../gtceu/models/item/uhv_transformer_2a.json | 3 + .../gtceu/models/item/uhv_transformer_4a.json | 3 + .../gtceu/models/item/uhv_wiremill.json | 3 + .../item/uiv_1024a_laser_source_hatch.json | 3 + .../item/uiv_1024a_laser_target_hatch.json | 3 + .../models/item/uiv_16a_energy_converter.json | 3 + .../models/item/uiv_1a_energy_converter.json | 3 + .../item/uiv_256a_laser_source_hatch.json | 3 + .../item/uiv_256a_laser_target_hatch.json | 3 + .../item/uiv_4096a_laser_source_hatch.json | 3 + .../item/uiv_4096a_laser_target_hatch.json | 3 + .../models/item/uiv_4a_energy_converter.json | 3 + .../models/item/uiv_8a_energy_converter.json | 3 + .../gtceu/models/item/uiv_alloy_smelter.json | 3 + .../gtceu/models/item/uiv_arc_furnace.json | 3 + .../gtceu/models/item/uiv_assembler.json | 3 + .../gtceu/models/item/uiv_autoclave.json | 3 + .../models/item/uiv_battery_buffer_16x.json | 3 + .../models/item/uiv_battery_buffer_4x.json | 3 + .../models/item/uiv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/uiv_bender.json | 3 + .../assets/gtceu/models/item/uiv_brewery.json | 3 + .../assets/gtceu/models/item/uiv_canner.json | 3 + .../gtceu/models/item/uiv_centrifuge.json | 3 + .../gtceu/models/item/uiv_charger_4x.json | 3 + .../gtceu/models/item/uiv_chemical_bath.json | 3 + .../models/item/uiv_chemical_reactor.json | 3 + .../models/item/uiv_circuit_assembler.json | 3 + .../gtceu/models/item/uiv_compressor.json | 3 + .../assets/gtceu/models/item/uiv_cutter.json | 3 + .../assets/gtceu/models/item/uiv_diode.json | 3 + .../gtceu/models/item/uiv_distillery.json | 3 + .../models/item/uiv_dual_input_hatch.json | 3 + .../models/item/uiv_dual_output_hatch.json | 3 + .../models/item/uiv_electric_furnace.json | 3 + .../gtceu/models/item/uiv_electrolyzer.json | 3 + .../item/uiv_electromagnetic_separator.json | 3 + .../models/item/uiv_energy_input_hatch.json | 3 + .../item/uiv_energy_input_hatch_16a.json | 3 + .../item/uiv_energy_input_hatch_4a.json | 3 + .../models/item/uiv_energy_output_hatch.json | 3 + .../item/uiv_energy_output_hatch_16a.json | 3 + .../item/uiv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/uiv_extractor.json | 3 + .../gtceu/models/item/uiv_extruder.json | 3 + .../gtceu/models/item/uiv_fermenter.json | 3 + .../gtceu/models/item/uiv_fluid_heater.json | 3 + .../item/uiv_fluid_passthrough_hatch.json | 3 + .../models/item/uiv_fluid_solidifier.json | 3 + .../gtceu/models/item/uiv_forge_hammer.json | 3 + .../gtceu/models/item/uiv_forming_press.json | 3 + .../gtceu/models/item/uiv_gas_collector.json | 3 + .../gtceu/models/item/uiv_input_bus.json | 3 + .../gtceu/models/item/uiv_input_hatch.json | 3 + .../gtceu/models/item/uiv_input_hatch_4x.json | 3 + .../gtceu/models/item/uiv_input_hatch_9x.json | 3 + .../item/uiv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/uiv_laser_engraver.json | 3 + .../assets/gtceu/models/item/uiv_lathe.json | 3 + .../gtceu/models/item/uiv_macerator.json | 3 + .../gtceu/models/item/uiv_machine_hull.json | 3 + .../assets/gtceu/models/item/uiv_mixer.json | 3 + .../gtceu/models/item/uiv_muffler_hatch.json | 3 + .../gtceu/models/item/uiv_ore_washer.json | 3 + .../gtceu/models/item/uiv_output_bus.json | 3 + .../gtceu/models/item/uiv_output_hatch.json | 3 + .../models/item/uiv_output_hatch_4x.json | 3 + .../models/item/uiv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/uiv_packer.json | 3 + .../gtceu/models/item/uiv_polarizer.json | 3 + .../gtceu/models/item/uiv_quantum_chest.json | 3 + .../gtceu/models/item/uiv_quantum_tank.json | 3 + .../gtceu/models/item/uiv_rock_crusher.json | 3 + .../gtceu/models/item/uiv_rotor_holder.json | 3 + .../assets/gtceu/models/item/uiv_scanner.json | 3 + .../assets/gtceu/models/item/uiv_sifter.json | 3 + .../item/uiv_substation_input_hatch_64a.json | 3 + .../item/uiv_substation_output_hatch_64a.json | 3 + .../models/item/uiv_thermal_centrifuge.json | 3 + .../models/item/uiv_transformer_16a.json | 3 + .../gtceu/models/item/uiv_transformer_1a.json | 3 + .../gtceu/models/item/uiv_transformer_2a.json | 3 + .../gtceu/models/item/uiv_transformer_4a.json | 3 + .../gtceu/models/item/uiv_wiremill.json | 3 + .../models/item/ulv_16a_energy_converter.json | 3 + .../models/item/ulv_1a_energy_converter.json | 3 + .../models/item/ulv_4a_energy_converter.json | 3 + .../models/item/ulv_8a_energy_converter.json | 3 + .../models/item/ulv_battery_buffer_16x.json | 3 + .../models/item/ulv_battery_buffer_4x.json | 3 + .../models/item/ulv_battery_buffer_8x.json | 3 + .../gtceu/models/item/ulv_charger_4x.json | 3 + .../models/item/ulv_energy_input_hatch.json | 3 + .../models/item/ulv_energy_output_hatch.json | 3 + .../gtceu/models/item/ulv_input_bus.json | 3 + .../gtceu/models/item/ulv_input_hatch.json | 3 + .../gtceu/models/item/ulv_machine_hull.json | 3 + .../gtceu/models/item/ulv_output_bus.json | 3 + .../gtceu/models/item/ulv_output_hatch.json | 3 + .../models/item/ulv_transformer_16a.json | 3 + .../gtceu/models/item/ulv_transformer_1a.json | 3 + .../gtceu/models/item/ulv_transformer_2a.json | 3 + .../gtceu/models/item/ulv_transformer_4a.json | 3 + .../item/uv_1024a_laser_source_hatch.json | 3 + .../item/uv_1024a_laser_target_hatch.json | 3 + .../models/item/uv_16a_energy_converter.json | 3 + .../models/item/uv_1a_energy_converter.json | 3 + .../item/uv_256a_laser_source_hatch.json | 3 + .../item/uv_256a_laser_target_hatch.json | 3 + .../item/uv_4096a_laser_source_hatch.json | 3 + .../item/uv_4096a_laser_target_hatch.json | 3 + .../models/item/uv_4a_energy_converter.json | 3 + .../models/item/uv_8a_energy_converter.json | 3 + .../gtceu/models/item/uv_alloy_smelter.json | 3 + .../gtceu/models/item/uv_arc_furnace.json | 3 + .../gtceu/models/item/uv_assembler.json | 3 + .../gtceu/models/item/uv_autoclave.json | 3 + .../models/item/uv_battery_buffer_16x.json | 3 + .../models/item/uv_battery_buffer_4x.json | 3 + .../models/item/uv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/uv_bender.json | 3 + .../assets/gtceu/models/item/uv_brewery.json | 3 + .../assets/gtceu/models/item/uv_canner.json | 3 + .../gtceu/models/item/uv_centrifuge.json | 3 + .../gtceu/models/item/uv_charger_4x.json | 3 + .../gtceu/models/item/uv_chemical_bath.json | 3 + .../models/item/uv_chemical_reactor.json | 3 + .../models/item/uv_circuit_assembler.json | 3 + .../gtceu/models/item/uv_compressor.json | 3 + .../assets/gtceu/models/item/uv_cutter.json | 3 + .../assets/gtceu/models/item/uv_diode.json | 3 + .../gtceu/models/item/uv_distillery.json | 3 + .../models/item/uv_dual_input_hatch.json | 3 + .../models/item/uv_dual_output_hatch.json | 3 + .../models/item/uv_electric_furnace.json | 3 + .../gtceu/models/item/uv_electrolyzer.json | 3 + .../item/uv_electromagnetic_separator.json | 3 + .../models/item/uv_energy_input_hatch.json | 3 + .../item/uv_energy_input_hatch_16a.json | 3 + .../models/item/uv_energy_input_hatch_4a.json | 3 + .../models/item/uv_energy_output_hatch.json | 3 + .../item/uv_energy_output_hatch_16a.json | 3 + .../item/uv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/uv_extractor.json | 3 + .../assets/gtceu/models/item/uv_extruder.json | 3 + .../gtceu/models/item/uv_fermenter.json | 3 + .../gtceu/models/item/uv_fluid_heater.json | 3 + .../item/uv_fluid_passthrough_hatch.json | 3 + .../models/item/uv_fluid_solidifier.json | 3 + .../gtceu/models/item/uv_forge_hammer.json | 3 + .../gtceu/models/item/uv_forming_press.json | 3 + .../gtceu/models/item/uv_fusion_reactor.json | 3 + .../gtceu/models/item/uv_gas_collector.json | 3 + .../gtceu/models/item/uv_input_bus.json | 3 + .../gtceu/models/item/uv_input_hatch.json | 3 + .../gtceu/models/item/uv_input_hatch_4x.json | 3 + .../gtceu/models/item/uv_input_hatch_9x.json | 3 + .../item/uv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/uv_laser_engraver.json | 3 + .../assets/gtceu/models/item/uv_lathe.json | 3 + .../gtceu/models/item/uv_macerator.json | 3 + .../gtceu/models/item/uv_machine_hull.json | 3 + .../assets/gtceu/models/item/uv_mixer.json | 3 + .../gtceu/models/item/uv_muffler_hatch.json | 3 + .../gtceu/models/item/uv_ore_washer.json | 3 + .../gtceu/models/item/uv_output_bus.json | 3 + .../gtceu/models/item/uv_output_hatch.json | 3 + .../gtceu/models/item/uv_output_hatch_4x.json | 3 + .../gtceu/models/item/uv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/uv_packer.json | 3 + .../gtceu/models/item/uv_parallel_hatch.json | 3 + .../gtceu/models/item/uv_polarizer.json | 3 + .../gtceu/models/item/uv_quantum_chest.json | 3 + .../gtceu/models/item/uv_quantum_tank.json | 3 + .../gtceu/models/item/uv_rock_crusher.json | 3 + .../gtceu/models/item/uv_rotor_holder.json | 3 + .../assets/gtceu/models/item/uv_scanner.json | 3 + .../assets/gtceu/models/item/uv_sifter.json | 3 + .../item/uv_substation_input_hatch_64a.json | 3 + .../item/uv_substation_output_hatch_64a.json | 3 + .../models/item/uv_thermal_centrifuge.json | 3 + .../gtceu/models/item/uv_transformer_16a.json | 3 + .../gtceu/models/item/uv_transformer_1a.json | 3 + .../gtceu/models/item/uv_transformer_2a.json | 3 + .../gtceu/models/item/uv_transformer_4a.json | 3 + .../assets/gtceu/models/item/uv_wiremill.json | 3 + .../models/item/uv_world_accelerator.json | 3 + .../item/uxv_1024a_laser_source_hatch.json | 3 + .../item/uxv_1024a_laser_target_hatch.json | 3 + .../models/item/uxv_16a_energy_converter.json | 3 + .../models/item/uxv_1a_energy_converter.json | 3 + .../item/uxv_256a_laser_source_hatch.json | 3 + .../item/uxv_256a_laser_target_hatch.json | 3 + .../item/uxv_4096a_laser_source_hatch.json | 3 + .../item/uxv_4096a_laser_target_hatch.json | 3 + .../models/item/uxv_4a_energy_converter.json | 3 + .../models/item/uxv_8a_energy_converter.json | 3 + .../gtceu/models/item/uxv_alloy_smelter.json | 3 + .../gtceu/models/item/uxv_arc_furnace.json | 3 + .../gtceu/models/item/uxv_assembler.json | 3 + .../gtceu/models/item/uxv_autoclave.json | 3 + .../models/item/uxv_battery_buffer_16x.json | 3 + .../models/item/uxv_battery_buffer_4x.json | 3 + .../models/item/uxv_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/uxv_bender.json | 3 + .../assets/gtceu/models/item/uxv_brewery.json | 3 + .../assets/gtceu/models/item/uxv_canner.json | 3 + .../gtceu/models/item/uxv_centrifuge.json | 3 + .../gtceu/models/item/uxv_charger_4x.json | 3 + .../gtceu/models/item/uxv_chemical_bath.json | 3 + .../models/item/uxv_chemical_reactor.json | 3 + .../models/item/uxv_circuit_assembler.json | 3 + .../gtceu/models/item/uxv_compressor.json | 3 + .../assets/gtceu/models/item/uxv_cutter.json | 3 + .../assets/gtceu/models/item/uxv_diode.json | 3 + .../gtceu/models/item/uxv_distillery.json | 3 + .../models/item/uxv_dual_input_hatch.json | 3 + .../models/item/uxv_dual_output_hatch.json | 3 + .../models/item/uxv_electric_furnace.json | 3 + .../gtceu/models/item/uxv_electrolyzer.json | 3 + .../item/uxv_electromagnetic_separator.json | 3 + .../models/item/uxv_energy_input_hatch.json | 3 + .../item/uxv_energy_input_hatch_16a.json | 3 + .../item/uxv_energy_input_hatch_4a.json | 3 + .../models/item/uxv_energy_output_hatch.json | 3 + .../item/uxv_energy_output_hatch_16a.json | 3 + .../item/uxv_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/uxv_extractor.json | 3 + .../gtceu/models/item/uxv_extruder.json | 3 + .../gtceu/models/item/uxv_fermenter.json | 3 + .../gtceu/models/item/uxv_fluid_heater.json | 3 + .../item/uxv_fluid_passthrough_hatch.json | 3 + .../models/item/uxv_fluid_solidifier.json | 3 + .../gtceu/models/item/uxv_forge_hammer.json | 3 + .../gtceu/models/item/uxv_forming_press.json | 3 + .../gtceu/models/item/uxv_gas_collector.json | 3 + .../gtceu/models/item/uxv_input_bus.json | 3 + .../gtceu/models/item/uxv_input_hatch.json | 3 + .../gtceu/models/item/uxv_input_hatch_4x.json | 3 + .../gtceu/models/item/uxv_input_hatch_9x.json | 3 + .../item/uxv_item_passthrough_hatch.json | 3 + .../gtceu/models/item/uxv_laser_engraver.json | 3 + .../assets/gtceu/models/item/uxv_lathe.json | 3 + .../gtceu/models/item/uxv_macerator.json | 3 + .../gtceu/models/item/uxv_machine_hull.json | 3 + .../assets/gtceu/models/item/uxv_mixer.json | 3 + .../gtceu/models/item/uxv_muffler_hatch.json | 3 + .../gtceu/models/item/uxv_ore_washer.json | 3 + .../gtceu/models/item/uxv_output_bus.json | 3 + .../gtceu/models/item/uxv_output_hatch.json | 3 + .../models/item/uxv_output_hatch_4x.json | 3 + .../models/item/uxv_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/uxv_packer.json | 3 + .../gtceu/models/item/uxv_polarizer.json | 3 + .../gtceu/models/item/uxv_quantum_chest.json | 3 + .../gtceu/models/item/uxv_quantum_tank.json | 3 + .../gtceu/models/item/uxv_rock_crusher.json | 3 + .../gtceu/models/item/uxv_rotor_holder.json | 3 + .../assets/gtceu/models/item/uxv_scanner.json | 3 + .../assets/gtceu/models/item/uxv_sifter.json | 3 + .../item/uxv_substation_input_hatch_64a.json | 3 + .../item/uxv_substation_output_hatch_64a.json | 3 + .../models/item/uxv_thermal_centrifuge.json | 3 + .../models/item/uxv_transformer_16a.json | 3 + .../gtceu/models/item/uxv_transformer_1a.json | 3 + .../gtceu/models/item/uxv_transformer_2a.json | 3 + .../gtceu/models/item/uxv_transformer_4a.json | 3 + .../gtceu/models/item/uxv_wiremill.json | 3 + .../gtceu/models/item/vacuum_freezer.json | 3 + .../assets/gtceu/models/item/wood_crate.json | 3 + .../assets/gtceu/models/item/wood_drum.json | 3 + .../models/item/wooden_multiblock_tank.json | 3 + .../gtceu/models/item/wooden_tank_valve.json | 3 + .../item/zpm_1024a_laser_source_hatch.json | 3 + .../item/zpm_1024a_laser_target_hatch.json | 3 + .../models/item/zpm_16a_energy_converter.json | 3 + .../models/item/zpm_1a_energy_converter.json | 3 + .../item/zpm_256a_laser_source_hatch.json | 3 + .../item/zpm_256a_laser_target_hatch.json | 3 + .../item/zpm_4096a_laser_source_hatch.json | 3 + .../item/zpm_4096a_laser_target_hatch.json | 3 + .../models/item/zpm_4a_energy_converter.json | 3 + .../models/item/zpm_8a_energy_converter.json | 3 + .../gtceu/models/item/zpm_alloy_smelter.json | 3 + .../gtceu/models/item/zpm_arc_furnace.json | 3 + .../gtceu/models/item/zpm_assembler.json | 3 + .../gtceu/models/item/zpm_autoclave.json | 3 + .../models/item/zpm_battery_buffer_16x.json | 3 + .../models/item/zpm_battery_buffer_4x.json | 3 + .../models/item/zpm_battery_buffer_8x.json | 3 + .../assets/gtceu/models/item/zpm_bender.json | 3 + .../assets/gtceu/models/item/zpm_brewery.json | 3 + .../assets/gtceu/models/item/zpm_canner.json | 3 + .../gtceu/models/item/zpm_centrifuge.json | 3 + .../gtceu/models/item/zpm_charger_4x.json | 3 + .../gtceu/models/item/zpm_chemical_bath.json | 3 + .../models/item/zpm_chemical_reactor.json | 3 + .../models/item/zpm_circuit_assembler.json | 3 + .../gtceu/models/item/zpm_compressor.json | 3 + .../assets/gtceu/models/item/zpm_cutter.json | 3 + .../assets/gtceu/models/item/zpm_diode.json | 3 + .../gtceu/models/item/zpm_distillery.json | 3 + .../models/item/zpm_dual_input_hatch.json | 3 + .../models/item/zpm_dual_output_hatch.json | 3 + .../models/item/zpm_electric_furnace.json | 3 + .../gtceu/models/item/zpm_electrolyzer.json | 3 + .../item/zpm_electromagnetic_separator.json | 3 + .../models/item/zpm_energy_input_hatch.json | 3 + .../item/zpm_energy_input_hatch_16a.json | 3 + .../item/zpm_energy_input_hatch_4a.json | 3 + .../models/item/zpm_energy_output_hatch.json | 3 + .../item/zpm_energy_output_hatch_16a.json | 3 + .../item/zpm_energy_output_hatch_4a.json | 3 + .../gtceu/models/item/zpm_extractor.json | 3 + .../gtceu/models/item/zpm_extruder.json | 3 + .../gtceu/models/item/zpm_fermenter.json | 3 + .../gtceu/models/item/zpm_fluid_heater.json | 3 + .../item/zpm_fluid_passthrough_hatch.json | 3 + .../models/item/zpm_fluid_solidifier.json | 3 + .../gtceu/models/item/zpm_forge_hammer.json | 3 + .../gtceu/models/item/zpm_forming_press.json | 3 + .../gtceu/models/item/zpm_fusion_reactor.json | 3 + .../gtceu/models/item/zpm_gas_collector.json | 3 + .../gtceu/models/item/zpm_input_bus.json | 3 + .../gtceu/models/item/zpm_input_hatch.json | 3 + .../gtceu/models/item/zpm_input_hatch_4x.json | 3 + .../gtceu/models/item/zpm_input_hatch_9x.json | 3 + .../item/zpm_item_passthrough_hatch.json | 3 + .../gtceu/models/item/zpm_laser_engraver.json | 3 + .../assets/gtceu/models/item/zpm_lathe.json | 3 + .../gtceu/models/item/zpm_macerator.json | 3 + .../gtceu/models/item/zpm_machine_hull.json | 3 + .../assets/gtceu/models/item/zpm_mixer.json | 3 + .../gtceu/models/item/zpm_muffler_hatch.json | 3 + .../gtceu/models/item/zpm_ore_washer.json | 3 + .../gtceu/models/item/zpm_output_bus.json | 3 + .../gtceu/models/item/zpm_output_hatch.json | 3 + .../models/item/zpm_output_hatch_4x.json | 3 + .../models/item/zpm_output_hatch_9x.json | 3 + .../assets/gtceu/models/item/zpm_packer.json | 3 + .../gtceu/models/item/zpm_parallel_hatch.json | 3 + .../gtceu/models/item/zpm_polarizer.json | 3 + .../gtceu/models/item/zpm_quantum_chest.json | 3 + .../gtceu/models/item/zpm_quantum_tank.json | 3 + .../gtceu/models/item/zpm_rock_crusher.json | 3 + .../gtceu/models/item/zpm_rotor_holder.json | 3 + .../assets/gtceu/models/item/zpm_scanner.json | 3 + .../assets/gtceu/models/item/zpm_sifter.json | 3 + .../item/zpm_substation_input_hatch_64a.json | 3 + .../item/zpm_substation_output_hatch_64a.json | 3 + .../models/item/zpm_thermal_centrifuge.json | 3 + .../models/item/zpm_transformer_16a.json | 3 + .../gtceu/models/item/zpm_transformer_1a.json | 3 + .../gtceu/models/item/zpm_transformer_2a.json | 3 + .../gtceu/models/item/zpm_transformer_4a.json | 3 + .../gtceu/models/item/zpm_wiremill.json | 3 + .../models/item/zpm_world_accelerator.json | 3 + .../java/com/gregtechceu/gtceu/GTCEu.java | 9 +- .../gtceu/api/block/ActiveBlock.java | 5 +- .../gtceu/api/block/IMachineBlock.java | 25 +- .../gtceu/api/block/MetaMachineBlock.java | 58 +- .../property/GTBlockStateProperties.java | 20 + .../gtceu/api/blockentity/IPaintable.java | 4 + .../blockentity/MetaMachineBlockEntity.java | 74 +- .../api/blockentity/PipeBlockEntity.java | 4 +- .../gtceu/api/capability/IControllable.java | 4 + .../api/capability/IHPCAComponentHatch.java | 4 + .../gtceu/api/capability/IWorkable.java | 4 + .../gtceu/api/cover/CoverBehavior.java | 7 +- .../gtceu/api/cover/CoverDefinition.java | 23 +- .../gregtechceu/gtceu/api/cover/IIOCover.java | 13 + .../gtceu/api/data/RotationState.java | 21 +- .../api/data/chemical/material/Material.java | 4 +- .../material/info/MaterialIconType.java | 9 +- .../gtceu/api/gui/GuiTextures.java | 2 +- .../api/gui/texture/ProspectingTexture.java | 25 +- .../gtceu/api/item/MetaMachineItem.java | 28 +- .../api/item/QuantumTankMachineItem.java | 4 - .../api/item/tool/IToolGridHighlight.java | 5 +- .../api/machine/IMachineBlockEntity.java | 30 +- .../gtceu/api/machine/MachineDefinition.java | 26 +- .../gtceu/api/machine/MetaMachine.java | 74 +- .../machine/MultiblockMachineDefinition.java | 6 +- .../api/machine/SimpleTieredMachine.java | 4 +- .../machine/feature/IExhaustVentMachine.java | 5 + .../feature/multiblock/IFluidRenderMulti.java | 24 + .../multiblock/IMaintenanceMachine.java | 2 + .../feature/multiblock/IMultiController.java | 3 + .../multiblock/IRotorHolderMachine.java | 5 + .../MultiblockControllerMachine.java | 17 +- .../multiblock/WorkableMultiblockMachine.java | 13 +- .../part/MultiblockPartMachine.java | 9 +- .../api/machine/steam/SimpleSteamMachine.java | 50 +- .../api/machine/steam/SteamBoilerMachine.java | 4 +- .../gtceu/api/machine/steam/SteamMachine.java | 3 + .../machine/steam/SteamWorkableMachine.java | 30 +- .../gtceu/api/machine/trait/MachineTrait.java | 12 + .../gtceu/api/machine/trait/RecipeLogic.java | 27 +- .../gtceu/api/pattern/Predicates.java | 6 +- .../api/pattern/util/RelativeDirection.java | 122 +-- .../gtceu/api/recipe/FacadeCoverRecipe.java | 37 +- .../registry/registrate/GTBlockBuilder.java | 127 +++ .../api/registry/registrate/GTRegistrate.java | 68 +- .../registry/registrate/MachineBuilder.java | 386 ++++++--- .../registrate/MultiblockMachineBuilder.java | 193 +++-- .../api/registry/registrate/package-info.java | 7 + .../provider/GTBlockstateProvider.java | 173 ++++ .../gregtechceu/gtceu/client/ClientProxy.java | 22 + .../gtceu/client/model/BaseBakedModel.java | 50 ++ .../gtceu/client/model/BasicUnbakedModel.java | 34 + .../model/IBlockEntityRendererBakedModel.java | 41 + .../gtceu/client/model/ModelUtil.java | 23 - .../gtceu/client/model/PipeModel.java | 111 +-- .../gtceu/client/model/SpriteCapturer.java | 38 + .../gtceu/client/model/SpriteOverrider.java | 20 - .../client/model/TextureOverrideModel.java | 66 ++ .../client/model/WorkableOverlayModel.java | 240 ------ .../client/model/item/FacadeUnbakedModel.java | 54 ++ .../machine/IControllerModelRenderer.java} | 13 +- .../model/machine/IMachineRendererModel.java | 101 +++ .../client/model/machine/MachineModel.java | 449 ++++++++++ .../model/machine/MachineModelLoader.java | 272 +++++++ .../model/machine/MachineRenderState.java | 35 + .../model/machine/UnbakedMachineModel.java | 87 ++ .../machine/multipart/AndPartCondition.java | 28 + .../multipart/KeyValuePartCondition.java | 76 ++ .../multipart/MultiPartBakedModel.java | 220 +++++ .../machine/multipart/MultiPartSelector.java | 88 ++ .../multipart/MultiPartUnbakedModel.java | 70 ++ .../machine/multipart/OrPartCondition.java | 28 + .../machine/multipart/PartCondition.java | 17 + .../model/machine/multipart/package-info.java | 7 + .../machine/overlays/EnergyIOOverlay.java | 71 ++ .../model/machine/overlays/HPCAOverlay.java | 97 +++ .../machine/overlays/WorkableOverlays.java | 134 +++ .../client/model/machine/package-info.java | 7 + .../machine/variant/MultiVariantModel.java | 91 +++ .../model/machine/variant/VariantState.java | 93 +++ .../gtceu/client/model/package-info.java | 7 + .../BlockEntityWithBERModelRenderer.java | 99 +++ .../renderer/BlockHighlightRenderer.java | 262 +++--- .../renderer/BlockStateModelRenderer.java | 47 -- .../client/renderer/GTRendererProvider.java | 38 - .../renderer/ItemWithBERModelRenderer.java | 70 ++ .../MultiblockInWorldPreviewRenderer.java | 2 +- .../renderer/block/CTMModelRenderer.java | 25 - .../renderer/block/FluidBlockRenderer.java | 89 +- .../renderer/block/MaterialBlockRenderer.java | 2 +- .../renderer/block/OreBlockRenderer.java | 2 +- .../renderer/block/PipeBlockRenderer.java | 13 +- .../renderer/block/SurfaceRockRenderer.java | 2 +- .../block/TextureOverrideRenderer.java | 141 ---- .../renderer/cover/ConveyorCoverRenderer.java | 67 -- .../renderer/cover/FacadeCoverRenderer.java | 182 +++-- .../cover/FluidRegulatorCoverRenderer.java | 59 -- .../client/renderer/cover/ICoverRenderer.java | 28 +- .../renderer/cover/ICoverableRenderer.java | 64 +- .../renderer/cover/IOCoverRenderer.java | 89 ++ .../renderer/cover/PumpCoverRenderer.java | 59 -- .../renderer/cover/RobotArmCoverRenderer.java | 64 -- .../renderer/cover/SimpleCoverRenderer.java | 60 +- .../machine/BatteryBufferRenderer.java | 42 - .../renderer/machine/ChargerRenderer.java | 91 --- .../renderer/machine/ConverterRenderer.java | 91 --- .../renderer/machine/CrateRenderer.java | 44 - .../renderer/machine/DiodeRenderer.java | 64 -- .../renderer/machine/DynamicRender.java | 59 ++ .../renderer/machine/DynamicRenderHelper.java | 56 ++ .../machine/DynamicRenderManager.java | 59 ++ .../renderer/machine/DynamicRenderType.java | 21 + .../renderer/machine/HPCAPartRenderer.java | 115 --- .../renderer/machine/IPartRenderer.java | 46 -- .../renderer/machine/LargeBoilerRenderer.java | 73 -- .../renderer/machine/LargeMinerRenderer.java | 43 - .../renderer/machine/MachineRenderer.java | 210 ----- .../machine/MaintenanceHatchPartRenderer.java | 55 -- .../renderer/machine/MinerRenderer.java | 70 -- .../machine/OverlayEnergyIORenderer.java | 59 -- .../machine/OverlaySteamMachineRenderer.java | 41 - .../OverlayTieredActiveMachineRenderer.java | 58 -- .../machine/OverlayTieredMachineRenderer.java | 52 -- .../PrimitiveBlastFurnaceRenderer.java | 69 -- .../machine/PumpHatchPartRenderer.java | 59 -- .../machine/QuantumChestRenderer.java | 169 ---- .../renderer/machine/QuantumTankRenderer.java | 194 ----- .../machine/RotorHolderMachineRenderer.java | 81 -- .../SimpleGeneratorMachineRenderer.java | 33 - .../machine/SteamHullMachineRenderer.java | 36 - .../renderer/machine/SteamMinerRenderer.java | 36 - .../machine/TieredHullMachineRenderer.java | 36 - .../renderer/machine/TransformerRenderer.java | 69 -- .../WorkableCasingMachineRenderer.java | 69 -- .../WorkableSidedCasingMachineRenderer.java | 73 -- .../machine/WorkableSteamMachineRenderer.java | 66 -- .../WorkableTieredHullMachineRenderer.java | 61 -- .../machine/WorldAcceleratorRenderer.java | 64 -- .../gcym/LargeChemicalBathRenderer.java | 93 --- .../machine/gcym/LargeMixerRenderer.java | 93 --- .../machine/impl/BoilerMultiPartRender.java | 144 ++++ .../machine/impl/FluidAreaRender.java | 120 +++ .../FusionRingRender.java} | 78 +- .../machine/impl/QuantumChestItemRender.java | 159 ++++ .../machine/impl/QuantumTankFluidRender.java | 140 ++++ .../renderer/machine/impl/package-info.java | 7 + .../client/renderer/machine/package-info.java | 7 + .../gtceu/client/util/AssetEventListener.java | 44 + .../util/ExtendedBlockModelRotation.java | 70 ++ .../client/util/FacadeBlockAndTintGetter.java | 73 ++ .../gtceu/client/util/GTQuadTransformers.java | 61 ++ .../gtceu/client/util/ModelUtils.java | 91 +++ .../client/util/PoseStackExtensions.java | 11 + .../gtceu/client/util/RenderBufferHelper.java | 101 ++- .../gtceu/client/util/RenderUtil.java | 108 ++- .../gtceu/client/util/StaticFaceBakery.java | 326 ++++---- .../client/util/VariantRotationHelpers.java | 67 ++ .../gregtechceu/gtceu/common/CommonProxy.java | 6 +- .../gtceu/common/block/BoilerFireboxType.java | 19 + .../gtceu/common/block/LampBlock.java | 13 +- .../gtceu/common/block/RubberLogBlock.java | 3 +- .../gtceu/common/commands/GTCommands.java | 3 +- .../gtceu/common/cover/ConveyorCover.java | 3 +- .../gtceu/common/cover/FacadeCover.java | 6 +- .../gtceu/common/cover/PumpCover.java | 3 +- .../cover/voiding/FluidVoidingCover.java | 5 +- .../cover/voiding/ItemVoidingCover.java | 5 +- .../gtceu/common/data/GTBlocks.java | 121 ++- .../gtceu/common/data/GTCovers.java | 173 ++-- .../gtceu/common/data/GTItems.java | 6 +- .../gtceu/common/data/GTMachines.java | 180 ++-- .../common/data/GTSyncedFieldAccessors.java | 2 + .../common/data/machines/GCYMMachines.java | 253 ++---- .../common/data/machines/GTAEMachines.java | 20 +- .../common/data/machines/GTMachineUtils.java | 100 ++- .../common/data/machines/GTMultiMachines.java | 108 ++- .../data/machines/GTResearchMachines.java | 86 +- .../common/data/models/GTMachineModels.java | 770 ++++++++++++++++++ .../common/data/{ => models}/GTModels.java | 141 ++-- .../common/item/FacadeItemBehaviour.java | 106 ++- .../common/item/PortableScannerBehavior.java | 4 +- .../machine/electric/BlockBreakerMachine.java | 4 +- .../machine/electric/ChargerMachine.java | 17 +- .../machine/electric/ConverterMachine.java | 9 +- .../machine/electric/FisherMachine.java | 4 +- .../electric/ItemCollectorMachine.java | 19 +- .../common/machine/electric/PumpMachine.java | 6 +- .../machine/electric/TransformerMachine.java | 6 +- .../electric/WorldAcceleratorMachine.java | 13 +- .../gcym/LargeChemicalBathMachine.java | 22 +- .../electric/gcym/LargeMixerMachine.java | 10 +- .../part/AutoMaintenanceHatchPartMachine.java | 5 +- .../CleaningMaintenanceHatchPartMachine.java | 4 +- .../multiblock/part/DiodePartMachine.java | 49 +- .../part/MaintenanceHatchPartMachine.java | 17 +- .../part/RotorHolderPartMachine.java | 21 +- .../part/hpca/HPCAComponentPartMachine.java | 26 + .../PrimitiveBlastFurnaceMachine.java | 42 +- .../machine/multiblock/steam/BoilerType.java | 66 -- .../machine/steam/SteamSolarBoiler.java | 4 +- .../common/machine/storage/BufferMachine.java | 4 +- .../common/machine/storage/CrateMachine.java | 7 +- .../common/machine/storage/DrumMachine.java | 5 +- .../machine/storage/QuantumChestMachine.java | 4 +- .../machine/storage/QuantumTankMachine.java | 4 +- .../common/machine/trait/ConverterTrait.java | 1 + .../common/pipelike/cable/Insulation.java | 4 +- .../gtceu/core/mixins/BlockModelMixin.java | 51 +- .../core/mixins/GuiGraphicsAccessor.java | 9 - .../gtceu/core/mixins/ModelManagerMixin.java | 2 +- .../RegistrateDataProviderAccessor.java | 16 + .../core/mixins/VariantDeserializerMixin.java | 30 + .../forge/ConfiguredModelBuilderAccessor.java | 20 + .../forge/ConfiguredModelListAccessor.java | 16 + .../mixins/forge/ModelBuilderAccessor.java | 15 + .../ldlib/CustomBakedModelAccessor.java | 15 + .../gtceu/data/GregTechDatagen.java | 17 +- .../data/model/BlockstateModelLoader.java | 35 + .../model/builder/MachineModelBuilder.java | 763 +++++++++++++++++ .../data/model/builder/PartCondition.java | 128 +++ .../gtceu/data/pack/GTDynamicDataPack.java | 25 +- .../data/pack/GTDynamicResourcePack.java | 90 +- .../integration/kjs/GregTechKubeJSPlugin.java | 42 +- .../builders/block/ActiveBlockBuilder.java | 3 +- .../kjs/builders/block/CoilBlockBuilder.java | 4 +- .../machine/KJSSteamMachineBuilder.java | 8 +- .../machine/KJSTieredMachineBuilder.java | 35 +- .../machine/KJSTieredMultiblockBuilder.java | 37 +- .../machine/KJSWrappingMachineBuilder.java | 19 +- .../machine/KJSWrappingMultiblockBuilder.java | 15 +- .../top/provider/StainedColorProvider.java | 1 + .../syncdata/MachineRenderStatePayload.java | 41 + .../gtceu/utils/DummyMachineBlockEntity.java | 25 +- .../gtceu/utils/GTMatrixUtils.java | 56 +- .../utils/data/RuntimeBlockStateProvider.java | 51 ++ .../utils/data/RuntimeExistingFileHelper.java | 86 ++ .../ConcurrentWeakIdentityHashMap.java | 8 +- .../resources/META-INF/accesstransformer.cfg | 2 + .../block/advanced_computer_casing.json | 57 +- .../gtceu/models/block/computer_casing.json | 72 +- .../assets/gtceu/models/block/cube/all.json | 12 - .../gtceu/models/block/cube/default.json | 52 -- .../gtceu/models/block/cube/tinted/all_0.json | 53 +- .../models/block/cube/tinted/default.json | 59 +- .../gtceu/models/block/cube/uvlock.json | 52 -- .../gtceu/models/block/cube/uvlock_all.json | 12 - .../models/block/cube_2_layer/default.json | 17 +- .../all_top.json => tinted_bot/all.json} | 4 +- .../all.json => tinted_bot/all_bot.json} | 3 +- .../bottom_top.json} | 7 +- .../cube_2_layer/tinted_bot/default.json | 17 +- .../tinted_both/all_translucent.json | 19 +- .../cube_2_layer/tinted_both/default.json | 17 +- .../cube_2_layer/tinted_top/default.json | 30 - .../gtceu/models/block/fire_box_active.json | 34 +- .../gtceu/models/block/hermetic_casing.json | 35 +- .../block/machine/block_breaker_machine.json | 31 - .../gtceu/models/block/machine/buffer.json | 49 -- .../block/machine/crate/metal_crate.json | 6 - .../block/machine/crate/wooden_crate.json | 6 - .../models/block/machine/creative_chest.json | 121 --- .../creative_computation_provider.json | 51 -- .../models/block/machine/creative_energy.json | 45 - .../models/block/machine/creative_tank.json | 121 --- .../block/machine/electric_gear_box_16a.json | 144 ---- .../block/machine/electric_gear_box_2a.json | 144 ---- .../block/machine/electric_gear_box_32a.json | 144 ---- .../block/machine/electric_gear_box_8a.json | 144 ---- .../models/block/machine/fisher_machine.json | 39 - .../models/block/machine/hull_machine.json | 23 - .../machine/kinetic_electric_machine.json | 138 ---- .../block/machine/large_miner_active.json | 53 ++ .../machine/ld_fluid_endpoint_machine.json | 51 -- .../machine/ld_item_endpoint_machine.json | 51 -- ...long_distance_fluid_pipeline_endpoint.json | 10 + .../long_distance_item_pipeline_endpoint.json | 10 + .../models/block/machine/metal_drum.json | 18 - .../machine/part/auto_maintenance_hatch.json | 7 + .../part/cleaning_maintenance_hatch.json | 7 + .../block/machine/part/coke_oven_hatch.json | 56 +- .../machine/part/computation_data_hatch.json | 10 +- .../part/configurable_maintenance_hatch.json | 7 + .../block/machine/part/data_access_hatch.json | 10 +- .../part/data_access_hatch_creative.json | 10 +- .../block/machine/part/dual_hatch.export.json | 8 - .../block/machine/part/dual_hatch.import.json | 8 - .../block/machine/part/dual_input_hatch.json | 7 + .../block/machine/part/dual_output_hatch.json | 7 + .../machine/part/energy_hatch.input.json | 7 - .../machine/part/energy_hatch.input_16a.json | 7 - .../machine/part/energy_hatch.input_4a.json | 7 - .../machine/part/energy_hatch.input_64a.json | 7 - .../machine/part/energy_hatch.output.json | 7 - .../machine/part/energy_hatch.output_16a.json | 7 - .../machine/part/energy_hatch.output_4a.json | 7 - .../machine/part/energy_hatch.output_64a.json | 7 - .../machine/part/energy_input_hatch.json | 7 + .../machine/part/energy_input_hatch_16a.json | 7 + .../machine/part/energy_input_hatch_4a.json | 7 + .../machine/part/energy_input_hatch_64a.json | 7 + .../machine/part/energy_output_hatch.json | 7 + .../machine/part/energy_output_hatch_16a.json | 7 + .../machine/part/energy_output_hatch_4a.json | 7 + .../machine/part/energy_output_hatch_64a.json | 7 + .../machine/part/fluid_hatch.export.json | 8 - .../machine/part/fluid_hatch.export_4x.json | 8 - .../machine/part/fluid_hatch.export_9x.json | 8 - .../machine/part/fluid_hatch.import.json | 8 - .../machine/part/fluid_hatch.import_4x.json | 8 - .../machine/part/fluid_hatch.import_9x.json | 8 - .../machine/part/fluid_passthrough_hatch.json | 64 +- .../gtceu/models/block/machine/part/hull.json | 10 +- .../block/machine/part/item_bus.export.json | 8 - .../block/machine/part/item_bus.import.json | 8 - .../machine/part/item_passthrough_hatch.json | 64 +- .../block/machine/part/kinetic_input_box.json | 155 ---- .../machine/part/kinetic_output_box.json | 155 ---- .../machine/part/laser_hatch.source.json | 7 - .../machine/part/laser_hatch.target.json | 7 - .../machine/part/laser_source_hatch.json | 7 + .../machine/part/laser_target_hatch.json | 7 + .../machine/part/maintenance.cleaning.json | 8 - .../part/maintenance.configurable.json | 7 - .../machine/part/maintenance.full_auto.json | 8 - .../block/machine/part/maintenance.json | 7 - .../block/machine/part/maintenance_hatch.json | 7 + .../machine/part/me_fluid_hatch.export.json | 7 - .../machine/part/me_fluid_hatch.import.json | 7 - .../machine/part/me_item_bus.export.json | 7 - .../machine/part/me_item_bus.import.json | 7 - .../block/machine/part/me_pattern_buffer.json | 6 - .../machine/part/me_pattern_buffer_proxy.json | 6 - .../block/machine/part/muffler_hatch.json | 8 +- .../block/machine/part/object_holder.json | 6 - .../machine/part/object_holder_active.json | 6 - .../machine/part/optical_data_hatch.json | 10 +- .../models/block/machine/part/pump_hatch.json | 30 +- .../block/machine/part/steam_hatch.json | 8 +- .../models/block/machine/pump_machine.json | 51 -- .../models/block/machine/quantum_chest.json | 121 --- .../models/block/machine/quantum_tank.json | 121 --- .../machine/template/crate/metal_crate.json | 6 + .../template/crate/metal_crate_taped.json | 7 + .../machine/template/crate/wooden_crate.json | 6 + .../template/crate/wooden_crate_taped.json | 7 + .../machine/template/cube_all/sided.json | 56 ++ .../machine/template/cube_all/single.json | 16 + .../machine/template/drum/metal_drum.json | 11 + .../machine/template/drum/wooden_drum.json | 8 + .../machine/template/hpca_part_machine.json | 33 + .../template/pipeline_endpoint_machine.json | 58 ++ .../block/machine/template/pump_machine.json | 48 ++ .../template/quantum/creative_container.json | 10 + .../template/quantum/quantum_chest.json | 6 + .../template/quantum/quantum_container.json | 117 +++ .../template/quantum/quantum_tank.json | 6 + .../machine/template/rotor_holder/block.json | 27 + .../template/rotor_holder/overlay.json | 23 + .../template/rotor_holder/rotor_idle.json | 15 + .../rotor_holder/rotor_idle_emissive.json | 14 + .../template/rotor_holder/rotor_spinning.json | 6 + .../rotor_holder/rotor_spinning_emissive.json | 6 + .../block/machine/template/sided/sided.json | 56 ++ .../block/machine/template/sided/single.json | 16 + .../template/transformer_like_machine.json | 53 ++ .../models/block/machine/wooden_drum.json | 12 - .../block/material_sets/dull/block.json | 2 +- .../block/material_sets/fine/block.json | 2 +- .../gtceu/models/block/ore_emissive.json | 55 +- .../models/block/overlay/2_layer/front.json | 31 + .../block/overlay/2_layer/front_emissive.json | 33 + .../2_layer/front_emissive_color_ring.json | 45 + .../block/overlay/2_layer/tinted/front.json | 31 + .../block/overlay/2_layer/top_emissive.json | 33 + .../gtceu/models/block/overlay/front.json | 21 +- .../block/overlay/front_color_ring.json | 52 +- .../models/block/overlay/front_emissive.json | 22 +- .../overlay/front_emissive_color_ring.json | 27 +- .../block/overlay/only/2_layer/front.json | 19 + .../overlay/only/2_layer/front_emissive.json | 21 + .../2_layer/front_emissive_color_ring.json | 33 + .../models/block/overlay/only/front.json | 12 + .../block/overlay/only/front_color_ring.json | 24 + .../block/overlay/only/front_emissive.json | 14 + .../only/front_emissive_color_ring.json | 26 + .../models/block/overlay/tinted/front_2.json | 20 - .../models/block/overlay/top_emissive.json | 26 + .../models/block/variant/assembly_line.json | 2 +- .../block/variant/electrolytic_cell.json | 2 +- .../variant/electrolytic_cell_active.json | 2 +- .../models/block/variant/engine_intake.json | 2 +- .../block/variant/engine_intake_active.json | 2 +- .../block/variant/extreme_engine_intake.json | 2 +- .../variant/extreme_engine_intake_active.json | 2 +- .../gtceu/models/block/variant/heat_vent.json | 2 +- .../gtceu/models/item/facade_cover.json | 48 ++ .../gtceu/textures/block/cable/wire.png | Bin 353 -> 0 bytes ...ity_detector.png => activity_detector.png} | Bin ...ced.png => activity_detector_advanced.png} | Bin ...> activity_detector_advanced_emissive.png} | Bin ...ity_detector_advanced_emissive.png.mcmeta} | 0 ...ive.png => activity_detector_emissive.png} | Bin ... => activity_detector_emissive.png.mcmeta} | 0 .../block/cover/{overlay_arm.png => arm.png} | Bin ...rlay_arm_emissive.png => arm_emissive.png} | Bin ...ive.png.mcmeta => arm_emissive.png.mcmeta} | 0 ...rlay_arm_inverted.png => arm_inverted.png} | Bin ...emissive.png => arm_inverted_emissive.png} | Bin ...cmeta => arm_inverted_emissive.png.mcmeta} | 0 ...{overlay_controller.png => controller.png} | Bin .../{overlay_conveyor.png => conveyor.png} | Bin ...yor_emissive.png => conveyor_emissive.png} | Bin ...ng.mcmeta => conveyor_emissive.png.mcmeta} | 0 ...yor_inverted.png => conveyor_inverted.png} | Bin ...ive.png => conveyor_inverted_emissive.png} | Bin ... => conveyor_inverted_emissive.png.mcmeta} | 0 .../block/cover/cover_pump_inverted.png | Bin 1114 -> 0 bytes .../{overlay_crafting.png => crafting.png} | Bin .../{overlay_display.png => display.png} | Bin ...play_emissive.png => display_emissive.png} | Bin ...png.mcmeta => display_emissive.png.mcmeta} | 0 ...er_fluid_link.png => ender_fluid_link.png} | Bin ...png.mcmeta => ender_fluid_link.png.mcmeta} | 0 ...sive.png => ender_fluid_link_emissive.png} | Bin ...a => ender_fluid_link_emissive.png.mcmeta} | 0 ...nergy_detector.png => energy_detector.png} | Bin ...anced.png => energy_detector_advanced.png} | Bin .../cover/{overlay_filter.png => filter.png} | Bin ..._fluid_detector.png => fluid_detector.png} | Bin ...vanced.png => fluid_detector_advanced.png} | Bin ...rlay_fluid_filter.png => fluid_filter.png} | Bin ...ay_fluid_voiding.png => fluid_voiding.png} | Bin ...ng.png.mcmeta => fluid_voiding.png.mcmeta} | 0 ...dvanced.png => fluid_voiding_advanced.png} | Bin ...meta => fluid_voiding_advanced.png.mcmeta} | 0 ...ng => fluid_voiding_advanced_emissive.png} | Bin ..._infinite_water.png => infinite_water.png} | Bin ...issive.png => infinite_water_emissive.png} | Bin ...eta => infinite_water_emissive.png.mcmeta} | 0 ...ay_item_detector.png => item_detector.png} | Bin ...dvanced.png => item_detector_advanced.png} | Bin ...verlay_item_filter.png => item_filter.png} | Bin ...rlay_item_voiding.png => item_voiding.png} | Bin ...ing.png.mcmeta => item_voiding.png.mcmeta} | 0 ...advanced.png => item_voiding_advanced.png} | Bin ...cmeta => item_voiding_advanced.png.mcmeta} | 0 ...png => item_voiding_advanced_emissive.png} | Bin ..._detector.png => maintenance_detector.png} | Bin ...y_filter.png => ore_dictionary_filter.png} | Bin .../cover/overlay_pump_inverted.png.mcmeta | 5 - .../cover/{overlay_pump.png => pump.png} | Bin ...mp_inverted.png.mcmeta => pump.png.mcmeta} | 0 ...ay_pump_inverted.png => pump_inverted.png} | Bin ...mp.png.mcmeta => pump_inverted.png.mcmeta} | 0 .../cover/{overlay_screen.png => screen.png} | Bin .../{overlay_shutter.png => shutter.png} | Bin ..._item_filter.png => smart_item_filter.png} | Bin ...verlay_solar_panel.png => solar_panel.png} | Bin .../cover/{storage_cover.png => storage.png} | Bin .../machines/block_breaker/overlay_front.png | Bin 0 -> 347 bytes .../block_breaker/overlay_front_active.png | Bin 0 -> 599 bytes .../overlay_front_active.png.mcmeta} | 0 .../overlay_bottom.png | Bin 0 -> 1016 bytes ..._down.mcmeta => overlay_bottom.png.mcmeta} | 2 +- .../overlay_down.png | Bin 223 -> 0 bytes .../overlay_front_active_emissive.png | Bin 126 -> 0 bytes .../rock_crusher/overlay_front_emissive.png | Bin 126 -> 0 bytes .../machines/steam_miner/overlay_bottom.png | Bin 0 -> 1016 bytes ..._down.mcmeta => overlay_bottom.png.mcmeta} | 2 +- .../machines/steam_miner/overlay_down.png | Bin 223 -> 0 bytes .../large_turbine/blade_active/1.png | Bin 1174 -> 0 bytes .../large_turbine/blade_active/1.png.mcmeta | 3 - .../large_turbine/blade_active/2.png | Bin 2472 -> 0 bytes .../large_turbine/blade_active/2.png.mcmeta | 3 - .../large_turbine/blade_active/3.png | Bin 1187 -> 0 bytes .../large_turbine/blade_active/3.png.mcmeta | 3 - .../large_turbine/blade_active/4.png | Bin 2507 -> 0 bytes .../large_turbine/blade_active/4.png.mcmeta | 3 - .../large_turbine/blade_active/5.png | Bin 2293 -> 0 bytes .../large_turbine/blade_active/5.png.mcmeta | 3 - .../large_turbine/blade_active/6.png | Bin 2674 -> 0 bytes .../large_turbine/blade_active/6.png.mcmeta | 3 - .../large_turbine/blade_active/7.png | Bin 1271 -> 0 bytes .../large_turbine/blade_active/7.png.mcmeta | 3 - .../large_turbine/blade_active/8.png | Bin 2500 -> 0 bytes .../large_turbine/blade_active/8.png.mcmeta | 3 - .../large_turbine/blade_active/9.png | Bin 1340 -> 0 bytes .../large_turbine/blade_active/9.png.mcmeta | 3 - .../large_turbine/template_bottom.png | Bin 6473 -> 0 bytes .../large_turbine/template_middle.png | Bin 7463 -> 0 bytes .../multiblock/large_turbine/template_top.png | Bin 5967 -> 0 bytes .../{overlay_bottom.png => overlay.png} | Bin ...ttom_emissive.png => overlay_emissive.png} | Bin ...png.mcmeta => overlay_emissive.png.mcmeta} | 0 .../block/pipe/ld_fluid_pipe/overlay_left.png | Bin 5548 -> 0 bytes .../ld_fluid_pipe/overlay_left_emissive.png | Bin 676 -> 0 bytes .../pipe/ld_fluid_pipe/overlay_right.png | Bin 6159 -> 0 bytes .../ld_fluid_pipe/overlay_right.png.mcmeta | 8 - .../ld_fluid_pipe/overlay_right_emissive.png | Bin 5713 -> 0 bytes .../block/pipe/ld_fluid_pipe/overlay_top.png | Bin 6130 -> 0 bytes .../pipe/ld_fluid_pipe/overlay_top.png.mcmeta | 8 - .../ld_fluid_pipe/overlay_top_emissive.png | Bin 5632 -> 0 bytes .../{overlay_top.png => overlay.png} | Bin .../pipe/ld_item_pipe/overlay_bottom.png | Bin 6159 -> 0 bytes .../ld_item_pipe/overlay_bottom.png.mcmeta | 8 - ...ttom_emissive.png => overlay_emissive.png} | Bin .../overlay_emissive.png.mcmeta} | 0 .../block/pipe/ld_item_pipe/overlay_left.png | Bin 5672 -> 0 bytes .../pipe/ld_item_pipe/overlay_left.png.mcmeta | 8 - .../ld_item_pipe/overlay_left_emissive.png | Bin 685 -> 0 bytes .../block/pipe/ld_item_pipe/overlay_right.png | Bin 6285 -> 0 bytes .../ld_item_pipe/overlay_right.png.mcmeta | 8 - .../ld_item_pipe/overlay_right_emissive.png | Bin 5726 -> 0 bytes .../pipe/ld_item_pipe/overlay_top.png.mcmeta | 8 - .../ld_item_pipe/overlay_top_emissive.png | Bin 5669 -> 0 bytes src/main/resources/gtceu.mixins.json | 6 + 4236 files changed, 105286 insertions(+), 8304 deletions(-) create mode 100644 lombok.config create mode 100644 src/generated/resources/assets/gtceu/blockstates/active_transformer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/assembly_line.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/bronze_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/bronze_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/cleanroom.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/coke_oven.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/cracker.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/creative_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/creative_energy.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/creative_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/data_bank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/distillation_tower.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_pump.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/gold_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_pump.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_brewer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_material_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/large_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_pump.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/multi_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_miner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_pump.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/network_switch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/object_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/power_substation.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/primitive_pump.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/pump_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/research_station.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_grinder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steam_oven.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/titanium_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/titanium_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/wood_crate.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/wood_drum.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_bender.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_canner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_diode.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_packer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json create mode 100644 src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/cracker.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/data_bank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/network_switch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/object_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/power_substation.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/research_station.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json create mode 100644 src/generated/resources/assets/gtceu/models/item/active_transformer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/aluminium_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/aluminium_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/assembly_line.json create mode 100644 src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/bronze_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/bronze_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/cleanroom.json create mode 100644 src/generated/resources/assets/gtceu/models/item/coke_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/cracker.json create mode 100644 src/generated/resources/assets/gtceu/models/item/creative_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json create mode 100644 src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/creative_energy.json create mode 100644 src/generated/resources/assets/gtceu/models/item/creative_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/data_bank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/distillation_tower.json create mode 100644 src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/gold_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/implosion_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_brewer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_electromagnet.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_material_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/large_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json create mode 100644 src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_large_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/multi_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_buffer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_combustion.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fisher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_item_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_miner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_super_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_super_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/network_switch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/object_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/opv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/power_substation.json create mode 100644 src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/primitive_pump.json create mode 100644 src/generated/resources/assets/gtceu/models/item/pump_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/item/research_station.json create mode 100644 src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_grinder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steam_oven.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/models/item/titanium_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/titanium_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uev_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/wood_crate.json create mode 100644 src/generated/resources/assets/gtceu/models/item/wood_drum.json create mode 100644 src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_bender.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_brewery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_canner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_compressor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_cutter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_diode.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_distillery.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_extractor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_extruder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_lathe.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_macerator.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_mixer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_packer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_scanner.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_sifter.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json create mode 100644 src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json create mode 100644 src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java rename src/main/java/com/gregtechceu/gtceu/client/{renderer/machine/IControllerRenderer.java => model/machine/IControllerModelRenderer.java} (57%) create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java rename src/main/java/com/gregtechceu/gtceu/client/renderer/machine/{FusionReactorRenderer.java => impl/FusionRingRender.java} (51%) create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java rename src/main/java/com/gregtechceu/gtceu/common/data/{ => models}/GTModels.java (70%) delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java create mode 100644 src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java create mode 100644 src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java create mode 100644 src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java delete mode 100644 src/main/resources/assets/gtceu/models/block/cube/all.json delete mode 100644 src/main/resources/assets/gtceu/models/block/cube/default.json delete mode 100644 src/main/resources/assets/gtceu/models/block/cube/uvlock.json delete mode 100644 src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json rename src/main/resources/assets/gtceu/models/block/cube_2_layer/{tinted_top/all_top.json => tinted_bot/all.json} (75%) rename src/main/resources/assets/gtceu/models/block/cube_2_layer/{tinted_top/all.json => tinted_bot/all_bot.json} (68%) rename src/main/resources/assets/gtceu/models/block/cube_2_layer/{tinted_top/orientable.json => tinted_bot/bottom_top.json} (78%) delete mode 100644 src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/buffer.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/creative_chest.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/creative_energy.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/creative_tank.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/hull_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/metal_drum.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/pump_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json delete mode 100644 src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/front.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json delete mode 100644 src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/item/facade_cover.json delete mode 100644 src/main/resources/assets/gtceu/textures/block/cable/wire.png rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector.png => activity_detector.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector_advanced.png => activity_detector_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector_advanced_emissive.png => activity_detector_advanced_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector_advanced_emissive.png.mcmeta => activity_detector_advanced_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector_emissive.png => activity_detector_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_activity_detector_emissive.png.mcmeta => activity_detector_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm.png => arm.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm_emissive.png => arm_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm_emissive.png.mcmeta => arm_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm_inverted.png => arm_inverted.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm_inverted_emissive.png => arm_inverted_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_arm_inverted_emissive.png.mcmeta => arm_inverted_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_controller.png => controller.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor.png => conveyor.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor_emissive.png => conveyor_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor_emissive.png.mcmeta => conveyor_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor_inverted.png => conveyor_inverted.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor_inverted_emissive.png => conveyor_inverted_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_conveyor_inverted_emissive.png.mcmeta => conveyor_inverted_emissive.png.mcmeta} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_crafting.png => crafting.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_display.png => display.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_display_emissive.png => display_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_display_emissive.png.mcmeta => display_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_ender_fluid_link.png => ender_fluid_link.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_ender_fluid_link.png.mcmeta => ender_fluid_link.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_ender_fluid_link_emissive.png => ender_fluid_link_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_ender_fluid_link_emissive.png.mcmeta => ender_fluid_link_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_energy_detector.png => energy_detector.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_energy_detector_advanced.png => energy_detector_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_filter.png => filter.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_detector.png => fluid_detector.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_detector_advanced.png => fluid_detector_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_filter.png => fluid_filter.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_voiding.png => fluid_voiding.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_voiding.png.mcmeta => fluid_voiding.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_voiding_advanced.png => fluid_voiding_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_voiding_advanced.png.mcmeta => fluid_voiding_advanced.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_fluid_voiding_advanced_emissive.png => fluid_voiding_advanced_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_infinite_water.png => infinite_water.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_infinite_water_emissive.png => infinite_water_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_infinite_water_emissive.png.mcmeta => infinite_water_emissive.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_detector.png => item_detector.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_detector_advanced.png => item_detector_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_filter.png => item_filter.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_voiding.png => item_voiding.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_voiding.png.mcmeta => item_voiding.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_voiding_advanced.png => item_voiding_advanced.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_voiding_advanced.png.mcmeta => item_voiding_advanced.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_item_voiding_advanced_emissive.png => item_voiding_advanced_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_maintenance_detector.png => maintenance_detector.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_ore_dictionary_filter.png => ore_dictionary_filter.png} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/cover/overlay_pump_inverted.png.mcmeta rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_pump.png => pump.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{cover_pump_inverted.png.mcmeta => pump.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_pump_inverted.png => pump_inverted.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_pump.png.mcmeta => pump_inverted.png.mcmeta} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_screen.png => screen.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_shutter.png => shutter.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_smart_item_filter.png => smart_item_filter.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{overlay_solar_panel.png => solar_panel.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{storage_cover.png => storage.png} (100%) create mode 100644 src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front.png create mode 100644 src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png rename src/main/resources/assets/gtceu/textures/block/machines/{rock_crusher/overlay_front_active_emissive.png.mcmeta => block_breaker/overlay_front_active.png.mcmeta} (100%) create mode 100644 src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png rename src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/{overlay_down.mcmeta => overlay_bottom.png.mcmeta} (56%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png rename src/main/resources/assets/gtceu/textures/block/machines/steam_miner/{overlay_down.mcmeta => overlay_bottom.png.mcmeta} (56%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/9.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_bottom.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_top.png rename src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/{overlay_bottom.png => overlay.png} (100%) rename src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/{overlay_bottom_emissive.png => overlay_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/{overlay_bottom.png.mcmeta => overlay_emissive.png.mcmeta} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png rename src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/{overlay_top.png => overlay.png} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta rename src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/{overlay_bottom_emissive.png => overlay_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/pipe/{ld_fluid_pipe/overlay_left.png.mcmeta => ld_item_pipe/overlay_emissive.png.mcmeta} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top_emissive.png diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 0082351b027..b0f7e19d71d 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -19,7 +19,7 @@ shimmer = "1.20.1-0.2.4" journeyMapApi = "1.20-1.9-SNAPSHOT" ftblibrary = "2001.2.4" ftbteams = "2001.3.0" -ftbquests= "2001.4.11" +ftbquests = "2001.4.11" ftbchunks = "2001.3.4" ccTweaked = "1.114.3" diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index aac87531c48..324894980cd 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -42,7 +42,17 @@ legacyForge { sourceSet = sourceSets.extra ideName = "Client 2" - programArguments.addAll('--username', 'YoungOnion') + programArguments.addAll('--username', 'YoungOnion', '--uuid', '3a27782d-6864-4814-a9fe-7c6931f29a8a') + systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + } + + server { + server() + sourceSet = sourceSets.extra + ideName = "Server" + + gameDirectory.set(file('run/server')) + programArguments.addAll('--nogui', '--world', 'world-extra') systemProperty('forge.enabledGameTestNamespaces', project.mod_id) } diff --git a/lombok.config b/lombok.config new file mode 100644 index 00000000000..14fae3683e5 --- /dev/null +++ b/lombok.config @@ -0,0 +1,16 @@ +# this is the highest directory lombok should search for config files +config.stopBubbling = true + +# use jetbrains nullability annotations +lombok.addNullAnnotations = jetbrains + +# add annotations that @Getter and @Setter should copy from the field +lombok.copyableAnnotations += dev.latvian.mods.rhino.util.HideFromJS +# all the api status annotations +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Experimental +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Internal +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.Obsolete +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.ScheduledForRemoval +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.AvailableSince +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.NonExtendable +lombok.copyableAnnotations += org.jetbrains.annotations.ApiStatus.OverrideOnly diff --git a/src/generated/resources/assets/gtceu/blockstates/active_transformer.json b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json new file mode 100644 index 00000000000..9d9225245f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/active_transformer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json new file mode 100644 index 00000000000..23a3baddb9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/advanced_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/advanced_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/advanced_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/advanced_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json new file mode 100644 index 00000000000..ebe76577664 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/alloy_blast_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json b/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json new file mode 100644 index 00000000000..1b83e78484b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/aluminium_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/aluminium_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json b/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json new file mode 100644 index 00000000000..f0e18d740c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/aluminium_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/aluminium_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_line.json b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json new file mode 100644 index 00000000000..cd895b96783 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/assembly_line", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json new file mode 100644 index 00000000000..677ec716a7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/auto_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/auto_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/auto_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/auto_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json b/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json new file mode 100644 index 00000000000..b04d087a388 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/bronze_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json b/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json new file mode 100644 index 00000000000..dfb304c8651 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/bronze_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json new file mode 100644 index 00000000000..cd5f8ad76f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/bronze_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/bronze_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/bronze_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json new file mode 100644 index 00000000000..a1fe20aec09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/charcoal_pile_igniter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/charcoal_pile_igniter" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..fa990485b6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cleaning_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/cleaning_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cleanroom.json b/src/generated/resources/assets/gtceu/blockstates/cleanroom.json new file mode 100644 index 00000000000..38c94403fd7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cleanroom.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/cleanroom" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/coke_oven.json b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json new file mode 100644 index 00000000000..5a0eecf97f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/coke_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json new file mode 100644 index 00000000000..aed2d2adfb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/coke_oven_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/coke_oven_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/coke_oven_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/coke_oven_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/coke_oven_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json new file mode 100644 index 00000000000..a43089d428d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/computation_receiver_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/computation_receiver_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/computation_receiver_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/computation_receiver_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json new file mode 100644 index 00000000000..c66bf8140e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/computation_transmitter_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/computation_transmitter_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/computation_transmitter_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/computation_transmitter_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..b9becfe4bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/configurable_maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/configurable_maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/configurable_maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/cracker.json b/src/generated/resources/assets/gtceu/blockstates/cracker.json new file mode 100644 index 00000000000..1bf83e015f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/cracker.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/cracker", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/cracker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_chest.json b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json new file mode 100644 index 00000000000..0d6d32c1c01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json b/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json new file mode 100644 index 00000000000..8413b2d280a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_computation_provider.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/creative_computation_provider" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json new file mode 100644 index 00000000000..cf05db8d942 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/creative_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/creative_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_energy.json b/src/generated/resources/assets/gtceu/blockstates/creative_energy.json new file mode 100644 index 00000000000..f75c638f1b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_energy.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/creative_energy" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_tank.json b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json new file mode 100644 index 00000000000..f988df668ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/creative_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json new file mode 100644 index 00000000000..f937c4dc5f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_bank.json b/src/generated/resources/assets/gtceu/blockstates/data_bank.json new file mode 100644 index 00000000000..8b23078cbb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_bank.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_bank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/data_bank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json new file mode 100644 index 00000000000..0c43d582447 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_receiver_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_receiver_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_receiver_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_receiver_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_receiver_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json new file mode 100644 index 00000000000..5cba6934f41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/data_transmitter_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/data_transmitter_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/data_transmitter_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/data_transmitter_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json b/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json new file mode 100644 index 00000000000..fcb6e786d05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/distillation_tower.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/distillation_tower", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/distillation_tower" + }, + "facing=south": { + "model": "gtceu:block/machine/distillation_tower", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/distillation_tower", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json new file mode 100644 index 00000000000..e872d572680 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/electric_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json new file mode 100644 index 00000000000..2721b5aa485 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json new file mode 100644 index 00000000000..1048467f401 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json new file mode 100644 index 00000000000..f841ca60588 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json new file mode 100644 index 00000000000..139a2aaf1eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json new file mode 100644 index 00000000000..963ef37b40e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json new file mode 100644 index 00000000000..1ece2d36923 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json new file mode 100644 index 00000000000..4ce8147342e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json b/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json new file mode 100644 index 00000000000..11e1f8ea205 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json new file mode 100644 index 00000000000..9d20bb3f5f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..b75566c6c45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..9d5d28c9e6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..d35a51ef306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..2900c324c51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_bender.json b/src/generated/resources/assets/gtceu/blockstates/ev_bender.json new file mode 100644 index 00000000000..7b928ac4f83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json new file mode 100644 index 00000000000..9462ceb4a85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json b/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json new file mode 100644 index 00000000000..4c50026527d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_canner.json b/src/generated/resources/assets/gtceu/blockstates/ev_canner.json new file mode 100644 index 00000000000..8c7d55372ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json new file mode 100644 index 00000000000..2fa51103c61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json new file mode 100644 index 00000000000..3d196ef0f6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json new file mode 100644 index 00000000000..66d900b4ca9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json new file mode 100644 index 00000000000..57aea6f4bb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json new file mode 100644 index 00000000000..ec5355058d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json b/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json new file mode 100644 index 00000000000..5ee31b6fca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json b/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json new file mode 100644 index 00000000000..8ba84b004d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_diode.json b/src/generated/resources/assets/gtceu/blockstates/ev_diode.json new file mode 100644 index 00000000000..b875110aaae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json b/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json new file mode 100644 index 00000000000..ee59be52ace --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json new file mode 100644 index 00000000000..89fd62116b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json new file mode 100644 index 00000000000..b1c3fbe84b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..eb04691abac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json new file mode 100644 index 00000000000..1e83c138f27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..ba50d5cbb26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..f9cabdcda0f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json new file mode 100644 index 00000000000..9b5c1cf55cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..286e5cb7811 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..546f2900567 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json b/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json new file mode 100644 index 00000000000..3883ee93a0f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json b/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json new file mode 100644 index 00000000000..13209f89817 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json new file mode 100644 index 00000000000..1dd7c458c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json b/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json new file mode 100644 index 00000000000..5c803561635 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..87a9f82cdaf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json new file mode 100644 index 00000000000..03e80ec0a97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..24d5c6a7c11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json new file mode 100644 index 00000000000..bdcea3d4a8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json new file mode 100644 index 00000000000..3cc86c9e037 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json new file mode 100644 index 00000000000..cd129751d6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json new file mode 100644 index 00000000000..a6811dc4d2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json new file mode 100644 index 00000000000..5bc89f432d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json new file mode 100644 index 00000000000..6020b33e3e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json new file mode 100644 index 00000000000..eb8d9018aa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json new file mode 100644 index 00000000000..8c2d7d4a405 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json new file mode 100644 index 00000000000..417bd63cde9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/ev_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..4e864fa2868 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json new file mode 100644 index 00000000000..3f235666add --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json new file mode 100644 index 00000000000..2b575e4da78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json b/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json new file mode 100644 index 00000000000..98ecaf55f0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json b/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json new file mode 100644 index 00000000000..0d0ff5cbcf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json new file mode 100644 index 00000000000..de524cd1f86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json b/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json new file mode 100644 index 00000000000..265ac3b781b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json new file mode 100644 index 00000000000..adf85bc1bd2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json new file mode 100644 index 00000000000..05349f2b721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json new file mode 100644 index 00000000000..7d9ec41222a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json new file mode 100644 index 00000000000..3366b624430 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json new file mode 100644 index 00000000000..c6075ec20d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json new file mode 100644 index 00000000000..e0dd90d3aa9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_packer.json b/src/generated/resources/assets/gtceu/blockstates/ev_packer.json new file mode 100644 index 00000000000..d754cf17267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json new file mode 100644 index 00000000000..2344e390434 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_pump.json b/src/generated/resources/assets/gtceu/blockstates/ev_pump.json new file mode 100644 index 00000000000..4b17551d6a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json new file mode 100644 index 00000000000..14de03b9ee8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json new file mode 100644 index 00000000000..3401d11fe69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json b/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json new file mode 100644 index 00000000000..b47d0bd45bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json b/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json new file mode 100644 index 00000000000..86a8577c577 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..ba8608ebd7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..4f6419528bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json new file mode 100644 index 00000000000..08764a8c3e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json new file mode 100644 index 00000000000..d57eac15ac3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/ev_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..074bd595112 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json new file mode 100644 index 00000000000..096a143a29a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json new file mode 100644 index 00000000000..a9ab26816db --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json new file mode 100644 index 00000000000..0fa2565af72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json new file mode 100644 index 00000000000..040f91c4ba3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ev_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ev_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json new file mode 100644 index 00000000000..3ce227bc146 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ev_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/ev_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json new file mode 100644 index 00000000000..aad5223ad8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ev_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/ev_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json new file mode 100644 index 00000000000..b6173a5be83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/extreme_combustion_engine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json new file mode 100644 index 00000000000..74c91b70aac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/gas_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/gold_drum.json b/src/generated/resources/assets/gtceu/blockstates/gold_drum.json new file mode 100644 index 00000000000..80ed303333e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/gold_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/gold_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json new file mode 100644 index 00000000000..726e4fea094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/high_performance_computation_array", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..82787a99473 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_alloy_smelter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json new file mode 100644 index 00000000000..75e94969af6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_compressor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_compressor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_compressor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json new file mode 100644 index 00000000000..59a6853735e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_extractor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_extractor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_extractor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..cead3c1b831 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_forge_hammer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json new file mode 100644 index 00000000000..06fccb04827 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_furnace.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_furnace", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_furnace", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..bc42f3e9f12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_liquid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_liquid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json new file mode 100644 index 00000000000..77683c33fc8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json new file mode 100644 index 00000000000..39ea53ce9db --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..3cc9727a656 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_rock_crusher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..968288f57b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solar_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_solar_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_solar_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..3ec42071dbd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hp_steam_solid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hp_steam_solid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hp_steam_solid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json new file mode 100644 index 00000000000..4deffc83c40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_active_cooler_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_active_cooler_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_active_cooler_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_active_cooler_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..b1e26b9c1d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_advanced_computation_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_advanced_computation_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_advanced_computation_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json new file mode 100644 index 00000000000..d44eb922267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_bridge_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_bridge_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_bridge_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_bridge_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_bridge_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json new file mode 100644 index 00000000000..414f5dd2e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_computation_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_computation_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_computation_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_computation_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_computation_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json new file mode 100644 index 00000000000..c62ef64ec8f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_empty_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_empty_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_empty_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_empty_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_empty_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json new file mode 100644 index 00000000000..a92704b4234 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hpca_heat_sink_component.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hpca_heat_sink_component" + }, + "facing=south": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hpca_heat_sink_component", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hpca_heat_sink_component", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json new file mode 100644 index 00000000000..6f753b9549b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json new file mode 100644 index 00000000000..b128f9e0b86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json new file mode 100644 index 00000000000..b9e1587c908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json new file mode 100644 index 00000000000..4938bc04aff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json new file mode 100644 index 00000000000..78674a26d01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json new file mode 100644 index 00000000000..2fe55bbba3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json new file mode 100644 index 00000000000..a1fb5a19672 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json new file mode 100644 index 00000000000..5cffc2e5fa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json new file mode 100644 index 00000000000..69ad156f091 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..76e9cbf4478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..bc083fadd13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..c09873cac97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..a68aa42b11c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_bender.json b/src/generated/resources/assets/gtceu/blockstates/hv_bender.json new file mode 100644 index 00000000000..514c1435061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json new file mode 100644 index 00000000000..a20af77a26f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json new file mode 100644 index 00000000000..7010cb1ea1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json new file mode 100644 index 00000000000..8bdc6403ebe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_canner.json b/src/generated/resources/assets/gtceu/blockstates/hv_canner.json new file mode 100644 index 00000000000..37ebf940170 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json new file mode 100644 index 00000000000..05fc24b0220 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json new file mode 100644 index 00000000000..0507ac4d276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json new file mode 100644 index 00000000000..305da81126d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json new file mode 100644 index 00000000000..86ad3928e0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json new file mode 100644 index 00000000000..371c17e2c76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json new file mode 100644 index 00000000000..555978ed30d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json new file mode 100644 index 00000000000..c44bdabaf5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json new file mode 100644 index 00000000000..8c7a037ab3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_diode.json b/src/generated/resources/assets/gtceu/blockstates/hv_diode.json new file mode 100644 index 00000000000..8d5beae8eed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json new file mode 100644 index 00000000000..c96ec9ece79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json new file mode 100644 index 00000000000..f8227fad69d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json new file mode 100644 index 00000000000..3e055222745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..c7bd72f8e73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json new file mode 100644 index 00000000000..1a3e51f86b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json new file mode 100644 index 00000000000..4957192c444 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json new file mode 100644 index 00000000000..dad33fc1367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json new file mode 100644 index 00000000000..6a3e3b66e17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json new file mode 100644 index 00000000000..1e5e6d2468b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json new file mode 100644 index 00000000000..31fed9470b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..30ac8330857 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json new file mode 100644 index 00000000000..e2d23c6eb04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..edc26b8d44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json new file mode 100644 index 00000000000..63ef4529d1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json new file mode 100644 index 00000000000..029f0fb8837 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json new file mode 100644 index 00000000000..04c1c1b2987 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json new file mode 100644 index 00000000000..cdcde0f4c5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json new file mode 100644 index 00000000000..91f6902da4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json new file mode 100644 index 00000000000..c665777b525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json new file mode 100644 index 00000000000..8eacc2c8018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json new file mode 100644 index 00000000000..c3aef1c01bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..cf684c44365 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json new file mode 100644 index 00000000000..bbc9d2e86bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json new file mode 100644 index 00000000000..c7a43317a75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json new file mode 100644 index 00000000000..5a17f26cb77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json new file mode 100644 index 00000000000..4a5edee1c43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_miner.json b/src/generated/resources/assets/gtceu/blockstates/hv_miner.json new file mode 100644 index 00000000000..5f5d719bd90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json new file mode 100644 index 00000000000..3afea40b0bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json new file mode 100644 index 00000000000..647f03a8e07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json new file mode 100644 index 00000000000..32c88267075 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json new file mode 100644 index 00000000000..9b30409e680 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json new file mode 100644 index 00000000000..57c13480d7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_packer.json b/src/generated/resources/assets/gtceu/blockstates/hv_packer.json new file mode 100644 index 00000000000..2ada3a3f3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json new file mode 100644 index 00000000000..2a05d9bc0e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_pump.json b/src/generated/resources/assets/gtceu/blockstates/hv_pump.json new file mode 100644 index 00000000000..d9bc439dad5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json new file mode 100644 index 00000000000..f131bcc6223 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json new file mode 100644 index 00000000000..72d324c3579 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json new file mode 100644 index 00000000000..bdf32149f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json new file mode 100644 index 00000000000..a1bfd0923cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json new file mode 100644 index 00000000000..d422b0473d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json new file mode 100644 index 00000000000..f1ceb32ac6b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json new file mode 100644 index 00000000000..fc06fdf5e1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/hv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..e71a10ceec6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json new file mode 100644 index 00000000000..5e28758257c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json new file mode 100644 index 00000000000..0e042d1e481 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json new file mode 100644 index 00000000000..8fc111d0da9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json new file mode 100644 index 00000000000..22d63cee48d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/hv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/hv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json new file mode 100644 index 00000000000..44d99cac6c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/hv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/hv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json new file mode 100644 index 00000000000..83320d6e441 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/hv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/hv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json new file mode 100644 index 00000000000..ead002a3431 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/implosion_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..cbd2c2061c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a31e8e2ecf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json new file mode 100644 index 00000000000..8240b3f9d03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json new file mode 100644 index 00000000000..114bc10932e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..d08981c5a55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d71b352fc29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d173f88740b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..a3b7abeae41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json new file mode 100644 index 00000000000..085361f0f7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json new file mode 100644 index 00000000000..875364c2956 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json new file mode 100644 index 00000000000..5e16a2c11ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json new file mode 100644 index 00000000000..38666ec7ed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json new file mode 100644 index 00000000000..d086f21cd79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json new file mode 100644 index 00000000000..d6262e40238 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..c51a756e970 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..e86c32fb065 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..95540a4ab05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_bender.json b/src/generated/resources/assets/gtceu/blockstates/iv_bender.json new file mode 100644 index 00000000000..7e9e6e048e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json new file mode 100644 index 00000000000..9435eb3de34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_canner.json b/src/generated/resources/assets/gtceu/blockstates/iv_canner.json new file mode 100644 index 00000000000..43bf06c2727 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json new file mode 100644 index 00000000000..804ecfe20a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json new file mode 100644 index 00000000000..1702da8161e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json new file mode 100644 index 00000000000..33f79117427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json new file mode 100644 index 00000000000..05e8bebebd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json new file mode 100644 index 00000000000..edf1d7e0d04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json new file mode 100644 index 00000000000..d9535607a64 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json new file mode 100644 index 00000000000..ceb67d75a4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_diode.json b/src/generated/resources/assets/gtceu/blockstates/iv_diode.json new file mode 100644 index 00000000000..44661e16203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json new file mode 100644 index 00000000000..b291f34e170 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json new file mode 100644 index 00000000000..cc8e172f5d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json new file mode 100644 index 00000000000..7e88ceb7860 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..2bcc7456ead --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json new file mode 100644 index 00000000000..abb9d74f974 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..144aa220985 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8ed134537af --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json new file mode 100644 index 00000000000..b27fca79c59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..36fa48dd38c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..5c1114ae6f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json new file mode 100644 index 00000000000..db4f7f02906 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json new file mode 100644 index 00000000000..20b732ff0dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json new file mode 100644 index 00000000000..03df0187ce4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json new file mode 100644 index 00000000000..bf53ce0f850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json new file mode 100644 index 00000000000..316b78b6ebc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..acd17f68ec3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json new file mode 100644 index 00000000000..592f659b6e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json new file mode 100644 index 00000000000..bef8d7f59be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json new file mode 100644 index 00000000000..1e2e2d45a41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json new file mode 100644 index 00000000000..e1f3211bdbb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json new file mode 100644 index 00000000000..595f45e2299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json new file mode 100644 index 00000000000..37bd77abda7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json new file mode 100644 index 00000000000..78cb9779de3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json new file mode 100644 index 00000000000..a7c82f9890f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..6d4be8fe5bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json new file mode 100644 index 00000000000..533d0e5f3be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json new file mode 100644 index 00000000000..b0c1261dae0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json new file mode 100644 index 00000000000..c477d22d5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json new file mode 100644 index 00000000000..7efdb5b4df7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json new file mode 100644 index 00000000000..853302cb8bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json new file mode 100644 index 00000000000..7ca7a8ecd82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json new file mode 100644 index 00000000000..4aa0add3ff5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json new file mode 100644 index 00000000000..22b397218f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json new file mode 100644 index 00000000000..d0f7bee89b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json new file mode 100644 index 00000000000..01e83a70ca8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json new file mode 100644 index 00000000000..7ec19bb51a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json new file mode 100644 index 00000000000..e2f4bbbbcea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_packer.json b/src/generated/resources/assets/gtceu/blockstates/iv_packer.json new file mode 100644 index 00000000000..90a8f8b3b4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json new file mode 100644 index 00000000000..5038e0f4734 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json new file mode 100644 index 00000000000..9d05312fd39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json new file mode 100644 index 00000000000..74d0c493997 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json new file mode 100644 index 00000000000..cf357812c60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/iv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json new file mode 100644 index 00000000000..0cf68ce2bbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json new file mode 100644 index 00000000000..1f249470a11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json new file mode 100644 index 00000000000..3fb100fb908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json new file mode 100644 index 00000000000..913c2a544f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..4183377aea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..d7c71dca475 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..cb5aae56b5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json new file mode 100644 index 00000000000..6c9fff900f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json new file mode 100644 index 00000000000..40e768f4f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json new file mode 100644 index 00000000000..2a336bd23d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json new file mode 100644 index 00000000000..50d1f3bda29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/iv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/iv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json new file mode 100644 index 00000000000..4e86f556aea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/iv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/iv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json new file mode 100644 index 00000000000..38efece432e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/iv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/iv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json new file mode 100644 index 00000000000..a58302590ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_arc_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json new file mode 100644 index 00000000000..a6f22377181 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json new file mode 100644 index 00000000000..9b911c528e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_brewer.json b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json new file mode 100644 index 00000000000..b72ac244965 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_brewer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json new file mode 100644 index 00000000000..e9335c89f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json new file mode 100644 index 00000000000..624f76c25ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json new file mode 100644 index 00000000000..be0c353a170 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json new file mode 100644 index 00000000000..15d4269a98c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json new file mode 100644 index 00000000000..68f56e83911 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_combustion_engine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_cutter.json b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json new file mode 100644 index 00000000000..fca9c31d76e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_distillery.json b/src/generated/resources/assets/gtceu/blockstates/large_distillery.json new file mode 100644 index 00000000000..b7e061a4cdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/large_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/large_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/large_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/large_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json new file mode 100644 index 00000000000..2441da5cbbd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json new file mode 100644 index 00000000000..3f81e9b374f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_electromagnet", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json new file mode 100644 index 00000000000..a01ae63c05d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_engraving_laser", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extractor.json b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json new file mode 100644 index 00000000000..b19da850494 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extruder.json b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json new file mode 100644 index 00000000000..622efb1ad16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json new file mode 100644 index 00000000000..2ab1f7b51d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_maceration_tower", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_material_press.json b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json new file mode 100644 index 00000000000..799d88d4a96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_material_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_mixer.json b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json new file mode 100644 index 00000000000..47729dab7fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_packer.json b/src/generated/resources/assets/gtceu/blockstates/large_packer.json new file mode 100644 index 00000000000..08bd5374ade --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_packer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_packer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json new file mode 100644 index 00000000000..f72a5e4ef07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_sifting_funnel", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json new file mode 100644 index 00000000000..99689066205 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json new file mode 100644 index 00000000000..865035d99a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/large_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..50bf3059c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/long_distance_fluid_pipeline_endpoint" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..676d5ef5f2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/long_distance_item_pipeline_endpoint" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..c8df1d5c49a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_alloy_smelter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json new file mode 100644 index 00000000000..1e00db3c548 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_compressor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_compressor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_compressor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json new file mode 100644 index 00000000000..0e520432e9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_extractor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_extractor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_extractor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..7bc4be5c3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_forge_hammer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json new file mode 100644 index 00000000000..b71e4e02644 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_furnace.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_furnace", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_furnace", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..34862b19963 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_liquid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_liquid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json new file mode 100644 index 00000000000..824f005b6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json new file mode 100644 index 00000000000..a12da2f4d34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..3179f51aeb8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_rock_crusher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..83fc1a61978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solar_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_solar_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_solar_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..d37846f0d00 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lp_steam_solid_boiler.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lp_steam_solid_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lp_steam_solid_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..577ce6a82d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..ed7e017021b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json new file mode 100644 index 00000000000..bae63a84c09 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json new file mode 100644 index 00000000000..3c6c91f214f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..b33ce07d7f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..8d6b2ecaa7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..f50fdb0f239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..f9c8757e210 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json new file mode 100644 index 00000000000..5ba1ab17b7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json new file mode 100644 index 00000000000..8af1ce9a047 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json new file mode 100644 index 00000000000..22e0213f302 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json new file mode 100644 index 00000000000..0826f10709f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json new file mode 100644 index 00000000000..38bb315065f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json new file mode 100644 index 00000000000..0d393b60614 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..22c9fb5e4c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..9a6d8daebb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..41e7a5c9e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_bender.json b/src/generated/resources/assets/gtceu/blockstates/luv_bender.json new file mode 100644 index 00000000000..5a5596c177d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json new file mode 100644 index 00000000000..019b50ca805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_canner.json b/src/generated/resources/assets/gtceu/blockstates/luv_canner.json new file mode 100644 index 00000000000..cd913ddccda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json new file mode 100644 index 00000000000..59c5a9254fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json new file mode 100644 index 00000000000..f3c2ca9b998 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json new file mode 100644 index 00000000000..6eb20161775 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json new file mode 100644 index 00000000000..42e2d5e8131 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json new file mode 100644 index 00000000000..eac784487b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json new file mode 100644 index 00000000000..e518b7fa631 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json new file mode 100644 index 00000000000..29b89cd43ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_diode.json b/src/generated/resources/assets/gtceu/blockstates/luv_diode.json new file mode 100644 index 00000000000..e967e909237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json new file mode 100644 index 00000000000..36f7915f09d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json new file mode 100644 index 00000000000..26ff1e1a86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json new file mode 100644 index 00000000000..2c010d9d58a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json new file mode 100644 index 00000000000..bde68733946 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json new file mode 100644 index 00000000000..0dd84188c44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..659161a61c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json new file mode 100644 index 00000000000..b7f485ffe5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..57d46db9957 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b290631aea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json new file mode 100644 index 00000000000..be963fd0849 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..8dbd6ba2e80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..73f1e15a78d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json new file mode 100644 index 00000000000..127fa638060 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json new file mode 100644 index 00000000000..21a1110610a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json new file mode 100644 index 00000000000..5e9c95882f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json new file mode 100644 index 00000000000..cb04fe2109f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json new file mode 100644 index 00000000000..cc12ee8743d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..33c938ac7e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json new file mode 100644 index 00000000000..c77122f580c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json new file mode 100644 index 00000000000..9d0810eca39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json new file mode 100644 index 00000000000..48cbd5d9494 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json new file mode 100644 index 00000000000..e9a5f678fd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json new file mode 100644 index 00000000000..6ceba178809 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json new file mode 100644 index 00000000000..e22b28ae1a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json new file mode 100644 index 00000000000..5bfbefc6512 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json new file mode 100644 index 00000000000..c1b6dbd3aed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json new file mode 100644 index 00000000000..94a2412ec31 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f7c0873f746 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json new file mode 100644 index 00000000000..99ab0b7da16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_large_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json new file mode 100644 index 00000000000..a39c3dcacfe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json new file mode 100644 index 00000000000..7dc6d2b63a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json new file mode 100644 index 00000000000..70e8a7230e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json new file mode 100644 index 00000000000..1797071474c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json new file mode 100644 index 00000000000..fbad36f9c4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json new file mode 100644 index 00000000000..a709388907f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json new file mode 100644 index 00000000000..4c9b81aeb89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json new file mode 100644 index 00000000000..a2223cd384b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json new file mode 100644 index 00000000000..d33bfc53c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json new file mode 100644 index 00000000000..5173448bb43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json new file mode 100644 index 00000000000..0b1daeb3141 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_packer.json b/src/generated/resources/assets/gtceu/blockstates/luv_packer.json new file mode 100644 index 00000000000..a0d2e81dbc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json new file mode 100644 index 00000000000..f616f25d521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json new file mode 100644 index 00000000000..9f5514b6f4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json new file mode 100644 index 00000000000..e83fe73be4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json new file mode 100644 index 00000000000..5a61f616b3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/luv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json new file mode 100644 index 00000000000..3ba42030d9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json new file mode 100644 index 00000000000..56e2112922d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json new file mode 100644 index 00000000000..0c6bb659cfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json new file mode 100644 index 00000000000..bf13a01644b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..494153857b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..e3e31686ea9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..58f0ed7e44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json new file mode 100644 index 00000000000..e6849c9b4f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json new file mode 100644 index 00000000000..4fc9b7fb8f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json new file mode 100644 index 00000000000..23617d91ffc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json new file mode 100644 index 00000000000..a3eff62f4d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/luv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/luv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json new file mode 100644 index 00000000000..b7ca02d9a9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/luv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/luv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json new file mode 100644 index 00000000000..3557b29fa50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/luv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/luv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json new file mode 100644 index 00000000000..efcfe726762 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json new file mode 100644 index 00000000000..c80f1112e6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json new file mode 100644 index 00000000000..c1fbe0f9dcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json new file mode 100644 index 00000000000..3a37656016c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json new file mode 100644 index 00000000000..efbd4cdc594 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json new file mode 100644 index 00000000000..d42563b6b66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json new file mode 100644 index 00000000000..76ceee3f8a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json new file mode 100644 index 00000000000..d27dd2cfc7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json new file mode 100644 index 00000000000..a5a5eb53230 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..191801f90b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..9956ebed2b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..77a2328c2da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_bender.json b/src/generated/resources/assets/gtceu/blockstates/lv_bender.json new file mode 100644 index 00000000000..e970c83e36c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json new file mode 100644 index 00000000000..5a6657b61e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json new file mode 100644 index 00000000000..d7c069e1925 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json new file mode 100644 index 00000000000..be264f76518 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_canner.json b/src/generated/resources/assets/gtceu/blockstates/lv_canner.json new file mode 100644 index 00000000000..b1d8192c6aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json new file mode 100644 index 00000000000..8b1108035be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json new file mode 100644 index 00000000000..86407e78299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json new file mode 100644 index 00000000000..331b62eb70a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json new file mode 100644 index 00000000000..1a71ca0e6d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json new file mode 100644 index 00000000000..ca129468844 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json new file mode 100644 index 00000000000..03804a92d3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json new file mode 100644 index 00000000000..5ef368e0416 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json new file mode 100644 index 00000000000..ae65f209ce8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_diode.json b/src/generated/resources/assets/gtceu/blockstates/lv_diode.json new file mode 100644 index 00000000000..70034d2891d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json new file mode 100644 index 00000000000..e6f13846f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json new file mode 100644 index 00000000000..2db4e07befe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json new file mode 100644 index 00000000000..6ad4bf35360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..5f66ca97162 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json new file mode 100644 index 00000000000..bec6beafb27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json new file mode 100644 index 00000000000..dff43511c82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json new file mode 100644 index 00000000000..6fa2cc89471 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json new file mode 100644 index 00000000000..6879d6bd3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json new file mode 100644 index 00000000000..9829d3cd1e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json new file mode 100644 index 00000000000..dc346472357 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json new file mode 100644 index 00000000000..ef909975491 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..54d01aed49c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json new file mode 100644 index 00000000000..8d5bfff7078 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json new file mode 100644 index 00000000000..a319d1d74f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json new file mode 100644 index 00000000000..64d60433f74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json new file mode 100644 index 00000000000..fe36c2a694f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json new file mode 100644 index 00000000000..4d401c917d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json new file mode 100644 index 00000000000..1fbca6a87cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json new file mode 100644 index 00000000000..91d3ef7d3ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json new file mode 100644 index 00000000000..0b369ef8150 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..c5f75db0702 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json new file mode 100644 index 00000000000..208ba57a721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json new file mode 100644 index 00000000000..6c87e2e8afd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json new file mode 100644 index 00000000000..67fc7c114f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json new file mode 100644 index 00000000000..97e4aff07fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_miner.json b/src/generated/resources/assets/gtceu/blockstates/lv_miner.json new file mode 100644 index 00000000000..51ca6582909 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json new file mode 100644 index 00000000000..f5a11d28804 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json new file mode 100644 index 00000000000..af4b7cb2fca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json new file mode 100644 index 00000000000..5b0e858f525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json new file mode 100644 index 00000000000..1f1e803955a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json new file mode 100644 index 00000000000..86d12bf552f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_packer.json b/src/generated/resources/assets/gtceu/blockstates/lv_packer.json new file mode 100644 index 00000000000..3a20756d595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json new file mode 100644 index 00000000000..19d5df6976f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_pump.json b/src/generated/resources/assets/gtceu/blockstates/lv_pump.json new file mode 100644 index 00000000000..c99bad34dca --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json new file mode 100644 index 00000000000..4a395c9873a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json new file mode 100644 index 00000000000..07ca2cb118d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json new file mode 100644 index 00000000000..d0940f7277e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json new file mode 100644 index 00000000000..beded3fc984 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json new file mode 100644 index 00000000000..caf3db5a739 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json new file mode 100644 index 00000000000..0ea0c484da1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/lv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..930c834a164 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json new file mode 100644 index 00000000000..e0558683f0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json new file mode 100644 index 00000000000..e028fe9edcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json new file mode 100644 index 00000000000..be312dcf1b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json new file mode 100644 index 00000000000..cf0fe84f7da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/lv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/lv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json new file mode 100644 index 00000000000..8eff56d6b42 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/lv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/lv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json new file mode 100644 index 00000000000..2514162f6cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/lv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/lv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json b/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json new file mode 100644 index 00000000000..a8196b9eb19 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/maintenance_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/maintenance_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/maintenance_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/maintenance_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/maintenance_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json new file mode 100644 index 00000000000..03e26ba0f3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json new file mode 100644 index 00000000000..27dbcb2220c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json new file mode 100644 index 00000000000..d6dd71c29a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json new file mode 100644 index 00000000000..e3d8cb68662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json new file mode 100644 index 00000000000..9d217d019e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json new file mode 100644 index 00000000000..1e377f1f8d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json new file mode 100644 index 00000000000..3ef5fea4fc2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json new file mode 100644 index 00000000000..f9d4612d908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json new file mode 100644 index 00000000000..5e60f804095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json new file mode 100644 index 00000000000..5124945ff66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json new file mode 100644 index 00000000000..803acf271d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8ebf6381e23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..00c7e2d4bfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json new file mode 100644 index 00000000000..30db79db60d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..3e9d1ab4b70 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..4139eb0a2c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json new file mode 100644 index 00000000000..3f728cdb48f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json new file mode 100644 index 00000000000..758aca8b4f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json new file mode 100644 index 00000000000..bbe2ce0fdaf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json new file mode 100644 index 00000000000..6d783fee56f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json new file mode 100644 index 00000000000..cd416699a1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json new file mode 100644 index 00000000000..8a122b675da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json new file mode 100644 index 00000000000..59f21f57a8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json new file mode 100644 index 00000000000..daf0a7acf91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json new file mode 100644 index 00000000000..7b809b170dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..36ae0e9e315 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..0c22b5eead5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/max_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/max_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json new file mode 100644 index 00000000000..099c3862dbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json new file mode 100644 index 00000000000..5790fd3bcfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json new file mode 100644 index 00000000000..2a4af25f4be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json new file mode 100644 index 00000000000..294827b6a24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json new file mode 100644 index 00000000000..256cc941891 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_pattern_buffer", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_pattern_buffer" + }, + "facing=south": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_pattern_buffer", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_pattern_buffer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..4e4cdd05793 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_pattern_buffer_proxy.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy" + }, + "facing=south": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_pattern_buffer_proxy", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json new file mode 100644 index 00000000000..31a3702f3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_stocking_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_stocking_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_stocking_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json new file mode 100644 index 00000000000..38c9dd22ab8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/me_stocking_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/me_stocking_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/me_stocking_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/me_stocking_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json new file mode 100644 index 00000000000..44f2ee1a162 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json new file mode 100644 index 00000000000..fbb01c46ea5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mega_vacuum_freezer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json new file mode 100644 index 00000000000..36a707de57b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/multi_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json new file mode 100644 index 00000000000..e1122e735fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json new file mode 100644 index 00000000000..35e078b07b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json new file mode 100644 index 00000000000..e71989f9e7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json new file mode 100644 index 00000000000..2507540631c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json new file mode 100644 index 00000000000..de6fe816544 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_air_scrubber.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_air_scrubber" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_air_scrubber", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json new file mode 100644 index 00000000000..e9a001e8be7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json new file mode 100644 index 00000000000..cfb8c20ad69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json new file mode 100644 index 00000000000..6c630b269a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json new file mode 100644 index 00000000000..8b0aa79ee0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..a1a8ba15181 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..3149d352409 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..d9e80df8a78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..1cb73f76d46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_bedrock_ore_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_bender.json b/src/generated/resources/assets/gtceu/blockstates/mv_bender.json new file mode 100644 index 00000000000..fe99ca838f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json b/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json new file mode 100644 index 00000000000..68a7b3e8b9d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_block_breaker.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_block_breaker" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_block_breaker", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json new file mode 100644 index 00000000000..599125b0682 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json b/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json new file mode 100644 index 00000000000..2f11cb38d89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_buffer.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_buffer" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_canner.json b/src/generated/resources/assets/gtceu/blockstates/mv_canner.json new file mode 100644 index 00000000000..6046d496e29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json new file mode 100644 index 00000000000..91f6a5ac79b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json new file mode 100644 index 00000000000..0f150d840df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json new file mode 100644 index 00000000000..e6cbab3a018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json new file mode 100644 index 00000000000..a61d0794aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json new file mode 100644 index 00000000000..bb2c9c7794e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json b/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json new file mode 100644 index 00000000000..12343be2bdb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_combustion.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_combustion", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_combustion", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_combustion" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_combustion", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_combustion", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_combustion", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json new file mode 100644 index 00000000000..336f08f3b5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json new file mode 100644 index 00000000000..8161c23505a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_diode.json b/src/generated/resources/assets/gtceu/blockstates/mv_diode.json new file mode 100644 index 00000000000..79f2d05c386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json new file mode 100644 index 00000000000..542d5d9e564 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json new file mode 100644 index 00000000000..3eee3f78d81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json new file mode 100644 index 00000000000..7272dec30bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..fbe73557de5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json new file mode 100644 index 00000000000..37e31340437 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json new file mode 100644 index 00000000000..5cceb55925e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json new file mode 100644 index 00000000000..04504aa7b76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json new file mode 100644 index 00000000000..4f36fc5be1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json new file mode 100644 index 00000000000..e3c72c10d9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json b/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json new file mode 100644 index 00000000000..b25968c54e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fisher.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_fisher", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_fisher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fisher" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fisher", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fisher", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fisher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..b168c3c7d3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_fluid_drilling_rig", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json new file mode 100644 index 00000000000..f1e84aee88c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..ffc06c25a27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json new file mode 100644 index 00000000000..0c37660ea40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json new file mode 100644 index 00000000000..8caa6aea5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json new file mode 100644 index 00000000000..64e6d7bd4da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json new file mode 100644 index 00000000000..3a485b1ef5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json new file mode 100644 index 00000000000..9a5d351f82b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_gas_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_gas_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_gas_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_gas_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_gas_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json new file mode 100644 index 00000000000..2cd3defcb52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json new file mode 100644 index 00000000000..6ab0d40490f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json b/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json new file mode 100644 index 00000000000..d4e6e293ddd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_item_collector.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_item_collector" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..5bb8ba1cb81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json new file mode 100644 index 00000000000..2299c48b78a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json new file mode 100644 index 00000000000..466aa4b3336 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json new file mode 100644 index 00000000000..495f77cfaa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json new file mode 100644 index 00000000000..64ea58f69e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_miner.json b/src/generated/resources/assets/gtceu/blockstates/mv_miner.json new file mode 100644 index 00000000000..89d81a4e8d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_miner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_miner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_miner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json new file mode 100644 index 00000000000..d63d897b52e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json new file mode 100644 index 00000000000..e2a406f0d0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json new file mode 100644 index 00000000000..31102886012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json new file mode 100644 index 00000000000..3e6cd64ede6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json new file mode 100644 index 00000000000..df4fdd71ff9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_packer.json b/src/generated/resources/assets/gtceu/blockstates/mv_packer.json new file mode 100644 index 00000000000..d1936704760 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json new file mode 100644 index 00000000000..2db83c7e2a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_pump.json b/src/generated/resources/assets/gtceu/blockstates/mv_pump.json new file mode 100644 index 00000000000..209439e5822 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_pump.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_pump", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_pump", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_pump", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json new file mode 100644 index 00000000000..badc4628b6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json new file mode 100644 index 00000000000..0f4e53de14f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json new file mode 100644 index 00000000000..439ba603569 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json new file mode 100644 index 00000000000..d87fa2839ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_steam_turbine.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_steam_turbine", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_steam_turbine" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_steam_turbine", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_steam_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json new file mode 100644 index 00000000000..ceb555abf4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json new file mode 100644 index 00000000000..7d1a6ad970c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/mv_super_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..20472cc9fb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json new file mode 100644 index 00000000000..b00387e200f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json new file mode 100644 index 00000000000..d04ce84103e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json new file mode 100644 index 00000000000..f5865359daa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json new file mode 100644 index 00000000000..215f710c7e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/mv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/mv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json new file mode 100644 index 00000000000..69d8556b0b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/mv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/mv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json new file mode 100644 index 00000000000..c5fe0580a5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/mv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/mv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/network_switch.json b/src/generated/resources/assets/gtceu/blockstates/network_switch.json new file mode 100644 index 00000000000..35e7d69e7d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/network_switch.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/network_switch", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/network_switch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/object_holder.json b/src/generated/resources/assets/gtceu/blockstates/object_holder.json new file mode 100644 index 00000000000..c559fabf00c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/object_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/object_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/object_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/object_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/object_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/object_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/object_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..462fece9488 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0740a0decf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json new file mode 100644 index 00000000000..7ae66470d95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json new file mode 100644 index 00000000000..098c5961668 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..ec1e8e1dcc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..7fd9ce3d8bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..ef04fb8edea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..b1e1101350a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json new file mode 100644 index 00000000000..59220846ab5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json new file mode 100644 index 00000000000..e2b8344a833 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json new file mode 100644 index 00000000000..5b684c56e73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json new file mode 100644 index 00000000000..9e3263327e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json new file mode 100644 index 00000000000..8997bde5c80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json new file mode 100644 index 00000000000..4dbfce52de6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..c8b5aac6bcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..cd2ed56fb3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..4971579a06b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_bender.json b/src/generated/resources/assets/gtceu/blockstates/opv_bender.json new file mode 100644 index 00000000000..7af9fa6d56c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json new file mode 100644 index 00000000000..8006ffdaa95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_canner.json b/src/generated/resources/assets/gtceu/blockstates/opv_canner.json new file mode 100644 index 00000000000..85eeafac2af --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json new file mode 100644 index 00000000000..6c6a3115e55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json new file mode 100644 index 00000000000..c4723fe2fe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json new file mode 100644 index 00000000000..160a90cc196 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json new file mode 100644 index 00000000000..e4273b8df4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json new file mode 100644 index 00000000000..6f8c5cf3bff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json new file mode 100644 index 00000000000..9def5452d79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json new file mode 100644 index 00000000000..f18bf0ec0aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_diode.json b/src/generated/resources/assets/gtceu/blockstates/opv_diode.json new file mode 100644 index 00000000000..883a4081c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json new file mode 100644 index 00000000000..35d1a288020 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json new file mode 100644 index 00000000000..5c15e58b4bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json new file mode 100644 index 00000000000..6034713231e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json new file mode 100644 index 00000000000..dc31a47bf67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json new file mode 100644 index 00000000000..361d6eb60e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..74e1cb0005b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json new file mode 100644 index 00000000000..b85f9799dac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..de3f5283332 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..27708fab3d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json new file mode 100644 index 00000000000..885196943bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..3b5be21a452 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..5fd921850d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json new file mode 100644 index 00000000000..8475dbad41f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json new file mode 100644 index 00000000000..b7aaf72f924 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json new file mode 100644 index 00000000000..19f73e77d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json new file mode 100644 index 00000000000..558a9700a47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..d122e62ba0e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json new file mode 100644 index 00000000000..efaae34780c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json new file mode 100644 index 00000000000..77724d100d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json new file mode 100644 index 00000000000..d0dc024f9bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json new file mode 100644 index 00000000000..43186745faa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json new file mode 100644 index 00000000000..abd0e1ce637 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json new file mode 100644 index 00000000000..14075d9eea1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json new file mode 100644 index 00000000000..40ae8ae6507 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json new file mode 100644 index 00000000000..88f41797e68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..5f26839c65a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json new file mode 100644 index 00000000000..d2c09b3b43e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json new file mode 100644 index 00000000000..a5d2b0868c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json new file mode 100644 index 00000000000..4f8022741c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json new file mode 100644 index 00000000000..a59d2cc7bfb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json new file mode 100644 index 00000000000..38cf499ea84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json new file mode 100644 index 00000000000..370ea6a42fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json new file mode 100644 index 00000000000..9e17b9fd545 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json new file mode 100644 index 00000000000..c07b78166a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json new file mode 100644 index 00000000000..e40316e7b1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json new file mode 100644 index 00000000000..ba4e5659588 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json new file mode 100644 index 00000000000..e6fe98a3bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_packer.json b/src/generated/resources/assets/gtceu/blockstates/opv_packer.json new file mode 100644 index 00000000000..f5e70bdec38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json new file mode 100644 index 00000000000..45807ba5e7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json new file mode 100644 index 00000000000..7b5f918a84a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json new file mode 100644 index 00000000000..ffe213f236e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/opv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json new file mode 100644 index 00000000000..406425c719d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json new file mode 100644 index 00000000000..2117793727a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json new file mode 100644 index 00000000000..c8393d9388f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json new file mode 100644 index 00000000000..149ce4eb100 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..1943a1c7610 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..ae1ba008d79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..c54503224df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json new file mode 100644 index 00000000000..7175384c411 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json new file mode 100644 index 00000000000..4caf27369ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json new file mode 100644 index 00000000000..1562322a2dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json new file mode 100644 index 00000000000..13187143fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/opv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/opv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json new file mode 100644 index 00000000000..892f3a0447b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/opv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/opv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/opv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json new file mode 100644 index 00000000000..49feb0e61d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/plasma_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/power_substation.json b/src/generated/resources/assets/gtceu/blockstates/power_substation.json new file mode 100644 index 00000000000..0907f572b13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/power_substation.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/power_substation", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/power_substation", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json new file mode 100644 index 00000000000..2687132e730 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/primitive_blast_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json b/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json new file mode 100644 index 00000000000..86a83256a33 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/primitive_pump.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/primitive_pump", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/primitive_pump" + }, + "facing=south": { + "model": "gtceu:block/machine/primitive_pump", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/primitive_pump", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json b/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json new file mode 100644 index 00000000000..a9e51582095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/pump_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/pump_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/pump_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/pump_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/pump_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pump_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/pump_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json new file mode 100644 index 00000000000..66742491658 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/pyrolyse_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/research_station.json b/src/generated/resources/assets/gtceu/blockstates/research_station.json new file mode 100644 index 00000000000..7acb7082b2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/research_station.json @@ -0,0 +1,76 @@ +{ + "variants": { + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 180 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/research_station", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/research_station", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json b/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json new file mode 100644 index 00000000000..7cbe182230f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/reservoir_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/reservoir_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/reservoir_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/reservoir_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/reservoir_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json new file mode 100644 index 00000000000..b5ceeb64aad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/stainless_steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json new file mode 100644 index 00000000000..d503723d329 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/stainless_steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/stainless_steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json new file mode 100644 index 00000000000..64917a002d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_grinder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json new file mode 100644 index 00000000000..f54b7d59a3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json new file mode 100644 index 00000000000..a41c6131ae5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json new file mode 100644 index 00000000000..f4504406f87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_large_turbine", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json new file mode 100644 index 00000000000..f5db10c9da1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steam_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steam_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steam_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_oven.json b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json new file mode 100644 index 00000000000..f45eebff094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steam_oven", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/steel_crate.json new file mode 100644 index 00000000000..ca0e9eb13e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/steel_drum.json new file mode 100644 index 00000000000..3a322674bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json new file mode 100644 index 00000000000..c851d296d08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steel_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/steel_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json new file mode 100644 index 00000000000..c9c82a8804f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/steel_multiblock_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json b/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json new file mode 100644 index 00000000000..facedf12925 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/steel_tank_valve.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/steel_tank_valve", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/steel_tank_valve" + }, + "facing=south": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/steel_tank_valve", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/steel_tank_valve", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json b/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json new file mode 100644 index 00000000000..88b4660e5fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/titanium_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json b/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json new file mode 100644 index 00000000000..e41873dff46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/titanium_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json new file mode 100644 index 00000000000..c262afd573f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/titanium_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/titanium_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/titanium_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json new file mode 100644 index 00000000000..6e09652391a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/tungsten_steel_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json new file mode 100644 index 00000000000..352a2c38b9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungsten_steel_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/tungsten_steel_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..73dc2d7476f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/tungstensteel_large_boiler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/tungstensteel_large_boiler" + }, + "facing=south": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/tungstensteel_large_boiler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..8eba9ee266e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..d5a671d7a2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json new file mode 100644 index 00000000000..7ff61f9e047 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json new file mode 100644 index 00000000000..e3d3aa8c4a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..98cc25fae85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..8534a018557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d8eceec662c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..b970339f52f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json new file mode 100644 index 00000000000..a72d6cd0be9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json new file mode 100644 index 00000000000..a18e3d4cfc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json new file mode 100644 index 00000000000..e7c8cc613c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json new file mode 100644 index 00000000000..3ec933bb1c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json new file mode 100644 index 00000000000..e2cfd3d1030 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json new file mode 100644 index 00000000000..8a34c0dd45d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..c5bd9273012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..a962a16919b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..087f98ef7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_bender.json b/src/generated/resources/assets/gtceu/blockstates/uev_bender.json new file mode 100644 index 00000000000..9d4754f2d4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json new file mode 100644 index 00000000000..662ab1a12ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_canner.json b/src/generated/resources/assets/gtceu/blockstates/uev_canner.json new file mode 100644 index 00000000000..e77676c5b22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json new file mode 100644 index 00000000000..f6045d6389b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json new file mode 100644 index 00000000000..b409fee61d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json new file mode 100644 index 00000000000..06bbefa41c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json new file mode 100644 index 00000000000..28e46fa1c05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json new file mode 100644 index 00000000000..c818987747d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json new file mode 100644 index 00000000000..8c26efa5264 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json new file mode 100644 index 00000000000..3c281503fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_diode.json b/src/generated/resources/assets/gtceu/blockstates/uev_diode.json new file mode 100644 index 00000000000..7f1d5a893c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json new file mode 100644 index 00000000000..de276578805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json new file mode 100644 index 00000000000..e297176b198 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json new file mode 100644 index 00000000000..a44f81e0dc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json new file mode 100644 index 00000000000..8ca15baa3f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json new file mode 100644 index 00000000000..b26f9959aa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..c6375719286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json new file mode 100644 index 00000000000..e6127529d72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e6e34ee620f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..e910529e207 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json new file mode 100644 index 00000000000..7d07efe1655 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bf594e38b37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..b57ad0847ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json new file mode 100644 index 00000000000..c823d32ea1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json new file mode 100644 index 00000000000..42608176a1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json new file mode 100644 index 00000000000..fb44c665d16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json new file mode 100644 index 00000000000..21878822491 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..53fb1e235fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json new file mode 100644 index 00000000000..a257765a980 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json new file mode 100644 index 00000000000..6b7675e19d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json new file mode 100644 index 00000000000..d8e81a807f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json new file mode 100644 index 00000000000..79b85c96c7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json new file mode 100644 index 00000000000..10bdab70094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json new file mode 100644 index 00000000000..1e8da923f78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json new file mode 100644 index 00000000000..09656cbe768 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json new file mode 100644 index 00000000000..4518e8cec10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..96e611250c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json new file mode 100644 index 00000000000..27fc0a7af5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json new file mode 100644 index 00000000000..974f6569bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json new file mode 100644 index 00000000000..4180b7dd05f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json new file mode 100644 index 00000000000..9aceb2b474d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json new file mode 100644 index 00000000000..3233266c266 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json new file mode 100644 index 00000000000..992da5f2de0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json new file mode 100644 index 00000000000..22d724e4bf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json new file mode 100644 index 00000000000..017a4645d6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json new file mode 100644 index 00000000000..c3cad4fdf60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json new file mode 100644 index 00000000000..2f273e6c5ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json new file mode 100644 index 00000000000..c2f290898ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_packer.json b/src/generated/resources/assets/gtceu/blockstates/uev_packer.json new file mode 100644 index 00000000000..bd05e4044eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json new file mode 100644 index 00000000000..74e12dc11b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json new file mode 100644 index 00000000000..7a098cb4201 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json new file mode 100644 index 00000000000..409ddd3725d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uev_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json new file mode 100644 index 00000000000..b1c8272e4da --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json new file mode 100644 index 00000000000..1fdf1f4a4ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json new file mode 100644 index 00000000000..dd539bdbc2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json new file mode 100644 index 00000000000..03310a5291c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..03048a33465 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..8dd64b52edb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..dec1bf29ff3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json new file mode 100644 index 00000000000..9d4d7dfc118 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json new file mode 100644 index 00000000000..f823bf23f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json new file mode 100644 index 00000000000..a013316ea53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json new file mode 100644 index 00000000000..3047fb62923 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uev_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uev_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json new file mode 100644 index 00000000000..e10d4471e21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uev_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uev_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uev_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..965ab339c7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..58f368198b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..cb44f5209e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..5b759b1d0e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..e990cab9fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..88e1295c153 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..6fcd3c46e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8c79ca48e82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..701ebfb7210 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..c81baf1a1a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json new file mode 100644 index 00000000000..a428627f874 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json new file mode 100644 index 00000000000..84b2982c36a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json new file mode 100644 index 00000000000..c2218a9116a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json new file mode 100644 index 00000000000..2add938106c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..a0738ff32e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..0468be41583 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..978e838c25b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json new file mode 100644 index 00000000000..21c7d5c52b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json new file mode 100644 index 00000000000..1aaba6d9e1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json new file mode 100644 index 00000000000..5f5839add66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json new file mode 100644 index 00000000000..fc0456746eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json new file mode 100644 index 00000000000..2faa3640c8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json new file mode 100644 index 00000000000..96fbb950e78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json new file mode 100644 index 00000000000..65dbb88c5cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json new file mode 100644 index 00000000000..d725b2d7d06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json new file mode 100644 index 00000000000..ca36952b442 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json new file mode 100644 index 00000000000..ae390869144 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json new file mode 100644 index 00000000000..35f1c728493 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json new file mode 100644 index 00000000000..0190c90065a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..4ae309e1f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..93e828105fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json new file mode 100644 index 00000000000..1c9547e0fd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json new file mode 100644 index 00000000000..f016ce6889d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..8a86ec51119 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..88aaf17ce57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e4258ad6cfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8f612791940 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..0500512d8b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..dfbda9965b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..b7221c11d32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json new file mode 100644 index 00000000000..40f88426f38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json new file mode 100644 index 00000000000..b0a65a01605 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json new file mode 100644 index 00000000000..8ca8b712541 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json new file mode 100644 index 00000000000..7b5574d5933 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..e29c5dc0406 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..3b73421bae8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json new file mode 100644 index 00000000000..ae186ce1c55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json new file mode 100644 index 00000000000..4e7de7c105d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json new file mode 100644 index 00000000000..e1fe5593068 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json new file mode 100644 index 00000000000..0794dfd47d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json new file mode 100644 index 00000000000..21081c0ecab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..52d9e4d08cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..2279b25f0be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..fb47d104dc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json new file mode 100644 index 00000000000..32f3fce37f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json new file mode 100644 index 00000000000..6498808ab72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json new file mode 100644 index 00000000000..2dd14b7f8aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json new file mode 100644 index 00000000000..192b80a5693 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json new file mode 100644 index 00000000000..4601b3a2cfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json new file mode 100644 index 00000000000..62cc608cece --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json new file mode 100644 index 00000000000..828f7881982 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json new file mode 100644 index 00000000000..7757154886c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json new file mode 100644 index 00000000000..4406429f7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..61d23e1c7d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..a06124def60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json new file mode 100644 index 00000000000..0b371bb5cda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json new file mode 100644 index 00000000000..bce2f9a3fb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json new file mode 100644 index 00000000000..f056e3b688f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json new file mode 100644 index 00000000000..29e7f12ccd5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uhv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json new file mode 100644 index 00000000000..43ce3520808 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json new file mode 100644 index 00000000000..ece52651465 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json new file mode 100644 index 00000000000..678e9385c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json new file mode 100644 index 00000000000..108bc5d2fe0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..75d2524c9ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..a7e9e2a8471 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..4ed787d83d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json new file mode 100644 index 00000000000..35522818eab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json new file mode 100644 index 00000000000..68d4b6f9c18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json new file mode 100644 index 00000000000..3be9bb27a40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json new file mode 100644 index 00000000000..2c66b7bea86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uhv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json new file mode 100644 index 00000000000..2d2fe6fbcf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uhv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uhv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..188613b3397 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..25294136e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..75d268bebcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..0fafd65c6bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..410c55af947 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..7d98ba8ef1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..325f602ba07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..bc4b060724a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..54cd37c9cae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..3e1ccd06367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json new file mode 100644 index 00000000000..a05df0f8ee1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json new file mode 100644 index 00000000000..f62205f886c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json new file mode 100644 index 00000000000..d8b079600f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json new file mode 100644 index 00000000000..a556bd9d102 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..f859e4cf3d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..9a050921eb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..4664e7c04a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json new file mode 100644 index 00000000000..6b2fc1f23ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json new file mode 100644 index 00000000000..3c099408fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json new file mode 100644 index 00000000000..0c76820342f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json new file mode 100644 index 00000000000..ddd437c2ffa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json new file mode 100644 index 00000000000..3b4144036a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json new file mode 100644 index 00000000000..a6bb826ae85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json new file mode 100644 index 00000000000..74ad33858c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json new file mode 100644 index 00000000000..09566bafe2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json new file mode 100644 index 00000000000..4b00d4b4a2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json new file mode 100644 index 00000000000..bfc00e29d84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json new file mode 100644 index 00000000000..64efaef9734 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json new file mode 100644 index 00000000000..4b37bfb22f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..81d19172a96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..a478358858f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json new file mode 100644 index 00000000000..3a003563f49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json new file mode 100644 index 00000000000..8af3b041a32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..519acfe3c56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..94081cc0374 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..9482c2c09dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3858ac83c1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..1b3e0dda259 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..691214e76ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..d4c927f1587 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json new file mode 100644 index 00000000000..91c9866805f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json new file mode 100644 index 00000000000..d83ebe1edfb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json new file mode 100644 index 00000000000..0910cc02407 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json new file mode 100644 index 00000000000..9ff221f2419 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..a6395bc87d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..1c539054a68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json new file mode 100644 index 00000000000..cb9cd4b3e98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json new file mode 100644 index 00000000000..50601b066df --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json new file mode 100644 index 00000000000..4832b7cefbd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json new file mode 100644 index 00000000000..cecfcb650a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json new file mode 100644 index 00000000000..1a142a22341 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..61e5d1e738c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..7984ae66659 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..0c43a97ebae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json new file mode 100644 index 00000000000..fe23f1e61ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json new file mode 100644 index 00000000000..146c02fee0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json new file mode 100644 index 00000000000..d12c68edbf6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json new file mode 100644 index 00000000000..34a63fa8ecf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json new file mode 100644 index 00000000000..eca976cecf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json new file mode 100644 index 00000000000..dd65a0ec402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json new file mode 100644 index 00000000000..92d1b69e537 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json new file mode 100644 index 00000000000..aabd701c019 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json new file mode 100644 index 00000000000..cead98db872 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..bb32e53fc1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..55cbf0a819c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json new file mode 100644 index 00000000000..6b1126bd486 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json new file mode 100644 index 00000000000..a164b225cf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json new file mode 100644 index 00000000000..fd9b90f0666 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json new file mode 100644 index 00000000000..9ba43965458 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uiv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json new file mode 100644 index 00000000000..b26e3665bfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json new file mode 100644 index 00000000000..26fa82fdc5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json new file mode 100644 index 00000000000..561703ab2ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json new file mode 100644 index 00000000000..99be672c7cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..9a346591796 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..fe7aec6f343 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..a1dd897dd78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json new file mode 100644 index 00000000000..2774567453c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json new file mode 100644 index 00000000000..6a547cd12d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json new file mode 100644 index 00000000000..44663129623 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json new file mode 100644 index 00000000000..9c18f5f24b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uiv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json new file mode 100644 index 00000000000..974b0e348c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uiv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uiv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..ec8e69a3b59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..5b1575769c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..8286913f821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..93a0113f4fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..621a156cb57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..10c66feee60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..765277298e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json new file mode 100644 index 00000000000..bdd7832c8e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..0ab2334b72b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..4e3239e256d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json new file mode 100644 index 00000000000..67542c9faa8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json new file mode 100644 index 00000000000..30ff481ac75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json new file mode 100644 index 00000000000..b548c7710c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json new file mode 100644 index 00000000000..39632c7e4e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json new file mode 100644 index 00000000000..834d6701caa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json new file mode 100644 index 00000000000..02d7500215b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json new file mode 100644 index 00000000000..2fd79de7ca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json new file mode 100644 index 00000000000..fafdfc45bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json new file mode 100644 index 00000000000..e5454e7c607 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/ulv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/ulv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/ulv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/ulv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..e7bdc4dc1cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a8cc5b2a0ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json new file mode 100644 index 00000000000..d20339a088e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json new file mode 100644 index 00000000000..a20d887c8bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..7613650cf73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9eb0b6e9c4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d7c2f12816f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..9ef92e5b365 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json new file mode 100644 index 00000000000..278ed4d6b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json new file mode 100644 index 00000000000..7dd94bb54fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json new file mode 100644 index 00000000000..77d145c2f69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json new file mode 100644 index 00000000000..b33df93560c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json new file mode 100644 index 00000000000..ce8084bfb3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json new file mode 100644 index 00000000000..c941afde970 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..81b9621e699 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..37d89d72709 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..998c0a24366 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uv_bender.json new file mode 100644 index 00000000000..9b17183e662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json new file mode 100644 index 00000000000..90821fedffe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uv_canner.json new file mode 100644 index 00000000000..ccda03d50f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json new file mode 100644 index 00000000000..47702fce85c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json new file mode 100644 index 00000000000..1151e3497a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json new file mode 100644 index 00000000000..b0ff375c048 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json new file mode 100644 index 00000000000..bcb20d2c69a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json new file mode 100644 index 00000000000..8f710c729e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json new file mode 100644 index 00000000000..fd9bf1d9b01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json new file mode 100644 index 00000000000..7f037bad6ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uv_diode.json new file mode 100644 index 00000000000..d9314ffb163 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json new file mode 100644 index 00000000000..219b1659546 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json new file mode 100644 index 00000000000..17a38db4595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json new file mode 100644 index 00000000000..9ee0359fae7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json new file mode 100644 index 00000000000..38b235fe65d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json new file mode 100644 index 00000000000..17230637dcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..2f5cf166777 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json new file mode 100644 index 00000000000..90ccb6215b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..67a3848f39f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b8f58bd780a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json new file mode 100644 index 00000000000..729ab194748 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..5e4a683de29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..3b7fae34b2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json new file mode 100644 index 00000000000..b4a9ac5ab24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json new file mode 100644 index 00000000000..c3af5a1e5dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json new file mode 100644 index 00000000000..9b603d6ca32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json new file mode 100644 index 00000000000..c215212a2d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..e07f215782e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json new file mode 100644 index 00000000000..9e00d9d390b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json new file mode 100644 index 00000000000..ff927a1f334 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json new file mode 100644 index 00000000000..3053884fa16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json new file mode 100644 index 00000000000..833c50e46f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json new file mode 100644 index 00000000000..4a192edccf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json new file mode 100644 index 00000000000..5aa0d96f12d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json new file mode 100644 index 00000000000..25b5f7e7eb8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json new file mode 100644 index 00000000000..8a6096d8579 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json new file mode 100644 index 00000000000..48b3d58e127 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..731b7a7b8ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json new file mode 100644 index 00000000000..37d62cef0ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json new file mode 100644 index 00000000000..e5a8c0f6216 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json new file mode 100644 index 00000000000..a6a6db506f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json new file mode 100644 index 00000000000..fc0b4f0b954 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json new file mode 100644 index 00000000000..3832d016fa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json new file mode 100644 index 00000000000..535a391bea0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json new file mode 100644 index 00000000000..aa3a73ca597 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json new file mode 100644 index 00000000000..18e34f41c6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json new file mode 100644 index 00000000000..a8be74ae520 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json new file mode 100644 index 00000000000..0c986f99193 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json new file mode 100644 index 00000000000..d1cfbb4641f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uv_packer.json new file mode 100644 index 00000000000..6d6d9b4375b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json new file mode 100644 index 00000000000..b7c500ef455 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json new file mode 100644 index 00000000000..69bd8680788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json new file mode 100644 index 00000000000..1b7815ad858 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json new file mode 100644 index 00000000000..a13f35c6a84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json new file mode 100644 index 00000000000..57dafe54109 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json new file mode 100644 index 00000000000..ec0635411cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json new file mode 100644 index 00000000000..0cfafef5b15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json new file mode 100644 index 00000000000..00a7d691ff6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..dff44acc54d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..38208be7d57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..34df07ffce3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json new file mode 100644 index 00000000000..419970b4901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json new file mode 100644 index 00000000000..ca703222473 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json new file mode 100644 index 00000000000..b242e854403 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json new file mode 100644 index 00000000000..8009f3f70c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json new file mode 100644 index 00000000000..513cf7e0f93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json new file mode 100644 index 00000000000..4b28309d2ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uv_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/uv_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..38ceab66c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..76e4df64e44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..400edee9965 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..4049a102247 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..33d7b231f87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..6e9e429e245 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3f59d1f191e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5c9d826ca5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..61655e72157 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..9b50349b51c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json new file mode 100644 index 00000000000..668ef5687cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json new file mode 100644 index 00000000000..57fca9be45c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json new file mode 100644 index 00000000000..85ebb069f0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json new file mode 100644 index 00000000000..43f501564a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..3d11fedb64e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..4eb1bd1542d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..9d0aad2b32e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json b/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json new file mode 100644 index 00000000000..7a6fe70eb38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json b/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json new file mode 100644 index 00000000000..c3b4802ac0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json b/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json new file mode 100644 index 00000000000..4701eb5772f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json new file mode 100644 index 00000000000..c5b47d66dde --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json new file mode 100644 index 00000000000..5fb265d8bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json new file mode 100644 index 00000000000..1634ffb7f62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json new file mode 100644 index 00000000000..f32aff13cae --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json new file mode 100644 index 00000000000..841a62eec88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json new file mode 100644 index 00000000000..59e7710ba23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json new file mode 100644 index 00000000000..6c7fb4f6f18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json b/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json new file mode 100644 index 00000000000..384bb439a7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json b/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json new file mode 100644 index 00000000000..fbbc6a2eb65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..e7f0345d61c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..7dd5b9c929b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json new file mode 100644 index 00000000000..2c282e3af0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json new file mode 100644 index 00000000000..c994c7692d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..8315d264e26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..f9d7cec351b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..0b9798bb1b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..924d2e82d77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..c2a0b512426 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..9508753e8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..0a2fd52ef5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json b/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json new file mode 100644 index 00000000000..e7376bb0f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json b/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json new file mode 100644 index 00000000000..a883f410216 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json new file mode 100644 index 00000000000..1947d977240 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json new file mode 100644 index 00000000000..9f733f97214 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..08577072f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..a943eb3d534 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json new file mode 100644 index 00000000000..9e6e7aee1e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json new file mode 100644 index 00000000000..0b786c1fbd7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json new file mode 100644 index 00000000000..0f70467f9c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json new file mode 100644 index 00000000000..9e79f636bf5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json new file mode 100644 index 00000000000..19b268ef978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..228bd57a6bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..bac13440f93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..fbacb1c0ac4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json new file mode 100644 index 00000000000..97606338cfe --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json b/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json new file mode 100644 index 00000000000..773c6637f2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json b/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json new file mode 100644 index 00000000000..ce492a327cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json new file mode 100644 index 00000000000..b5cf9f5439f --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json new file mode 100644 index 00000000000..b6ac328b3ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json new file mode 100644 index 00000000000..80fb2e6e18c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json new file mode 100644 index 00000000000..f6f21840451 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json new file mode 100644 index 00000000000..c0ce3ffd472 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json new file mode 100644 index 00000000000..b0e25944c77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..463c00b8410 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..fbbd0c19f89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json new file mode 100644 index 00000000000..b5820bc57e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json new file mode 100644 index 00000000000..bde63309ed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json new file mode 100644 index 00000000000..9258f5031a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json new file mode 100644 index 00000000000..a48145ac3aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/uxv_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json new file mode 100644 index 00000000000..106ae426fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json new file mode 100644 index 00000000000..e490686d492 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json b/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json new file mode 100644 index 00000000000..88c96d4444d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json b/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json new file mode 100644 index 00000000000..76ba39d6cb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..dbfd4c41693 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1ed711e9476 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..54c6d5ca0c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json new file mode 100644 index 00000000000..7354b0a90f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json new file mode 100644 index 00000000000..e86aadf2ab4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json new file mode 100644 index 00000000000..15bd2760c22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json new file mode 100644 index 00000000000..0d362bf6444 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/uxv_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json new file mode 100644 index 00000000000..5c597aebb07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/uxv_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/uxv_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json new file mode 100644 index 00000000000..3084742bb52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/vacuum_freezer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wood_crate.json b/src/generated/resources/assets/gtceu/blockstates/wood_crate.json new file mode 100644 index 00000000000..859c2474bc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wood_crate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/wood_crate" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wood_drum.json b/src/generated/resources/assets/gtceu/blockstates/wood_drum.json new file mode 100644 index 00000000000..67886f74fda --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wood_drum.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/wood_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json new file mode 100644 index 00000000000..1c72b52afb4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/wooden_multiblock_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json new file mode 100644 index 00000000000..4b111b5cf04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/wooden_tank_valve.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/wooden_tank_valve", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/wooden_tank_valve" + }, + "facing=south": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/wooden_tank_valve", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/wooden_tank_valve", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..6653a857149 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1024a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..bce4069bab8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1024a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..0ac26f335f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_16a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_16a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_16a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..1e329c60773 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_1a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_1a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_1a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..74ed16cc1ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_256a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..991d5d92a00 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_256a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_256a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d2079fc0ddc --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4096a_laser_source_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..60303595630 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4096a_laser_target_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..66dda0b3384 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_4a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_4a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_4a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..c5b3b19680b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_8a_energy_converter.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_8a_energy_converter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_8a_energy_converter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json new file mode 100644 index 00000000000..7cbd2b17a2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_alloy_smelter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_alloy_smelter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_alloy_smelter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json new file mode 100644 index 00000000000..24b0398f879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_arc_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_arc_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_arc_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json b/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json new file mode 100644 index 00000000000..752dc5e3b55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json new file mode 100644 index 00000000000..691c0caad13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_autoclave.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_autoclave" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_autoclave", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..74df8fbd620 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_16x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_16x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..6cf271ed39c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..4dba0125179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_battery_buffer_8x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_battery_buffer_8x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json b/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json new file mode 100644 index 00000000000..f1b842534be --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_bender.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_bender", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_bender" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_bender", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_bender", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json b/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json new file mode 100644 index 00000000000..bd184d180f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_brewery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_brewery" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_brewery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json b/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json new file mode 100644 index 00000000000..f8be60402a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_canner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_canner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_canner" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_canner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_canner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json new file mode 100644 index 00000000000..d1bb58e3bf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json new file mode 100644 index 00000000000..b7527fde4e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_charger_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_charger_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_charger_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_charger_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_charger_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json new file mode 100644 index 00000000000..24460be56fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_bath.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_chemical_bath" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_chemical_bath", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json new file mode 100644 index 00000000000..7d1cad26860 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_chemical_reactor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_chemical_reactor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_chemical_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json new file mode 100644 index 00000000000..1e08765d27e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_circuit_assembler.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_circuit_assembler" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_circuit_assembler", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json new file mode 100644 index 00000000000..58a74f822e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_compressor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_compressor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_compressor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json new file mode 100644 index 00000000000..9c1928c38c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_cutter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_cutter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_cutter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json b/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json new file mode 100644 index 00000000000..e935d2b395c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_diode.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_diode", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_diode", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_diode" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_diode", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_diode", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_diode", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json b/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json new file mode 100644 index 00000000000..29231cf6133 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_distillery.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_distillery" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_distillery", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..b167ab41a6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_dual_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_dual_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..57f6020f917 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_dual_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_dual_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_dual_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json new file mode 100644 index 00000000000..93c73c81728 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electric_furnace.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electric_furnace" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electric_furnace", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json new file mode 100644 index 00000000000..c13f81be591 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electrolyzer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electrolyzer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electrolyzer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..c5cb3136664 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_electromagnetic_separator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_electromagnetic_separator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..3888ca96115 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..28734d4de85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..a56b2e2bab9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_input_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_input_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..62c51273360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..47044f82e74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cce59016b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_energy_output_hatch_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_energy_output_hatch_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json new file mode 100644 index 00000000000..ef27ef70ce2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_extractor.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_extractor" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_extractor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json b/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json new file mode 100644 index 00000000000..7088f0ae13a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_extruder.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_extruder" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_extruder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json new file mode 100644 index 00000000000..4b3e9c17b54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fermenter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fermenter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fermenter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json new file mode 100644 index 00000000000..a7c1df94d69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_heater.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_heater" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_heater", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..75176670c86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..3c04193c9b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fluid_solidifier.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_fluid_solidifier" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_fluid_solidifier", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json new file mode 100644 index 00000000000..0eb5319320b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_forge_hammer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_forge_hammer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_forge_hammer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json b/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json new file mode 100644 index 00000000000..d58db44c701 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_forming_press.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_forming_press" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_forming_press", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json new file mode 100644 index 00000000000..9d642ff6b3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_fusion_reactor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json new file mode 100644 index 00000000000..38453a324e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_gas_collector.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_gas_collector" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_gas_collector", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json new file mode 100644 index 00000000000..cd1bcc635a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json new file mode 100644 index 00000000000..d914e6bd453 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..1631126d7ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..a32091c4618 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_input_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_input_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_input_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..864045f4e56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_item_passthrough_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_item_passthrough_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json new file mode 100644 index 00000000000..0a19d4a6e0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_laser_engraver.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_laser_engraver" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_laser_engraver", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json b/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json new file mode 100644 index 00000000000..95f4722ac1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_lathe.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_lathe" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_lathe", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json new file mode 100644 index 00000000000..da3e3af99e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_macerator.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_macerator" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_macerator", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json new file mode 100644 index 00000000000..3744578a631 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_machine_hull.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_machine_hull", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_machine_hull" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_machine_hull", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_machine_hull", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json new file mode 100644 index 00000000000..e6f2cf9adc5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_mixer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_mixer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_mixer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json new file mode 100644 index 00000000000..5fb7bafddb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_muffler_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_muffler_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_muffler_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_muffler_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json new file mode 100644 index 00000000000..f2886dfa095 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_ore_washer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_ore_washer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_ore_washer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json new file mode 100644 index 00000000000..067beb8fc54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_bus.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_bus", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_bus" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_bus", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_bus", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json new file mode 100644 index 00000000000..69fd1a50692 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..64544324fa8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_4x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch_4x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch_4x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..8d9ed94cfa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_output_hatch_9x.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_output_hatch_9x" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_output_hatch_9x", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json new file mode 100644 index 00000000000..81a9c707295 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_packer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_packer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_packer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_packer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_packer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json new file mode 100644 index 00000000000..b2be5a77ece --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_parallel_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_parallel_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_parallel_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_parallel_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json b/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json new file mode 100644 index 00000000000..acd7e838bd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_polarizer.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_polarizer" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_polarizer", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json new file mode 100644 index 00000000000..d93d748b864 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_chest", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json new file mode 100644 index 00000000000..0889dbbaf8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/zpm_quantum_tank", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json new file mode 100644 index 00000000000..20ddd280096 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_rock_crusher.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_rock_crusher" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_rock_crusher", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json new file mode 100644 index 00000000000..1055c5d5c29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_rotor_holder.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_rotor_holder" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_rotor_holder", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_rotor_holder", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json b/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json new file mode 100644 index 00000000000..0f29cf56fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_scanner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_scanner" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_scanner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json b/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json new file mode 100644 index 00000000000..03191e83ab3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_sifter.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_sifter" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_sifter", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..990873db383 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_input_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_substation_input_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..43098823fdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_substation_output_hatch_64a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_substation_output_hatch_64a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..4cba03cb770 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_thermal_centrifuge.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_thermal_centrifuge", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json new file mode 100644 index 00000000000..fee9d8a1d29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_16a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_16a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_16a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_16a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json new file mode 100644 index 00000000000..38d6bc6ce08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_1a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_1a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_1a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_1a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json new file mode 100644 index 00000000000..a313ffd4489 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_2a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_2a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_2a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_2a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json new file mode 100644 index 00000000000..32f0bc6f58b --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_transformer_4a.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_transformer_4a" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/zpm_transformer_4a", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_transformer_4a", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json new file mode 100644 index 00000000000..e38bb7e5001 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_wiremill.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/zpm_wiremill" + }, + "facing=south": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 180 + }, + "facing=west": { + "model": "gtceu:block/machine/zpm_wiremill", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json new file mode 100644 index 00000000000..94d81ea2854 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_world_accelerator.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "gtceu:block/machine/zpm_world_accelerator" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 648aafee9d0..3912e1f4fd4 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2327,6 +2327,7 @@ "gtceu.gui.content.chance_tier_boost_minus": "ɹǝıʇ/%s%%- :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.chance_tier_boost_plus": "ɹǝıʇ/%s%%+ :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.count_range": "x%s-%s", + "gtceu.gui.content.fluid_range": "ᗺɯ%s-%s", "gtceu.gui.content.per_tick": "ɹ§ʞɔı⟘ ɹǝԀ pǝɔnpoɹԀ/pǝɯnsuoƆɐ§", "gtceu.gui.content.tips.per_second_short": "ɹ§puoɔǝs/ɐ§", "gtceu.gui.content.tips.per_tick_short": "ɹ§ʞɔıʇ/ɐ§", diff --git a/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json new file mode 100644 index 00000000000..5b489e3bb62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_bronze.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/steam/bricked_bronze/bottom", + "side": "gtceu:block/casings/steam/bricked_bronze/side", + "top": "gtceu:block/casings/steam/bricked_bronze/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json new file mode 100644 index 00000000000..dae1b325422 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/steam/bricked_steel.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/steam/bricked_steel/bottom", + "side": "gtceu:block/casings/steam/bricked_steel/side", + "top": "gtceu:block/casings/steam/bricked_steel/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json new file mode 100644 index 00000000000..f695c06b821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ev.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json new file mode 100644 index 00000000000..fb36daa0102 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/hv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json new file mode 100644 index 00000000000..c96cf6b9faa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/iv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json new file mode 100644 index 00000000000..7f3255db968 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/luv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json new file mode 100644 index 00000000000..654f8153135 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/lv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json new file mode 100644 index 00000000000..84ff9be417a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/max.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json new file mode 100644 index 00000000000..acccb60a6ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/mv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json new file mode 100644 index 00000000000..8741d720901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/opv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json new file mode 100644 index 00000000000..ba4b571f7d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uev.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json new file mode 100644 index 00000000000..cf311351cd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uhv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json new file mode 100644 index 00000000000..913f2e6aa45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uiv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json new file mode 100644 index 00000000000..559139c9999 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/ulv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json new file mode 100644 index 00000000000..13ec96a4fae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json new file mode 100644 index 00000000000..d9000c0d604 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/uxv.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json b/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json new file mode 100644 index 00000000000..9d652faa48f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/casings/voltage/zpm.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json index db820cbdadb..f6136e99b68 100644 --- a/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/ev_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/ev/bottom", "bot_side": "gtceu:block/casings/voltage/ev/side", - "bot_top": "gtceu:block/casings/voltage/ev/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/ev/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json new file mode 100644 index 00000000000..b20b7eff72a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json new file mode 100644 index 00000000000..b20b7eff72a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json new file mode 100644 index 00000000000..9101355e7a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json new file mode 100644 index 00000000000..9101355e7a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json new file mode 100644 index 00000000000..9101355e7a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json new file mode 100644 index 00000000000..9101355e7a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/hpca_part_machine", + "textures": { + "back": "gtceu:block/casings/hpca/computer_casing/back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json index 74ab0592701..09920a47d69 100644 --- a/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/hv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/hv/bottom", "bot_side": "gtceu:block/casings/voltage/hv/side", - "bot_top": "gtceu:block/casings/voltage/hv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/hv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json index 71ffb1feca5..41dbf9dbcde 100644 --- a/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/iv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/iv/bottom", "bot_side": "gtceu:block/casings/voltage/iv/side", - "bot_top": "gtceu:block/casings/voltage/iv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/iv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json index 352f566667e..c9b4992a3de 100644 --- a/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/luv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/luv/bottom", "bot_side": "gtceu:block/casings/voltage/luv/side", - "bot_top": "gtceu:block/casings/voltage/luv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/luv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json index 009df4f62e0..9a0a31bd72e 100644 --- a/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/lv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/lv/bottom", "bot_side": "gtceu:block/casings/voltage/lv/side", - "bot_top": "gtceu:block/casings/voltage/lv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/lv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json b/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json new file mode 100644 index 00000000000..c95af0da5ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/active_transformer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:active_transformer", + "texture_overrides": { + "all": "gtceu:block/casings/hpca/high_power_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json new file mode 100644 index 00000000000..c9c3494ed1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/advanced_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:advanced_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json new file mode 100644 index 00000000000..22b0fb2312f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/alloy_blast_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:alloy_blast_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json new file mode 100644 index 00000000000..795f15d9ff8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:aluminium_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json new file mode 100644 index 00000000000..99490cad767 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/aluminium_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:aluminium_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json b/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json new file mode 100644 index 00000000000..d23cca31534 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/assembly_line.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:assembly_line", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/assembly_line/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/assembly_line/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json new file mode 100644 index 00000000000..b26d9902e26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/auto_maintenance_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:auto_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/auto_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json new file mode 100644 index 00000000000..c7e736a254b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:bronze_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json new file mode 100644 index 00000000000..6c1d00a5283 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:bronze_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json new file mode 100644 index 00000000000..f478f07e7c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/bronze_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:steam_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:bronze_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_bronze_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json new file mode 100644 index 00000000000..3a5e7853c6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/charcoal_pile_igniter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:charcoal_pile_igniter", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_top": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/multiblock/charcoal_pile_igniter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..8bfdd8c3132 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cleaning_maintenance_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cleaning_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/cleaning_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json b/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json new file mode 100644 index 00000000000..195a9079761 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cleanroom.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cleanroom", + "texture_overrides": { + "all": "gtceu:block/casings/cleanroom/plascrete" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/cleanroom/plascrete", + "overlay_bottom": "gtceu:block/multiblock/cleanroom/overlay_bottom_active", + "overlay_top": "gtceu:block/multiblock/cleanroom/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json new file mode 100644 index 00000000000..e500e679c4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:coke_oven", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_coke_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay_front": "gtceu:block/multiblock/coke_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/coke_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json new file mode 100644 index 00000000000..4e7e67e2b2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:coke_oven_hatch", + "textures": { + "particle": "#all" + }, + "variants": { + "": { + "model": "gtceu:block/machine/part/coke_oven_hatch" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json new file mode 100644 index 00000000000..4240368b861 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/computation_receiver_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:computation_receiver_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computation_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json new file mode 100644 index 00000000000..20870efd607 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/computation_transmitter_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:computation_transmitter_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computation_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..f47c041d3d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:configurable_maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "maintenance_taped=false": { + "model": { + "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "maintenance_taped=true": { + "model": { + "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/cracker.json b/src/generated/resources/assets/gtceu/models/block/machine/cracker.json new file mode 100644 index 00000000000..4d5d39779bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/cracker.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:cracker", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/cracking_unit/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/cracking_unit/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json new file mode 100644 index 00000000000..7640c737d6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_chest.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:creative_chest", + "variants": { + "": { + "model": "gtceu:block/machine/template/quantum/creative_container" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json new file mode 100644 index 00000000000..8eaae19f6ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_computation_provider.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_computation_provider", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json new file mode 100644 index 00000000000..4739e980e39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch_creative", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json new file mode 100644 index 00000000000..0357c5b8388 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_energy.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:creative_energy", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/void", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_energy_emitter", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json new file mode 100644 index 00000000000..ab7369dbfe9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/creative_tank.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:creative_tank", + "variants": { + "": { + "model": "gtceu:block/machine/template/quantum/creative_container" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json new file mode 100644 index 00000000000..79056e271de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json b/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json new file mode 100644 index 00000000000..f98a0432a7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_bank.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_bank", + "texture_overrides": { + "all": "gtceu:block/casings/hpca/high_power_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/hpca/high_power_casing", + "overlay_front": "gtceu:block/multiblock/data_bank/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/data_bank/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json new file mode 100644 index 00000000000..cd3ced20683 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_receiver_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_receiver_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/optical_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json new file mode 100644 index 00000000000..084069f1f97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/data_transmitter_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:data_transmitter_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/optical_data_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json b/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json new file mode 100644 index 00000000000..7772e339f21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/distillation_tower.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:distillation_tower", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_clean_stainless_steel", + "overlay_front": "gtceu:block/multiblock/distillation_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/distillation_tower/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json new file mode 100644 index 00000000000..90e3f5a4fb4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/electric_blast_furnace.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:electric_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/electric_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json new file mode 100644 index 00000000000..60476b3d0cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json new file mode 100644 index 00000000000..aa778a97740 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json new file mode 100644 index 00000000000..8795472dc6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json new file mode 100644 index 00000000000..0a3fa3e0cef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json new file mode 100644 index 00000000000..6ebf0bfacd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json new file mode 100644 index 00000000000..25f2008d3d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json new file mode 100644 index 00000000000..7b00c912276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json new file mode 100644 index 00000000000..1f54432c568 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json new file mode 100644 index 00000000000..7c6157c86e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..05f9a3a2c58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..41ac87fe993 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..a76218bb2ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..74d79232910 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json new file mode 100644 index 00000000000..66758f40433 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json new file mode 100644 index 00000000000..c5e0820dd49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json new file mode 100644 index 00000000000..14812b288ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json new file mode 100644 index 00000000000..3cd55fac429 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json new file mode 100644 index 00000000000..3b52aacbc44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json new file mode 100644 index 00000000000..5ffc336ab90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json new file mode 100644 index 00000000000..12b2f1cb255 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json new file mode 100644 index 00000000000..fa0ec632ed2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json new file mode 100644 index 00000000000..66f5473b097 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json new file mode 100644 index 00000000000..fbd631d3cf0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json new file mode 100644 index 00000000000..a1de81d4e03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json new file mode 100644 index 00000000000..4f8a9a6e8c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json new file mode 100644 index 00000000000..5e27a9e8b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json new file mode 100644 index 00000000000..e7efeb372ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json new file mode 100644 index 00000000000..7b4b4eb81fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..1ed129b9b2f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json new file mode 100644 index 00000000000..09382cd3d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..1aa9927dbc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3d4f73bb00b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json new file mode 100644 index 00000000000..1117466ffd0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bb52b788d49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cdef545c895 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json new file mode 100644 index 00000000000..4dc0b187727 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json new file mode 100644 index 00000000000..3561155983d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json new file mode 100644 index 00000000000..848bd370d14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json new file mode 100644 index 00000000000..2a3ac1ca67d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..026f28a663a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json new file mode 100644 index 00000000000..3ae7e30ac8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..31b6bc30352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json new file mode 100644 index 00000000000..1056c59e675 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json new file mode 100644 index 00000000000..69fcd69d877 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json new file mode 100644 index 00000000000..9b695605bab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json new file mode 100644 index 00000000000..a733d703244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json new file mode 100644 index 00000000000..ae27b7563e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json new file mode 100644 index 00000000000..9c2d1442c53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json new file mode 100644 index 00000000000..3f536b94f54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json new file mode 100644 index 00000000000..5125f6b2cbb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json new file mode 100644 index 00000000000..cdc17a7190e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..4ac49ceaab4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json new file mode 100644 index 00000000000..ae33b1cc272 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json new file mode 100644 index 00000000000..788df865fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json new file mode 100644 index 00000000000..ad648b675ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json new file mode 100644 index 00000000000..8fdb4bf6f17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json new file mode 100644 index 00000000000..841df9b0460 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json new file mode 100644 index 00000000000..e5612ee50d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json new file mode 100644 index 00000000000..9f8faac1662 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json new file mode 100644 index 00000000000..052adf50ca3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json new file mode 100644 index 00000000000..23015e72ac1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json new file mode 100644 index 00000000000..5745e9c8705 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json new file mode 100644 index 00000000000..497ef104aed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json new file mode 100644 index 00000000000..5fdc0599f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json new file mode 100644 index 00000000000..79da342c997 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json new file mode 100644 index 00000000000..e3cd1988c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json new file mode 100644 index 00000000000..a46e72967a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json new file mode 100644 index 00000000000..c6da4412fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json new file mode 100644 index 00000000000..88e1115883d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json new file mode 100644 index 00000000000..5996044a2c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json new file mode 100644 index 00000000000..8d16469429f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c99f5154a82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..93e8ec1d212 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json new file mode 100644 index 00000000000..0fbf60fdb2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:ev_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json new file mode 100644 index 00000000000..93dc2b7938c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:ev_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..9c79c4bc992 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json new file mode 100644 index 00000000000..4dc71eb5333 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json new file mode 100644 index 00000000000..032ea8680a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json new file mode 100644 index 00000000000..2fc66e24edb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json new file mode 100644 index 00000000000..fdb7e95a842 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json new file mode 100644 index 00000000000..c0321e2fa96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/ev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json new file mode 100644 index 00000000000..a5f6fe65943 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ev_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json new file mode 100644 index 00000000000..371c8c117c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/extreme_combustion_engine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:extreme_combustion_engine", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/extreme_combustion_engine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json new file mode 100644 index 00000000000..86f698c3735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/gas_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:gas_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_stainless_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_gas_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json new file mode 100644 index 00000000000..49751d2398c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/gold_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:gold_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json new file mode 100644 index 00000000000..fc6cb8535b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/high_performance_computation_array.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:high_performance_computation_array", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/hpca/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/hpca/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..f97d22d0b6b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_alloy_smelter.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_alloy_smelter", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json new file mode 100644 index 00000000000..f0fb549b741 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_compressor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_compressor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json new file mode 100644 index 00000000000..0e61fc1df98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_extractor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_extractor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..0399b372a01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_forge_hammer.json @@ -0,0 +1,114 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_forge_hammer", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json new file mode 100644 index 00000000000..99f78893ac1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_furnace.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_furnace", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..a8d0abf1b74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_liquid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_liquid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json new file mode 100644 index 00000000000..aeb2724ada5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_macerator.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_macerator", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json new file mode 100644 index 00000000000..79ec434f91c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_miner.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_miner", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_back": "gtceu:block/machines/high_pressure_steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/high_pressure_steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/high_pressure_steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/high_pressure_steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..e80cf020cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_rock_crusher.json @@ -0,0 +1,112 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_rock_crusher", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..f98e7f075f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solar_boiler.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_solar_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..6fd6a1ff32c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hp_steam_solid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hp_steam_solid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_steel", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json new file mode 100644 index 00000000000..8b92564809c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_active_cooler_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_active_cooler_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/active_cooler", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/active_cooler_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/active_cooler_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_active_cooler_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_advanced_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..b61039a9cda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_advanced_computation_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_advanced_computation_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/advanced_computation", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/advanced_computation_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/advanced_computation_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_advanced_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_advanced_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_advanced_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json new file mode 100644 index 00000000000..a36898fbafd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_bridge_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_bridge_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/bridge", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/bridge_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/bridge_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_bridge_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json new file mode 100644 index 00000000000..d70f11d1800 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_computation_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_computation_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/computation", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/computation_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/computation_active_emissive" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_computation_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json new file mode 100644 index 00000000000..c7e602f8bac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_empty_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_empty_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/empty", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/empty", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_empty_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json new file mode 100644 index 00000000000..40b2d987a4f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hpca_heat_sink_component.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hpca_heat_sink_component", + "variants": { + "active=false,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/heat_sink", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=false,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=false": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/heat_sink", + "overlay_emissive": "gtceu:block/void" + } + } + }, + "active=true,hpca_part_damaged=true": { + "model": { + "parent": "gtceu:block/hpca_heat_sink_component_base", + "textures": { + "overlay": "gtceu:block/overlay/machine/hpca/damaged_active", + "overlay_emissive": "gtceu:block/overlay/machine/hpca/damaged_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json new file mode 100644 index 00000000000..b4ac3af6bcf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json new file mode 100644 index 00000000000..7e2203c243d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json new file mode 100644 index 00000000000..2c233715bb5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json new file mode 100644 index 00000000000..19890a3c913 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json new file mode 100644 index 00000000000..5296bcca553 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json new file mode 100644 index 00000000000..dabba92c905 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json new file mode 100644 index 00000000000..e2164bcdf1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json new file mode 100644 index 00000000000..763679135fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json new file mode 100644 index 00000000000..296231d8d9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..438446d4572 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..987ef9967f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..6c679f124ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..dddd3e9b557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json new file mode 100644 index 00000000000..2f2ebe09e3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json new file mode 100644 index 00000000000..a4933fea0e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json new file mode 100644 index 00000000000..f5cf8eda862 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json new file mode 100644 index 00000000000..2369425f171 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json new file mode 100644 index 00000000000..5376b99026b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json new file mode 100644 index 00000000000..98947f511a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json new file mode 100644 index 00000000000..d2a820313ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json new file mode 100644 index 00000000000..072e7c7e023 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json new file mode 100644 index 00000000000..835c03c7703 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json new file mode 100644 index 00000000000..4a5a79ae908 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json new file mode 100644 index 00000000000..9d669fddd7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json new file mode 100644 index 00000000000..b38bd9452b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json new file mode 100644 index 00000000000..b4b362210b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json new file mode 100644 index 00000000000..1c16cef2f08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json new file mode 100644 index 00000000000..33629837fb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json new file mode 100644 index 00000000000..6b069a77aab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json new file mode 100644 index 00000000000..7e8dc3d66cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..8096f494914 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json new file mode 100644 index 00000000000..4087dce65ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json new file mode 100644 index 00000000000..c9c40f5cc5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json new file mode 100644 index 00000000000..ed89594c342 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json new file mode 100644 index 00000000000..d2d2d45d250 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json new file mode 100644 index 00000000000..f487b774187 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json new file mode 100644 index 00000000000..9b0d31386e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..9be7c0cd463 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json new file mode 100644 index 00000000000..c13ade311e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..42124781a20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json new file mode 100644 index 00000000000..1c72e1fb755 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json new file mode 100644 index 00000000000..4d5389edbc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json new file mode 100644 index 00000000000..bf3631e309c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json new file mode 100644 index 00000000000..f81e58cc3c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json new file mode 100644 index 00000000000..7a3f7afa735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json new file mode 100644 index 00000000000..c278ac1c02e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json new file mode 100644 index 00000000000..2cd7a554f59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json new file mode 100644 index 00000000000..30f74a848ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..e9b29bd3061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json new file mode 100644 index 00000000000..57371f020b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json new file mode 100644 index 00000000000..96a0a79ded6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json new file mode 100644 index 00000000000..aa958744c9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json new file mode 100644 index 00000000000..c856ea736c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json new file mode 100644 index 00000000000..3c111cb08b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json new file mode 100644 index 00000000000..44b2124e3a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json new file mode 100644 index 00000000000..bc919c55e02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json new file mode 100644 index 00000000000..73ea3d790dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json new file mode 100644 index 00000000000..9ef715d5830 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json new file mode 100644 index 00000000000..ca5d64c614a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json new file mode 100644 index 00000000000..6c148c28b85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json new file mode 100644 index 00000000000..ed43df35b16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json new file mode 100644 index 00000000000..0800616efa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json new file mode 100644 index 00000000000..ff8c7f82afc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json new file mode 100644 index 00000000000..f3e683206bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json new file mode 100644 index 00000000000..30e92b9f2fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json new file mode 100644 index 00000000000..5b5287075fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json new file mode 100644 index 00000000000..5fd92721da7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json new file mode 100644 index 00000000000..3fc1592d12c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:hv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json new file mode 100644 index 00000000000..ea46e580922 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:hv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..3bcd79f69cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json new file mode 100644 index 00000000000..1d43f006ab5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json new file mode 100644 index 00000000000..b00bf83b6a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json new file mode 100644 index 00000000000..696f0925311 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json new file mode 100644 index 00000000000..1a320647f6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json new file mode 100644 index 00000000000..a683fb486bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/hv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json new file mode 100644 index 00000000000..059cb8f45b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:hv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json new file mode 100644 index 00000000000..4c8ce61063e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/implosion_compressor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:implosion_compressor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/implosion_compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/implosion_compressor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..5d7566c853f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..c7bffbfca5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json new file mode 100644 index 00000000000..d60788054d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json new file mode 100644 index 00000000000..0d7d5f59722 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..864a7b6619a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..81cda300317 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..b4911bae298 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..dbd333c8593 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json new file mode 100644 index 00000000000..a3f9bbd128d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json new file mode 100644 index 00000000000..34bba8b0637 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json new file mode 100644 index 00000000000..b139f8b8d87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json new file mode 100644 index 00000000000..f99bd4792f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json new file mode 100644 index 00000000000..31c68ef6856 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json new file mode 100644 index 00000000000..c3fe3032752 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..a507d9d48d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..19ef5e4fb2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..ed8ad4bf3bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json new file mode 100644 index 00000000000..7e56e36e0f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json new file mode 100644 index 00000000000..b2de603c62c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json new file mode 100644 index 00000000000..a11298b7986 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json new file mode 100644 index 00000000000..09c323ba331 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json new file mode 100644 index 00000000000..eafa1b8edf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json new file mode 100644 index 00000000000..93f48175067 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json new file mode 100644 index 00000000000..26fd8740291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json new file mode 100644 index 00000000000..dcf1b694641 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json new file mode 100644 index 00000000000..b4ea8a0ae84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json new file mode 100644 index 00000000000..7d257b939a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json new file mode 100644 index 00000000000..7a51a46ba40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json new file mode 100644 index 00000000000..686d5bc836f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json new file mode 100644 index 00000000000..a2a9a4d29bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json new file mode 100644 index 00000000000..c6d1e1cd05c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..5ff6ec9676d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json new file mode 100644 index 00000000000..e88fd8fb524 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..c724b5a5960 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..8a061ee5c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json new file mode 100644 index 00000000000..1b231f31c25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bf1f9565dd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..f70add003c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json new file mode 100644 index 00000000000..4e3fe87be4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json new file mode 100644 index 00000000000..35df9b9d9dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json new file mode 100644 index 00000000000..c7e4716c75c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json new file mode 100644 index 00000000000..e2ab934328f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json new file mode 100644 index 00000000000..d1398934f3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c210cbcd319 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json new file mode 100644 index 00000000000..a2de694e696 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json new file mode 100644 index 00000000000..427b616453f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json new file mode 100644 index 00000000000..2f62a08627b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json new file mode 100644 index 00000000000..e0644766e62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json new file mode 100644 index 00000000000..2dbf931bd5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json new file mode 100644 index 00000000000..999cf3d562f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json new file mode 100644 index 00000000000..431eb490072 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json new file mode 100644 index 00000000000..41f0d193737 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..36128042a79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json new file mode 100644 index 00000000000..352943eab17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json new file mode 100644 index 00000000000..64fcb4a0f28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json new file mode 100644 index 00000000000..d2aecd4810a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json new file mode 100644 index 00000000000..43e922d1976 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json new file mode 100644 index 00000000000..7d63fb91a4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json new file mode 100644 index 00000000000..559b1b5e8db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json new file mode 100644 index 00000000000..3fe2f96e231 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json new file mode 100644 index 00000000000..71ff7b5b690 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json new file mode 100644 index 00000000000..120463a998d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json new file mode 100644 index 00000000000..707b1136394 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json new file mode 100644 index 00000000000..600d24c5b5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json new file mode 100644 index 00000000000..33bf0969f2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json new file mode 100644 index 00000000000..5c91556bbac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json new file mode 100644 index 00000000000..201b3e4a00b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk1/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json new file mode 100644 index 00000000000..99206728961 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json new file mode 100644 index 00000000000..f6e5758c15b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:iv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json new file mode 100644 index 00000000000..4b1f4970f3c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:iv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json new file mode 100644 index 00000000000..c0b3fafc4a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json new file mode 100644 index 00000000000..9fc9bd9ccf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json new file mode 100644 index 00000000000..fc31029941c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json new file mode 100644 index 00000000000..0d7f7bfa263 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6bbb41c45ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..439bc4873f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..2742d55c014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json new file mode 100644 index 00000000000..19c9cc875a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json new file mode 100644 index 00000000000..7a07ec03b7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json new file mode 100644 index 00000000000..01aeac75fe4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json new file mode 100644 index 00000000000..cf788e3aac0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json new file mode 100644 index 00000000000..39a7d92ab72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/iv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json new file mode 100644 index 00000000000..ddd2c26282c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:iv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/iv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/iv/side", + "top": "gtceu:block/casings/voltage/iv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json new file mode 100644 index 00000000000..fc909b60a04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_arc_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_arc_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json new file mode 100644 index 00000000000..39f996df789 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_assembler.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_assembler", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_assembler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json new file mode 100644 index 00000000000..d88b350ce40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_autoclave.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_autoclave", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_autoclave/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json new file mode 100644 index 00000000000..bfc31717386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_brewer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_brewer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/corrosion_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_brewer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json new file mode 100644 index 00000000000..07f2cf93514 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_centrifuge.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_centrifuge", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json new file mode 100644 index 00000000000..39a158f2a12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_bath.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:large_chemical_bath", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json new file mode 100644 index 00000000000..b8329792d0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_chemical_reactor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_chemical_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "overlay_front": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json new file mode 100644 index 00000000000..cc07bbe188c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_circuit_assembler.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_circuit_assembler", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/large_scale_assembling_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json b/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json new file mode 100644 index 00000000000..c2fd1bdc736 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_combustion_engine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_combustion_engine", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_combustion_engine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json new file mode 100644 index 00000000000..118bb24e6b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_cutter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_cutter", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/shock_proof_cutting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_cutter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json new file mode 100644 index 00000000000..c3f6da624ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_distillery.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_distillery", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_distillery/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json new file mode 100644 index 00000000000..3751ab04082 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_electrolyzer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_electrolyzer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/nonconducting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json b/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json new file mode 100644 index 00000000000..f6d8125f278 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_electromagnet.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_electromagnet", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/nonconducting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/nonconducting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json b/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json new file mode 100644 index 00000000000..31a60cd2a85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_engraving_laser.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_engraving_laser", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/laser_safe_engraving_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json new file mode 100644 index 00000000000..0b017db9cc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_extractor.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_extractor", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extractor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json new file mode 100644 index 00000000000..b76f2f2ffdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_extruder.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_extruder", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_extruder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json b/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json new file mode 100644 index 00000000000..f9d75dba0e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_maceration_tower.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_maceration_tower", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/secure_maceration_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json b/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json new file mode 100644 index 00000000000..6a6474926ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_material_press.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_material_press", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_material_press/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json new file mode 100644 index 00000000000..1795d5f9124 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_mixer.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:large_mixer", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/reaction_safe_mixing_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_mixer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json new file mode 100644 index 00000000000..5a1e1d28abd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_packer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_packer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_packer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json new file mode 100644 index 00000000000..d0facada8be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_sifting_funnel.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_sifting_funnel", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/vibration_safe_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json new file mode 100644 index 00000000000..130de4b18ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_solidifier.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_solidifier", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/watertight_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/watertight_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json new file mode 100644 index 00000000000..83b9d1f5277 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/large_wiremill.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:large_wiremill", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/stress_proof_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/stress_proof_casing", + "overlay_front": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/large_wiremill/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..7e52451d52c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_alloy_smelter.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_alloy_smelter", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json new file mode 100644 index 00000000000..0d61d56b9fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_compressor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_compressor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json new file mode 100644 index 00000000000..ad851c77e82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_extractor.json @@ -0,0 +1,132 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_extractor", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..853a7cbb881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_forge_hammer.json @@ -0,0 +1,114 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_forge_hammer", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json new file mode 100644 index 00000000000..8a56990041c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_furnace.json @@ -0,0 +1,116 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_furnace", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/furnace/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..efc31aa8daf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_liquid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_liquid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/lava/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/lava/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json new file mode 100644 index 00000000000..e05723a2f67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_macerator.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_macerator", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json new file mode 100644 index 00000000000..c2e1558f61e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_miner.json @@ -0,0 +1,124 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_miner", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_back": "gtceu:block/machines/steam_miner/overlay_back", + "overlay_bottom": "gtceu:block/machines/steam_miner/overlay_bottom", + "overlay_front": "gtceu:block/machines/steam_miner/overlay_front", + "overlay_side": "gtceu:block/machines/steam_miner/overlay_side" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..e965895bcae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_rock_crusher.json @@ -0,0 +1,112 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_rock_crusher", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 270 + }, + "when": { + "steam_vent": "up" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "x": 90 + }, + "when": { + "steam_vent": "down" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 270 + }, + "when": { + "steam_vent": "left" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 90 + }, + "when": { + "steam_vent": "right" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent" + }, + "when": { + "steam_vent": "front" + } + }, + { + "apply": { + "model": "gtceu:block/overlay/machine/overlay_steam_vent", + "y": 180 + }, + "when": { + "steam_vent": "back" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..c90416b1d89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solar_boiler.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_solar_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top_active" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_top": "gtceu:block/generators/boiler/solar/overlay_top" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..8fdf3e8da71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lp_steam_solid_boiler.json @@ -0,0 +1,63 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lp_steam_solid_boiler", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "idle" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "working" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front_active", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_active_emissive" + } + } + }, + "when": { + "recipe_logic_status": "waiting" + } + }, + { + "apply": { + "model": { + "parent": "gtceu:block/casings/steam/bricked_bronze", + "textures": { + "overlay_front": "gtceu:block/generators/boiler/coal/overlay_front", + "overlay_front_emissive": "gtceu:block/generators/boiler/coal/overlay_front_emissive" + } + } + }, + "when": { + "recipe_logic_status": "suspend" + } + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..6ef3541d6cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..edda0aeb046 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json new file mode 100644 index 00000000000..6f3bb5a6db6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json new file mode 100644 index 00000000000..36c2dc8f36a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..8dea42bada4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..496d9a50f65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..85494a36998 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..527259c4cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json new file mode 100644 index 00000000000..709f0876d0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json new file mode 100644 index 00000000000..c2602637a7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json new file mode 100644 index 00000000000..7ee350bb5fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json new file mode 100644 index 00000000000..ac6990de7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json new file mode 100644 index 00000000000..a86b562f5c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json new file mode 100644 index 00000000000..d1143268f97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..19a46e68a90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..845ea75105c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..1a4baa77c17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json new file mode 100644 index 00000000000..19cd3063fe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json new file mode 100644 index 00000000000..3ed9fc23d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json new file mode 100644 index 00000000000..3713b3216ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json new file mode 100644 index 00000000000..ace9433b39e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json new file mode 100644 index 00000000000..a6607818014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json new file mode 100644 index 00000000000..9aa01dde7c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json new file mode 100644 index 00000000000..75de7797f6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json new file mode 100644 index 00000000000..7f61c557b80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json new file mode 100644 index 00000000000..5715796675f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json new file mode 100644 index 00000000000..4d441570c10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json new file mode 100644 index 00000000000..3786ec3ac40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json new file mode 100644 index 00000000000..7fecf0b7367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json new file mode 100644 index 00000000000..6b8a0180db1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json new file mode 100644 index 00000000000..ec008ad0dc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json new file mode 100644 index 00000000000..c674ee8d242 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json new file mode 100644 index 00000000000..2474dbbfdf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..c40711c2c65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json new file mode 100644 index 00000000000..68621cbdc91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..3c9d3ea91c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3bc6503b8d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json new file mode 100644 index 00000000000..bac0cd2835c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..78bb180947f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..8898abbf4bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json new file mode 100644 index 00000000000..9ee7b5b023d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json new file mode 100644 index 00000000000..7b1b63944df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json new file mode 100644 index 00000000000..86e4ed0f03b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json new file mode 100644 index 00000000000..7f47bf29d5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json new file mode 100644 index 00000000000..318473c4e55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..67d979cef4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json new file mode 100644 index 00000000000..1dc608edd40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json new file mode 100644 index 00000000000..e741023a9e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json new file mode 100644 index 00000000000..5f59eded59a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json new file mode 100644 index 00000000000..6e5fbe2d625 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json new file mode 100644 index 00000000000..5b6411fb3ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json new file mode 100644 index 00000000000..c39c0fde6cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json new file mode 100644 index 00000000000..89271df0487 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json new file mode 100644 index 00000000000..63d42ec2249 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json new file mode 100644 index 00000000000..e4e0a0dc4c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..ef02bf83ddf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json new file mode 100644 index 00000000000..b5b9577163c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_large_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_large_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/large_miner_active", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/large_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/large_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json new file mode 100644 index 00000000000..598ada929ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json new file mode 100644 index 00000000000..b55f322796b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json new file mode 100644 index 00000000000..e7622ea488e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json new file mode 100644 index 00000000000..bf5a2117071 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json new file mode 100644 index 00000000000..2d440a654ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json new file mode 100644 index 00000000000..59e96796afd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json new file mode 100644 index 00000000000..b11c062e369 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json new file mode 100644 index 00000000000..54443f656b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json new file mode 100644 index 00000000000..dd040dc90e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json new file mode 100644 index 00000000000..55ef71b1aea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json new file mode 100644 index 00000000000..cb71bb44b80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json new file mode 100644 index 00000000000..a985c18721f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json new file mode 100644 index 00000000000..a5ad885d5e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk2/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json new file mode 100644 index 00000000000..a743c223f7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json new file mode 100644 index 00000000000..780781714a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json new file mode 100644 index 00000000000..65355a402fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:luv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json new file mode 100644 index 00000000000..2a5281ecae6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json new file mode 100644 index 00000000000..c6e38346326 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json new file mode 100644 index 00000000000..993160a9f21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json new file mode 100644 index 00000000000..0f2b1d05306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..3b7edde5155 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..d0bee4bf091 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..299b886047d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json new file mode 100644 index 00000000000..145d3f4b94a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json new file mode 100644 index 00000000000..0df687b9094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json new file mode 100644 index 00000000000..496a4cc8185 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json new file mode 100644 index 00000000000..da557839759 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json new file mode 100644 index 00000000000..9a73902e6be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/luv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json new file mode 100644 index 00000000000..07ce91ba5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:luv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json new file mode 100644 index 00000000000..6162ac89c18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json new file mode 100644 index 00000000000..81c816b0000 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json new file mode 100644 index 00000000000..df39d5a604d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json new file mode 100644 index 00000000000..58d271dc1ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json new file mode 100644 index 00000000000..a42ea4207bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json new file mode 100644 index 00000000000..00b39438025 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json new file mode 100644 index 00000000000..cac2af458cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json new file mode 100644 index 00000000000..e5ccbbd1fe1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json new file mode 100644 index 00000000000..3a88818a2d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..0274307c90e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..6405bc48d15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..7cad7b0f6d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json new file mode 100644 index 00000000000..89760a5a49d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json new file mode 100644 index 00000000000..6611b1806ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json new file mode 100644 index 00000000000..28e6c931bb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json new file mode 100644 index 00000000000..c24baf90b3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json new file mode 100644 index 00000000000..3e59f15eed6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json new file mode 100644 index 00000000000..f6da6ebbf28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json new file mode 100644 index 00000000000..6a0533b5286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json new file mode 100644 index 00000000000..7f694aba23e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json new file mode 100644 index 00000000000..ef52119fa31 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json new file mode 100644 index 00000000000..472eb4a51cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json new file mode 100644 index 00000000000..7d34a2ce5c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json new file mode 100644 index 00000000000..99eec3703e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json new file mode 100644 index 00000000000..3a6ad88663e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json new file mode 100644 index 00000000000..b46de49c565 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json new file mode 100644 index 00000000000..6d4417b41a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json new file mode 100644 index 00000000000..67aa4e917aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json new file mode 100644 index 00000000000..c02820ce48c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..f7f332b4d06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json new file mode 100644 index 00000000000..12c85f1239b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json new file mode 100644 index 00000000000..83042f5c8d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json new file mode 100644 index 00000000000..2384f71c837 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json new file mode 100644 index 00000000000..ea8737d4978 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json new file mode 100644 index 00000000000..b1c4c899733 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json new file mode 100644 index 00000000000..8ab7db422d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json new file mode 100644 index 00000000000..d21a6ae9c69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..aa899b21410 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json new file mode 100644 index 00000000000..17bd5112ee6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json new file mode 100644 index 00000000000..88f7fa18fa6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json new file mode 100644 index 00000000000..40b523c29d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json new file mode 100644 index 00000000000..a84c2ad9e20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json new file mode 100644 index 00000000000..623e8781bda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json new file mode 100644 index 00000000000..26190d19dec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json new file mode 100644 index 00000000000..a9aafb77955 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json new file mode 100644 index 00000000000..e7091b0c688 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4e81bc94d7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json new file mode 100644 index 00000000000..dd43f24397b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json new file mode 100644 index 00000000000..7d0f8bd458d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json new file mode 100644 index 00000000000..62712ff8286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json new file mode 100644 index 00000000000..2f2b0e25ae9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json new file mode 100644 index 00000000000..d25ed08236d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json new file mode 100644 index 00000000000..cad24e95bf5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json new file mode 100644 index 00000000000..47f7eb2dab3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json new file mode 100644 index 00000000000..37cfd5e94fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json new file mode 100644 index 00000000000..680c115ccab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json new file mode 100644 index 00000000000..bd537b067c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json new file mode 100644 index 00000000000..331c1439e80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json new file mode 100644 index 00000000000..57be97fa652 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json new file mode 100644 index 00000000000..7f91b5b260b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json new file mode 100644 index 00000000000..38da7ed68b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json new file mode 100644 index 00000000000..79e23cfc3c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json new file mode 100644 index 00000000000..f0dc38113bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json new file mode 100644 index 00000000000..210c1adea79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json new file mode 100644 index 00000000000..7353e60692a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:lv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json new file mode 100644 index 00000000000..a7b6ee0c7d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:lv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..d0b6749c853 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json new file mode 100644 index 00000000000..05381ddd92b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json new file mode 100644 index 00000000000..ad305e668f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json new file mode 100644 index 00000000000..48fe37db462 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json new file mode 100644 index 00000000000..45f1bde5cc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json new file mode 100644 index 00000000000..9ff5ff1a706 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/lv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json new file mode 100644 index 00000000000..3c3f8fe36ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:lv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json new file mode 100644 index 00000000000..e3f81d881ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:maintenance_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "maintenance_taped=false": { + "model": { + "parent": "gtceu:block/machine/part/maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + }, + "maintenance_taped=true": { + "model": { + "parent": "gtceu:block/machine/part/maintenance_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "side": "gtceu:block/casings/voltage/lv/side", + "top": "gtceu:block/casings/voltage/lv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json new file mode 100644 index 00000000000..5bbb15886b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json new file mode 100644 index 00000000000..3706ee39893 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json new file mode 100644 index 00000000000..cecd4c65e04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json new file mode 100644 index 00000000000..f4d5bea75a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json new file mode 100644 index 00000000000..d25036d10e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json new file mode 100644 index 00000000000..a2d6526339d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json new file mode 100644 index 00000000000..71de77137b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json new file mode 100644 index 00000000000..7fb13d6beea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json new file mode 100644 index 00000000000..6bc2ec01f53 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json new file mode 100644 index 00000000000..0db7da940cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json new file mode 100644 index 00000000000..63d1f308f05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..b44773b888f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..42c353dae5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json new file mode 100644 index 00000000000..3f1abf29fa0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..299b09696d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..6270c3ec029 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json new file mode 100644 index 00000000000..36532f2d3a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json new file mode 100644 index 00000000000..a8d50700f2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json new file mode 100644 index 00000000000..bed2138262e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json new file mode 100644 index 00000000000..bd0bf5db324 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json new file mode 100644 index 00000000000..7c738280ed5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json new file mode 100644 index 00000000000..d47098a920d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json new file mode 100644 index 00000000000..93545ee1c17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json new file mode 100644 index 00000000000..181621bfea7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json new file mode 100644 index 00000000000..1dc44c752b0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..338119a9a51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..3e50afdcec5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:max_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "side": "gtceu:block/casings/voltage/max/side", + "top": "gtceu:block/casings/voltage/max/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json new file mode 100644 index 00000000000..8dc5e361c18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json new file mode 100644 index 00000000000..27ffdac742b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json new file mode 100644 index 00000000000..f3866f870f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_bus", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json new file mode 100644 index 00000000000..b9f5338e7ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "overlay": "gtceu:block/overlay/appeng/me_output_hatch", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json new file mode 100644 index 00000000000..93485f50cca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_pattern_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..416f7126d06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_pattern_buffer_proxy", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json new file mode 100644 index 00000000000..1b80fa142a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_stocking_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_bus", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json new file mode 100644 index 00000000000..ca8f657b6af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:me_stocking_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/front_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/luv/bottom", + "overlay": "gtceu:block/overlay/appeng/me_input_hatch", + "side": "gtceu:block/casings/voltage/luv/side", + "top": "gtceu:block/casings/voltage/luv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json new file mode 100644 index 00000000000..f2f3c8c68c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mega_blast_furnace.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mega_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/gcym/high_temperature_smelting_casing", + "overlay_front": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json new file mode 100644 index 00000000000..f0b08ec9fdb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mega_vacuum_freezer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mega_vacuum_freezer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json new file mode 100644 index 00000000000..778412fc072 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/multi_smelter.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:multi_smelter", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_heatproof", + "overlay_front": "gtceu:block/multiblock/multi_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/multi_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json new file mode 100644 index 00000000000..f170db7f307 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json new file mode 100644 index 00000000000..09a97a918ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json new file mode 100644 index 00000000000..e734e1d2d46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json new file mode 100644 index 00000000000..e675afdf32d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json new file mode 100644 index 00000000000..e51f591a463 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_air_scrubber.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_air_scrubber", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/air_scrubber/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/air_scrubber/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/air_scrubber/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/air_scrubber/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/air_scrubber/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/air_scrubber/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/air_scrubber/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/air_scrubber/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/air_scrubber/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/air_scrubber/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json new file mode 100644 index 00000000000..dd239978361 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json new file mode 100644 index 00000000000..bf173832fc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json new file mode 100644 index 00000000000..49e25624307 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json new file mode 100644 index 00000000000..93faa260acf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..41f36f5a202 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..6f5f593ea23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..af07d3209a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..ef76189664c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_bedrock_ore_miner.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_bedrock_ore_miner", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/bedrock_ore_miner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json new file mode 100644 index 00000000000..19793208e4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json new file mode 100644 index 00000000000..b8fe7bee9af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_block_breaker.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_block_breaker", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/block_breaker/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json new file mode 100644 index 00000000000..1a13657e5cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json new file mode 100644 index 00000000000..fc14c622e54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_buffer.json @@ -0,0 +1,24 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_buffer", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/sided/single", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_buffer", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_buffer_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json new file mode 100644 index 00000000000..8cd38a10719 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json new file mode 100644 index 00000000000..6992bfc5387 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json new file mode 100644 index 00000000000..a57bc79e2aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json new file mode 100644 index 00000000000..04411ea511d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json new file mode 100644 index 00000000000..0c00c7f99d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json new file mode 100644 index 00000000000..9272580ceaa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json new file mode 100644 index 00000000000..6e5edd8bb82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_combustion", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json new file mode 100644 index 00000000000..823ed364ec4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json new file mode 100644 index 00000000000..17b78290a7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json new file mode 100644 index 00000000000..3e62f36b4bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json new file mode 100644 index 00000000000..8eaa0cccee0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json new file mode 100644 index 00000000000..76a3a2e3f54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json new file mode 100644 index 00000000000..f369c34bfca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..c4039e6b788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json new file mode 100644 index 00000000000..1266d74341a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json new file mode 100644 index 00000000000..cfeba12a098 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json new file mode 100644 index 00000000000..72db7f01879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json new file mode 100644 index 00000000000..1566c1f4cbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json new file mode 100644 index 00000000000..ab6484a48e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json new file mode 100644 index 00000000000..fc605853a5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fisher.json @@ -0,0 +1,19 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fisher", + "variants": { + "": { + "model": { + "parent": "gtceu:block/overlay/2_layer/top_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_screen", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..b6d09c740aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_drilling_rig.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_drilling_rig", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fluid_drilling_rig/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json new file mode 100644 index 00000000000..bfd6dc2cf2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..fcb029ca77d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json new file mode 100644 index 00000000000..0164d4695f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json new file mode 100644 index 00000000000..7a1f823c38d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json new file mode 100644 index 00000000000..36f8b739944 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json new file mode 100644 index 00000000000..472463e9abf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json new file mode 100644 index 00000000000..362044434b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_gas_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json new file mode 100644 index 00000000000..dbf3c72ca75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json new file mode 100644 index 00000000000..d9863bedba5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json new file mode 100644 index 00000000000..3fc5d58a31b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_collector.json @@ -0,0 +1,55 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_item_collector", + "variants": { + "active=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_bottom": "gtceu:block/machines/item_collector/overlay_bottom", + "overlay_top": "gtceu:block/machines/item_collector/overlay_top_active", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..44d6f6a95fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json new file mode 100644 index 00000000000..3cc2f356023 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json new file mode 100644 index 00000000000..08d5a558dce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json new file mode 100644 index 00000000000..a8c351e0e30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json new file mode 100644 index 00000000000..3b6a1e93ed3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json new file mode 100644 index 00000000000..a528fdec08b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_miner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_miner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/miner/overlay_back", + "overlay_front": "gtceu:block/machines/miner/overlay_front", + "overlay_side": "gtceu:block/machines/miner/overlay_side", + "overlay_top": "gtceu:block/machines/miner/overlay_top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json new file mode 100644 index 00000000000..0ac44a4761c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json new file mode 100644 index 00000000000..1d786b2cf74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json new file mode 100644 index 00000000000..717945bc881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json new file mode 100644 index 00000000000..8217288b00f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json new file mode 100644 index 00000000000..1b3e12f813c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json new file mode 100644 index 00000000000..d8ac2bffbb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json new file mode 100644 index 00000000000..d42c8be4850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json new file mode 100644 index 00000000000..43740918017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_pump.json @@ -0,0 +1,17 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_pump", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/pump_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json new file mode 100644 index 00000000000..96ceb135124 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json new file mode 100644 index 00000000000..95c643936e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json new file mode 100644 index 00000000000..71a0c7d2c28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json new file mode 100644 index 00000000000..906a55ed626 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_steam_turbine", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json new file mode 100644 index 00000000000..efe05eea34c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:mv_super_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json new file mode 100644 index 00000000000..5c1fcac9abf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_super_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:mv_super_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..babc0a0089e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json new file mode 100644 index 00000000000..e13674165b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json new file mode 100644 index 00000000000..4a04fec6097 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json new file mode 100644 index 00000000000..6f3e236ad91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json new file mode 100644 index 00000000000..042d3f06f34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json new file mode 100644 index 00000000000..a645a24c0e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/mv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json new file mode 100644 index 00000000000..008568f69d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:mv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/mv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/mv/side", + "top": "gtceu:block/casings/voltage/mv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json b/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json new file mode 100644 index 00000000000..d740748c911 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/network_switch.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:network_switch", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/network_switch/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/network_switch/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/computer_casing/side", + "top": "gtceu:block/casings/hpca/computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json new file mode 100644 index 00000000000..872ff35f168 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/object_holder.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:object_holder", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/object_holder/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/object_holder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/object_holder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..2198a1d5bc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..132b2d7f44d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json new file mode 100644 index 00000000000..c0c99d7e93d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json new file mode 100644 index 00000000000..2e09537809c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..406932f333c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..ec39219be46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..e39575ce5d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5f7f8ff6aa6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json new file mode 100644 index 00000000000..28b2a43bdc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json new file mode 100644 index 00000000000..108aed34a70 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json new file mode 100644 index 00000000000..208aaf5868a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json new file mode 100644 index 00000000000..e780ca92f59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json new file mode 100644 index 00000000000..fdc27529521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json new file mode 100644 index 00000000000..4fe810d4c77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..0e6dd9532de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..24228b751a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..be94c2f5113 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json new file mode 100644 index 00000000000..0445eca8f48 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json new file mode 100644 index 00000000000..828d39bacdc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json new file mode 100644 index 00000000000..94472765cd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json new file mode 100644 index 00000000000..02779b456c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json new file mode 100644 index 00000000000..323b757af13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json new file mode 100644 index 00000000000..e9c3018f97d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json new file mode 100644 index 00000000000..25003a0e281 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json new file mode 100644 index 00000000000..76719b6ee34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json new file mode 100644 index 00000000000..59b17fbcf6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json new file mode 100644 index 00000000000..2b6d2feddef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json new file mode 100644 index 00000000000..27535794c03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json new file mode 100644 index 00000000000..fea59608dc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json new file mode 100644 index 00000000000..2a2c99073f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json new file mode 100644 index 00000000000..4c0a4c96a87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json new file mode 100644 index 00000000000..a4bf7162c13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json new file mode 100644 index 00000000000..6e688e380ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..e799f8483c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json new file mode 100644 index 00000000000..20d72c37b81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..e14edfacf81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..636d08a4db0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json new file mode 100644 index 00000000000..50b70193a5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..6061f1ced13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..cd74035049b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json new file mode 100644 index 00000000000..f41343f8723 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json new file mode 100644 index 00000000000..84bddffc256 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json new file mode 100644 index 00000000000..3bd4a55c28c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json new file mode 100644 index 00000000000..ad38c52dcc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c735cfe8346 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json new file mode 100644 index 00000000000..8060427b286 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json new file mode 100644 index 00000000000..b1caebbd4e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json new file mode 100644 index 00000000000..44fe85f61d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json new file mode 100644 index 00000000000..09303f0b7cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json new file mode 100644 index 00000000000..6dfd7a8d50b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json new file mode 100644 index 00000000000..5cdf2bb11fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json new file mode 100644 index 00000000000..0c1be96a383 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json new file mode 100644 index 00000000000..f8689c6f7e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..377a6fb5f79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json new file mode 100644 index 00000000000..918e093e70e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json new file mode 100644 index 00000000000..f88a8999db9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json new file mode 100644 index 00000000000..96d1f8ea8c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json new file mode 100644 index 00000000000..97d45d3a7ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json new file mode 100644 index 00000000000..3ea49c73c59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json new file mode 100644 index 00000000000..d17e9b63afb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json new file mode 100644 index 00000000000..2f62348957e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json new file mode 100644 index 00000000000..7bdea359a07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json new file mode 100644 index 00000000000..84173cdc2cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json new file mode 100644 index 00000000000..4b8769ff181 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json new file mode 100644 index 00000000000..2fface95693 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json new file mode 100644 index 00000000000..60e13506bed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json new file mode 100644 index 00000000000..538ab83e411 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json new file mode 100644 index 00000000000..6bd9b829012 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:opv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json new file mode 100644 index 00000000000..5d7df8a74af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:opv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json new file mode 100644 index 00000000000..169a9d13f4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json new file mode 100644 index 00000000000..7185f396dad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json new file mode 100644 index 00000000000..003d606e038 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json new file mode 100644 index 00000000000..4b5eb23995f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6992e1f36ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..ad1b218ad79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..300ab5dbffb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json new file mode 100644 index 00000000000..dce760e3846 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json new file mode 100644 index 00000000000..2d0d86adf8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json new file mode 100644 index 00000000000..8dc14b3b7e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json new file mode 100644 index 00000000000..3e370bfe703 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/opv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/opv/side", + "top": "gtceu:block/casings/voltage/opv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json new file mode 100644 index 00000000000..5f504f80549 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:opv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/opv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json new file mode 100644 index 00000000000..862d77347ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/plasma_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:plasma_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_plasma_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json b/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json new file mode 100644 index 00000000000..a23b6ccc232 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/power_substation.json @@ -0,0 +1,86 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:power_substation", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_palladium_substation", + "overlay_front": "gtceu:block/multiblock/power_substation/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/power_substation/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json new file mode 100644 index 00000000000..8400fc66237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/primitive_blast_furnace.json @@ -0,0 +1,100 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fluid_area", + "block_light": 15, + "fixed_fluid": "minecraft:lava", + "offset_face": -0.125, + "overwrite_light": true, + "sky_light": 15 + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:primitive_blast_furnace", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_primitive_bricks", + "overlay_front": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/primitive_blast_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json new file mode 100644 index 00000000000..04f076370c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json @@ -0,0 +1,100 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:primitive_pump", + "texture_overrides": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "overlay_front": "gtceu:block/multiblock/primitive_pump/overlay_front", + "side": "gtceu:block/casings/pump_deck/side", + "top": "gtceu:block/casings/pump_deck/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json new file mode 100644 index 00000000000..91d6dd3315b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/pump_hatch.json @@ -0,0 +1,15 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:pump_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": "gtceu:block/machine/part/pump_hatch" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json new file mode 100644 index 00000000000..d933c7901c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/pyrolyse_oven.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:pyrolyse_oven", + "texture_overrides": { + "all": "gtceu:block/casings/voltage/ulv/side" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/voltage/ulv/side", + "overlay_front": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/pyrolyse_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/research_station.json b/src/generated/resources/assets/gtceu/models/block/machine/research_station.json new file mode 100644 index 00000000000..735333e2c99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/research_station.json @@ -0,0 +1,108 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:research_station", + "texture_overrides": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "overlay_front": "gtceu:block/multiblock/research_station/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/research_station/overlay_front_active_emissive", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json new file mode 100644 index 00000000000..1c3b22e1e59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/reservoir_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:reservoir_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/reservoir_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ev/bottom", + "side": "gtceu:block/casings/voltage/ev/side", + "top": "gtceu:block/casings/voltage/ev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json new file mode 100644 index 00000000000..42b29fe99af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:stainless_steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json new file mode 100644 index 00000000000..455c3a42454 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/stainless_steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:stainless_steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json new file mode 100644 index 00000000000..e74ccaa6402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_grinder.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_grinder", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_grinder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_grinder/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json new file mode 100644 index 00000000000..1825409ec39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json new file mode 100644 index 00000000000..2f8d860d22a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "steel=false": { + "model": { + "parent": "gtceu:block/machine/part/steam_hatch", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/cover/pump", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "steel=true": { + "model": { + "parent": "gtceu:block/machine/part/steam_hatch", + "textures": { + "bottom": "gtceu:block/casings/steam/steel/bottom", + "side": "gtceu:block/casings/steam/steel/side", + "top": "gtceu:block/casings/steam/steel/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json new file mode 100644 index 00000000000..8afd1cbeac8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_large_turbine.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_large_turbine", + "texture_overrides": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/mechanic/machine_casing_turbine_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steam_turbine/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json new file mode 100644 index 00000000000..9701b8039ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steam_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/steam/bronze/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/steam/bronze/side", + "top": "gtceu:block/casings/steam/bronze/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json new file mode 100644 index 00000000000..40e6d83cc65 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_oven.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:steam_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:bronze_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:steam_oven", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", + "overlay_front": "gtceu:block/multiblock/steam_oven/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/steam_oven/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json new file mode 100644 index 00000000000..ee839b57b96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json new file mode 100644 index 00000000000..9541468fa3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json new file mode 100644 index 00000000000..7c3ae4c812a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:solid_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:steel_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:steel_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:steel_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_steel_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json new file mode 100644 index 00000000000..9d44e82ec13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_multiblock_tank.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_multiblock_tank", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json b/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json new file mode 100644 index 00000000000..5b27818ea56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/steel_tank_valve.json @@ -0,0 +1,46 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:steel_tank_valve", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel" + }, + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_solid_steel", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json new file mode 100644 index 00000000000..59aa457dcba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:titanium_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json new file mode 100644 index 00000000000..6aea2675eba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:titanium_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json new file mode 100644 index 00000000000..8ee47846df7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/titanium_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:stable_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:titanium_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:titanium_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:titanium_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_stable_titanium", + "overlay_front": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_titanium_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json new file mode 100644 index 00000000000..6a2fe2598a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:tungsten_steel_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/metal_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/metal_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json new file mode 100644 index 00000000000..5d7264fc061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungsten_steel_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:tungsten_steel_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/metal_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..b4ea2381761 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/tungstensteel_large_boiler.json @@ -0,0 +1,110 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:boiler_multi_parts", + "casing_block": { + "Name": "gtceu:robust_machine_casing" + }, + "firebox_active": { + "Name": "gtceu:tungstensteel_firebox_casing", + "Properties": { + "active": "true" + } + }, + "firebox_idle": { + "Name": "gtceu:tungstensteel_firebox_casing", + "Properties": { + "active": "false" + } + } + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:tungstensteel_large_boiler", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_robust_tungstensteel", + "overlay_front": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..9bc9f100134 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..e6c8c6fb249 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json new file mode 100644 index 00000000000..cda7e4bd0e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json new file mode 100644 index 00000000000..a4a1cf3ec0e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..a0fb02e5f6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d108a0ff5a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..a5e57c22455 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e5c6ca9582b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json new file mode 100644 index 00000000000..efbcb73f71c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json new file mode 100644 index 00000000000..fcd4cf06686 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json new file mode 100644 index 00000000000..4d3955e24fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json new file mode 100644 index 00000000000..19ca7bf1949 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json new file mode 100644 index 00000000000..36d7dfd42e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json new file mode 100644 index 00000000000..1803f70a407 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..d3567a2cc52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..e82ab4866bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..6615396a5c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json new file mode 100644 index 00000000000..c8ae8a9e1db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json new file mode 100644 index 00000000000..94d1fd56780 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json new file mode 100644 index 00000000000..eb4920ddc6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json new file mode 100644 index 00000000000..c1c9e4f47db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json new file mode 100644 index 00000000000..1d35cc40bf4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json new file mode 100644 index 00000000000..88d30498af7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json new file mode 100644 index 00000000000..10cfe7a87fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json new file mode 100644 index 00000000000..1191a4cab23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json new file mode 100644 index 00000000000..3641a476a81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json new file mode 100644 index 00000000000..80fd12f4223 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json new file mode 100644 index 00000000000..2f1763e88c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json new file mode 100644 index 00000000000..a1a59e23895 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json new file mode 100644 index 00000000000..61080e01daf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json new file mode 100644 index 00000000000..d6b8d3cba0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json new file mode 100644 index 00000000000..eb89a67da67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json new file mode 100644 index 00000000000..6dc0120b6eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..650c3a5e000 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json new file mode 100644 index 00000000000..2184ed6823f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..55dad825f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..57f4f25aa2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json new file mode 100644 index 00000000000..2f4e1a7be51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..1eabd90b995 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..e72194fb6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json new file mode 100644 index 00000000000..71fb3fa9482 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json new file mode 100644 index 00000000000..aa2d776e304 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json new file mode 100644 index 00000000000..22a8fdf9bcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json new file mode 100644 index 00000000000..33660a110ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..0be7a570eda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json new file mode 100644 index 00000000000..2e95440ddda --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json new file mode 100644 index 00000000000..d563729914e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json new file mode 100644 index 00000000000..89e36adac83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json new file mode 100644 index 00000000000..9552d12148f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json new file mode 100644 index 00000000000..86adaac674d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json new file mode 100644 index 00000000000..c3dd55b1e66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json new file mode 100644 index 00000000000..adb4a6db937 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json new file mode 100644 index 00000000000..243518e3af5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..21d581c0aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json new file mode 100644 index 00000000000..091ae47799d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json new file mode 100644 index 00000000000..62d45111b97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json new file mode 100644 index 00000000000..7824891425a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json new file mode 100644 index 00000000000..afaab5a41dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json new file mode 100644 index 00000000000..245831f38e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json new file mode 100644 index 00000000000..6fa4d299427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json new file mode 100644 index 00000000000..6b3d9fbccbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json new file mode 100644 index 00000000000..5ca3bb2cb12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json new file mode 100644 index 00000000000..94e1ab27d45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json new file mode 100644 index 00000000000..a2ffb54e397 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json new file mode 100644 index 00000000000..8ea4174c681 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json new file mode 100644 index 00000000000..f6364de04f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json new file mode 100644 index 00000000000..6a9e4590d07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json new file mode 100644 index 00000000000..b8a274535a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uev_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json new file mode 100644 index 00000000000..f9ac062a745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uev_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json new file mode 100644 index 00000000000..b6e98bf6556 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json new file mode 100644 index 00000000000..96d5ba5ba39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json new file mode 100644 index 00000000000..2fc4fe9eb5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json new file mode 100644 index 00000000000..81c4db90ef0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..2942e0cb0ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..15b2855ab30 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..82576c5d2d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json new file mode 100644 index 00000000000..7b82c4923dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json new file mode 100644 index 00000000000..fa257e412ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json new file mode 100644 index 00000000000..f9363246d3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json new file mode 100644 index 00000000000..98e4e5a8a5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uev/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uev/side", + "top": "gtceu:block/casings/voltage/uev/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json new file mode 100644 index 00000000000..064717826c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uev_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uev", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..2b295d486eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..29c65c916b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..4aa1fa37a5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..502963b1d95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..e4ef57ee986 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..0d896279fe1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..fbca82a9478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8fd1e625c20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..b75ffa77604 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..cdc49112ce2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json new file mode 100644 index 00000000000..8a56fab2487 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json new file mode 100644 index 00000000000..e209a1e379f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json new file mode 100644 index 00000000000..6fa1f71da1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json new file mode 100644 index 00000000000..62b502bcbed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..b6763449db4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..53e92572b4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..5c4469ee7de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json new file mode 100644 index 00000000000..77c787b8730 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json new file mode 100644 index 00000000000..959f729ea90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json new file mode 100644 index 00000000000..4172957ebc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json new file mode 100644 index 00000000000..06cf8e04b3d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json new file mode 100644 index 00000000000..c563c4472e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json new file mode 100644 index 00000000000..fdd7b6a8581 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json new file mode 100644 index 00000000000..6064dec6e38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json new file mode 100644 index 00000000000..47a98937ff5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json new file mode 100644 index 00000000000..284731d9017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json new file mode 100644 index 00000000000..353beaaec06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json new file mode 100644 index 00000000000..4364bbc5548 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json new file mode 100644 index 00000000000..6c04f514b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..bdbc8734c83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..9d819ec51c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json new file mode 100644 index 00000000000..0d59c394e20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json new file mode 100644 index 00000000000..2e8c167dc88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..a51afd59cb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..658fbadb901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..92b745d9708 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..5f198ecc49e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..ac68e46266a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..14024b7b10a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..835051a3175 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json new file mode 100644 index 00000000000..9a586137172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json new file mode 100644 index 00000000000..1a01fed3033 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json new file mode 100644 index 00000000000..ab6ac537069 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json new file mode 100644 index 00000000000..ce5d4ded380 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..63360c9fa25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..4678da5ad95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json new file mode 100644 index 00000000000..d7d76e9a513 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json new file mode 100644 index 00000000000..914c94db017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json new file mode 100644 index 00000000000..ab090d2b3b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json new file mode 100644 index 00000000000..bd8b7d25e9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json new file mode 100644 index 00000000000..9919d354b26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..02d324b20b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..288a1c7dc19 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f2a0c32f330 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json new file mode 100644 index 00000000000..1fdeef83c06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json new file mode 100644 index 00000000000..3b997687900 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json new file mode 100644 index 00000000000..06701df33a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json new file mode 100644 index 00000000000..f355f064d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json new file mode 100644 index 00000000000..1a756b22765 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json new file mode 100644 index 00000000000..f8899a7600a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json new file mode 100644 index 00000000000..911ed856fae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json new file mode 100644 index 00000000000..3c748a57413 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json new file mode 100644 index 00000000000..5bfc2bb345d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..518308aa7ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..835923715f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json new file mode 100644 index 00000000000..0e1b6a2d780 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json new file mode 100644 index 00000000000..f79a03fe176 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json new file mode 100644 index 00000000000..57e79bee1a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uhv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json new file mode 100644 index 00000000000..34c32c27ee3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uhv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json new file mode 100644 index 00000000000..446ebe11244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json new file mode 100644 index 00000000000..b70fc6eea3f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json new file mode 100644 index 00000000000..079c2785b32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json new file mode 100644 index 00000000000..880feffbcb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..1a3a565a06c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..5e8cd2ef092 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..2c8eefc5aee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json new file mode 100644 index 00000000000..4ecb5e95acd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json new file mode 100644 index 00000000000..408330013c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json new file mode 100644 index 00000000000..6d3f196b848 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json new file mode 100644 index 00000000000..486596953f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uhv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uhv/side", + "top": "gtceu:block/casings/voltage/uhv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json new file mode 100644 index 00000000000..3b676e30dad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uhv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uhv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..e0645fea0d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..1580e0cf017 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..a507c4b0657 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..e7dea0ab913 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..0cf11b4f6fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9e47bb8f7c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..24671686e3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e1bf7ddf9ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..0c0753d5300 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..e15b322ec56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json new file mode 100644 index 00000000000..962172e0f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json new file mode 100644 index 00000000000..76bd119e447 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json new file mode 100644 index 00000000000..2690d67ed15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json new file mode 100644 index 00000000000..a28e20bce0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..b64dbba3b86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..85d9e562359 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..e15ba48497f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json new file mode 100644 index 00000000000..5b3b5b6e995 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json new file mode 100644 index 00000000000..3f735e42d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json new file mode 100644 index 00000000000..07a818bbe7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json new file mode 100644 index 00000000000..1e743cc1852 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json new file mode 100644 index 00000000000..bb494ad09ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json new file mode 100644 index 00000000000..0f012fe2cb9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json new file mode 100644 index 00000000000..b2b057c01d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json new file mode 100644 index 00000000000..84f5d501d75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json new file mode 100644 index 00000000000..b191ab16ab6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json new file mode 100644 index 00000000000..abf9be506bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json new file mode 100644 index 00000000000..73d5157da9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json new file mode 100644 index 00000000000..e0b2adfd3fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..342ce64aa5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..f76c3ed5592 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json new file mode 100644 index 00000000000..6c3881efb05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json new file mode 100644 index 00000000000..13df94e0722 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..c9329a715ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..8e0dabf6348 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..59c0fe795d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1fcdec1cbe8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..6af06358efb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..c7d9937be25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..12e9442c1e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json new file mode 100644 index 00000000000..08c58e7dbb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json new file mode 100644 index 00000000000..8553e351a84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json new file mode 100644 index 00000000000..08cf7842aa7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json new file mode 100644 index 00000000000..a7f07dabe96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..be84eecaa86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..d810b93c44b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json new file mode 100644 index 00000000000..26bad9008dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json new file mode 100644 index 00000000000..2e4df26f61d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json new file mode 100644 index 00000000000..c9b225add88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json new file mode 100644 index 00000000000..cf3faa376ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json new file mode 100644 index 00000000000..03067e139e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..fdfdc53e173 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..f37874650be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..28f7660231f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json new file mode 100644 index 00000000000..99fd1aaba77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json new file mode 100644 index 00000000000..82bb5a4ba03 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json new file mode 100644 index 00000000000..2899cfff710 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json new file mode 100644 index 00000000000..a8ad6fdf63b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json new file mode 100644 index 00000000000..5a38f5f79ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json new file mode 100644 index 00000000000..50868106c04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json new file mode 100644 index 00000000000..fe6e3e982ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json new file mode 100644 index 00000000000..ed2daf4d4de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json new file mode 100644 index 00000000000..e90c299347c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..08688fc2408 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..d46d6921f4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json new file mode 100644 index 00000000000..9ebf12f5151 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json new file mode 100644 index 00000000000..94e6d35561f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json new file mode 100644 index 00000000000..80a111c3a1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uiv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json new file mode 100644 index 00000000000..45e29653f50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uiv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json new file mode 100644 index 00000000000..c9febd542a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json new file mode 100644 index 00000000000..2d73c1ceaea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json new file mode 100644 index 00000000000..de1f52ae821 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json new file mode 100644 index 00000000000..0e99210c3b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c9e2bd9d674 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1d1f0c00876 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..2faca94762b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json new file mode 100644 index 00000000000..9dbaa70b57f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json new file mode 100644 index 00000000000..18a51698b8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json new file mode 100644 index 00000000000..ef8071a0ef4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json new file mode 100644 index 00000000000..aac90a48c46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uiv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uiv/side", + "top": "gtceu:block/casings/voltage/uiv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json new file mode 100644 index 00000000000..b618209c1a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uiv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uiv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..e57123d54c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..fa99273ad5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..4342297ebc8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..626b4fe9362 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..c85e2bcb846 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..f8511557ca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..1959548094b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json new file mode 100644 index 00000000000..1ac64473946 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..6fd5ec93735 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..eee84e10566 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json new file mode 100644 index 00000000000..3247169e4a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json new file mode 100644 index 00000000000..43a6d703c8f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json new file mode 100644 index 00000000000..5c676d791ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json new file mode 100644 index 00000000000..9129247beb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json new file mode 100644 index 00000000000..6818911b758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json new file mode 100644 index 00000000000..a31011cab97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json new file mode 100644 index 00000000000..076baa11764 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json new file mode 100644 index 00000000000..f51d43b623f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json new file mode 100644 index 00000000000..ddb874a9a2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:ulv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/ulv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/ulv/side", + "top": "gtceu:block/casings/voltage/ulv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..06027f6ad9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..c366cb890cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json new file mode 100644 index 00000000000..559758e2d25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json new file mode 100644 index 00000000000..c55fb015dbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..bb2811a8478 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..cde5b216a49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..28078740d74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..c74f3646270 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json new file mode 100644 index 00000000000..ca77188de2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json new file mode 100644 index 00000000000..12b23ef7c47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json new file mode 100644 index 00000000000..fb33fb56e57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json new file mode 100644 index 00000000000..82a00bbcb0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json new file mode 100644 index 00000000000..edc0cbf6045 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json new file mode 100644 index 00000000000..202b7141dfd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..849b9c615b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..0903d156fb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..f7d84ee765c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json new file mode 100644 index 00000000000..771b1d410d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json new file mode 100644 index 00000000000..59a19662785 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json new file mode 100644 index 00000000000..e5b96125540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json new file mode 100644 index 00000000000..f434d0e695f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json new file mode 100644 index 00000000000..01b3b91c660 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json new file mode 100644 index 00000000000..b444c855815 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json new file mode 100644 index 00000000000..f81582479ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json new file mode 100644 index 00000000000..88d8889144e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json new file mode 100644 index 00000000000..44715594b1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json new file mode 100644 index 00000000000..430d1236c04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json new file mode 100644 index 00000000000..72bc14ca481 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json new file mode 100644 index 00000000000..1face64d8f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json new file mode 100644 index 00000000000..421b36c710f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json new file mode 100644 index 00000000000..46ed70078ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json new file mode 100644 index 00000000000..8d596ae26b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json new file mode 100644 index 00000000000..f07012635e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..0c1d350ef8e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json new file mode 100644 index 00000000000..47dfafd93db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..a790bc4c42e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..3386727eef4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json new file mode 100644 index 00000000000..026f843ef8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..e1538d95ea2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..eccec884d5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json new file mode 100644 index 00000000000..72ba9aa52a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json new file mode 100644 index 00000000000..fe8305c900a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json new file mode 100644 index 00000000000..36d4f47a9f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json new file mode 100644 index 00000000000..79a29450c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..6d8f1b87380 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json new file mode 100644 index 00000000000..26b539b0caf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json new file mode 100644 index 00000000000..7def4a0244a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json new file mode 100644 index 00000000000..7f0cc4e79be --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json new file mode 100644 index 00000000000..d9f8007608d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk3", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json new file mode 100644 index 00000000000..7a482133b89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json new file mode 100644 index 00000000000..138b988221c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json new file mode 100644 index 00000000000..08e7fc03221 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json new file mode 100644 index 00000000000..ce04ed537f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json new file mode 100644 index 00000000000..a1f5472b57f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..e6aa491a46e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json new file mode 100644 index 00000000000..8663965c203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json new file mode 100644 index 00000000000..1220ec2c2cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json new file mode 100644 index 00000000000..cfed999d863 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json new file mode 100644 index 00000000000..eb7532c7555 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json new file mode 100644 index 00000000000..e9543ddc39d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json new file mode 100644 index 00000000000..5aa8be89f8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json new file mode 100644 index 00000000000..f9ab7794a91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json new file mode 100644 index 00000000000..9d55ae1578d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json new file mode 100644 index 00000000000..426efc13a2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json new file mode 100644 index 00000000000..b127e36e25c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json new file mode 100644 index 00000000000..e71d63fbb0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json new file mode 100644 index 00000000000..b25e9950cbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json new file mode 100644 index 00000000000..9a00c16157a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk4/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json new file mode 100644 index 00000000000..d30334d6de9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json new file mode 100644 index 00000000000..80b06c0ef28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json new file mode 100644 index 00000000000..e4a867cde49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json new file mode 100644 index 00000000000..d67516a8ce4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json new file mode 100644 index 00000000000..477d636fcba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json new file mode 100644 index 00000000000..1aabbed47b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json new file mode 100644 index 00000000000..2ed4f10c17c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..86c8188f0d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..eca666c5f2f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..279c0664d91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json new file mode 100644 index 00000000000..d57a78f94a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json new file mode 100644 index 00000000000..855793f8358 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json new file mode 100644 index 00000000000..db0f2f01172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json new file mode 100644 index 00000000000..670228619a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json new file mode 100644 index 00000000000..4eb236f17db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json new file mode 100644 index 00000000000..bafbbb4dd6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uv_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uv/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/uv/side", + "top": "gtceu:block/casings/voltage/uv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..38a2e72aea4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..cfa5fa91a44 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..af241085359 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..8db8895e1da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..90997b793f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..2f76ef50fd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..15a9e454c79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..5b8ad190293 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..0a97997cef1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..7651338cda6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json new file mode 100644 index 00000000000..328f7c3fe3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json new file mode 100644 index 00000000000..b62d42108a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json new file mode 100644 index 00000000000..3061903067b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json new file mode 100644 index 00000000000..8fc62eff641 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..0af6759bfba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..7327b69d1d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..fb3044fe9cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json new file mode 100644 index 00000000000..0b1cf5dab20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json new file mode 100644 index 00000000000..0365737a2da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json new file mode 100644 index 00000000000..b544f334a35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json new file mode 100644 index 00000000000..414f59beee8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json new file mode 100644 index 00000000000..634c95b2c66 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json new file mode 100644 index 00000000000..6f39e5492b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json new file mode 100644 index 00000000000..218c096d15f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json new file mode 100644 index 00000000000..598576e896a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json new file mode 100644 index 00000000000..a3cc549f7af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json new file mode 100644 index 00000000000..1fd0ceb1f18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json new file mode 100644 index 00000000000..1f994eae90b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json new file mode 100644 index 00000000000..8f5c4755db6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..a5c8bb36745 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..1599409d83b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json new file mode 100644 index 00000000000..1939173ec68 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json new file mode 100644 index 00000000000..d30fb874d91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..28b0e4678dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..6a088fdd3b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..72e4137eccd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..012d9f12577 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..786607b3182 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..95a9cd52dfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..8b0c37c836f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json new file mode 100644 index 00000000000..88e0b569d24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json new file mode 100644 index 00000000000..91e5acaadc2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json new file mode 100644 index 00000000000..bbc1d61d794 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json new file mode 100644 index 00000000000..827f866f360 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..a76b05c2560 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..f40988d048d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json new file mode 100644 index 00000000000..7cc80f7ca6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json new file mode 100644 index 00000000000..8dcf917bc7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json new file mode 100644 index 00000000000..f7098b7edde --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json new file mode 100644 index 00000000000..3df12901a49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json new file mode 100644 index 00000000000..2e617e987d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..849c9296b06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..77ebb4d2b8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..3db36774e8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json new file mode 100644 index 00000000000..f2c4e33bcce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json new file mode 100644 index 00000000000..81389b51a37 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json new file mode 100644 index 00000000000..6a7fa5091e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json new file mode 100644 index 00000000000..04b8f04b056 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json new file mode 100644 index 00000000000..3282a45a852 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json new file mode 100644 index 00000000000..733249cc048 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json new file mode 100644 index 00000000000..d238777d5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json new file mode 100644 index 00000000000..94810240aaf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json new file mode 100644 index 00000000000..1ef5492c8d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..4d700eadac6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..8fb21208a3e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json new file mode 100644 index 00000000000..4f5c2571b32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json new file mode 100644 index 00000000000..ea4af252ac4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json new file mode 100644 index 00000000000..639554319ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uxv_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json new file mode 100644 index 00000000000..4213cfc9dba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:uxv_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json new file mode 100644 index 00000000000..3c4131082c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json new file mode 100644 index 00000000000..70f2243b483 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json new file mode 100644 index 00000000000..c62f7aaa1ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json new file mode 100644 index 00000000000..c25556ff7ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..0d8101cd2d1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..29e98ce5994 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..6c4cc5dfb9c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json new file mode 100644 index 00000000000..865f5c5d9dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json new file mode 100644 index 00000000000..345367d9f56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json new file mode 100644 index 00000000000..34632455722 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json new file mode 100644 index 00000000000..4d2d49b9d1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/uxv/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/uxv/side", + "top": "gtceu:block/casings/voltage/uxv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json new file mode 100644 index 00000000000..bf7df412b3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:uxv_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/uxv", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json new file mode 100644 index 00000000000..865bff111df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/vacuum_freezer.json @@ -0,0 +1,90 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:vacuum_freezer", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_paused_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/vacuum_freezer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json b/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json new file mode 100644 index 00000000000..aa8ec85c1c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wood_crate.json @@ -0,0 +1,13 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wood_crate", + "variants": { + "taped=false": { + "model": "gtceu:block/machine/template/crate/wooden_crate" + }, + "taped=true": { + "model": "gtceu:block/machine/template/crate/wooden_crate_taped" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json b/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json new file mode 100644 index 00000000000..6ba4c4d6c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wood_drum.json @@ -0,0 +1,10 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wood_drum", + "variants": { + "": { + "model": "gtceu:block/machine/template/drum/wooden_drum" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json new file mode 100644 index 00000000000..f9a986c2a29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wooden_multiblock_tank.json @@ -0,0 +1,100 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wooden_multiblock_tank", + "texture_overrides": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/multiblock_tank/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json new file mode 100644 index 00000000000..9952521b919 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/wooden_tank_valve.json @@ -0,0 +1,56 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:wooden_tank_valve", + "texture_overrides": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + }, + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/wood_wall/bottom", + "overlay_front": "gtceu:block/multiblock/tank_valve/overlay_front_active", + "side": "gtceu:block/casings/wood_wall/side", + "top": "gtceu:block/casings/wood_wall/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..669c2ad9991 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1024a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0b0e603b537 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1024a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..8dbb1a47c72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_16a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..80ebb3c2f1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_1a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..92b5736bf58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_256a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..eb922870a23 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_256a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_256a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..d75f0169c14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4096a_laser_source_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_source_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..a3611571319 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4096a_laser_target_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/laser_target_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..8e87c12755e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_4a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..7f1432676e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_8a_energy_converter", + "variants": { + "fe_to_eu=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "fe_to_eu=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json new file mode 100644 index 00000000000..0d2ff4e2431 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_alloy_smelter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_alloy_smelter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/alloy_smelter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/alloy_smelter/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json new file mode 100644 index 00000000000..55058eed594 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_arc_furnace.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_arc_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/arc_furnace/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/arc_furnace/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/arc_furnace/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/arc_furnace/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/arc_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/arc_furnace/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/arc_furnace/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/arc_furnace/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json new file mode 100644 index 00000000000..463fe8cd31f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json new file mode 100644 index 00000000000..96e4df9581f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_autoclave.json @@ -0,0 +1,67 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_autoclave", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/autoclave/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/autoclave/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/autoclave/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/autoclave/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/autoclave/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/autoclave/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/autoclave/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/autoclave/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..40b2d1bf289 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_16x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_16x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..95e911d6e25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_4x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_4x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..90ac7e88fef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_battery_buffer_8x.json @@ -0,0 +1,20 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_battery_buffer_8x", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/void", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json new file mode 100644 index 00000000000..8e95db06e46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_bender.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_bender", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/bender/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/bender/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json new file mode 100644 index 00000000000..0cfb4d89d1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_brewery.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_brewery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/brewery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/brewery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/brewery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/brewery/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json new file mode 100644 index 00000000000..0e77c7bfbd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_canner.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_canner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/canner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/canner/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/canner/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/canner/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json new file mode 100644 index 00000000000..cddcb07a472 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_centrifuge.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/centrifuge/overlay_back_active", + "overlay_front": "gtceu:block/machines/centrifuge/overlay_front_active", + "overlay_side": "gtceu:block/machines/centrifuge/overlay_side_active", + "overlay_top": "gtceu:block/machines/centrifuge/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json new file mode 100644 index 00000000000..e77af6e0415 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_charger_4x.json @@ -0,0 +1,42 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_charger_4x", + "variants": { + "charger_state=finished": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_finished", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_finished_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "charger_state=idle": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_idle", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "charger_state=running": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_front": "gtceu:block/machines/charger/overlay_charger_running", + "overlay_front_emissive": "gtceu:block/machines/charger/overlay_charger_running_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json new file mode 100644 index 00000000000..cc6ea03c4a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_bath.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_chemical_bath", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_bath/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_bath/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/chemical_bath/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/chemical_bath/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json new file mode 100644 index 00000000000..4a5a8fab5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_chemical_reactor.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_chemical_reactor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/chemical_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/chemical_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json new file mode 100644 index 00000000000..95e7f16ea75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_circuit_assembler.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_circuit_assembler", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/circuit_assembler/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/circuit_assembler/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/circuit_assembler/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/circuit_assembler/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json new file mode 100644 index 00000000000..4098de9724e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_compressor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_compressor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/compressor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/compressor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/compressor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/compressor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/compressor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/compressor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json new file mode 100644 index 00000000000..f6c7a9e9179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_cutter.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_cutter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front", + "overlay_side": "gtceu:block/machines/cutter/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/cutter/overlay_front_active", + "overlay_side": "gtceu:block/machines/cutter/overlay_side_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json new file mode 100644 index 00000000000..faadf4ef702 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json @@ -0,0 +1,82 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_diode", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "amp_mode=16a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=1a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=2a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=4a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "amp_mode=8a": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json new file mode 100644 index 00000000000..37b17c82af3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_distillery.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_distillery", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/distillery/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/distillery/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/distillery/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/distillery/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/distillery/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/distillery/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..dab2ac0bf86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_dual_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..3e3b7b43554 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_dual_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_dual_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/dual_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json new file mode 100644 index 00000000000..e062d95b026 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electric_furnace.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electric_furnace", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electric_furnace/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electric_furnace/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json new file mode 100644 index 00000000000..72e9ce21e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electrolyzer.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electrolyzer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/electrolyzer/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/electrolyzer/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/electrolyzer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electrolyzer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/electrolyzer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/electrolyzer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..16d9fd5bc73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_electromagnetic_separator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_electromagnetic_separator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/electromagnetic_separator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/electromagnetic_separator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/electromagnetic_separator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..c75c27975d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8bd84d8b36e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..eecd0c34ac1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_input_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_input_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..70de3b85e57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..80624af3807 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_16a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch_16a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_16a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..be489fdd729 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_energy_output_hatch_4a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_energy_output_hatch_4a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_4a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json new file mode 100644 index 00000000000..82c53c06e34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extractor.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_extractor", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extractor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extractor/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/extractor/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/extractor/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/extractor/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extractor/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json new file mode 100644 index 00000000000..e12524293b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_extruder.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_extruder", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/extruder/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/extruder/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/extruder/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/extruder/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json new file mode 100644 index 00000000000..9a365f1f580 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fermenter.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fermenter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fermenter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fermenter/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fermenter/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fermenter/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fermenter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fermenter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json new file mode 100644 index 00000000000..197004523dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_heater.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_heater", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_heater/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_heater/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/fluid_heater/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/fluid_heater/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/fluid_heater/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/fluid_heater/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..4cebad48db4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/fluid_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..879925f0cb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fluid_solidifier.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fluid_solidifier", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/fluid_solidifier/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/fluid_solidifier/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json new file mode 100644 index 00000000000..bff6622c1a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forge_hammer.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_forge_hammer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forge_hammer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forge_hammer/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json new file mode 100644 index 00000000000..89cf009b788 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_forming_press.json @@ -0,0 +1,59 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_forming_press", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/forming_press/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/forming_press/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/forming_press/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/forming_press/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/forming_press/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/forming_press/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json new file mode 100644 index 00000000000..4a6504969cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_fusion_reactor.json @@ -0,0 +1,95 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:fusion_ring" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_fusion_reactor", + "texture_overrides": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/fusion/fusion_casing_mk2", + "overlay_front": "gtceu:block/multiblock/fusion_reactor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/fusion_reactor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json new file mode 100644 index 00000000000..d2f3331340d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_gas_collector.json @@ -0,0 +1,75 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_gas_collector", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/gas_collector/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/gas_collector/overlay_back_active_emissive", + "overlay_bottom": "gtceu:block/machines/gas_collector/overlay_bottom_active", + "overlay_bottom_emissive": "gtceu:block/machines/gas_collector/overlay_bottom_active_emissive", + "overlay_front": "gtceu:block/machines/gas_collector/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/gas_collector/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/gas_collector/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/gas_collector/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/gas_collector/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/gas_collector/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json new file mode 100644 index 00000000000..e38e0c5d516 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json new file mode 100644 index 00000000000..0038a9264bb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..5e131afbd5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..ced09b6b8c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_input_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..769910a99d0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_item_passthrough_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_item_passthrough_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/item_passthrough_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json new file mode 100644 index 00000000000..1ea95430352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_laser_engraver.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_laser_engraver", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/laser_engraver/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/laser_engraver/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json new file mode 100644 index 00000000000..23f2625e368 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_lathe.json @@ -0,0 +1,41 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_lathe", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/lathe/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/lathe/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json new file mode 100644 index 00000000000..e4fc6801df3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_macerator.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_macerator", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/macerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/macerator/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/macerator/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/macerator/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json new file mode 100644 index 00000000000..79330b4a87f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_machine_hull.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_machine_hull", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/hull", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json new file mode 100644 index 00000000000..637f3978bb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_mixer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_mixer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back", + "overlay_front": "gtceu:block/machines/mixer/overlay_front", + "overlay_side": "gtceu:block/machines/mixer/overlay_side", + "overlay_top": "gtceu:block/machines/mixer/overlay_top" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_back": "gtceu:block/machines/mixer/overlay_back_active", + "overlay_front": "gtceu:block/machines/mixer/overlay_front_active", + "overlay_side": "gtceu:block/machines/mixer/overlay_side_active", + "overlay_top": "gtceu:block/machines/mixer/overlay_top_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json new file mode 100644 index 00000000000..7ad28fd468f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_muffler_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_muffler_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/muffler_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json new file mode 100644 index 00000000000..543ae8d64bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_ore_washer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_ore_washer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/ore_washer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/ore_washer/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/ore_washer/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/ore_washer/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json new file mode 100644 index 00000000000..b03ccaff473 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_bus", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json new file mode 100644 index 00000000000..8d4c4ad9fec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..2b2cc2bf58d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch_4x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..adb81d41ddf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_output_hatch_9x", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "is_painted=false": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "is_painted=true": { + "model": { + "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json new file mode 100644 index 00000000000..a98f933a195 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_packer.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_packer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/packer/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json new file mode 100644 index 00000000000..f2b9562e6c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_parallel_hatch.json @@ -0,0 +1,48 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_parallel_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/parallel_hatch_mk3/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json new file mode 100644 index 00000000000..94c5eff001a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_polarizer.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_polarizer", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_paused_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/polarizer/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/polarizer/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/polarizer/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/polarizer/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json new file mode 100644 index 00000000000..d63289f23f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_chest.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_chest_item" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_quantum_chest", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_chest", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json new file mode 100644 index 00000000000..a8232f38717 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_quantum_tank.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:quantum_tank_fluid" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:zpm_quantum_tank", + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/template/quantum/quantum_tank", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json new file mode 100644 index 00000000000..a8ba43ebf5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rock_crusher.json @@ -0,0 +1,39 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_rock_crusher", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/rock_crusher/overlay_front_active" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json new file mode 100644 index 00000000000..044446002f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json @@ -0,0 +1,76 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_rotor_holder", + "multipart": [ + { + "apply": { + "model": { + "parent": "gtceu:block/machine/template/rotor_holder/block", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/overlay" + }, + "when": { + "is_formed": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "false" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "when": { + "emissive_rotor": "false", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + }, + { + "apply": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + }, + "when": { + "emissive_rotor": "true", + "has_rotor": "true", + "is_formed": "true", + "rotor_spinning": "true" + } + } + ], + "replaceable_textures": [ + "bottom", + "top", + "side" + ] +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json new file mode 100644 index 00000000000..33bf18dc003 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_scanner.json @@ -0,0 +1,43 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_scanner", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/scanner/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/scanner/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json new file mode 100644 index 00000000000..6f50f2fe46f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_sifter.json @@ -0,0 +1,51 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_sifter", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/sifter/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/sifter/overlay_front_active_emissive", + "overlay_top": "gtceu:block/machines/sifter/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/sifter/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..bd45d419ecf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_input_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_substation_input_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_input_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..79b19ed88ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_substation_output_hatch_64a.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_substation_output_hatch_64a", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/energy_output_hatch_64a", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..d7c63ad26a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_thermal_centrifuge.json @@ -0,0 +1,49 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_thermal_centrifuge", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/thermal_centrifuge/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/thermal_centrifuge/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/thermal_centrifuge/overlay_side_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json new file mode 100644 index 00000000000..5b358301cb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_16a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json new file mode 100644 index 00000000000..db18084a2af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_1a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json new file mode 100644 index 00000000000..e2b1894965e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_2a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json new file mode 100644 index 00000000000..bd56b163ade --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_transformer_4a", + "variants": { + "transform_up=false": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "transform_up=true": { + "model": { + "parent": "gtceu:block/machine/template/transformer_like_machine", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json new file mode 100644 index 00000000000..a7522f3059b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_wiremill.json @@ -0,0 +1,57 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_wiremill", + "variants": { + "recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_emissive" + } + } + }, + "recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_paused", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_paused_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_paused", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_paused_emissive" + } + } + }, + "recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + }, + "recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/casings/voltage/zpm", + "textures": { + "overlay_front": "gtceu:block/machines/wiremill/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/wiremill/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/wiremill/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/wiremill/overlay_side_active_emissive", + "overlay_top": "gtceu:block/machines/wiremill/overlay_top_active", + "overlay_top_emissive": "gtceu:block/machines/wiremill/overlay_top_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json new file mode 100644 index 00000000000..ef28c121ee5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_world_accelerator.json @@ -0,0 +1,135 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:zpm_world_accelerator", + "variants": { + "active=false,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=false,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=false,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator_te/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator_te/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator_te/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator_te/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator_te/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator_te/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=false": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + }, + "active=true,random_tick_mode=true,working_enabled=true": { + "model": { + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "bottom": "gtceu:block/casings/voltage/zpm/bottom", + "overlay_back": "gtceu:block/machines/world_accelerator/overlay_back_active", + "overlay_back_emissive": "gtceu:block/machines/world_accelerator/overlay_back_active_emissive", + "overlay_front": "gtceu:block/machines/world_accelerator/overlay_front_active", + "overlay_front_emissive": "gtceu:block/machines/world_accelerator/overlay_front_active_emissive", + "overlay_side": "gtceu:block/machines/world_accelerator/overlay_side_active", + "overlay_side_emissive": "gtceu:block/machines/world_accelerator/overlay_side_active_emissive", + "side": "gtceu:block/casings/voltage/zpm/side", + "top": "gtceu:block/casings/voltage/zpm/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json index bc5b000bf09..2140f732299 100644 --- a/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/mv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/mv/bottom", "bot_side": "gtceu:block/casings/voltage/mv/side", - "bot_top": "gtceu:block/casings/voltage/mv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/mv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json new file mode 100644 index 00000000000..96d91a1d02e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json @@ -0,0 +1,391 @@ +{ + "elements": [ + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + }, + { + "faces": { + "north": { + "cullface": "north", + "texture": "#steam_vent", + "uv": [ + 0.0, + 0.0, + 16.0, + 16.0 + ] + } + }, + "from": [ + -0.002, + -0.002, + -0.002 + ], + "to": [ + 16.002, + 16.002, + 16.002 + ] + } + ], + "textures": { + "steam_vent": "gtceu:block/overlay/machine/overlay_steam_vent" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json index 488fa45d866..f22c7a8178c 100644 --- a/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/uhv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/uhv/bottom", "bot_side": "gtceu:block/casings/voltage/uhv/side", - "bot_top": "gtceu:block/casings/voltage/uhv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/uhv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json index 917514255e5..0d51f656aeb 100644 --- a/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/uv_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/uv/bottom", "bot_side": "gtceu:block/casings/voltage/uv/side", - "bot_top": "gtceu:block/casings/voltage/uv/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/uv/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json b/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json index 12e9c34be3b..7fd92952d34 100644 --- a/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json +++ b/src/generated/resources/assets/gtceu/models/block/zpm_hermetic_casing.json @@ -3,7 +3,6 @@ "textures": { "bot_bottom": "gtceu:block/casings/voltage/zpm/bottom", "bot_side": "gtceu:block/casings/voltage/zpm/side", - "bot_top": "gtceu:block/casings/voltage/zpm/top", - "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" + "bot_top": "gtceu:block/casings/voltage/zpm/top" } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/active_transformer.json b/src/generated/resources/assets/gtceu/models/item/active_transformer.json new file mode 100644 index 00000000000..a2124782cc3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/active_transformer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/active_transformer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json new file mode 100644 index 00000000000..2077d767f28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/advanced_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/advanced_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json new file mode 100644 index 00000000000..0c875d39b7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/alloy_blast_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/alloy_blast_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json b/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json new file mode 100644 index 00000000000..38eb0609228 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/aluminium_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/aluminium_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json b/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json new file mode 100644 index 00000000000..90c5e586297 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/aluminium_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/aluminium_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/assembly_line.json b/src/generated/resources/assets/gtceu/models/item/assembly_line.json new file mode 100644 index 00000000000..2df5df48e41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/assembly_line.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/assembly_line" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json new file mode 100644 index 00000000000..e6716077d41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/auto_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/auto_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_crate.json b/src/generated/resources/assets/gtceu/models/item/bronze_crate.json new file mode 100644 index 00000000000..dfa9b48d179 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_drum.json b/src/generated/resources/assets/gtceu/models/item/bronze_drum.json new file mode 100644 index 00000000000..01aecc8be1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json new file mode 100644 index 00000000000..63e85a9ff7f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/bronze_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/bronze_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json b/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json new file mode 100644 index 00000000000..9ad6a3bd07c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/charcoal_pile_igniter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/charcoal_pile_igniter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..99c7f155d41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cleaning_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cleaning_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cleanroom.json b/src/generated/resources/assets/gtceu/models/item/cleanroom.json new file mode 100644 index 00000000000..ca50f259c99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cleanroom.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cleanroom" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/coke_oven.json b/src/generated/resources/assets/gtceu/models/item/coke_oven.json new file mode 100644 index 00000000000..b24de4634e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/coke_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/coke_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json new file mode 100644 index 00000000000..337bf837550 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/coke_oven_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/coke_oven_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json new file mode 100644 index 00000000000..cb40e9a2446 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/computation_receiver_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/computation_receiver_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json new file mode 100644 index 00000000000..2c0d2391f45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/computation_transmitter_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/computation_transmitter_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..bf34e403700 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/configurable_maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/configurable_maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/cracker.json b/src/generated/resources/assets/gtceu/models/item/cracker.json new file mode 100644 index 00000000000..4bb86ce5b7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/cracker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/cracker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_chest.json b/src/generated/resources/assets/gtceu/models/item/creative_chest.json new file mode 100644 index 00000000000..efdf210df3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json b/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json new file mode 100644 index 00000000000..4ed8ee25e22 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_computation_provider.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_computation_provider" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json new file mode 100644 index 00000000000..ce56c6a2de8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_energy.json b/src/generated/resources/assets/gtceu/models/item/creative_energy.json new file mode 100644 index 00000000000..18e6fb54c11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_energy.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_energy" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/creative_tank.json b/src/generated/resources/assets/gtceu/models/item/creative_tank.json new file mode 100644 index 00000000000..0ee6a28c5b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/creative_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/creative_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json new file mode 100644 index 00000000000..a3d954b887e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_bank.json b/src/generated/resources/assets/gtceu/models/item/data_bank.json new file mode 100644 index 00000000000..305faee9a58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_bank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_bank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json new file mode 100644 index 00000000000..9c8bbc8822f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_receiver_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_receiver_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json b/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json new file mode 100644 index 00000000000..1965c902aeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/data_transmitter_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/data_transmitter_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/distillation_tower.json b/src/generated/resources/assets/gtceu/models/item/distillation_tower.json new file mode 100644 index 00000000000..adc7144d9d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/distillation_tower.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/distillation_tower" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json new file mode 100644 index 00000000000..ad3609216c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/electric_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/electric_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json new file mode 100644 index 00000000000..63780546b1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json new file mode 100644 index 00000000000..aed5d0f159e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json new file mode 100644 index 00000000000..625580a66da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json new file mode 100644 index 00000000000..39a3cf09e0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json new file mode 100644 index 00000000000..ca55175d665 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json new file mode 100644 index 00000000000..b6efa9fa730 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json new file mode 100644 index 00000000000..1d18807185b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_assembler.json b/src/generated/resources/assets/gtceu/models/item/ev_assembler.json new file mode 100644 index 00000000000..83ff004fe86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json b/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json new file mode 100644 index 00000000000..bffa4699ddf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json new file mode 100644 index 00000000000..b4721cca29e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json new file mode 100644 index 00000000000..aa3e590e73e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json new file mode 100644 index 00000000000..06d8c41e8eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json new file mode 100644 index 00000000000..cd3eacd496f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_bender.json b/src/generated/resources/assets/gtceu/models/item/ev_bender.json new file mode 100644 index 00000000000..2556919b0a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json new file mode 100644 index 00000000000..7bfa3465a69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_brewery.json b/src/generated/resources/assets/gtceu/models/item/ev_brewery.json new file mode 100644 index 00000000000..0bc515051e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_canner.json b/src/generated/resources/assets/gtceu/models/item/ev_canner.json new file mode 100644 index 00000000000..54965eafb1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json new file mode 100644 index 00000000000..ded26593526 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json new file mode 100644 index 00000000000..985de27a46c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json new file mode 100644 index 00000000000..f2dc5ec177c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json new file mode 100644 index 00000000000..66ab00c9f8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json new file mode 100644 index 00000000000..51a89340fef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_compressor.json b/src/generated/resources/assets/gtceu/models/item/ev_compressor.json new file mode 100644 index 00000000000..21d37769f4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_cutter.json b/src/generated/resources/assets/gtceu/models/item/ev_cutter.json new file mode 100644 index 00000000000..dfd74dbe718 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_diode.json b/src/generated/resources/assets/gtceu/models/item/ev_diode.json new file mode 100644 index 00000000000..768ad7842f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_distillery.json b/src/generated/resources/assets/gtceu/models/item/ev_distillery.json new file mode 100644 index 00000000000..a38de69293e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json new file mode 100644 index 00000000000..847fc6c2aea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json new file mode 100644 index 00000000000..62939e51741 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json new file mode 100644 index 00000000000..398bf042346 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json new file mode 100644 index 00000000000..d6fc0c6ecd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..6fa9d22a0bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..be11eddda7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json new file mode 100644 index 00000000000..801d3bd1c60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..fd108cdd5f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..9444c4e040c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_extractor.json b/src/generated/resources/assets/gtceu/models/item/ev_extractor.json new file mode 100644 index 00000000000..c429cedf139 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_extruder.json b/src/generated/resources/assets/gtceu/models/item/ev_extruder.json new file mode 100644 index 00000000000..d94f1b7876e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json b/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json new file mode 100644 index 00000000000..f59c79e2eeb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fisher.json b/src/generated/resources/assets/gtceu/models/item/ev_fisher.json new file mode 100644 index 00000000000..ae7e31b4b17 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json new file mode 100644 index 00000000000..26e8c9ed953 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json new file mode 100644 index 00000000000..0784ee35ff2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..1aabd752203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json new file mode 100644 index 00000000000..a9b9a5773d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json new file mode 100644 index 00000000000..a3ecab7e07f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json b/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json new file mode 100644 index 00000000000..f6c3c6c58ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json new file mode 100644 index 00000000000..f60931be8bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json b/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json new file mode 100644 index 00000000000..669ed4ca8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json new file mode 100644 index 00000000000..7cf171cfe0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json new file mode 100644 index 00000000000..d5378bab0b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json new file mode 100644 index 00000000000..53544930bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json b/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json new file mode 100644 index 00000000000..9c19887358c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json new file mode 100644 index 00000000000..c16d9628da9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json b/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json new file mode 100644 index 00000000000..6b849b7f34c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json new file mode 100644 index 00000000000..dbb1f4b3ea8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_lathe.json b/src/generated/resources/assets/gtceu/models/item/ev_lathe.json new file mode 100644 index 00000000000..07cac6ba486 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_macerator.json b/src/generated/resources/assets/gtceu/models/item/ev_macerator.json new file mode 100644 index 00000000000..a94d9a2b784 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json new file mode 100644 index 00000000000..cca83636364 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_mixer.json b/src/generated/resources/assets/gtceu/models/item/ev_mixer.json new file mode 100644 index 00000000000..aea58ae9377 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json new file mode 100644 index 00000000000..4d7950edf06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json new file mode 100644 index 00000000000..7f537cef7b4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json b/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json new file mode 100644 index 00000000000..c26e3a2298a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json new file mode 100644 index 00000000000..acc934e1e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json new file mode 100644 index 00000000000..2b74c7ddc51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json new file mode 100644 index 00000000000..d780a8c2b39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_packer.json b/src/generated/resources/assets/gtceu/models/item/ev_packer.json new file mode 100644 index 00000000000..db63b1e7063 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json b/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json new file mode 100644 index 00000000000..183630d5f57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_pump.json b/src/generated/resources/assets/gtceu/models/item/ev_pump.json new file mode 100644 index 00000000000..0ba58f746e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json new file mode 100644 index 00000000000..f7b88691c9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json new file mode 100644 index 00000000000..7af61017c97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_scanner.json b/src/generated/resources/assets/gtceu/models/item/ev_scanner.json new file mode 100644 index 00000000000..0d337511e1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_sifter.json b/src/generated/resources/assets/gtceu/models/item/ev_sifter.json new file mode 100644 index 00000000000..0abab7fd3f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..d8b98c146eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..25f4a3b1ebd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json b/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json new file mode 100644 index 00000000000..7db62569d10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json b/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json new file mode 100644 index 00000000000..3a345ccb27d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json new file mode 100644 index 00000000000..6f75ca82fac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json new file mode 100644 index 00000000000..55bee42eba8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json new file mode 100644 index 00000000000..e125fb9ee5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json new file mode 100644 index 00000000000..373a08cb263 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json new file mode 100644 index 00000000000..ecebe3bd237 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json b/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json new file mode 100644 index 00000000000..c3ce1c0e0f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json new file mode 100644 index 00000000000..c2d974a3500 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ev_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ev_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json new file mode 100644 index 00000000000..36a5f5c5704 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/extreme_combustion_engine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/extreme_combustion_engine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json new file mode 100644 index 00000000000..a5eadb85b1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/gas_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/gas_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/gold_drum.json b/src/generated/resources/assets/gtceu/models/item/gold_drum.json new file mode 100644 index 00000000000..5593867557e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/gold_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/gold_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json new file mode 100644 index 00000000000..f57bf7976a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/high_performance_computation_array.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/high_performance_computation_array" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json new file mode 100644 index 00000000000..b35cff0ded6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json new file mode 100644 index 00000000000..e64b3ede9e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json new file mode 100644 index 00000000000..7c3cd62f92a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json new file mode 100644 index 00000000000..7bc0e9222b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json new file mode 100644 index 00000000000..28ceda4df76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json new file mode 100644 index 00000000000..594d44e12cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_liquid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_liquid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json new file mode 100644 index 00000000000..99ecaf3c8f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json new file mode 100644 index 00000000000..190d569e1fd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json new file mode 100644 index 00000000000..65bc549537c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json new file mode 100644 index 00000000000..5821e51cfe4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_solar_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_solar_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json new file mode 100644 index 00000000000..c5fb7ac1d96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hp_steam_solid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hp_steam_solid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json new file mode 100644 index 00000000000..6ff9d45595b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_active_cooler_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_active_cooler_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json new file mode 100644 index 00000000000..41a24564b54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_advanced_computation_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_advanced_computation_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json new file mode 100644 index 00000000000..e0db9a5d869 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_bridge_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_bridge_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json new file mode 100644 index 00000000000..b1f438cd601 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_computation_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_computation_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json new file mode 100644 index 00000000000..46ad71f6da8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_empty_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_empty_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json b/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json new file mode 100644 index 00000000000..701b2da134f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hpca_heat_sink_component.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hpca_heat_sink_component" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json new file mode 100644 index 00000000000..c56b98a836d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json new file mode 100644 index 00000000000..755f80d916b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json new file mode 100644 index 00000000000..4beb3e9ea2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json new file mode 100644 index 00000000000..c83ba8b6c34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json new file mode 100644 index 00000000000..e0390e1a754 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json new file mode 100644 index 00000000000..f21ee445a0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json new file mode 100644 index 00000000000..2505e666b9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_assembler.json b/src/generated/resources/assets/gtceu/models/item/hv_assembler.json new file mode 100644 index 00000000000..8d44fc03665 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json new file mode 100644 index 00000000000..1bde3a0a6e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json new file mode 100644 index 00000000000..49e2d2ebb26 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json new file mode 100644 index 00000000000..8466e7fb5d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json new file mode 100644 index 00000000000..10bbbe643a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json new file mode 100644 index 00000000000..f9e473d104b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_bender.json b/src/generated/resources/assets/gtceu/models/item/hv_bender.json new file mode 100644 index 00000000000..b09401627ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json new file mode 100644 index 00000000000..7ca9c26a4cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_brewery.json b/src/generated/resources/assets/gtceu/models/item/hv_brewery.json new file mode 100644 index 00000000000..d214a4f580c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_buffer.json b/src/generated/resources/assets/gtceu/models/item/hv_buffer.json new file mode 100644 index 00000000000..7534ad15061 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_canner.json b/src/generated/resources/assets/gtceu/models/item/hv_canner.json new file mode 100644 index 00000000000..2959ee1f762 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json new file mode 100644 index 00000000000..eee2b9c2332 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json new file mode 100644 index 00000000000..4632b2269bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json new file mode 100644 index 00000000000..76c03f0d68c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json new file mode 100644 index 00000000000..dced7b99ebe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json new file mode 100644 index 00000000000..a2488d72fea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_combustion.json b/src/generated/resources/assets/gtceu/models/item/hv_combustion.json new file mode 100644 index 00000000000..4dee51a00e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_compressor.json b/src/generated/resources/assets/gtceu/models/item/hv_compressor.json new file mode 100644 index 00000000000..73bd550cb83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_cutter.json b/src/generated/resources/assets/gtceu/models/item/hv_cutter.json new file mode 100644 index 00000000000..c3e304ce434 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_diode.json b/src/generated/resources/assets/gtceu/models/item/hv_diode.json new file mode 100644 index 00000000000..1736f2d271c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_distillery.json b/src/generated/resources/assets/gtceu/models/item/hv_distillery.json new file mode 100644 index 00000000000..8ccb0b6a43b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json new file mode 100644 index 00000000000..238ef582dcc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json new file mode 100644 index 00000000000..7538e59444b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json new file mode 100644 index 00000000000..fbd84e24642 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json new file mode 100644 index 00000000000..7f95f77b15c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json new file mode 100644 index 00000000000..ccb6acf0947 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_extractor.json b/src/generated/resources/assets/gtceu/models/item/hv_extractor.json new file mode 100644 index 00000000000..7dc1bf3fe89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_extruder.json b/src/generated/resources/assets/gtceu/models/item/hv_extruder.json new file mode 100644 index 00000000000..6db69db59fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json new file mode 100644 index 00000000000..e546f46c6a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fisher.json b/src/generated/resources/assets/gtceu/models/item/hv_fisher.json new file mode 100644 index 00000000000..3c3e23c6f69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json new file mode 100644 index 00000000000..6796f84de55 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json new file mode 100644 index 00000000000..d0128c2c0b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..92b33b4f01d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json new file mode 100644 index 00000000000..5fb8e68e50d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json new file mode 100644 index 00000000000..dcd7a0c1a4b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json new file mode 100644 index 00000000000..0ebac978cbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json new file mode 100644 index 00000000000..204aeff1ded --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json new file mode 100644 index 00000000000..b08ac1a9228 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json new file mode 100644 index 00000000000..e376d489766 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json new file mode 100644 index 00000000000..9cb61245d5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json new file mode 100644 index 00000000000..54833d55de4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json new file mode 100644 index 00000000000..0cd63e5b603 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json new file mode 100644 index 00000000000..eab219f1bd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_lathe.json b/src/generated/resources/assets/gtceu/models/item/hv_lathe.json new file mode 100644 index 00000000000..55e8549f6e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_macerator.json b/src/generated/resources/assets/gtceu/models/item/hv_macerator.json new file mode 100644 index 00000000000..c261ac7ca02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json new file mode 100644 index 00000000000..acb60fedcb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_miner.json b/src/generated/resources/assets/gtceu/models/item/hv_miner.json new file mode 100644 index 00000000000..8ab929a2dbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_mixer.json b/src/generated/resources/assets/gtceu/models/item/hv_mixer.json new file mode 100644 index 00000000000..00a66e896d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json new file mode 100644 index 00000000000..9820d4891e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json new file mode 100644 index 00000000000..adcbf411474 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json new file mode 100644 index 00000000000..c27ca19fc74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json new file mode 100644 index 00000000000..1baf922abb2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_packer.json b/src/generated/resources/assets/gtceu/models/item/hv_packer.json new file mode 100644 index 00000000000..84b57f2b805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json new file mode 100644 index 00000000000..cd2c8f848c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_pump.json b/src/generated/resources/assets/gtceu/models/item/hv_pump.json new file mode 100644 index 00000000000..8c5d09e9a02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json new file mode 100644 index 00000000000..2736f6c790a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json new file mode 100644 index 00000000000..65ec3dc9137 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_scanner.json b/src/generated/resources/assets/gtceu/models/item/hv_scanner.json new file mode 100644 index 00000000000..b96d2304335 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_sifter.json b/src/generated/resources/assets/gtceu/models/item/hv_sifter.json new file mode 100644 index 00000000000..9a9644f628c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json new file mode 100644 index 00000000000..611e8e0487e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json new file mode 100644 index 00000000000..6878c1286fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json new file mode 100644 index 00000000000..201038735dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json new file mode 100644 index 00000000000..d966be90dc9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json new file mode 100644 index 00000000000..0263bc2b285 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json new file mode 100644 index 00000000000..3e08923db3c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json new file mode 100644 index 00000000000..b81ccda7e7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json new file mode 100644 index 00000000000..cb701498c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json new file mode 100644 index 00000000000..c22037627c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json new file mode 100644 index 00000000000..87af7ae4c71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/hv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/hv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json b/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json new file mode 100644 index 00000000000..6c7fcd529c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/implosion_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/implosion_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..39a1ecfa5d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..1eaf13c35c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json new file mode 100644 index 00000000000..72e3c8ed1f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json new file mode 100644 index 00000000000..2cc5d8c46f7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..12e9cec2da4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..31a5486ecbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3c6d71ee3e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..e6fba3f237d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json new file mode 100644 index 00000000000..a1202ee8806 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json new file mode 100644 index 00000000000..ebd73730595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json new file mode 100644 index 00000000000..132715eda1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json new file mode 100644 index 00000000000..53e1d6fd94a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_assembler.json b/src/generated/resources/assets/gtceu/models/item/iv_assembler.json new file mode 100644 index 00000000000..ca01f028fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json new file mode 100644 index 00000000000..5a5a096bd6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json new file mode 100644 index 00000000000..d4169cedb39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json new file mode 100644 index 00000000000..aa54d3c3ac0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json new file mode 100644 index 00000000000..96cb06944af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_bender.json b/src/generated/resources/assets/gtceu/models/item/iv_bender.json new file mode 100644 index 00000000000..2ffac91c3ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_brewery.json b/src/generated/resources/assets/gtceu/models/item/iv_brewery.json new file mode 100644 index 00000000000..b6deaf122c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_canner.json b/src/generated/resources/assets/gtceu/models/item/iv_canner.json new file mode 100644 index 00000000000..1530c119544 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json new file mode 100644 index 00000000000..bfce6dd63e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json new file mode 100644 index 00000000000..5f8b6a4e4df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json new file mode 100644 index 00000000000..f7a71165a18 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json new file mode 100644 index 00000000000..3eba46429a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json new file mode 100644 index 00000000000..cf035080b99 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_compressor.json b/src/generated/resources/assets/gtceu/models/item/iv_compressor.json new file mode 100644 index 00000000000..93f19213c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_cutter.json b/src/generated/resources/assets/gtceu/models/item/iv_cutter.json new file mode 100644 index 00000000000..820cac0c121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_diode.json b/src/generated/resources/assets/gtceu/models/item/iv_diode.json new file mode 100644 index 00000000000..957af44f9f1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_distillery.json b/src/generated/resources/assets/gtceu/models/item/iv_distillery.json new file mode 100644 index 00000000000..9e75ecefbcb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json new file mode 100644 index 00000000000..3210fba7637 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json new file mode 100644 index 00000000000..94ffdf510e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json new file mode 100644 index 00000000000..c16fdc6e413 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json new file mode 100644 index 00000000000..90bbdefdbce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..fa282635712 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..6822d1f8269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json new file mode 100644 index 00000000000..e6b8d5ca003 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..f65ee44fcc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..f522fd3f521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_extractor.json b/src/generated/resources/assets/gtceu/models/item/iv_extractor.json new file mode 100644 index 00000000000..f2a0328f5cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_extruder.json b/src/generated/resources/assets/gtceu/models/item/iv_extruder.json new file mode 100644 index 00000000000..4431971c424 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json new file mode 100644 index 00000000000..601f1a27540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fisher.json b/src/generated/resources/assets/gtceu/models/item/iv_fisher.json new file mode 100644 index 00000000000..063801cedfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json new file mode 100644 index 00000000000..5ca7110be1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..73623c3ed36 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json new file mode 100644 index 00000000000..08e86f565b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json new file mode 100644 index 00000000000..bce0d68b34b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json new file mode 100644 index 00000000000..472e32b4c07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json new file mode 100644 index 00000000000..baa8256ebdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json new file mode 100644 index 00000000000..be7bf0636ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json new file mode 100644 index 00000000000..81628176f25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json new file mode 100644 index 00000000000..0f0a512d73a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json new file mode 100644 index 00000000000..ca5edd60504 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json new file mode 100644 index 00000000000..f7ce0aa0193 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json b/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json new file mode 100644 index 00000000000..ab9ffdd7c79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json new file mode 100644 index 00000000000..cedebd619b5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_lathe.json b/src/generated/resources/assets/gtceu/models/item/iv_lathe.json new file mode 100644 index 00000000000..49ed7144dd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_macerator.json b/src/generated/resources/assets/gtceu/models/item/iv_macerator.json new file mode 100644 index 00000000000..b927488a396 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json new file mode 100644 index 00000000000..e33c311fe52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_mixer.json b/src/generated/resources/assets/gtceu/models/item/iv_mixer.json new file mode 100644 index 00000000000..9ddc597a9a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json new file mode 100644 index 00000000000..4f5f9464d32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json new file mode 100644 index 00000000000..d855930295a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json new file mode 100644 index 00000000000..0edeff33cd9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json new file mode 100644 index 00000000000..d3450eed65d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json new file mode 100644 index 00000000000..fb8045aaf80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json new file mode 100644 index 00000000000..a4a723f9126 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_packer.json b/src/generated/resources/assets/gtceu/models/item/iv_packer.json new file mode 100644 index 00000000000..4206e9521c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json new file mode 100644 index 00000000000..b2a58365560 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json new file mode 100644 index 00000000000..ec2a9980331 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json new file mode 100644 index 00000000000..02257f57f62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json new file mode 100644 index 00000000000..6eba89e71cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json new file mode 100644 index 00000000000..99cef24e5cf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json new file mode 100644 index 00000000000..c08c6ccf0e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_scanner.json b/src/generated/resources/assets/gtceu/models/item/iv_scanner.json new file mode 100644 index 00000000000..919b87ae0cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_sifter.json b/src/generated/resources/assets/gtceu/models/item/iv_sifter.json new file mode 100644 index 00000000000..92d3057c415 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..aa6425ff670 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..9ad7031ae79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json new file mode 100644 index 00000000000..de8bec4a2bf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json new file mode 100644 index 00000000000..2a69e91c044 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json new file mode 100644 index 00000000000..e1c74f6c4eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json new file mode 100644 index 00000000000..c887e3c6306 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json new file mode 100644 index 00000000000..7333bf048f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json new file mode 100644 index 00000000000..4223ae673ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json new file mode 100644 index 00000000000..e7f2a2409c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/iv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/iv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json b/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json new file mode 100644 index 00000000000..1db111e0644 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_arc_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_arc_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_assembler.json b/src/generated/resources/assets/gtceu/models/item/large_assembler.json new file mode 100644 index 00000000000..a575bf98aa1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_autoclave.json b/src/generated/resources/assets/gtceu/models/item/large_autoclave.json new file mode 100644 index 00000000000..e466ba5ec76 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_brewer.json b/src/generated/resources/assets/gtceu/models/item/large_brewer.json new file mode 100644 index 00000000000..a00996c8172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_brewer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_brewer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json new file mode 100644 index 00000000000..f7a892aa0f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json new file mode 100644 index 00000000000..a1f21ad4511 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json new file mode 100644 index 00000000000..fea38ef9ab0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json new file mode 100644 index 00000000000..0234fdbaaa9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json b/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json new file mode 100644 index 00000000000..fd6e334fed1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_combustion_engine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_combustion_engine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_cutter.json b/src/generated/resources/assets/gtceu/models/item/large_cutter.json new file mode 100644 index 00000000000..676c4c17a04 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_distillery.json b/src/generated/resources/assets/gtceu/models/item/large_distillery.json new file mode 100644 index 00000000000..2f418d43322 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json new file mode 100644 index 00000000000..431afe9b399 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json b/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json new file mode 100644 index 00000000000..f72391593b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_electromagnet.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_electromagnet" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json b/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json new file mode 100644 index 00000000000..7fc0427177f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_engraving_laser.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_engraving_laser" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_extractor.json b/src/generated/resources/assets/gtceu/models/item/large_extractor.json new file mode 100644 index 00000000000..05c60757de4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_extruder.json b/src/generated/resources/assets/gtceu/models/item/large_extruder.json new file mode 100644 index 00000000000..d3601daeafa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json b/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json new file mode 100644 index 00000000000..cb25d058a19 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_maceration_tower.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_maceration_tower" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_material_press.json b/src/generated/resources/assets/gtceu/models/item/large_material_press.json new file mode 100644 index 00000000000..6ac9b59cd35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_material_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_material_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_mixer.json b/src/generated/resources/assets/gtceu/models/item/large_mixer.json new file mode 100644 index 00000000000..13a6213ce40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_packer.json b/src/generated/resources/assets/gtceu/models/item/large_packer.json new file mode 100644 index 00000000000..709ae070855 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json new file mode 100644 index 00000000000..b82b9f8a779 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_sifting_funnel.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_sifting_funnel" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_solidifier.json b/src/generated/resources/assets/gtceu/models/item/large_solidifier.json new file mode 100644 index 00000000000..c8d050dd850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/large_wiremill.json b/src/generated/resources/assets/gtceu/models/item/large_wiremill.json new file mode 100644 index 00000000000..d38949f1a9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/large_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/large_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..e1c92a18c9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/long_distance_fluid_pipeline_endpoint" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json b/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..fc972450c61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/long_distance_item_pipeline_endpoint" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json new file mode 100644 index 00000000000..1999798263b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json new file mode 100644 index 00000000000..34bbc17166c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json new file mode 100644 index 00000000000..9f0577732b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json new file mode 100644 index 00000000000..d49ed2f5889 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json new file mode 100644 index 00000000000..659c6ff5209 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json new file mode 100644 index 00000000000..28bdc8baa0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_liquid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_liquid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json new file mode 100644 index 00000000000..9737172c183 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json new file mode 100644 index 00000000000..4cc89f235aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json new file mode 100644 index 00000000000..a816281bc98 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json new file mode 100644 index 00000000000..48fc1502cd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_solar_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_solar_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json b/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json new file mode 100644 index 00000000000..db856db71b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lp_steam_solid_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lp_steam_solid_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..65f9ed9d950 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..2b75d1cbaf9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json new file mode 100644 index 00000000000..3588c3a5c8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json new file mode 100644 index 00000000000..8fbebb16bbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..59ac4a3f150 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..c450fa3ee47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..3bae1898378 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..799a73beac8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json new file mode 100644 index 00000000000..6354d979c89 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json new file mode 100644 index 00000000000..7cc1556c79f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json new file mode 100644 index 00000000000..b51080938ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json new file mode 100644 index 00000000000..37d7a72e3f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_assembler.json b/src/generated/resources/assets/gtceu/models/item/luv_assembler.json new file mode 100644 index 00000000000..b0544d95039 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json new file mode 100644 index 00000000000..5fd0db8c3a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json new file mode 100644 index 00000000000..c4d1f7864a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json new file mode 100644 index 00000000000..3f405f00b9a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json new file mode 100644 index 00000000000..7546d234b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_bender.json b/src/generated/resources/assets/gtceu/models/item/luv_bender.json new file mode 100644 index 00000000000..a9fc8f53754 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_brewery.json b/src/generated/resources/assets/gtceu/models/item/luv_brewery.json new file mode 100644 index 00000000000..ea90d9edf41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_canner.json b/src/generated/resources/assets/gtceu/models/item/luv_canner.json new file mode 100644 index 00000000000..8ceb9626a61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json new file mode 100644 index 00000000000..282fa6e42d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json new file mode 100644 index 00000000000..d633fb1d2fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json new file mode 100644 index 00000000000..a515910b316 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json new file mode 100644 index 00000000000..19d63089faf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json new file mode 100644 index 00000000000..a011a0da7dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_compressor.json b/src/generated/resources/assets/gtceu/models/item/luv_compressor.json new file mode 100644 index 00000000000..b6cf8bad316 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_cutter.json b/src/generated/resources/assets/gtceu/models/item/luv_cutter.json new file mode 100644 index 00000000000..a8e04f13ded --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_diode.json b/src/generated/resources/assets/gtceu/models/item/luv_diode.json new file mode 100644 index 00000000000..9e1b3fb914e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_distillery.json b/src/generated/resources/assets/gtceu/models/item/luv_distillery.json new file mode 100644 index 00000000000..6b2eea6261a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json new file mode 100644 index 00000000000..d6c27618dfc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json new file mode 100644 index 00000000000..8426bb0f299 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json new file mode 100644 index 00000000000..1800ff2077d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json new file mode 100644 index 00000000000..70bb0605d2a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json new file mode 100644 index 00000000000..a19f3101679 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json new file mode 100644 index 00000000000..aeb1e203485 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..07ef73f823c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..2edae4688d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json new file mode 100644 index 00000000000..2431be39a6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..c35ef06c8cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..352cbbc9616 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_extractor.json b/src/generated/resources/assets/gtceu/models/item/luv_extractor.json new file mode 100644 index 00000000000..92daacee9e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_extruder.json b/src/generated/resources/assets/gtceu/models/item/luv_extruder.json new file mode 100644 index 00000000000..96a092a80af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json new file mode 100644 index 00000000000..6e2ef710176 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fisher.json b/src/generated/resources/assets/gtceu/models/item/luv_fisher.json new file mode 100644 index 00000000000..0cf596bbe5c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json new file mode 100644 index 00000000000..116fbb9cf13 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..1d42c5fd72f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json new file mode 100644 index 00000000000..32ef231a74f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json new file mode 100644 index 00000000000..802e1f5abdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json new file mode 100644 index 00000000000..f854efb6340 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json new file mode 100644 index 00000000000..64a049e92a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json new file mode 100644 index 00000000000..0e2c66734ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json new file mode 100644 index 00000000000..423a0ef53ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json new file mode 100644 index 00000000000..f320c420d5d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json new file mode 100644 index 00000000000..639f03ac850 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json new file mode 100644 index 00000000000..c1b5f924b0b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d3e0bc114c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json b/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json new file mode 100644 index 00000000000..be8dd38f127 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_large_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_large_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json new file mode 100644 index 00000000000..79a6a5f281f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_lathe.json b/src/generated/resources/assets/gtceu/models/item/luv_lathe.json new file mode 100644 index 00000000000..0f03923a3f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_macerator.json b/src/generated/resources/assets/gtceu/models/item/luv_macerator.json new file mode 100644 index 00000000000..b45cb4b8db6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json new file mode 100644 index 00000000000..8a33d0b1382 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_mixer.json b/src/generated/resources/assets/gtceu/models/item/luv_mixer.json new file mode 100644 index 00000000000..8f5ae4cb37f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json new file mode 100644 index 00000000000..cc5d63e6276 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json new file mode 100644 index 00000000000..3451b32f758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json new file mode 100644 index 00000000000..b38ef108040 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json new file mode 100644 index 00000000000..38c63985d1d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json new file mode 100644 index 00000000000..c1894d49a42 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json new file mode 100644 index 00000000000..63c1f4dc4d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_packer.json b/src/generated/resources/assets/gtceu/models/item/luv_packer.json new file mode 100644 index 00000000000..95c9e2b48aa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json new file mode 100644 index 00000000000..176193c4fd4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json new file mode 100644 index 00000000000..5de19d2ed16 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json new file mode 100644 index 00000000000..f5d26cbbea4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json new file mode 100644 index 00000000000..bf6f23d4c10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json new file mode 100644 index 00000000000..072f5a39f32 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json new file mode 100644 index 00000000000..5fb3fd9a110 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_scanner.json b/src/generated/resources/assets/gtceu/models/item/luv_scanner.json new file mode 100644 index 00000000000..31a60eb669b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_sifter.json b/src/generated/resources/assets/gtceu/models/item/luv_sifter.json new file mode 100644 index 00000000000..4047ed85e77 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..6ebe70db99c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..2a2704c4281 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json new file mode 100644 index 00000000000..d62a46b5679 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json new file mode 100644 index 00000000000..d004dc42330 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json new file mode 100644 index 00000000000..02f3f10c7ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json new file mode 100644 index 00000000000..737d8dfca08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json new file mode 100644 index 00000000000..8c2400a4a63 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json new file mode 100644 index 00000000000..d015f0a4fab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json new file mode 100644 index 00000000000..6b7fe8449d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/luv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/luv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json new file mode 100644 index 00000000000..525648e62da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json new file mode 100644 index 00000000000..0f14dd72f49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json new file mode 100644 index 00000000000..ae11a25ab1f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json new file mode 100644 index 00000000000..c476aab9377 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json new file mode 100644 index 00000000000..c9d76e5ef14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json new file mode 100644 index 00000000000..5313fcc0f50 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json new file mode 100644 index 00000000000..a2e168c5a27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_assembler.json b/src/generated/resources/assets/gtceu/models/item/lv_assembler.json new file mode 100644 index 00000000000..7c9a2d7fddc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json new file mode 100644 index 00000000000..bf5502c1ebb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json new file mode 100644 index 00000000000..23d99094497 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json new file mode 100644 index 00000000000..158cc217e3f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json new file mode 100644 index 00000000000..ca8d7511f6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_bender.json b/src/generated/resources/assets/gtceu/models/item/lv_bender.json new file mode 100644 index 00000000000..7377289a65f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json new file mode 100644 index 00000000000..fdb8f5908e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_brewery.json b/src/generated/resources/assets/gtceu/models/item/lv_brewery.json new file mode 100644 index 00000000000..14fc92b182f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_buffer.json b/src/generated/resources/assets/gtceu/models/item/lv_buffer.json new file mode 100644 index 00000000000..6368d87affb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_canner.json b/src/generated/resources/assets/gtceu/models/item/lv_canner.json new file mode 100644 index 00000000000..d0ded76104a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json new file mode 100644 index 00000000000..a313adc294a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json new file mode 100644 index 00000000000..d536369e173 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json new file mode 100644 index 00000000000..86a76a69207 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json new file mode 100644 index 00000000000..1bca3e078da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json new file mode 100644 index 00000000000..580a855ddd5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_combustion.json b/src/generated/resources/assets/gtceu/models/item/lv_combustion.json new file mode 100644 index 00000000000..1a93a0c884d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_compressor.json b/src/generated/resources/assets/gtceu/models/item/lv_compressor.json new file mode 100644 index 00000000000..f86a0f708b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_cutter.json b/src/generated/resources/assets/gtceu/models/item/lv_cutter.json new file mode 100644 index 00000000000..5377983efa4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_diode.json b/src/generated/resources/assets/gtceu/models/item/lv_diode.json new file mode 100644 index 00000000000..f7e3ba0619e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_distillery.json b/src/generated/resources/assets/gtceu/models/item/lv_distillery.json new file mode 100644 index 00000000000..b798e9d8c39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json new file mode 100644 index 00000000000..abdc842abb5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json new file mode 100644 index 00000000000..33e219ee881 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json new file mode 100644 index 00000000000..c309c8915f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json new file mode 100644 index 00000000000..d680a551b29 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json new file mode 100644 index 00000000000..957f86564a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_extractor.json b/src/generated/resources/assets/gtceu/models/item/lv_extractor.json new file mode 100644 index 00000000000..b9039ad0416 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_extruder.json b/src/generated/resources/assets/gtceu/models/item/lv_extruder.json new file mode 100644 index 00000000000..8488e8166ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json new file mode 100644 index 00000000000..68916cbeaba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fisher.json b/src/generated/resources/assets/gtceu/models/item/lv_fisher.json new file mode 100644 index 00000000000..6e7fdf67ec6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json new file mode 100644 index 00000000000..0e81b00dfa2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..c6b7bbe68dd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json new file mode 100644 index 00000000000..b963557b16b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json new file mode 100644 index 00000000000..91ec35835c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json new file mode 100644 index 00000000000..a1e365a0715 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json new file mode 100644 index 00000000000..5cd8e481249 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json new file mode 100644 index 00000000000..d81b247f36a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json new file mode 100644 index 00000000000..6181a8090a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json new file mode 100644 index 00000000000..940968c6d48 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json new file mode 100644 index 00000000000..6e844855980 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json new file mode 100644 index 00000000000..ea368a2fbe6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json new file mode 100644 index 00000000000..9a91d2d4185 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_lathe.json b/src/generated/resources/assets/gtceu/models/item/lv_lathe.json new file mode 100644 index 00000000000..9ceadf64f8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_macerator.json b/src/generated/resources/assets/gtceu/models/item/lv_macerator.json new file mode 100644 index 00000000000..916ac534b75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json new file mode 100644 index 00000000000..518156ba09f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_miner.json b/src/generated/resources/assets/gtceu/models/item/lv_miner.json new file mode 100644 index 00000000000..8b37fe441fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_mixer.json b/src/generated/resources/assets/gtceu/models/item/lv_mixer.json new file mode 100644 index 00000000000..a0089d7579c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json new file mode 100644 index 00000000000..8d2b3151ed2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json new file mode 100644 index 00000000000..38f9e34bf88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json new file mode 100644 index 00000000000..4f2a28d5a15 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json new file mode 100644 index 00000000000..f848c5d951b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_packer.json b/src/generated/resources/assets/gtceu/models/item/lv_packer.json new file mode 100644 index 00000000000..54fbd403086 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json new file mode 100644 index 00000000000..30319bcb9f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_pump.json b/src/generated/resources/assets/gtceu/models/item/lv_pump.json new file mode 100644 index 00000000000..06e5e1ace21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json new file mode 100644 index 00000000000..72fbcb5ba80 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_scanner.json b/src/generated/resources/assets/gtceu/models/item/lv_scanner.json new file mode 100644 index 00000000000..dad79199326 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_sifter.json b/src/generated/resources/assets/gtceu/models/item/lv_sifter.json new file mode 100644 index 00000000000..7c65244fe87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json new file mode 100644 index 00000000000..8cac65c86dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json new file mode 100644 index 00000000000..29de4e59764 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json new file mode 100644 index 00000000000..24d582d37c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json new file mode 100644 index 00000000000..03d351d3efe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json new file mode 100644 index 00000000000..eb533fe69c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json new file mode 100644 index 00000000000..b961b1491c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json new file mode 100644 index 00000000000..120f3be29e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json new file mode 100644 index 00000000000..39ceb87fb2d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json new file mode 100644 index 00000000000..d2ea1f48dbe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json new file mode 100644 index 00000000000..1673eb96f61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/lv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/lv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json new file mode 100644 index 00000000000..e653a145394 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/maintenance_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/maintenance_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json new file mode 100644 index 00000000000..8aa24d88164 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json new file mode 100644 index 00000000000..c4d566f3b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json new file mode 100644 index 00000000000..d91299eeb20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json new file mode 100644 index 00000000000..fa35b8cbacc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json new file mode 100644 index 00000000000..97fba8216ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json new file mode 100644 index 00000000000..dc4fc61b6eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json new file mode 100644 index 00000000000..0f8098337ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json new file mode 100644 index 00000000000..149ce8100a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json new file mode 100644 index 00000000000..71ad48f1934 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json new file mode 100644 index 00000000000..eefa2da2e0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json new file mode 100644 index 00000000000..3f13542e4df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json new file mode 100644 index 00000000000..8238618aafd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1a649669974 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json new file mode 100644 index 00000000000..cf1a389e969 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json new file mode 100644 index 00000000000..2fc77c3b2ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json new file mode 100644 index 00000000000..23cc268a77c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_bus.json b/src/generated/resources/assets/gtceu/models/item/max_input_bus.json new file mode 100644 index 00000000000..79a3154b0f2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json new file mode 100644 index 00000000000..ba275c9c4e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json new file mode 100644 index 00000000000..9ae3866ba49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json new file mode 100644 index 00000000000..d6f86f723a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json new file mode 100644 index 00000000000..213a6db551c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_bus.json b/src/generated/resources/assets/gtceu/models/item/max_output_bus.json new file mode 100644 index 00000000000..72047919fe8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json new file mode 100644 index 00000000000..214bfb6fd2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json new file mode 100644 index 00000000000..9cfb55afce2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json new file mode 100644 index 00000000000..ba674d4c0b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json new file mode 100644 index 00000000000..fedf7c9a90f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json new file mode 100644 index 00000000000..46c0e6ad2e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/max_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/max_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_input_bus.json b/src/generated/resources/assets/gtceu/models/item/me_input_bus.json new file mode 100644 index 00000000000..be62e22f5bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json new file mode 100644 index 00000000000..22f2ceefca5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_output_bus.json b/src/generated/resources/assets/gtceu/models/item/me_output_bus.json new file mode 100644 index 00000000000..767bbf379ca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json new file mode 100644 index 00000000000..b28e8071f6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json new file mode 100644 index 00000000000..6b8df53cb61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_pattern_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json new file mode 100644 index 00000000000..74442e0c4bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_pattern_buffer_proxy.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_pattern_buffer_proxy" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json new file mode 100644 index 00000000000..1a619c8256f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_stocking_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json new file mode 100644 index 00000000000..9c0c4abcec9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/me_stocking_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/me_stocking_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json new file mode 100644 index 00000000000..cf647ab9e10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mega_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mega_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json new file mode 100644 index 00000000000..82648ab534b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mega_vacuum_freezer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mega_vacuum_freezer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/multi_smelter.json b/src/generated/resources/assets/gtceu/models/item/multi_smelter.json new file mode 100644 index 00000000000..80c28da5137 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/multi_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/multi_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json new file mode 100644 index 00000000000..bfaffdcc315 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json new file mode 100644 index 00000000000..34a2d84c86b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json new file mode 100644 index 00000000000..3b60b8d3c1b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json new file mode 100644 index 00000000000..e4a43a0c158 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json b/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json new file mode 100644 index 00000000000..d93307097dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_air_scrubber.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_air_scrubber" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json new file mode 100644 index 00000000000..102ea0cf123 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json new file mode 100644 index 00000000000..64987f44427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_assembler.json b/src/generated/resources/assets/gtceu/models/item/mv_assembler.json new file mode 100644 index 00000000000..1776eef4707 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json new file mode 100644 index 00000000000..d099bb5ca6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json new file mode 100644 index 00000000000..4839a560de9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json new file mode 100644 index 00000000000..834739822c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json new file mode 100644 index 00000000000..90ec9a78c62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json new file mode 100644 index 00000000000..cabb6f58650 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_bedrock_ore_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_bedrock_ore_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_bender.json b/src/generated/resources/assets/gtceu/models/item/mv_bender.json new file mode 100644 index 00000000000..070e07886c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json b/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json new file mode 100644 index 00000000000..eff9d8e308b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_block_breaker.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_block_breaker" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_brewery.json b/src/generated/resources/assets/gtceu/models/item/mv_brewery.json new file mode 100644 index 00000000000..0e32874f30c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_buffer.json b/src/generated/resources/assets/gtceu/models/item/mv_buffer.json new file mode 100644 index 00000000000..a4b0631ca46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_buffer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_buffer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_canner.json b/src/generated/resources/assets/gtceu/models/item/mv_canner.json new file mode 100644 index 00000000000..97292ae01e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json new file mode 100644 index 00000000000..cb522bce06a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json new file mode 100644 index 00000000000..0490b20cad3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json new file mode 100644 index 00000000000..e407107ecd8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json new file mode 100644 index 00000000000..34fd3ed27c9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json new file mode 100644 index 00000000000..8ddd95ce554 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_combustion.json b/src/generated/resources/assets/gtceu/models/item/mv_combustion.json new file mode 100644 index 00000000000..9349f5f928a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_combustion.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_combustion" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_compressor.json b/src/generated/resources/assets/gtceu/models/item/mv_compressor.json new file mode 100644 index 00000000000..b9fb33c6b8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_cutter.json b/src/generated/resources/assets/gtceu/models/item/mv_cutter.json new file mode 100644 index 00000000000..54f2915a7d7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_diode.json b/src/generated/resources/assets/gtceu/models/item/mv_diode.json new file mode 100644 index 00000000000..15b8af268ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_distillery.json b/src/generated/resources/assets/gtceu/models/item/mv_distillery.json new file mode 100644 index 00000000000..6868d67f56b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json new file mode 100644 index 00000000000..a3e9fe88121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json new file mode 100644 index 00000000000..3379c765b08 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json new file mode 100644 index 00000000000..45440399e0a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json new file mode 100644 index 00000000000..74cabc6c4cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json new file mode 100644 index 00000000000..9ee014c05b8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_extractor.json b/src/generated/resources/assets/gtceu/models/item/mv_extractor.json new file mode 100644 index 00000000000..be2ab84362c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_extruder.json b/src/generated/resources/assets/gtceu/models/item/mv_extruder.json new file mode 100644 index 00000000000..7994c1f0d34 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json new file mode 100644 index 00000000000..a0e348770d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fisher.json b/src/generated/resources/assets/gtceu/models/item/mv_fisher.json new file mode 100644 index 00000000000..01e3a03090a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fisher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fisher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json new file mode 100644 index 00000000000..8fdf38ca7ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_drilling_rig.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_drilling_rig" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json new file mode 100644 index 00000000000..521faaab03b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..b785467c0a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json new file mode 100644 index 00000000000..68c8ca17088 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json new file mode 100644 index 00000000000..0b92c07e668 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json new file mode 100644 index 00000000000..b90ad5946a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json new file mode 100644 index 00000000000..6abcce6eb05 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json new file mode 100644 index 00000000000..f2309fdd6a7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_gas_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_gas_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json new file mode 100644 index 00000000000..ffd7550afa3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json new file mode 100644 index 00000000000..217379bc7ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json b/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json new file mode 100644 index 00000000000..295a18e6521 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_item_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_item_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d34ae5e772d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json new file mode 100644 index 00000000000..40bc02530e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_lathe.json b/src/generated/resources/assets/gtceu/models/item/mv_lathe.json new file mode 100644 index 00000000000..1b4060f1093 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_macerator.json b/src/generated/resources/assets/gtceu/models/item/mv_macerator.json new file mode 100644 index 00000000000..e11932f39d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json new file mode 100644 index 00000000000..48696577c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_miner.json b/src/generated/resources/assets/gtceu/models/item/mv_miner.json new file mode 100644 index 00000000000..8d656521229 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_miner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_mixer.json b/src/generated/resources/assets/gtceu/models/item/mv_mixer.json new file mode 100644 index 00000000000..48627a96ba3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json new file mode 100644 index 00000000000..4c7f89e1c2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json new file mode 100644 index 00000000000..29a485646f9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json new file mode 100644 index 00000000000..e22e81487e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json new file mode 100644 index 00000000000..803d58f5a7b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_packer.json b/src/generated/resources/assets/gtceu/models/item/mv_packer.json new file mode 100644 index 00000000000..0c6a6b7bcf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json new file mode 100644 index 00000000000..3f42e84d01f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_pump.json b/src/generated/resources/assets/gtceu/models/item/mv_pump.json new file mode 100644 index 00000000000..8c9a3ac0baa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json new file mode 100644 index 00000000000..9fc45eef096 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_scanner.json b/src/generated/resources/assets/gtceu/models/item/mv_scanner.json new file mode 100644 index 00000000000..e54f9af819e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_sifter.json b/src/generated/resources/assets/gtceu/models/item/mv_sifter.json new file mode 100644 index 00000000000..cd531314225 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json new file mode 100644 index 00000000000..2963b0df0f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_steam_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_steam_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json b/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json new file mode 100644 index 00000000000..29bea345268 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_super_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_super_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json b/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json new file mode 100644 index 00000000000..421486968c4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_super_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_super_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json new file mode 100644 index 00000000000..0b6471f950f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json new file mode 100644 index 00000000000..5db92923c94 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json new file mode 100644 index 00000000000..2459d35ba9f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json new file mode 100644 index 00000000000..7c913e074ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json new file mode 100644 index 00000000000..aab94354eb7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json new file mode 100644 index 00000000000..185e29beabc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json new file mode 100644 index 00000000000..ac3d2c83aac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/mv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/mv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/network_switch.json b/src/generated/resources/assets/gtceu/models/item/network_switch.json new file mode 100644 index 00000000000..82b7aeab1d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/network_switch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/network_switch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/object_holder.json b/src/generated/resources/assets/gtceu/models/item/object_holder.json new file mode 100644 index 00000000000..a4be7bf978b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/object_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/object_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..71cd95cc962 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..a901c88cef1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json new file mode 100644 index 00000000000..573d5db8239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json new file mode 100644 index 00000000000..d4abab45647 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..6b1a626e966 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..b7ee4b24f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..31a3af9212e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..d68af02f254 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json new file mode 100644 index 00000000000..4d241396d83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json new file mode 100644 index 00000000000..5570d5f785c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json new file mode 100644 index 00000000000..b03c498826b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json new file mode 100644 index 00000000000..0578ace0027 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_assembler.json b/src/generated/resources/assets/gtceu/models/item/opv_assembler.json new file mode 100644 index 00000000000..f63aaa2ee49 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json new file mode 100644 index 00000000000..9c8aff32242 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json new file mode 100644 index 00000000000..98290086529 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json new file mode 100644 index 00000000000..5f8703c4385 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json new file mode 100644 index 00000000000..ecf7d053d6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_bender.json b/src/generated/resources/assets/gtceu/models/item/opv_bender.json new file mode 100644 index 00000000000..5c57432526d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_brewery.json b/src/generated/resources/assets/gtceu/models/item/opv_brewery.json new file mode 100644 index 00000000000..7398904eaf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_canner.json b/src/generated/resources/assets/gtceu/models/item/opv_canner.json new file mode 100644 index 00000000000..da0fe279e47 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json new file mode 100644 index 00000000000..e37962e3301 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json new file mode 100644 index 00000000000..b4053f197e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json new file mode 100644 index 00000000000..69019b0058a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json new file mode 100644 index 00000000000..a2cb00e8398 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json new file mode 100644 index 00000000000..2ec3eab3119 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_compressor.json b/src/generated/resources/assets/gtceu/models/item/opv_compressor.json new file mode 100644 index 00000000000..52ffcc35a4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_cutter.json b/src/generated/resources/assets/gtceu/models/item/opv_cutter.json new file mode 100644 index 00000000000..5c24c977e4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_diode.json b/src/generated/resources/assets/gtceu/models/item/opv_diode.json new file mode 100644 index 00000000000..067c8f4dca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_distillery.json b/src/generated/resources/assets/gtceu/models/item/opv_distillery.json new file mode 100644 index 00000000000..e3f929bbca0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json new file mode 100644 index 00000000000..afd15affa5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json new file mode 100644 index 00000000000..dc9b879e56a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json new file mode 100644 index 00000000000..ac2c21d8b72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json new file mode 100644 index 00000000000..d2d26841bfc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json new file mode 100644 index 00000000000..1d253b5c719 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json new file mode 100644 index 00000000000..739cca41740 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..3ce8b005074 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..1ee53996fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json new file mode 100644 index 00000000000..e86f5b6a645 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..fe96fd4d956 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..51d6dd53268 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_extractor.json b/src/generated/resources/assets/gtceu/models/item/opv_extractor.json new file mode 100644 index 00000000000..23b8c77c73f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_extruder.json b/src/generated/resources/assets/gtceu/models/item/opv_extruder.json new file mode 100644 index 00000000000..8af897d4d93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json new file mode 100644 index 00000000000..cb14370a7fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json new file mode 100644 index 00000000000..11ecc1aed39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..2544392b7fb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json new file mode 100644 index 00000000000..6051d8d1efd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json new file mode 100644 index 00000000000..5d83368d6e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json new file mode 100644 index 00000000000..60b5c8b9dc7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json new file mode 100644 index 00000000000..c81dd10115d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json new file mode 100644 index 00000000000..1d1684b05ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json new file mode 100644 index 00000000000..485ba4bed83 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json new file mode 100644 index 00000000000..e215aaf2bd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json new file mode 100644 index 00000000000..b86f892c1e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json new file mode 100644 index 00000000000..22fd6897a56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json new file mode 100644 index 00000000000..f453aa5e656 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_lathe.json b/src/generated/resources/assets/gtceu/models/item/opv_lathe.json new file mode 100644 index 00000000000..2db372a0cd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_macerator.json b/src/generated/resources/assets/gtceu/models/item/opv_macerator.json new file mode 100644 index 00000000000..9679310be86 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json new file mode 100644 index 00000000000..8f9e1c8727b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_mixer.json b/src/generated/resources/assets/gtceu/models/item/opv_mixer.json new file mode 100644 index 00000000000..bc47a6c6fb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json new file mode 100644 index 00000000000..b854f7146f6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json new file mode 100644 index 00000000000..26485ee56f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json new file mode 100644 index 00000000000..292354b7e35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json new file mode 100644 index 00000000000..a668243918c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json new file mode 100644 index 00000000000..f9546e9d352 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json new file mode 100644 index 00000000000..e975386d571 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_packer.json b/src/generated/resources/assets/gtceu/models/item/opv_packer.json new file mode 100644 index 00000000000..70c376d0afb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json new file mode 100644 index 00000000000..74f8c34165a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json new file mode 100644 index 00000000000..bc0cf24dbe9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json new file mode 100644 index 00000000000..bea0df342a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json new file mode 100644 index 00000000000..57d51e7eb91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json new file mode 100644 index 00000000000..de196cb5b8c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_scanner.json b/src/generated/resources/assets/gtceu/models/item/opv_scanner.json new file mode 100644 index 00000000000..0b073b424f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_sifter.json b/src/generated/resources/assets/gtceu/models/item/opv_sifter.json new file mode 100644 index 00000000000..07aad5c64ae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..c197da52ee6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..f55c825bf88 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json new file mode 100644 index 00000000000..3e0152efec3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json new file mode 100644 index 00000000000..450733339f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json new file mode 100644 index 00000000000..1937cc0f0d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json new file mode 100644 index 00000000000..f000b6d5a8d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json new file mode 100644 index 00000000000..792bc10f2dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json new file mode 100644 index 00000000000..50ef28ad833 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/opv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/opv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json new file mode 100644 index 00000000000..4e1c5f525c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/plasma_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/plasma_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/power_substation.json b/src/generated/resources/assets/gtceu/models/item/power_substation.json new file mode 100644 index 00000000000..c606c5cba12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/power_substation.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/power_substation" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json new file mode 100644 index 00000000000..da347a1571f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/primitive_blast_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/primitive_blast_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/primitive_pump.json b/src/generated/resources/assets/gtceu/models/item/primitive_pump.json new file mode 100644 index 00000000000..4688fa8541e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/primitive_pump.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/primitive_pump" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/pump_hatch.json b/src/generated/resources/assets/gtceu/models/item/pump_hatch.json new file mode 100644 index 00000000000..60b3553961c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/pump_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/pump_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json new file mode 100644 index 00000000000..593a487209f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/pyrolyse_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/pyrolyse_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/research_station.json b/src/generated/resources/assets/gtceu/models/item/research_station.json new file mode 100644 index 00000000000..bf33ccb9ee1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/research_station.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/research_station" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json b/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json new file mode 100644 index 00000000000..84006eb4513 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/reservoir_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/reservoir_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json b/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json new file mode 100644 index 00000000000..d069e02dd57 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/stainless_steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/stainless_steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json b/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json new file mode 100644 index 00000000000..70c29f61004 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/stainless_steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/stainless_steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_grinder.json b/src/generated/resources/assets/gtceu/models/item/steam_grinder.json new file mode 100644 index 00000000000..c409f751d67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_grinder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_grinder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json b/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json new file mode 100644 index 00000000000..594ea2cfd79 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json new file mode 100644 index 00000000000..789373deb4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json b/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json new file mode 100644 index 00000000000..478c1b1609c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_large_turbine.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_large_turbine" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json b/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json new file mode 100644 index 00000000000..c22f41ef128 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steam_oven.json b/src/generated/resources/assets/gtceu/models/item/steam_oven.json new file mode 100644 index 00000000000..e0dbd655936 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steam_oven.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steam_oven" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_crate.json b/src/generated/resources/assets/gtceu/models/item/steel_crate.json new file mode 100644 index 00000000000..0120f266e01 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_drum.json b/src/generated/resources/assets/gtceu/models/item/steel_drum.json new file mode 100644 index 00000000000..0c806297805 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json new file mode 100644 index 00000000000..ec31453efe4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json new file mode 100644 index 00000000000..f75fb3ea8c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_multiblock_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_multiblock_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json b/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json new file mode 100644 index 00000000000..cd8be429b35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/steel_tank_valve.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/steel_tank_valve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_crate.json b/src/generated/resources/assets/gtceu/models/item/titanium_crate.json new file mode 100644 index 00000000000..9a2ee0d41fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_drum.json b/src/generated/resources/assets/gtceu/models/item/titanium_drum.json new file mode 100644 index 00000000000..039d363a6de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json new file mode 100644 index 00000000000..3458428729b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/titanium_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/titanium_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json new file mode 100644 index 00000000000..9bcd34efbff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungsten_steel_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json new file mode 100644 index 00000000000..1fda83afea3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungsten_steel_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungsten_steel_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json b/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json new file mode 100644 index 00000000000..f2d02d41fb3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/tungstensteel_large_boiler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/tungstensteel_large_boiler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..fae5dd58ce7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..73b97fff173 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json new file mode 100644 index 00000000000..29c0bf0c317 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json new file mode 100644 index 00000000000..c96848393bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json new file mode 100644 index 00000000000..67c24e6a467 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json new file mode 100644 index 00000000000..41e6ef708a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..bcea472ee7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8211072e399 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json new file mode 100644 index 00000000000..3195df5546b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json new file mode 100644 index 00000000000..7965d1a05ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json new file mode 100644 index 00000000000..a88f710e4f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json new file mode 100644 index 00000000000..2cfc135db5f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_assembler.json b/src/generated/resources/assets/gtceu/models/item/uev_assembler.json new file mode 100644 index 00000000000..a706e78c3a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json new file mode 100644 index 00000000000..6cdd3a66af9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json new file mode 100644 index 00000000000..7e99dea524c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json new file mode 100644 index 00000000000..0291500c702 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json new file mode 100644 index 00000000000..eff938d2525 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_bender.json b/src/generated/resources/assets/gtceu/models/item/uev_bender.json new file mode 100644 index 00000000000..2aab27a0c81 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_brewery.json b/src/generated/resources/assets/gtceu/models/item/uev_brewery.json new file mode 100644 index 00000000000..dd2fc37abdd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_canner.json b/src/generated/resources/assets/gtceu/models/item/uev_canner.json new file mode 100644 index 00000000000..ed2220d63b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json new file mode 100644 index 00000000000..d14108d2b35 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json new file mode 100644 index 00000000000..cffc09c1a6d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json new file mode 100644 index 00000000000..8ed55a212ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json new file mode 100644 index 00000000000..ebeee1c2bfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json new file mode 100644 index 00000000000..dfd08484764 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_compressor.json b/src/generated/resources/assets/gtceu/models/item/uev_compressor.json new file mode 100644 index 00000000000..0a6a8c88b5b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_cutter.json b/src/generated/resources/assets/gtceu/models/item/uev_cutter.json new file mode 100644 index 00000000000..31524525642 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_diode.json b/src/generated/resources/assets/gtceu/models/item/uev_diode.json new file mode 100644 index 00000000000..6d94598afe7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_distillery.json b/src/generated/resources/assets/gtceu/models/item/uev_distillery.json new file mode 100644 index 00000000000..0e186aac227 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json new file mode 100644 index 00000000000..0cb62ebba39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json new file mode 100644 index 00000000000..3c381af15a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json new file mode 100644 index 00000000000..ef96e8aa6b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json new file mode 100644 index 00000000000..58771ac0aec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json new file mode 100644 index 00000000000..2a7ab309c87 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json new file mode 100644 index 00000000000..6a1c384f5fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json new file mode 100644 index 00000000000..98100f7180d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json new file mode 100644 index 00000000000..583ba6681e9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json new file mode 100644 index 00000000000..0627a1e5e36 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json new file mode 100644 index 00000000000..5a9309abcde --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json new file mode 100644 index 00000000000..1b9fc914c91 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_extractor.json b/src/generated/resources/assets/gtceu/models/item/uev_extractor.json new file mode 100644 index 00000000000..23e7fb53769 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_extruder.json b/src/generated/resources/assets/gtceu/models/item/uev_extruder.json new file mode 100644 index 00000000000..935c08ba3ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json new file mode 100644 index 00000000000..3d3b1f5044c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json new file mode 100644 index 00000000000..869344010fc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..4b18251be7a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json new file mode 100644 index 00000000000..4472d41024a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json new file mode 100644 index 00000000000..62283307e10 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json new file mode 100644 index 00000000000..3fbf06f7014 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json new file mode 100644 index 00000000000..3b81d45a4d2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json new file mode 100644 index 00000000000..31f6d8f832f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json new file mode 100644 index 00000000000..b7164252ca7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json new file mode 100644 index 00000000000..425f17b6055 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json new file mode 100644 index 00000000000..277bb45b7ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json new file mode 100644 index 00000000000..41fd4461c1c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json new file mode 100644 index 00000000000..c0e6a55ce7e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_lathe.json b/src/generated/resources/assets/gtceu/models/item/uev_lathe.json new file mode 100644 index 00000000000..c7ae0ed8f0d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_macerator.json b/src/generated/resources/assets/gtceu/models/item/uev_macerator.json new file mode 100644 index 00000000000..bc2cc8054dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json new file mode 100644 index 00000000000..4151bfa7d21 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_mixer.json b/src/generated/resources/assets/gtceu/models/item/uev_mixer.json new file mode 100644 index 00000000000..ae903be001b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json new file mode 100644 index 00000000000..0023af5a248 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json new file mode 100644 index 00000000000..7cbc8f3d311 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json new file mode 100644 index 00000000000..59d3da39688 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json new file mode 100644 index 00000000000..36b4184dbd5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json new file mode 100644 index 00000000000..4bd5a72f540 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json new file mode 100644 index 00000000000..209d6f2a886 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_packer.json b/src/generated/resources/assets/gtceu/models/item/uev_packer.json new file mode 100644 index 00000000000..313ef214f75 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json new file mode 100644 index 00000000000..0d3436e36c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json new file mode 100644 index 00000000000..d9395480eab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json new file mode 100644 index 00000000000..3ff25da3c38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json new file mode 100644 index 00000000000..7ec8df8b52c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json new file mode 100644 index 00000000000..e7155b95c24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_scanner.json b/src/generated/resources/assets/gtceu/models/item/uev_scanner.json new file mode 100644 index 00000000000..f6f9071acee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_sifter.json b/src/generated/resources/assets/gtceu/models/item/uev_sifter.json new file mode 100644 index 00000000000..3abec155406 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json new file mode 100644 index 00000000000..eef6493ecbc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1fae9dc2977 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json new file mode 100644 index 00000000000..18b8f5f0d8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json new file mode 100644 index 00000000000..440f1295510 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json new file mode 100644 index 00000000000..38e4e6eb4f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json new file mode 100644 index 00000000000..3cbb16fa775 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json new file mode 100644 index 00000000000..dc645858c2c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json new file mode 100644 index 00000000000..1cb5272f15a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uev_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uev_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..7cbcda35b58 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..6da7e076fdf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json new file mode 100644 index 00000000000..ffe17a6cf67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json new file mode 100644 index 00000000000..5492843e175 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..988173314ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..00c571673af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..51e09a4f5cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..6e67609f86d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json new file mode 100644 index 00000000000..806f6f202ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json new file mode 100644 index 00000000000..2854c29e48b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json new file mode 100644 index 00000000000..c992cc8508f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json new file mode 100644 index 00000000000..463b74fef60 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json new file mode 100644 index 00000000000..0af63e0dab6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json new file mode 100644 index 00000000000..91a40364291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json new file mode 100644 index 00000000000..36e1efcadf3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json new file mode 100644 index 00000000000..c1459a68503 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json new file mode 100644 index 00000000000..d834fcad426 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_bender.json b/src/generated/resources/assets/gtceu/models/item/uhv_bender.json new file mode 100644 index 00000000000..c7cee975165 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json new file mode 100644 index 00000000000..6d16519529b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_canner.json b/src/generated/resources/assets/gtceu/models/item/uhv_canner.json new file mode 100644 index 00000000000..0db81d62da4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json new file mode 100644 index 00000000000..f177788c20a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json new file mode 100644 index 00000000000..bc3723f5568 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json new file mode 100644 index 00000000000..aa787e01d54 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json new file mode 100644 index 00000000000..6f76fc9b772 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json new file mode 100644 index 00000000000..d8c25497c38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json new file mode 100644 index 00000000000..928c865354e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json new file mode 100644 index 00000000000..2db8e6f7b3a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_diode.json b/src/generated/resources/assets/gtceu/models/item/uhv_diode.json new file mode 100644 index 00000000000..b544d8c76f5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json new file mode 100644 index 00000000000..a08fd3efb78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json new file mode 100644 index 00000000000..0ba472b52a9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json new file mode 100644 index 00000000000..43459d00367 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json new file mode 100644 index 00000000000..42d9dc3d7e4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json new file mode 100644 index 00000000000..32b48c2313b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json new file mode 100644 index 00000000000..145e176cabb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json new file mode 100644 index 00000000000..22ce7ac24e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..9055a8c03bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..ae9658fb6fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json new file mode 100644 index 00000000000..5d170b1c04d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..84e3f0d76d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..c4bf18400af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json new file mode 100644 index 00000000000..a282c95928d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json new file mode 100644 index 00000000000..a810d7fcc14 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json new file mode 100644 index 00000000000..4f310d93c46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json new file mode 100644 index 00000000000..014200c3bc6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..5f64ec7fcaa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json new file mode 100644 index 00000000000..47637cb6d38 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json new file mode 100644 index 00000000000..b817908a8c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json new file mode 100644 index 00000000000..4c7344bf876 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json new file mode 100644 index 00000000000..761f08a9a28 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json new file mode 100644 index 00000000000..00edbf8c89a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json new file mode 100644 index 00000000000..989ededb244 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json new file mode 100644 index 00000000000..d25453c69b6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json new file mode 100644 index 00000000000..d318c2af8ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json new file mode 100644 index 00000000000..86a1fabe4b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json new file mode 100644 index 00000000000..d7a1484184b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json new file mode 100644 index 00000000000..4a371e8a7e0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json new file mode 100644 index 00000000000..c56a2b5f2d6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json new file mode 100644 index 00000000000..fdd27d1846c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json new file mode 100644 index 00000000000..1eb30ba619c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json new file mode 100644 index 00000000000..e3c28373501 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json new file mode 100644 index 00000000000..8b92586d5ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json new file mode 100644 index 00000000000..33c15d5c790 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json new file mode 100644 index 00000000000..a000a54aa7c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json new file mode 100644 index 00000000000..c42811d94c6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json new file mode 100644 index 00000000000..3464ed1f913 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_packer.json b/src/generated/resources/assets/gtceu/models/item/uhv_packer.json new file mode 100644 index 00000000000..affda5bbfd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json new file mode 100644 index 00000000000..b9598c3f0a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json new file mode 100644 index 00000000000..57e02a45a59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json new file mode 100644 index 00000000000..a32b4a92ef9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json new file mode 100644 index 00000000000..195be91a828 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json new file mode 100644 index 00000000000..d5c3dd3f0a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json new file mode 100644 index 00000000000..9bea512f66b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json new file mode 100644 index 00000000000..28da21f28f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..52593d03792 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..0a2398d58ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json new file mode 100644 index 00000000000..b3e16daed11 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json new file mode 100644 index 00000000000..68886d0e5a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json new file mode 100644 index 00000000000..53d1037c684 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json new file mode 100644 index 00000000000..c5011c6f402 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json new file mode 100644 index 00000000000..bfc8d29d517 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json new file mode 100644 index 00000000000..ce5aeadcb96 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uhv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uhv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..a4d9abcd0c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..ce42abf84c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json new file mode 100644 index 00000000000..7c7b7e8a100 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json new file mode 100644 index 00000000000..e64096e20d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..ecb37db53f4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..9d59918ee62 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..f2d0c5c8b07 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..3e5272354d8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json new file mode 100644 index 00000000000..2f0f255004e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json new file mode 100644 index 00000000000..780ea232652 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json new file mode 100644 index 00000000000..469cf8705e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json new file mode 100644 index 00000000000..6c954b4c608 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json new file mode 100644 index 00000000000..8baceb742f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json new file mode 100644 index 00000000000..24d6d03a69a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json new file mode 100644 index 00000000000..432e33cd865 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json new file mode 100644 index 00000000000..7b1aeca85da --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json new file mode 100644 index 00000000000..3a36e0fe2b9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_bender.json b/src/generated/resources/assets/gtceu/models/item/uiv_bender.json new file mode 100644 index 00000000000..ccb2ecf37b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json new file mode 100644 index 00000000000..f1dfd7b3891 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_canner.json b/src/generated/resources/assets/gtceu/models/item/uiv_canner.json new file mode 100644 index 00000000000..2a2fc321267 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json new file mode 100644 index 00000000000..e3f361b75b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json new file mode 100644 index 00000000000..3975501df6e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json new file mode 100644 index 00000000000..abf05609df3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json new file mode 100644 index 00000000000..456fd6e57e2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json new file mode 100644 index 00000000000..a4d546907d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json new file mode 100644 index 00000000000..0872e4531c8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json new file mode 100644 index 00000000000..ba67eb46d61 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_diode.json b/src/generated/resources/assets/gtceu/models/item/uiv_diode.json new file mode 100644 index 00000000000..f67fcb988eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json new file mode 100644 index 00000000000..f948ca58b6a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json new file mode 100644 index 00000000000..8ff83735d3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json new file mode 100644 index 00000000000..23676dfa988 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json new file mode 100644 index 00000000000..69394f3d0a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json new file mode 100644 index 00000000000..899d675f6c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json new file mode 100644 index 00000000000..c888ca8b070 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json new file mode 100644 index 00000000000..76a97b05687 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..1fe72633239 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..b9a67027229 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json new file mode 100644 index 00000000000..043e6c9052d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..39f4c0a8be9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..2dda2477ec1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json new file mode 100644 index 00000000000..66a3822491a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json new file mode 100644 index 00000000000..798730d7313 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json new file mode 100644 index 00000000000..0c928a726a3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json new file mode 100644 index 00000000000..3dd0949832c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..687267f949a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json new file mode 100644 index 00000000000..8083b0b41ce --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json new file mode 100644 index 00000000000..6dc5c667c78 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json new file mode 100644 index 00000000000..d736b2d3a46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json new file mode 100644 index 00000000000..14ac20aa9d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json new file mode 100644 index 00000000000..c1d9643bb45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json new file mode 100644 index 00000000000..4015823b62a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json new file mode 100644 index 00000000000..c34ccfe7557 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json new file mode 100644 index 00000000000..91dbe59930d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4473a407b69 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json new file mode 100644 index 00000000000..f997b8f95cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json new file mode 100644 index 00000000000..57b6ccbc152 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json new file mode 100644 index 00000000000..b5d63c61da0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json new file mode 100644 index 00000000000..9d338f7cec1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json new file mode 100644 index 00000000000..1a6b1d45172 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json new file mode 100644 index 00000000000..78d355ead4d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json new file mode 100644 index 00000000000..b1493aa79e3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json new file mode 100644 index 00000000000..001b7081094 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json new file mode 100644 index 00000000000..96cc5c5c95a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json new file mode 100644 index 00000000000..48c5cda3c41 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json new file mode 100644 index 00000000000..bc82271ae71 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_packer.json b/src/generated/resources/assets/gtceu/models/item/uiv_packer.json new file mode 100644 index 00000000000..95cfa291921 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json new file mode 100644 index 00000000000..209c35f82e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json new file mode 100644 index 00000000000..844fe1f0742 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json new file mode 100644 index 00000000000..b768245b864 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json new file mode 100644 index 00000000000..f4d45f22751 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json new file mode 100644 index 00000000000..50c19f9501d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json new file mode 100644 index 00000000000..0fd669ce50d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json new file mode 100644 index 00000000000..39341df4db2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..528c50606bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..5a4057f0d20 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json new file mode 100644 index 00000000000..042830fc383 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json new file mode 100644 index 00000000000..162717f0b93 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json new file mode 100644 index 00000000000..ef7dbde89d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json new file mode 100644 index 00000000000..b83480bd00d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json new file mode 100644 index 00000000000..76171bc8162 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json new file mode 100644 index 00000000000..b79583153e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uiv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uiv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json new file mode 100644 index 00000000000..22f7c3e66af --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json new file mode 100644 index 00000000000..c06fd0bd54b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json new file mode 100644 index 00000000000..10bd41b3d6c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json new file mode 100644 index 00000000000..4e73651b47e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json new file mode 100644 index 00000000000..630dae17566 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json new file mode 100644 index 00000000000..abe5ada9441 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json new file mode 100644 index 00000000000..8f8e300aa1e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json new file mode 100644 index 00000000000..bfe2ceb0ede --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json new file mode 100644 index 00000000000..27e9dc21f67 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json new file mode 100644 index 00000000000..16cb187e23c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json new file mode 100644 index 00000000000..189d1a1399a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json new file mode 100644 index 00000000000..dc8fa8a4dab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json new file mode 100644 index 00000000000..23c62dce427 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json new file mode 100644 index 00000000000..9c85e66f22a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json new file mode 100644 index 00000000000..0292803b112 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json new file mode 100644 index 00000000000..693ee7403fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json new file mode 100644 index 00000000000..2e8a668f291 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json new file mode 100644 index 00000000000..dc2e3677f73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json new file mode 100644 index 00000000000..b7d8da52c95 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/ulv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/ulv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..d7bc14ec69b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..86bbdfec111 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json new file mode 100644 index 00000000000..529fb363036 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json new file mode 100644 index 00000000000..0ad63365032 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..d17130ab94c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..d7ad000e1bd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..7e3f36331a5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..85ac48d38e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json new file mode 100644 index 00000000000..1ced6e60787 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json new file mode 100644 index 00000000000..64177591e46 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json new file mode 100644 index 00000000000..f6b3bdb8dd1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json new file mode 100644 index 00000000000..cf6cc2f9760 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uv_assembler.json new file mode 100644 index 00000000000..1a787a6de0c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json new file mode 100644 index 00000000000..166aa9af7cb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json new file mode 100644 index 00000000000..11b7609fb56 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json new file mode 100644 index 00000000000..4bca08f9acc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json new file mode 100644 index 00000000000..b20e0c6f0c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_bender.json b/src/generated/resources/assets/gtceu/models/item/uv_bender.json new file mode 100644 index 00000000000..d17ed5e3f06 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uv_brewery.json new file mode 100644 index 00000000000..a829fecc907 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_canner.json b/src/generated/resources/assets/gtceu/models/item/uv_canner.json new file mode 100644 index 00000000000..20067535bb1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json new file mode 100644 index 00000000000..f60ab6feccf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json new file mode 100644 index 00000000000..067fad6373a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json new file mode 100644 index 00000000000..860eb9259f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json new file mode 100644 index 00000000000..b4817cfaa74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json new file mode 100644 index 00000000000..a5c3a2ecdb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uv_compressor.json new file mode 100644 index 00000000000..cb25fb90879 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uv_cutter.json new file mode 100644 index 00000000000..f7307aa481d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_diode.json b/src/generated/resources/assets/gtceu/models/item/uv_diode.json new file mode 100644 index 00000000000..99bf41e6758 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uv_distillery.json new file mode 100644 index 00000000000..10722c5112b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json new file mode 100644 index 00000000000..b0442ed0cd3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json new file mode 100644 index 00000000000..f723f139c51 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json new file mode 100644 index 00000000000..f07d25aeb39 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json new file mode 100644 index 00000000000..fe7a9ebe386 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json new file mode 100644 index 00000000000..c4af125e4f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json new file mode 100644 index 00000000000..c5559c40eff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..7c4adb36fa5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..7545b328b82 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json new file mode 100644 index 00000000000..4b1c4263a8a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..bda3b24408c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..e2bb8075acb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uv_extractor.json new file mode 100644 index 00000000000..250b976546f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uv_extruder.json new file mode 100644 index 00000000000..a116d440d74 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json new file mode 100644 index 00000000000..f6ea2348d72 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json new file mode 100644 index 00000000000..3b8b3ce1d52 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..8c30450b6a6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json new file mode 100644 index 00000000000..1ab0d2648ef --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json new file mode 100644 index 00000000000..dabdc3a0f9e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json new file mode 100644 index 00000000000..5a7699dddca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json new file mode 100644 index 00000000000..c75b28d6ca2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json new file mode 100644 index 00000000000..58a7695cf7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json new file mode 100644 index 00000000000..ddfe83799ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json new file mode 100644 index 00000000000..517fde2609a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json new file mode 100644 index 00000000000..0c896f84887 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json new file mode 100644 index 00000000000..d8f03920873 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json new file mode 100644 index 00000000000..4706440e744 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json new file mode 100644 index 00000000000..df4a4e307e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uv_lathe.json new file mode 100644 index 00000000000..7bd5cad74c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uv_macerator.json new file mode 100644 index 00000000000..cf541d196c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json new file mode 100644 index 00000000000..094729aa487 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uv_mixer.json new file mode 100644 index 00000000000..3fb1db8449f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json new file mode 100644 index 00000000000..63155705488 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json new file mode 100644 index 00000000000..07a371d7bca --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json new file mode 100644 index 00000000000..2d4a7e8d615 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json new file mode 100644 index 00000000000..bd24e253721 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json new file mode 100644 index 00000000000..b4970d002e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json new file mode 100644 index 00000000000..4ec4f74eaff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_packer.json b/src/generated/resources/assets/gtceu/models/item/uv_packer.json new file mode 100644 index 00000000000..2f5b6efc17e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json new file mode 100644 index 00000000000..921aeecae4a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json new file mode 100644 index 00000000000..b976ff42a59 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json new file mode 100644 index 00000000000..7b4193722de --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json new file mode 100644 index 00000000000..6bded24608f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json new file mode 100644 index 00000000000..3b185149349 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json new file mode 100644 index 00000000000..1388b650b7d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uv_scanner.json new file mode 100644 index 00000000000..00d7b6d7bf2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uv_sifter.json new file mode 100644 index 00000000000..f543e0d302e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..65d6e4e2475 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..da3e43f7d25 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json new file mode 100644 index 00000000000..f8fc2a057ec --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json new file mode 100644 index 00000000000..50777c6418b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json new file mode 100644 index 00000000000..02bd55e18b2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json new file mode 100644 index 00000000000..10ca562b1e5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json new file mode 100644 index 00000000000..cdb460fb555 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json new file mode 100644 index 00000000000..b15ecf8dcc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json new file mode 100644 index 00000000000..e576c81e9a8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uv_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uv_world_accelerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..aa0ab0599ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..13dec7ba6c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json new file mode 100644 index 00000000000..27388f129db --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json new file mode 100644 index 00000000000..3257cc49308 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json new file mode 100644 index 00000000000..f5ca9b66704 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json new file mode 100644 index 00000000000..e43c7e774c1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..385fee954d4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..8bd89078774 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json new file mode 100644 index 00000000000..ecd08474595 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json new file mode 100644 index 00000000000..f3a67e7dbd6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json new file mode 100644 index 00000000000..066dfecde85 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json new file mode 100644 index 00000000000..7363cca3981 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json b/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json new file mode 100644 index 00000000000..d1f2bbd2bc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json b/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json new file mode 100644 index 00000000000..dc2f55281e6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json new file mode 100644 index 00000000000..32674e42d5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json new file mode 100644 index 00000000000..d049902ae73 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json new file mode 100644 index 00000000000..acf151ba0a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_bender.json b/src/generated/resources/assets/gtceu/models/item/uxv_bender.json new file mode 100644 index 00000000000..648d19655ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json b/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json new file mode 100644 index 00000000000..f00818082eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_canner.json b/src/generated/resources/assets/gtceu/models/item/uxv_canner.json new file mode 100644 index 00000000000..c02ef9b7474 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json new file mode 100644 index 00000000000..d56c24cf349 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json new file mode 100644 index 00000000000..1390ea69d12 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json new file mode 100644 index 00000000000..3162fd20581 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json new file mode 100644 index 00000000000..e2503492752 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json new file mode 100644 index 00000000000..0162521c7a1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json b/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json new file mode 100644 index 00000000000..e8e543436ab --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json b/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json new file mode 100644 index 00000000000..83e209393f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_diode.json b/src/generated/resources/assets/gtceu/models/item/uxv_diode.json new file mode 100644 index 00000000000..ce2ed8ce6ed --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json b/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json new file mode 100644 index 00000000000..7adc246ccb6 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json new file mode 100644 index 00000000000..34159452f84 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json new file mode 100644 index 00000000000..1f724eed801 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json new file mode 100644 index 00000000000..a0eee6b97ad --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json new file mode 100644 index 00000000000..bb907103b24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json new file mode 100644 index 00000000000..ec0b23ad7eb --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json new file mode 100644 index 00000000000..0423dfabf90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json new file mode 100644 index 00000000000..d19b9043040 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json new file mode 100644 index 00000000000..5b67722e889 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json new file mode 100644 index 00000000000..2eb2a6104ee --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json new file mode 100644 index 00000000000..00cca1a1b4c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json new file mode 100644 index 00000000000..4263569f0ba --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json b/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json new file mode 100644 index 00000000000..453522030f8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json b/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json new file mode 100644 index 00000000000..64cf413c6a4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json b/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json new file mode 100644 index 00000000000..51b23e0eebf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json new file mode 100644 index 00000000000..ece76ee575e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..07c7f1a1dfa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json new file mode 100644 index 00000000000..7f392ed445f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json new file mode 100644 index 00000000000..2710f003711 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json b/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json new file mode 100644 index 00000000000..a1d1fe254c7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json new file mode 100644 index 00000000000..09789a07058 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json new file mode 100644 index 00000000000..aafca07f4d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json new file mode 100644 index 00000000000..cec0b04328a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json new file mode 100644 index 00000000000..f17b5b8c3ff --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json new file mode 100644 index 00000000000..f4f5fa01801 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json new file mode 100644 index 00000000000..d79b91387f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json new file mode 100644 index 00000000000..f2efa09d56d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json b/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json new file mode 100644 index 00000000000..e1938b206a0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json b/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json new file mode 100644 index 00000000000..74e1bfff27b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json new file mode 100644 index 00000000000..8bfeb5924b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json b/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json new file mode 100644 index 00000000000..80d1a6939e7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json new file mode 100644 index 00000000000..8506bafb65b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json new file mode 100644 index 00000000000..d5577a2b2d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json new file mode 100644 index 00000000000..12b18698ea5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json new file mode 100644 index 00000000000..7b18d489121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json new file mode 100644 index 00000000000..8519783e25c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json new file mode 100644 index 00000000000..dd8c9fd5d40 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_packer.json b/src/generated/resources/assets/gtceu/models/item/uxv_packer.json new file mode 100644 index 00000000000..177133cc2ac --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json b/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json new file mode 100644 index 00000000000..aa68b852cbf --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json new file mode 100644 index 00000000000..fe6c1f1898a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json new file mode 100644 index 00000000000..b5ec20675d3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json new file mode 100644 index 00000000000..ce9cabf6b43 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json new file mode 100644 index 00000000000..a6c35d7a9e8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json b/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json new file mode 100644 index 00000000000..b098a5c2706 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json b/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json new file mode 100644 index 00000000000..903cd5cb4e1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json new file mode 100644 index 00000000000..3ac22f5ded1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json new file mode 100644 index 00000000000..1b450fda6f0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json new file mode 100644 index 00000000000..3b22943a0bc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json new file mode 100644 index 00000000000..ff9f637394a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json new file mode 100644 index 00000000000..cbcaad82ba4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json new file mode 100644 index 00000000000..77d449835b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json new file mode 100644 index 00000000000..2e8d3e5a165 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json b/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json new file mode 100644 index 00000000000..1d1f68c1d45 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/uxv_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/uxv_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json b/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json new file mode 100644 index 00000000000..8f34c189b4e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/vacuum_freezer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/vacuum_freezer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wood_crate.json b/src/generated/resources/assets/gtceu/models/item/wood_crate.json new file mode 100644 index 00000000000..a93f0ec1b6f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wood_crate.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wood_crate" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wood_drum.json b/src/generated/resources/assets/gtceu/models/item/wood_drum.json new file mode 100644 index 00000000000..f4ff87642d9 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wood_drum.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wood_drum" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json new file mode 100644 index 00000000000..f6732c72720 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wooden_multiblock_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wooden_multiblock_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json b/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json new file mode 100644 index 00000000000..01345b3abf8 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wooden_tank_valve.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/wooden_tank_valve" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json new file mode 100644 index 00000000000..03183bc2405 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1024a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json new file mode 100644 index 00000000000..0d6db40686a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1024a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1024a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json new file mode 100644 index 00000000000..ebef96f337c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_16a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_16a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json new file mode 100644 index 00000000000..b3b3cddbca3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_1a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_1a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json new file mode 100644 index 00000000000..c8988e5aae2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_256a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json new file mode 100644 index 00000000000..3f3e87a3495 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_256a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_256a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json new file mode 100644 index 00000000000..a53eb85dcc1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_source_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4096a_laser_source_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json new file mode 100644 index 00000000000..29662ea3f27 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4096a_laser_target_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4096a_laser_target_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json new file mode 100644 index 00000000000..3e89fe34c3b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_4a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_4a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json new file mode 100644 index 00000000000..5c1e09ab4c2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_8a_energy_converter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_8a_energy_converter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json b/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json new file mode 100644 index 00000000000..5c6e9185341 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_alloy_smelter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_alloy_smelter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json b/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json new file mode 100644 index 00000000000..6b9d431ecc0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_arc_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_arc_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json b/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json new file mode 100644 index 00000000000..22d5059752c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json b/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json new file mode 100644 index 00000000000..e76856c6884 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_autoclave.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_autoclave" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json new file mode 100644 index 00000000000..01fc78858b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_16x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_16x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json new file mode 100644 index 00000000000..d9a3e8891b1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json new file mode 100644 index 00000000000..e15fb50fd9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_battery_buffer_8x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_battery_buffer_8x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_bender.json b/src/generated/resources/assets/gtceu/models/item/zpm_bender.json new file mode 100644 index 00000000000..c2e9b97a3cc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_bender.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_bender" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json b/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json new file mode 100644 index 00000000000..fac5c81970a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_brewery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_brewery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_canner.json b/src/generated/resources/assets/gtceu/models/item/zpm_canner.json new file mode 100644 index 00000000000..7508cda7b02 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_canner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_canner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json new file mode 100644 index 00000000000..11d31ac76c3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json new file mode 100644 index 00000000000..6dc4ce6c2fa --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_charger_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_charger_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json new file mode 100644 index 00000000000..aa50aefc018 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_bath.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_chemical_bath" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json new file mode 100644 index 00000000000..a4574c2b20d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_chemical_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_chemical_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json b/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json new file mode 100644 index 00000000000..52a23100cb0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_circuit_assembler.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_circuit_assembler" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json b/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json new file mode 100644 index 00000000000..4c0b6ae6311 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_compressor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_compressor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json b/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json new file mode 100644 index 00000000000..a63bd7e120b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_cutter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_cutter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_diode.json b/src/generated/resources/assets/gtceu/models/item/zpm_diode.json new file mode 100644 index 00000000000..cacf2f9a29d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_diode.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_diode" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json b/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json new file mode 100644 index 00000000000..38414cd361a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_distillery.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_distillery" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json new file mode 100644 index 00000000000..76af59bf58f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_dual_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_dual_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json new file mode 100644 index 00000000000..8bb59855c2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_dual_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_dual_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json b/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json new file mode 100644 index 00000000000..fa029f8f844 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electric_furnace.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electric_furnace" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json b/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json new file mode 100644 index 00000000000..6c08d74841d --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electrolyzer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electrolyzer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json b/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json new file mode 100644 index 00000000000..e9e1bf21af5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_electromagnetic_separator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_electromagnetic_separator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json new file mode 100644 index 00000000000..533b08182fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json new file mode 100644 index 00000000000..c8af9613563 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json new file mode 100644 index 00000000000..497f2b0a8b7 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_input_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_input_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json new file mode 100644 index 00000000000..6449e38b2c0 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json new file mode 100644 index 00000000000..d5a35387611 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json new file mode 100644 index 00000000000..742b592ffe3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_energy_output_hatch_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_energy_output_hatch_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json b/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json new file mode 100644 index 00000000000..afe58690603 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_extractor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_extractor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json b/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json new file mode 100644 index 00000000000..9f17ad3d433 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_extruder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_extruder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json b/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json new file mode 100644 index 00000000000..4ee389b9901 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fermenter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fermenter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json new file mode 100644 index 00000000000..adf0744cb97 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_heater.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_heater" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json new file mode 100644 index 00000000000..71334a8d484 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json new file mode 100644 index 00000000000..126cec1d4b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fluid_solidifier.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fluid_solidifier" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json b/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json new file mode 100644 index 00000000000..e2a678ee63f --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_forge_hammer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_forge_hammer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json b/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json new file mode 100644 index 00000000000..c584c7fcb90 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_forming_press.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_forming_press" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json new file mode 100644 index 00000000000..c8263333464 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_fusion_reactor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_fusion_reactor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json b/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json new file mode 100644 index 00000000000..1792ab3dcc4 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_gas_collector.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_gas_collector" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json new file mode 100644 index 00000000000..fde666dab2b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json new file mode 100644 index 00000000000..299bccfe62a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json new file mode 100644 index 00000000000..1a8f602a6dc --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json new file mode 100644 index 00000000000..5f894cf3f1a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_input_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_input_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json new file mode 100644 index 00000000000..f3bfeea83d5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_item_passthrough_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_item_passthrough_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json b/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json new file mode 100644 index 00000000000..6c73d626269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_laser_engraver.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_laser_engraver" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json b/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json new file mode 100644 index 00000000000..8d7acfbf454 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_lathe.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_lathe" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json b/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json new file mode 100644 index 00000000000..0886a1f2e9b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_macerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_macerator" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json b/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json new file mode 100644 index 00000000000..49b214897fe --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_machine_hull.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_machine_hull" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json b/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json new file mode 100644 index 00000000000..c1701b44d24 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_mixer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_mixer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json new file mode 100644 index 00000000000..3630cad6232 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_muffler_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_muffler_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json b/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json new file mode 100644 index 00000000000..3aa66f60121 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_ore_washer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_ore_washer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json new file mode 100644 index 00000000000..6cefb71e064 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_bus.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_bus" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json new file mode 100644 index 00000000000..07f36562159 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json new file mode 100644 index 00000000000..4525e3aa408 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_4x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch_4x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json new file mode 100644 index 00000000000..ffdf8fc03a2 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_output_hatch_9x.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_output_hatch_9x" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_packer.json b/src/generated/resources/assets/gtceu/models/item/zpm_packer.json new file mode 100644 index 00000000000..b4f97b341df --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_packer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_packer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json b/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json new file mode 100644 index 00000000000..cefa769648b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_parallel_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_parallel_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json b/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json new file mode 100644 index 00000000000..3fa619e9dcd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_polarizer.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_polarizer" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json new file mode 100644 index 00000000000..89e3d20da92 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_chest.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_quantum_chest" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json new file mode 100644 index 00000000000..d6ddc2485ea --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_quantum_tank.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_quantum_tank" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json b/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json new file mode 100644 index 00000000000..90367d2d55b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_rock_crusher.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_rock_crusher" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json new file mode 100644 index 00000000000..56b67ea9d8b --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_rotor_holder.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_rotor_holder" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json b/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json new file mode 100644 index 00000000000..22bfab90157 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_scanner.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_scanner" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json b/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json new file mode 100644 index 00000000000..58f0beaeb5e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_sifter.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_sifter" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json new file mode 100644 index 00000000000..eae1c5405c5 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_substation_input_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_substation_input_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json b/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json new file mode 100644 index 00000000000..fd533650b5a --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_substation_output_hatch_64a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_substation_output_hatch_64a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json b/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json new file mode 100644 index 00000000000..f7a06d0a274 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_thermal_centrifuge.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_thermal_centrifuge" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json new file mode 100644 index 00000000000..3ad66daf269 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_16a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_16a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json new file mode 100644 index 00000000000..e591147a15c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_1a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_1a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json new file mode 100644 index 00000000000..16caacb6496 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_2a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_2a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json new file mode 100644 index 00000000000..5e0004eb585 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_transformer_4a.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_transformer_4a" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json b/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json new file mode 100644 index 00000000000..96ec23efd2e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_wiremill.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_wiremill" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json b/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json new file mode 100644 index 00000000000..59a070d7203 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/zpm_world_accelerator.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/zpm_world_accelerator" +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index 3ed145140ca..ba02ab27193 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -19,9 +19,8 @@ import dev.emi.emi.config.EmiConfig; import me.shedaniel.rei.api.client.REIRuntime; -import org.apache.logging.log4j.util.Strings; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.nio.file.Path; @@ -31,7 +30,7 @@ public class GTCEu { public static final String MOD_ID = "gtceu"; private static final ResourceLocation TEMPLATE_LOCATION = new ResourceLocation(MOD_ID, ""); public static final String NAME = "GregTechCEu"; - public static final Logger LOGGER = LoggerFactory.getLogger(NAME); + public static final Logger LOGGER = LogManager.getLogger(NAME); public GTCEu() { GTCEu.init(); @@ -44,7 +43,7 @@ public static void init() { } public static ResourceLocation id(String path) { - if (Strings.isBlank(path)) { + if (path.isBlank()) { return TEMPLATE_LOCATION; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java index 1bdbcd6e2df..c4c2b3d7a8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java @@ -7,19 +7,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.Property; import org.jetbrains.annotations.ApiStatus; import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties.ACTIVE; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class ActiveBlock extends AppearanceBlock { - public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); - public ActiveBlock(Properties properties) { super(properties); registerDefaultState(defaultBlockState().setValue(ACTIVE, false)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java index 235146dc0b7..26ad770884b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/IMachineBlock.java @@ -5,11 +5,10 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; @@ -17,13 +16,10 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.DirectionProperty; import org.jetbrains.annotations.Nullable; -public interface IMachineBlock extends IBlockRendererProvider, EntityBlock { - - DirectionProperty UPWARDS_FACING_PROPERTY = DirectionProperty.create("upwards_facing", Direction.Plane.HORIZONTAL); +public interface IMachineBlock extends EntityBlock { default Block self() { return (Block) this; @@ -31,7 +27,18 @@ default Block self() { MachineDefinition getDefinition(); - RotationState getRotationState(); + default RotationState getRotationState() { + return getDefinition().getRotationState(); + } + + default Direction getFrontFacing(BlockState state) { + return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); + } + + @Nullable + default MetaMachine getMachine(BlockGetter level, BlockPos pos) { + return MetaMachine.getMachine(level, pos); + } static int colorTinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { @@ -71,4 +78,8 @@ default BlockEntityTicker getTicker(Level level, Bloc } return null; } + + default boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { + return getMachine(level, pos).canConnectRedstone(side); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java index f48ef9e220d..8e86dc76144 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MetaMachineBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.MetaMachineItem; @@ -14,8 +15,6 @@ import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -38,6 +37,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -64,18 +64,16 @@ public class MetaMachineBlock extends AppearanceBlock implements IMachineBlock { @Getter public final MachineDefinition definition; - @Getter - public final RotationState rotationState; public MetaMachineBlock(Properties properties, MachineDefinition definition) { super(properties); this.definition = definition; - this.rotationState = RotationState.get(); + RotationState rotationState = definition.getRotationState(); if (rotationState != RotationState.NONE) { BlockState defaultState = this.defaultBlockState().setValue(rotationState.property, rotationState.defaultDirection); if (definition.isAllowExtendedFacing()) { - defaultState = defaultState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, Direction.NORTH); + defaultState = defaultState.setValue(GTBlockStateProperties.UPWARDS_FACING, Direction.NORTH); } registerDefaultState(defaultState); } @@ -83,32 +81,26 @@ public MetaMachineBlock(Properties properties, MachineDefinition definition) { @Override protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - RotationState rotationState = RotationState.get(); + RotationState rotationState = MachineDefinition.getBuilt().getRotationState(); if (rotationState != RotationState.NONE) { pBuilder.add(rotationState.property); if (MachineDefinition.getBuilt().isAllowExtendedFacing()) { - pBuilder.add(IMachineBlock.UPWARDS_FACING_PROPERTY); + pBuilder.add(GTBlockStateProperties.UPWARDS_FACING); } } } - @Nullable - public MetaMachine getMachine(BlockGetter level, BlockPos pos) { - return MetaMachine.getMachine(level, pos); - } - - @Nullable - @Override - public IRenderer getRenderer(BlockState state) { - return definition.getRenderer(); - } - @Override public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { return getRotationState() == RotationState.NONE ? definition.getShape(Direction.NORTH) : definition.getShape(pState.getValue(getRotationState().property)); } + @Override + public RenderShape getRenderShape(BlockState state) { + return RenderShape.MODEL; + } + @Override public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) { super.animateTick(state, level, pos, random); @@ -175,19 +167,15 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { if (getDefinition().isAllowExtendedFacing()) { Direction frontFacing = state.getValue(rotationState.property); if (frontFacing == Direction.UP) { - state = state.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, player.getDirection()); + state = state.setValue(GTBlockStateProperties.UPWARDS_FACING, player.getDirection()); } else if (frontFacing == Direction.DOWN) { - state = state.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, player.getDirection().getOpposite()); + state = state.setValue(GTBlockStateProperties.UPWARDS_FACING, player.getDirection().getOpposite()); } } } return state; } - public Direction getFrontFacing(BlockState state) { - return getRotationState() == RotationState.NONE ? Direction.NORTH : state.getValue(getRotationState().property); - } - @Override public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { ItemStack itemStack = super.getCloneItemStack(level, pos, state); @@ -230,11 +218,11 @@ public boolean triggerEvent(BlockState pState, Level pLevel, BlockPos pPos, int @Override public BlockState rotate(BlockState pState, Rotation pRotation) { - if (this.rotationState == RotationState.NONE) { + if (getRotationState() == RotationState.NONE) { return pState; } - return pState.setValue(this.rotationState.property, - pRotation.rotate(pState.getValue(this.rotationState.property))); + return pState.setValue(getRotationState().property, + pRotation.rotate(pState.getValue(getRotationState().property))); } @Override @@ -275,9 +263,9 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pLevel.updateNeighbourForOutputSignal(pPos, this); pLevel.removeBlockEntity(pPos); - } else if (rotationState != RotationState.NONE) { // old block different facing - var oldFacing = pState.getValue(rotationState.property); - var newFacing = pNewState.getValue(rotationState.property); + } else if (getRotationState() != RotationState.NONE) { // old block different facing + var oldFacing = pState.getValue(getRotationState().property); + var newFacing = pNewState.getValue(getRotationState().property); if (newFacing != oldFacing) { var machine = getMachine(pLevel, pPos); if (machine != null) { @@ -301,8 +289,8 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player } Set types = ToolHelper.getToolTypes(itemStack); - if (machine != null && (!types.isEmpty() && ToolHelper.canUse(itemStack)) || - (types.isEmpty() && player.isShiftKeyDown())) { + if (machine != null && + (!types.isEmpty() && ToolHelper.canUse(itemStack) || types.isEmpty() && player.isShiftKeyDown())) { var result = machine.onToolClick(types, itemStack, new UseOnContext(player, hand, hit)); if (result.getSecond() == InteractionResult.CONSUME && player instanceof ServerPlayer serverPlayer) { ToolHelper.playToolSound(result.getFirst(), serverPlayer); @@ -333,10 +321,6 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player return shouldOpenUi ? InteractionResult.PASS : InteractionResult.CONSUME; } - public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) { - return getMachine(level, pos).canConnectRedstone(side); - } - @Override @SuppressWarnings("deprecation") // This is fine to override, just not to be called. public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java b/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java new file mode 100644 index 00000000000..b0cc876857f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/block/property/GTBlockStateProperties.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.api.block.property; + +import net.minecraft.core.Direction; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; + +public class GTBlockStateProperties { + + public static final DirectionProperty UPWARDS_FACING = DirectionProperty.create("upwards_facing", + Direction.Plane.HORIZONTAL); + public static final DirectionProperty NORTH_ONLY_FACING = DirectionProperty.create("facing", Direction.NORTH); + public static final DirectionProperty VERTICAL_FACING = DirectionProperty.create("facing", + Direction.Plane.VERTICAL); + + public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); + public static final BooleanProperty BLOOM = BooleanProperty.create("bloom"); + public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); + + public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java index 56e5221a750..0eecca35a40 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java @@ -1,7 +1,11 @@ package com.gregtechceu.gtceu.api.blockentity; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IPaintable { + BooleanProperty IS_PAINTED_PROPERTY = BooleanProperty.create("is_painted"); + /** * Get painting color. * It's not the real color of this block. diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 83dcc385ae2..7ead7a8baf8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -13,13 +13,22 @@ import com.gregtechceu.gtceu.api.misc.EnergyContainerList; import com.gregtechceu.gtceu.api.misc.EnergyInfoProviderList; import com.gregtechceu.gtceu.api.misc.LaserContainerList; -import com.gregtechceu.gtceu.client.renderer.GTRendererProvider; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.datafixers.TagFixer; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.syncdata.IManaged; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -44,30 +53,49 @@ import java.util.*; -public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlockEntity { +public class MetaMachineBlockEntity extends BlockEntity implements IMachineBlockEntity, IManaged { + + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + MetaMachineBlockEntity.class); public final MultiManagedStorage managedStorage = new MultiManagedStorage(); @Getter + private final FieldManagedStorage syncStorage = new FieldManagedStorage(this); + @Getter public final MetaMachine metaMachine; + @Getter + @Persisted + @DescSynced + @RequireRerender + private MachineRenderState renderState; private final long offset = GTValues.RNG.nextInt(20); - protected MetaMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { + public MetaMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { super(type, pos, blockState); + this.renderState = getDefinition().defaultRenderState(); this.metaMachine = getDefinition().createMetaMachine(this); - } - public static MetaMachineBlockEntity createBlockEntity(BlockEntityType type, BlockPos pos, - BlockState blockState) { - return new MetaMachineBlockEntity(type, pos, blockState); + this.getRootStorage().attach(getSyncStorage()); } - public static void onBlockEntityRegister(BlockEntityType metaMachineBlockEntityBlockEntityType) {} - @Override public MultiManagedStorage getRootStorage() { return managedStorage; } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public void onChanged() { + var level = getLevel(); + if (level != null && !level.isClientSide && level.getServer() != null) { + level.getServer().execute(this::setChanged); + } + } + @Override public boolean triggerEvent(int id, int para) { if (id == 1) { // chunk re render @@ -79,6 +107,12 @@ public boolean triggerEvent(int id, int para) { return false; } + @Override + public void setRenderState(MachineRenderState state) { + this.renderState = state; + scheduleRenderUpdate(); + } + @Override public long getOffset() { return offset; @@ -103,8 +137,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { return metaMachine.sideTips(player, pos, state, toolTypes, side); } @@ -262,19 +296,17 @@ public static List getCapabilitiesFromTraits(List traits, D * Why, Forge, Why? * Why must you make me add a method for no good reason? */ + @SuppressWarnings("unchecked") @OnlyIn(Dist.CLIENT) @Override public AABB getRenderBoundingBox() { - GTRendererProvider instance = GTRendererProvider.getInstance(); - if (instance != null) { - IRenderer renderer = instance.getRenderer(this); - if (renderer != null) { - if (renderer.getViewDistance() == 64 /* the default */) { - return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); - } + BlockRenderDispatcher blockRenderDispatcher = Minecraft.getInstance().getBlockRenderer(); + BakedModel model = blockRenderDispatcher.getBlockModel(this.getBlockState()); - int viewDistHalf = renderer.getViewDistance() / 2; - return new AABB(worldPosition).inflate(viewDistHalf); + if (model instanceof IBlockEntityRendererBakedModel modelWithBER) { + if (modelWithBER.getBlockEntityType() == this.getType()) { + return ((IBlockEntityRendererBakedModel) modelWithBER) + .getRenderBoundingBox(this); } } return new AABB(worldPosition.offset(-1, 0, -1), worldPosition.offset(2, 2, 2)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java index efd45f5a254..23f88ee3fd6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/PipeBlockEntity.java @@ -347,8 +347,8 @@ public ResourceTexture getPipeTexture(boolean isBlock) { } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(getPipeTuneTool())) { if (player.isShiftKeyDown() && this.canHaveBlockedFaces()) { return getPipeTexture(isBlocked(side)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java index 0fc4de3a25c..e72890e03e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java @@ -1,7 +1,11 @@ package com.gregtechceu.gtceu.api.capability; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IControllable { + BooleanProperty WORKING_ENABLED_PROPERTY = BooleanProperty.create("working_enabled"); + /** * @return true if the controllable is allowed to work */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java index 51ea1429ee0..9a3c9e8ed1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java @@ -2,8 +2,12 @@ import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + public interface IHPCAComponentHatch { + BooleanProperty HPCA_PART_DAMAGED_PROPERTY = BooleanProperty.create("hpca_part_damaged"); + /** * How much EU/t this component needs for the multi to just be idle. * Used in 2 ways: diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java index 72a2f631477..114ac7edb8d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java @@ -1,10 +1,14 @@ package com.gregtechceu.gtceu.api.capability; +import net.minecraft.world.level.block.state.properties.BooleanProperty; + /** * For machines which have progress and can work */ public interface IWorkable extends IControllable { + BooleanProperty ACTIVE_PROPERTY = BooleanProperty.create("active"); + /** * @return current progress of machine */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index 1480c9170b3..f1e1865a34c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -37,6 +37,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.function.Supplier; import javax.annotation.ParametersAreNonnullByDefault; @@ -183,7 +184,7 @@ public boolean shouldRenderPlate() { return true; } - public ICoverRenderer getCoverRenderer() { + public @Nullable Supplier getCoverRenderer() { return coverDefinition.getCoverRenderer(); } @@ -199,8 +200,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.CROWBAR)) { return GuiTextures.TOOL_REMOVE_COVER; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java index 30fb5b9177b..5a11aac76b3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.cover; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; @@ -7,6 +8,9 @@ import net.minecraft.resources.ResourceLocation; import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; public final class CoverDefinition { @@ -24,15 +28,28 @@ public interface TieredCoverBehaviourProvider { private final ResourceLocation id; private final CoverBehaviourProvider behaviorCreator; @Getter - private final ICoverRenderer coverRenderer; + private final @Nullable Supplier coverRenderer; - public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator, ICoverRenderer coverRenderer) { + public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { this.behaviorCreator = behaviorCreator; this.id = id; - this.coverRenderer = coverRenderer; + if (GTCEu.isClientSide()) { + this.coverRenderer = ClientHelper.initRenderer(coverRenderer); + } else { + this.coverRenderer = null; + } } public CoverBehavior createCoverBehavior(ICoverable metaTileEntity, Direction side) { return behaviorCreator.create(this, metaTileEntity, side); } + + private static class ClientHelper { + + private static Supplier initRenderer(Supplier> coverRenderer) { + ICoverRenderer value = coverRenderer.get().get(); + return () -> value; + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java b/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java new file mode 100644 index 00000000000..f9636b25d08 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/IIOCover.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.api.cover; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.common.cover.data.ManualIOMode; + +public interface IIOCover { + + int getTransferRate(); + + IO getIo(); + + ManualIOMode getManualIOMode(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java b/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java index 95a2ee27d34..2751ff4df82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/RotationState.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.data; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; + import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; @@ -9,9 +11,8 @@ public enum RotationState implements Predicate { ALL(dir -> true, Direction.NORTH, BlockStateProperties.FACING), - NONE(dir -> false, Direction.NORTH, DirectionProperty.create("facing", Direction.NORTH)), - Y_AXIS(dir -> dir.getAxis() == Direction.Axis.Y, Direction.UP, - DirectionProperty.create("facing", Direction.Plane.VERTICAL)), + NONE(dir -> false, Direction.NORTH, GTBlockStateProperties.NORTH_ONLY_FACING), + Y_AXIS(dir -> dir.getAxis() == Direction.Axis.Y, Direction.UP, GTBlockStateProperties.VERTICAL_FACING), NON_Y_AXIS(dir -> dir.getAxis() != Direction.Axis.Y, Direction.NORTH, BlockStateProperties.HORIZONTAL_FACING); final Predicate predicate; @@ -24,20 +25,6 @@ public enum RotationState implements Predicate { this.property = property; } - static final ThreadLocal STATE = new ThreadLocal<>(); - - public static RotationState get() { - return STATE.get(); - } - - public static void set(RotationState state) { - STATE.set(state); - } - - public static void clear() { - STATE.remove(); - } - @Override public boolean test(Direction dir) { return predicate.test(dir); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index b677b4fb0d1..ddc4a0d19d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -367,9 +367,9 @@ public void setMaterialSecondaryARGB(int materialRGB) { } public int getLayerARGB(int layerIndex) { - // get 2nd digit as positive if emissive layer + // parse emissive layer value as -(layer + 101) if (layerIndex < -100) { - layerIndex = (Math.abs(layerIndex) % 100) / 10; + layerIndex = -layerIndex - 101; } if (layerIndex > materialInfo.colors.size() - 1 || layerIndex < 0) return -1; int layerColor = getMaterialARGB(layerIndex); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java index bf7967547f9..c96add6eaf3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconType.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material.info; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.lowdragmc.lowdraglib.utils.ResourceHelper; @@ -135,13 +136,11 @@ public static MaterialIconType getByName(String name) { return ICON_TYPES.get(name); } - @Nullable public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, boolean doReadCache) { return getBlockTexturePath(materialIconSet, null, doReadCache); } - @Nullable // Safe: only null on registration on fabric, and no "required" textures are resolved at that point. - public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, String suffix, + public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIconSet, @Nullable String suffix, boolean doReadCache) { if (doReadCache) { if (suffix == null || suffix.isBlank()) { @@ -159,7 +158,7 @@ public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIco // noinspection ConstantConditions if (!GTCEu.isClientSide() || Minecraft.getInstance() == null || Minecraft.getInstance().getResourceManager() == null) - return null; // check minecraft for null for CI environments + return GTModels.BLANK_TEXTURE; // check minecraft for null for CI environments if (!iconSet.isRootIconset) { while (!iconSet.isRootIconset) { ResourceLocation location = GTCEu @@ -174,7 +173,7 @@ public ResourceLocation getBlockTexturePath(@NotNull MaterialIconSet materialIco .id(String.format("textures/block/material_sets/%s/%s%s.png", iconSet.name, this.name, suffix)); if (!suffix.isEmpty() && !ResourceHelper.isResourceExist(location) && !ResourceHelper.isResourceExistRaw(location)) { - return null; + return GTModels.BLANK_TEXTURE; } location = GTCEu.id(String.format("block/material_sets/%s/%s%s", iconSet.name, this.name, suffix)); if (suffix.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index fa1a7ba9e0a..04b7239d43c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -191,7 +191,7 @@ public class GuiTextures { public static final ResourceTexture MAINTENANCE_ICON = new ResourceTexture( "gtceu:textures/block/overlay/machine/overlay_maintenance.png"); public static final ResourceTexture STORAGE_ICON = new ResourceTexture( - "gtceu:textures/item/storage_cover.png"); + "gtceu:textures/item/storage.png"); public static final ResourceTexture BUTTON_MINER_MODES = new ResourceTexture( "gtceu:textures/gui/widget/button_miner_modes.png"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java b/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java index 1573c570e7d..f987592eee7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/texture/ProspectingTexture.java @@ -5,6 +5,8 @@ import com.gregtechceu.gtceu.api.gui.misc.ProspectorMode; import com.lowdragmc.lowdraglib.gui.editor.ColorPattern; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; import com.lowdragmc.lowdraglib.utils.ColorUtils; @@ -23,6 +25,7 @@ import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.blaze3d.vertex.VertexFormat; import lombok.Getter; +import org.joml.Matrix4f; import java.io.IOException; import java.lang.reflect.Array; @@ -31,12 +34,15 @@ import static com.mojang.blaze3d.vertex.DefaultVertexFormat.POSITION_TEX_COLOR; +@SuppressWarnings({ "rawtypes", "unchecked" }) @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @OnlyIn(Dist.CLIENT) public class ProspectingTexture extends AbstractTexture { public static final String SELECTED_ALL = "[all]"; + private static final ResourceTexture ARROW = GuiTextures.UP.copy().setColor(ColorPattern.RED.color); + @Getter private String selected = SELECTED_ALL; private boolean darkMode; @@ -108,13 +114,13 @@ private NativeImage getImage() { NativeImage image = new NativeImage(wh, wh, false); for (int i = 0; i < wh; i++) { for (int j = 0; j < wh; j++) { - var items = this.data[i * mode.cellSize / 16][j * mode.cellSize / 16]; + Object[] items = this.data[i * mode.cellSize / 16][j * mode.cellSize / 16]; // draw bg image.setPixelRGBA(i, j, (darkMode ? ColorPattern.GRAY.color : ColorPattern.WHITE.color)); // draw items - for (var item : items) { + for (Object item : items) { if (!selected.equals(SELECTED_ALL) && !selected.equals(mode.getUniqueID(item))) continue; - var color = mode.getItemColor(item); + int color = mode.getItemColor(item); image.setPixelRGBA(i, j, combine(255, ColorUtils.blueI(color), ColorUtils.greenI(color), ColorUtils.redI(color))); break; @@ -146,17 +152,17 @@ private void doLoad(NativeImage image) { public void draw(GuiGraphics graphics, int x, int y) { if (this.getId() == -1) return; - Tesselator tessellator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuilder(); + Tesselator tesselator = Tesselator.getInstance(); + BufferBuilder bufferbuilder = tesselator.getBuilder(); RenderSystem.setShader(GameRenderer::getPositionTexColorShader); RenderSystem.setShaderTexture(0, this.getId()); - var matrix4f = graphics.pose().last().pose(); + Matrix4f matrix4f = graphics.pose().last().pose(); bufferbuilder.begin(VertexFormat.Mode.QUADS, POSITION_TEX_COLOR); bufferbuilder.vertex(matrix4f, x, y + imageHeight, 0).uv(0, 1).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x + imageWidth, y + imageHeight, 0).uv(1, 1).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x + imageWidth, y, 0).uv(1, 0).color(-1).endVertex(); bufferbuilder.vertex(matrix4f, x, y, 0).uv(0, 0).color(-1).endVertex(); - tessellator.end(); + tesselator.end(); // draw special grid (e.g. fluid) for (int cx = 0; cx < radius * 2 - 1; cx++) { @@ -167,9 +173,8 @@ public void draw(GuiGraphics graphics, int x, int y) { } } } - - GuiTextures.UP.copy().setColor(ColorPattern.RED.color).rotate(direction / 2).draw(graphics, 0, 0, - x + playerXGui - 20, y + playerYGui - 20, 40, 40); + TransformTexture arrow = ARROW.rotate(this.direction / 2); + arrow.draw(graphics, 0, 0, x + playerXGui - 20, y + playerYGui - 20, 40, 40); // draw red vertical line if (playerXGui % 16 > 7 || playerXGui % 16 == 0) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java index c0e6ecd84b3..f6ece747ce6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/MetaMachineItem.java @@ -4,27 +4,26 @@ import com.gregtechceu.gtceu.api.block.PipeBlock; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; - -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.gregtechceu.gtceu.client.renderer.ItemWithBERModelRenderer; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import org.jetbrains.annotations.Nullable; +import java.util.function.Consumer; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MetaMachineItem extends BlockItem implements IItemRendererProvider { +public class MetaMachineItem extends BlockItem { public MetaMachineItem(IMachineBlock block, Properties properties) { super(block.self(), properties); @@ -34,12 +33,6 @@ public MachineDefinition getDefinition() { return ((IMachineBlock) getBlock()).getDefinition(); } - @Nullable - @Override - public IRenderer getRenderer(ItemStack stack) { - return ((IMachineBlock) getBlock()).getDefinition().getRenderer(); - } - @Override @SuppressWarnings({ "rawtypes", "unchecked" }) protected boolean placeBlock(BlockPlaceContext context, BlockState state) { @@ -62,4 +55,15 @@ protected boolean placeBlock(BlockPlaceContext context, BlockState state) { } return superVal; } + + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientItemExtensions() { + + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return ItemWithBERModelRenderer.INSTANCE; + } + }); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java index 6cf503048a3..2f4793b109c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/QuantumTankMachineItem.java @@ -16,10 +16,6 @@ public QuantumTankMachineItem(IMachineBlock block, Properties properties) { super(block, properties); } - public static QuantumTankMachineItem create(IMachineBlock block, Properties properties) { - return new QuantumTankMachineItem(block, properties); - } - @Override public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) { return new QuantumFluidHandlerItemStack(stack, QuantumTankMachine.TANK_CAPACITY.getLong(getDefinition())); diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java index 25c0f03077a..a79ccf07b39 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/IToolGridHighlight.java @@ -19,9 +19,8 @@ default boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, return true; } - @Nullable - default ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + default @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { return null; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index 0caa65fe345..847c3ec90ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.blockentity.IAsyncAutoSyncBlockEntity; import com.lowdragmc.lowdraglib.syncdata.blockentity.IAutoPersistBlockEntity; @@ -12,8 +13,15 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.ModelProperty; +import net.minecraftforge.common.extensions.IForgeBlockEntity; + +import org.jetbrains.annotations.NotNull; /** * A simple compound Interface for all my TileEntities. @@ -21,7 +29,10 @@ * Also delivers most of the Information about TileEntities. */ public interface IMachineBlockEntity extends IToolGridHighlight, IAsyncAutoSyncBlockEntity, IRPCBlockEntity, - IAutoPersistBlockEntity, IPaintable { + IAutoPersistBlockEntity, IPaintable, IForgeBlockEntity { + + ModelProperty MODEL_DATA_LEVEL = new ModelProperty<>(); + ModelProperty MODEL_DATA_POS = new ModelProperty<>(); default BlockEntity self() { return (BlockEntity) this; @@ -46,13 +57,24 @@ default void scheduleRenderUpdate() { if (level() != null) { var state = level().getBlockState(pos); if (level().isClientSide) { - level().sendBlockUpdated(pos, state, state, 1 << 3); + level().sendBlockUpdated(pos, state, state, Block.UPDATE_IMMEDIATE); + self().requestModelDataUpdate(); } else { level().blockEvent(pos, state.getBlock(), 1, 0); } } } + @Override + default @NotNull ModelData getModelData() { + ModelData.Builder data = IForgeBlockEntity.super.getModelData() + .derive() + .with(MODEL_DATA_LEVEL, level()) + .with(MODEL_DATA_POS, pos()); + getMetaMachine().updateModelData(data); + return data.build(); + } + default long getOffsetTimer() { if (level() == null) return getOffset(); else if (level().isClientSide()) return GTValues.CLIENT_TIME + getOffset(); @@ -71,6 +93,10 @@ default MachineDefinition getDefinition() { } } + MachineRenderState getRenderState(); + + void setRenderState(MachineRenderState state); + MetaMachine getMetaMachine(); long getOffset(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index fb27d294c06..b6ef72d034a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -2,17 +2,19 @@ import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.lowdragmc.lowdraglib.utils.ShapeUtils; import net.minecraft.core.Direction; +import net.minecraft.core.IdMapper; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -20,6 +22,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -27,6 +30,8 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -40,6 +45,8 @@ */ public class MachineDefinition implements Supplier { + public static final IdMapper RENDER_STATE_REGISTRY = new IdMapper<>(512); + @Getter private final ResourceLocation id; // This is only stored here for KJS use. @@ -96,7 +103,7 @@ public class MachineDefinition implements Supplier { @Getter @Setter - private IRenderer renderer; + private RotationState rotationState; @Setter private VoxelShape shape; @Getter @@ -123,12 +130,19 @@ public class MachineDefinition implements Supplier { @Setter private Object2IntMap> recipeOutputLimits = new Object2IntOpenHashMap<>(); - protected MachineDefinition(ResourceLocation id) { + @Getter + @Setter(onMethod_ = @ApiStatus.Internal) + private StateDefinition stateDefinition; + @Accessors(fluent = true) + @Getter + private MachineRenderState defaultRenderState; + + public MachineDefinition(ResourceLocation id) { this.id = id; } - public static MachineDefinition createDefinition(ResourceLocation id) { - return new MachineDefinition(id); + public final void registerDefaultState(MachineRenderState state) { + this.defaultRenderState = state; } public Block getBlock() { @@ -171,7 +185,7 @@ public String getName() { @Override public String toString() { - return "[Definition: %s]".formatted(id); + return id.toString(); } public String getDescriptionId() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 25f36842dfa..a27582b8f5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -2,8 +2,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.IAppearance; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.blockentity.ITickSubscription; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; @@ -24,6 +24,7 @@ import com.gregtechceu.gtceu.api.misc.IOFluidHandlerList; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.cover.FluidFilterCover; import com.gregtechceu.gtceu.common.cover.ItemFilterCover; import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior; @@ -62,6 +63,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.items.IItemHandlerModifiable; @@ -69,6 +71,7 @@ import com.mojang.datafixers.util.Pair; import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -85,7 +88,6 @@ * All fundamental features will be implemented here. * To add additional features, you can see {@link IMachineFeature} */ -@SuppressWarnings("removal") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class MetaMachine implements IEnhancedManaged, IToolable, ITickSubscription, IAppearance, IToolGridHighlight, @@ -165,6 +167,7 @@ public void notifyBlockUpdate() { holder.notifyBlockUpdate(); } + @Override public void scheduleRenderUpdate() { holder.scheduleRenderUpdate(); } @@ -180,6 +183,12 @@ public void scheduleNeighborShapeUpdate() { } public void setPaintingColor(int color) { + if (color != this.paintingColor) { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IS_PAINTED_PROPERTY)) { + setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, color != -1)); + } + } this.paintingColor = color; this.onPaintingColorChanged(color); } @@ -375,12 +384,8 @@ protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, if (gridSide == getFrontFacing() || !isFacingValid(gridSide)) { return InteractionResult.FAIL; } - if (!isRemote()) { - setFrontFacing(gridSide); - } + setFrontFacing(gridSide); } else { - if (isRemote()) return InteractionResult.SUCCESS; - var itemStack = playerIn.getItemInHand(hand); var tagCompound = getBehaviorsTag(itemStack); ToolModeSwitchBehavior.WrenchModeType type = ToolModeSwitchBehavior.WrenchModeType.values()[tagCompound @@ -513,8 +518,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { var cover = coverContainer.getCoverAtSide(side); if (cover != null) { var tips = cover.sideTips(player, pos, state, toolTypes, side); @@ -543,6 +548,10 @@ public MachineDefinition getDefinition() { return holder.getDefinition(); } + public RotationState getRotationState() { + return getDefinition().getRotationState(); + } + /** * Called to obtain list of AxisAlignedBB used for collision testing, highlight rendering * and ray tracing this meta tile entity's block in world @@ -560,19 +569,12 @@ public boolean canSetIoOnSide(@Nullable Direction direction) { } public Direction getFrontFacing() { - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock machineBlock) { - return machineBlock.getFrontFacing(blockState); - } - return Direction.NORTH; + return getRotationState() == RotationState.NONE ? Direction.NORTH : + getBlockState().getValue(getRotationState().property); } public final boolean hasFrontFacing() { - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock machineBlock) { - return machineBlock.getRotationState() != RotationState.NONE; - } - return false; + return getRotationState() != RotationState.NONE; } public boolean isFacingValid(Direction facing) { @@ -586,11 +588,7 @@ public boolean isFacingValid(Direction facing) { return false; } } - var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock metaMachineBlock) { - return metaMachineBlock.rotationState.test(facing); - } - return false; + return getRotationState().test(facing); } public void setFrontFacing(Direction facing) { @@ -602,9 +600,8 @@ public void setFrontFacing(Direction facing) { } var blockState = getBlockState(); - if (blockState.getBlock() instanceof MetaMachineBlock metaMachineBlock && isFacingValid(facing)) { - getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(metaMachineBlock.rotationState.property, facing)); + if (isFacingValid(facing)) { + getLevel().setBlockAndUpdate(getPos(), blockState.setValue(getRotationState().property, facing)); } if (getLevel() != null && !getLevel().isClientSide) { @@ -615,11 +612,11 @@ public void setFrontFacing(Direction facing) { public static @NotNull Direction getUpwardFacing(@Nullable MetaMachine machine) { return machine == null || !machine.allowExtendedFacing() ? Direction.NORTH : - machine.getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY); + machine.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING); } public Direction getUpwardsFacing() { - return this.allowExtendedFacing() ? this.getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) : + return this.allowExtendedFacing() ? this.getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) : Direction.NORTH; } @@ -633,9 +630,9 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { } var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && - blockState.getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) != upwardsFacing) { + blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, upwardsFacing)); + blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); markDirty(); @@ -676,6 +673,21 @@ public BlockState getBlockAppearance(BlockState state, BlockAndTintGetter level, return getDefinition().getAppearance().get(); } + @MustBeInvokedByOverriders + public void updateModelData(ModelData.Builder builder) { + for (MachineTrait trait : this.getTraits()) { + trait.updateModelData(builder); + } + } + + public MachineRenderState getRenderState() { + return this.getHolder().getRenderState(); + } + + public void setRenderState(MachineRenderState state) { + this.getHolder().setRenderState(state); + } + @Override public int getOutputSignal(@Nullable Direction side) { if (side == null) return 0; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index 9178d718991..41d585e1881 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -57,14 +57,10 @@ public class MultiblockMachineDefinition extends MachineDefinition { @Setter private BiConsumer> additionalDisplay; - protected MultiblockMachineDefinition(ResourceLocation id) { + public MultiblockMachineDefinition(ResourceLocation id) { super(id); } - public static MultiblockMachineDefinition createDefinition(ResourceLocation id) { - return new MultiblockMachineDefinition(id); - } - public List getMatchingShapes() { var designs = shapes.get(); if (!designs.isEmpty()) return designs; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index c83db4b559f..26c75e08657 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -403,8 +403,8 @@ protected IGuiTexture getCircuitSlotOverlay() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java index 3724918d841..69d1b2287f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.feature; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTDamageTypes; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -14,6 +15,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.shapes.Shapes; @@ -26,6 +28,9 @@ */ public interface IExhaustVentMachine extends IMachineFeature { + EnumProperty VENT_DIRECTION_PROPERTY = EnumProperty.create("steam_vent", + RelativeDirection.class); + /** * @return the direction the vent faces */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java new file mode 100644 index 00000000000..3835d9b2b14 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java @@ -0,0 +1,24 @@ +package com.gregtechceu.gtceu.api.machine.feature.multiblock; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.core.BlockPos; + +import java.util.Set; + +public interface IFluidRenderMulti extends IWorkableMultiController, IMachineFeature { + + Set getFluidBlockOffsets(); + + @Override + default void onStructureFormed() { + saveOffsets(); + } + + @Override + default void onStructureInvalid() { + getFluidBlockOffsets().clear(); + } + + void saveOffsets(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java index 97182a18b13..bbe3c4fa829 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java @@ -10,11 +10,13 @@ import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import java.util.ArrayList; public interface IMaintenanceMachine extends IMultiPart { + BooleanProperty MAINTENANCE_TAPED_PROPERTY = BooleanProperty.create("maintenance_taped"); int MINIMUM_MAINTENANCE_TIME = 3456000; // 48 real-life hours = 3456000 ticks byte ALL_PROBLEMS = 0; byte NO_PROBLEMS = 0b111111; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index 6abfc678b02..ba15a6b29bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -16,6 +16,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; @@ -28,6 +29,8 @@ public interface IMultiController extends IMachineFeature, IInteractedMachine { + BooleanProperty IS_FORMED_PROPERTY = BooleanProperty.create("is_formed"); + @Override default MultiblockControllerMachine self() { return (MultiblockControllerMachine) this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java index 6de3eccfa3a..321f5622a7a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java @@ -13,6 +13,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import org.jetbrains.annotations.NotNull; @@ -23,6 +24,10 @@ public interface IRotorHolderMachine extends IMultiPart { int SPEED_INCREMENT = 1; int SPEED_DECREMENT = 3; + BooleanProperty HAS_ROTOR_PROPERTY = BooleanProperty.create("has_rotor"); + BooleanProperty ROTOR_SPINNING_PROPERTY = BooleanProperty.create("rotor_spinning"); + BooleanProperty EMISSIVE_ROTOR_PROPERTY = BooleanProperty.create("emissive_rotor"); + /** * @return the base efficiency of the rotor holder in % */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index 4fd1025a9b1..a2cb08c591f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.api.machine.multiblock; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -172,6 +173,11 @@ public void asyncCheckPattern(long periodID) { @Override public void onStructureFormed() { isFormed = true; + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { + setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, true)); + } + this.parts.clear(); Set set = getMultiblockState().getMatchContext().getOrCreate("parts", Collections::emptySet); for (IMultiPart part : set) { @@ -192,6 +198,11 @@ public void onStructureFormed() { @Override public void onStructureInvalid() { isFormed = false; + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { + setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, false)); + } + for (IMultiPart part : parts) { part.removedFromController(this); } @@ -242,9 +253,9 @@ public void setUpwardsFacing(@NotNull Direction upwardsFacing) { } var blockState = getBlockState(); if (blockState.getBlock() instanceof MetaMachineBlock && - blockState.getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) != upwardsFacing) { + blockState.getValue(GTBlockStateProperties.UPWARDS_FACING) != upwardsFacing) { getLevel().setBlockAndUpdate(getPos(), - blockState.setValue(IMachineBlock.UPWARDS_FACING_PROPERTY, upwardsFacing)); + blockState.setValue(GTBlockStateProperties.UPWARDS_FACING, upwardsFacing)); if (getLevel() != null && !getLevel().isClientSide) { notifyBlockUpdate(); markDirty(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index f16dcbaa8c8..0c6841879f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.machine.multiblock; -import com.gregtechceu.gtceu.api.block.ActiveBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeHandler; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; @@ -15,6 +15,7 @@ import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.ISubscription; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -211,8 +212,8 @@ public void updateActiveBlocks(boolean active) { for (long pos : activeBlocks) { var blockPos = BlockPos.of(pos); var blockState = getLevel().getBlockState(blockPos); - if (blockState.hasProperty(ActiveBlock.ACTIVE)) { - var newState = blockState.setValue(ActiveBlock.ACTIVE, active); + if (blockState.hasProperty(GTBlockStateProperties.ACTIVE)) { + var newState = blockState.setValue(GTBlockStateProperties.ACTIVE, active); if (newState != blockState) { getLevel().setBlock(blockPos, newState, Block.UPDATE_CLIENTS | Block.UPDATE_KNOWN_SHAPE); } @@ -232,6 +233,12 @@ public void notifyStatusChanged(RecipeLogic.Status oldStatus, RecipeLogic.Status if (newStatus == RecipeLogic.Status.WORKING || oldStatus == RecipeLogic.Status.WORKING) { updateActiveBlocks(newStatus == RecipeLogic.Status.WORKING); } + for (IMultiPart part : getParts()) { + MachineRenderState state = part.self().getRenderState(); + if (state.hasProperty(RecipeLogic.STATUS_PROPERTY)) { + part.self().setRenderState(state.setValue(RecipeLogic.STATUS_PROPERTY, newStatus)); + } + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index a5ae7508924..1f2f25df233 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -8,9 +8,9 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.annotation.UpdateListener; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -39,7 +39,6 @@ public class MultiblockPartMachine extends MetaMachine implements IMultiPart { MetaMachine.MANAGED_FIELD_HOLDER); @DescSynced - @RequireRerender @UpdateListener(methodName = "onControllersUpdated") protected final Set controllerPositions = new ObjectOpenHashSet<>(8); protected final SortedSet controllers = new ReferenceLinkedOpenHashSet<>(8); @@ -78,6 +77,12 @@ public void onControllersUpdated(Set newPositions, Set old) controllers.add(controller); } } + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { + setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, !controllers.isEmpty())); + } else { + scheduleRenderUpdate(); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index cf96d20898b..fd9b4cf11d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -14,10 +14,12 @@ import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.recipe.modifier.ModifierFunction; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.recipe.condition.VentCondition; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; @@ -33,6 +35,7 @@ import net.minecraftforge.fluids.FluidType; import com.google.common.collect.Tables; +import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; @@ -51,6 +54,7 @@ public class SimpleSteamMachine extends SteamWorkableMachine implements IExhaust public final NotifiableItemStackHandler importItems; @Persisted public final NotifiableItemStackHandler exportItems; + @Getter @Setter @Persisted private boolean needsVenting; @@ -59,6 +63,12 @@ public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Ob super(holder, isHighPressure, args); this.importItems = createImportItemHandler(args); this.exportItems = createExportItemHandler(args); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + // outputFacing will always be opposite the front facing on init + setRenderState(renderState.setValue(VENT_DIRECTION_PROPERTY, RelativeDirection.BACK)); + } } ////////////////////////////////////// @@ -105,14 +115,50 @@ public float getVentingDamage() { return isHighPressure() ? 12F : 6F; } + @SuppressWarnings("DataFlowIssue") @Override public @NotNull Direction getVentingDirection() { return getOutputFacing(); } + public void updateModelVentDirection() { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + Direction upwardsDir = getUpwardsFacing(); + // the up facing is already rotated if extended facing is enabled for the machine + if (getFrontFacing() == Direction.UP && !allowExtendedFacing()) { + upwardsDir = upwardsDir.getOpposite(); + } + var relative = RelativeDirection.findRelativeOf(getFrontFacing(), getVentingDirection(), upwardsDir); + setRenderState(renderState.setValue(VENT_DIRECTION_PROPERTY, relative)); + } + } + + @Override + public void setOutputFacing(@NotNull Direction outputFacing) { + var oldFacing = getOutputFacing(); + super.setOutputFacing(outputFacing); + if (getOutputFacing() != oldFacing) { + updateModelVentDirection(); + } + } + @Override - public boolean isNeedsVenting() { - return this.needsVenting; + public void setFrontFacing(Direction facing) { + var oldFacing = getFrontFacing(); + super.setFrontFacing(facing); + if (getFrontFacing() != oldFacing) { + updateModelVentDirection(); + } + } + + @Override + public void setUpwardsFacing(@NotNull Direction upwardsFacing) { + var oldFacing = getUpwardsFacing(); + super.setUpwardsFacing(upwardsFacing); + if (getUpwardsFacing() != oldFacing) { + updateModelVentDirection(); + } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 6a73cd0bf3a..00f5a32b0fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -127,8 +127,8 @@ public void onUnload() { } @Override - public void setOutputFacing(@NotNull Direction outputFacing) { - // no op - boilers do not have output facings + public boolean hasOutputFacing() { + return false; } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 9c89ba20eff..734b3ef2efb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -10,6 +10,7 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import lombok.Getter; @@ -22,6 +23,8 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(SteamMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty STEEL_PROPERTY = BooleanProperty.create("steel"); + @Getter public final boolean isHighPressure; @Persisted diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 773e911c718..5721c0a9435 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -64,7 +64,6 @@ public abstract class SteamWorkableMachine extends SteamMachine public int activeRecipeType; @Persisted @DescSynced - @Getter @RequireRerender protected Direction outputFacing; @Persisted @@ -131,22 +130,41 @@ public void onUnload() { recipeLogic.inValid(); } + public boolean hasOutputFacing() { + return true; + } + /** * @param outputFacing the facing to set */ public void setOutputFacing(@NotNull Direction outputFacing) { - if (!hasFrontFacing() || this.outputFacing != getFrontFacing()) { + if (hasOutputFacing() && (!hasFrontFacing() || this.outputFacing != getFrontFacing())) { this.outputFacing = outputFacing; } } + public @Nullable Direction getOutputFacing() { + if (hasOutputFacing()) { + return outputFacing; + } + return null; + } + + @Override + public boolean isFacingValid(Direction facing) { + if (facing == getOutputFacing()) { + return false; + } + return super.isFacingValid(facing); + } + @Override protected InteractionResult onWrenchClick(Player playerIn, InteractionHand hand, Direction gridSide, BlockHitResult hitResult) { - if (!playerIn.isShiftKeyDown() && !isRemote()) { + if (!playerIn.isShiftKeyDown()) { if (hasFrontFacing() && gridSide == getFrontFacing()) return InteractionResult.PASS; setOutputFacing(gridSide); - return InteractionResult.CONSUME; + return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } return super.onWrenchClick(playerIn, hand, gridSide, hitResult); } @@ -177,8 +195,8 @@ public void clientTick() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java index fb783e96adb..1b9faabef81 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/MachineTrait.java @@ -1,12 +1,14 @@ package com.gregtechceu.gtceu.api.machine.trait; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; import com.lowdragmc.lowdraglib.syncdata.field.FieldManagedStorage; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.client.model.data.ModelData; import lombok.Getter; import lombok.Setter; @@ -48,6 +50,16 @@ public void onMachineLoad() {} public void onMachineUnLoad() {} + public void updateModelData(ModelData.Builder builder) {} + + public MachineRenderState getRenderState() { + return getMachine().getRenderState(); + } + + public void setRenderState(MachineRenderState state) { + getMachine().setRenderState(state); + } + /** * Use for data not able to be saved with the SyncData system, like optional mod compatiblity in internal machines. * diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index b99ecba9243..66a4dbc2ab8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -27,7 +27,9 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -42,13 +44,21 @@ public class RecipeLogic extends MachineTrait implements IEnhancedManaged, IWorkable, IFancyTooltip { - public enum Status { + public enum Status implements StringRepresentable { + IDLE, WORKING, WAITING, - SUSPEND + SUSPEND; + + @Override + public @NotNull String getSerializedName() { + return name().toLowerCase(Locale.ROOT); + } } + public static final EnumProperty STATUS_PROPERTY = EnumProperty.create("recipe_logic_status", + RecipeLogic.Status.class); public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(RecipeLogic.class); public final IRecipeLogicMachine machine; @@ -115,21 +125,15 @@ public RecipeLogic(IRecipeLogicMachine machine) { this.machine = machine; } - @OnlyIn(Dist.CLIENT) @SuppressWarnings("unused") protected void onStatusSynced(Status newValue, Status oldValue) { - getMachine().scheduleRenderUpdate(); + scheduleRenderUpdate(); updateSound(); } - @OnlyIn(Dist.CLIENT) + @SuppressWarnings("unused") protected void onActiveSynced(boolean newActive, boolean oldActive) { - getMachine().scheduleRenderUpdate(); - } - - @Override - public void scheduleRenderUpdate() { - getMachine().scheduleRenderUpdate(); + scheduleRenderUpdate(); } /** @@ -355,6 +359,7 @@ public void setStatus(Status status) { } machine.notifyStatusChanged(this.status, status); this.status = status; + setRenderState(getRenderState().setValue(STATUS_PROPERTY, status)); updateTickSubscription(); if (this.status != Status.WAITING) { waitingReason = null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index 9d3c2b608c2..ff23ecc2fc4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.pattern; import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.ICoilType; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; @@ -37,6 +36,7 @@ import java.util.function.Predicate; import java.util.function.Supplier; +import static com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties.ACTIVE; import static com.gregtechceu.gtceu.common.machine.multiblock.electric.PowerSubstationMachine.PMC_BATTERY_HEADER; public class Predicates { @@ -49,8 +49,8 @@ public static TraceabilityPredicate states(BlockState... allowedStates) { var candidates = new ArrayList(); for (BlockState state : allowedStates) { candidates.add(state); - if (state.hasProperty(ActiveBlock.ACTIVE)) { - candidates.add(state.setValue(ActiveBlock.ACTIVE, !state.getValue(ActiveBlock.ACTIVE))); + if (state.hasProperty(ACTIVE)) { + candidates.add(state.setValue(ACTIVE, !state.getValue(ACTIVE))); } } return new TraceabilityPredicate(new PredicateStates(candidates.toArray(BlockState[]::new))); diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index 869432c3fc7..a050ef936ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -1,15 +1,20 @@ package com.gregtechceu.gtceu.api.pattern.util; +import com.gregtechceu.gtceu.utils.GTUtil; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; +import net.minecraft.util.StringRepresentable; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import java.util.Comparator; +import java.util.Locale; import java.util.function.UnaryOperator; -public enum RelativeDirection { +public enum RelativeDirection implements StringRepresentable { UP(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.NORTH : Direction.UP, Direction.UP), DOWN(dir -> dir.getAxis() == Direction.Axis.Y ? Direction.SOUTH : Direction.DOWN, Direction.DOWN), @@ -26,20 +31,33 @@ public enum RelativeDirection { FRONT(UnaryOperator.identity(), Direction.NORTH), BACK(Direction::getOpposite, Direction.SOUTH); + public static final StringRepresentable.EnumCodec CODEC = StringRepresentable + .fromEnum(RelativeDirection::values); + + public static final RelativeDirection[] VALUES = values(); + private static final RelativeDirection[] BY_GLOBAL_DIRECTION = new RelativeDirection[GTUtil.DIRECTIONS.length]; + + static { + for (var relative : VALUES) { + BY_GLOBAL_DIRECTION[relative.global.ordinal()] = relative; + } + } + private final UnaryOperator actualDirection; /** * Equivalent global direction to this relative direction * with {@link Direction#NORTH NORTH} as the "forward" direction. */ - public final Direction equivalentGlobal; + public final Direction global; - RelativeDirection(UnaryOperator actualDirection, Direction equivalentGlobal) { + RelativeDirection(UnaryOperator actualDirection, Direction global) { this.actualDirection = actualDirection; - this.equivalentGlobal = equivalentGlobal; + this.global = global; } - public Direction getActualDirection(Direction direction) { - return actualDirection.apply(direction); + @Override + public @NotNull String getSerializedName() { + return name().toLowerCase(Locale.ROOT); } public RelativeDirection getOpposite() { @@ -53,6 +71,18 @@ public RelativeDirection getOpposite() { }; } + public Direction getActualDirection(Direction direction) { + return actualDirection.apply(direction); + } + + /** + * @param other The other direction to check + * @return Whether both directions are on the same axis + */ + public boolean isSameAxis(RelativeDirection other) { + return this.global.getAxis() == other.global.getAxis(); + } + public Vec3i applyVec3i(Direction facing) { return getActualDirection(facing).getNormal(); } @@ -221,73 +251,65 @@ public static BlockPos offsetPos(BlockPos pos, Direction frontDir, Direction upw return pos.offset(oX, oY, oZ); } + public static RelativeDirection fromGlobalDirection(Direction direction) { + return BY_GLOBAL_DIRECTION[direction.ordinal()]; + } + public static Direction getActualDirection(Direction original, Direction current, Direction direction) { return findRelativeOf(original, current).getActualDirection(direction); } /** - * Finds the relative rotation between {@code base} and {@code relative}. + * Finds the difference of {@code baseDir} and {@code relativeDir} as a relative direction. *
- * If {@code base} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), - * the rotation is calculated with {@link Direction#NORTH NORTH} as the "forward" direction. - * - * @param base the direction to offset - * @param relative the direction to offset by - * @return The relative rotation between {@code base} and {@code relative} + * If {@code baseDir} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), + * the rotation is calculated with {@link Direction#NORTH NORTH} as the upwards direction. + * + * @param baseDir the direction to offset + * @param relativeDir the direction to offset by + * @return The difference of {@code baseDir} and {@code relativeDir} as a relative direction */ - public static RelativeDirection findRelativeOf(Direction base, Direction relative) { - return findRelativeOf(base, relative, Direction.NORTH); + public static RelativeDirection findRelativeOf(Direction baseDir, Direction relativeDir) { + return findRelativeOf(baseDir, relativeDir, Direction.NORTH); } /** - * Finds the relative rotation between {@code base} and {@code relative}. + * Finds the difference of {@code baseDir} and {@code relativeDir} as a relative direction. *
- * If {@code base} is vertical (e.g. {@link Direction#UP UP} or {@link Direction#DOWN DOWN}), - * the rotation is calculated with {@code forward} as the "forward" direction. - * - * @param base the direction to offset - * @param relative the direction to offset by - * @param forward the direction to use as "forward" - * @return The relative rotation between {@code base} and {@code relative} + * If {@code baseDir} is vertical, the rotation is calculated with {@code upwardsDir} as the "upwards" direction. + * + * @param baseDir the direction to offset + * @param relativeDir the direction to offset by + * @param upwardsDir the upwards direction + * @return The difference of {@code baseDir} and {@code relativeDir} as a relative direction */ - public static RelativeDirection findRelativeOf(Direction base, Direction relative, Direction forward) { + public static RelativeDirection findRelativeOf(Direction baseDir, Direction relativeDir, Direction upwardsDir) { // Check simple cases first - if (base == relative) return RelativeDirection.FRONT; - if (base.getOpposite() == relative) return RelativeDirection.BACK; + if (baseDir == relativeDir) return RelativeDirection.FRONT; + if (baseDir.getOpposite() == relativeDir) return RelativeDirection.BACK; - if (base.getAxis().isHorizontal()) { // base is one of N,S,W,E - if (relative == Direction.UP) return RelativeDirection.UP; - else if (relative == Direction.DOWN) return RelativeDirection.DOWN; - else if (relative == base.getCounterClockWise()) return RelativeDirection.LEFT; + if (baseDir.getAxis().isHorizontal()) { // baseDir is one of N,S,W,E + if (relativeDir == Direction.UP) return RelativeDirection.UP; + else if (relativeDir == Direction.DOWN) return RelativeDirection.DOWN; + else if (relativeDir == baseDir.getCounterClockWise()) return RelativeDirection.LEFT; else return RelativeDirection.RIGHT; // getClockWise - } else { // base is UP or DOWN - if (forward.getAxis() == Direction.Axis.Y) { - throw new IllegalStateException("forward must be a horizontal direction! is %s".formatted(forward)); + } else { // baseDir is UP or DOWN + if (upwardsDir.getAxis() == Direction.Axis.Y) { + throw new IllegalStateException("upwardsDir must be a horizontal direction! is " + upwardsDir); } - Direction globalLeft = forward.getCounterClockWise(); - Direction globalRight = forward.getClockWise(); - Direction globalBack = forward.getOpposite(); - if (relative == globalLeft) { + if (relativeDir == upwardsDir.getCounterClockWise()) { return RelativeDirection.LEFT; - } else if (relative == globalRight) { + } else if (relativeDir == upwardsDir.getClockWise()) { return RelativeDirection.RIGHT; - } else { // relative is NORTH or SOUTH (assuming forward is NORTH) + } else { // relativeDir is NORTH or SOUTH (assuming upwardsDir is NORTH) RelativeDirection dir; - if (relative == globalBack) dir = RelativeDirection.UP; - else dir = RelativeDirection.DOWN; // relative == NORTH + if (relativeDir == upwardsDir.getOpposite()) dir = RelativeDirection.UP; + else dir = RelativeDirection.DOWN; // relativeDir == NORTH - if (base == Direction.DOWN) dir = dir.getOpposite(); + if (baseDir == Direction.DOWN) dir = dir.getOpposite(); return dir; } } } - - /** - * @param other The other direction to check - * @return Whether both directions are on the same axis - */ - public boolean isSameAxis(RelativeDirection other) { - return this.equivalentGlobal.getAxis() == other.equivalentGlobal.getAxis(); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java index 7e8f7061435..8b41fb4569a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/FacadeCoverRecipe.java @@ -20,6 +20,7 @@ import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import com.google.gson.JsonObject; @@ -50,37 +51,47 @@ public void toNetwork(FriendlyByteBuf buffer, FacadeCoverRecipe recipe) {} @Override public boolean matches(CraftingContainer container, Level level) { - int plateSize = 0; + int platesCount = 0; boolean foundBlockItem = false; for (int i = 0; i < container.getContainerSize(); i++) { var item = container.getItem(i); if (item.isEmpty()) continue; if (FacadeItemBehaviour.isValidFacade(item)) { + if (foundBlockItem) { + return false; + } foundBlockItem = true; - continue; + } else if (item.is(ChemicalHelper.getTag(TagPrefix.plate, GTMaterials.Iron))) { + if (platesCount > 3) { + return false; + } + platesCount++; + } else { + return false; } - if (item.is(ChemicalHelper.getTag(TagPrefix.plate, GTMaterials.Iron))) { - plateSize++; - continue; - } - return false; } - return foundBlockItem && plateSize == 3; + return foundBlockItem && platesCount == 3; } @Override public ItemStack assemble(CraftingContainer container, RegistryAccess registryManager) { ItemStack itemStack = GTItems.COVER_FACADE.asStack(); + BlockState facadeState = null; + for (int i = 0; i < container.getContainerSize(); i++) { var item = container.getItem(i); if (item.isEmpty()) continue; if (FacadeItemBehaviour.isValidFacade(item)) { - FacadeItemBehaviour.setFacadeStack(itemStack, item); - itemStack.setCount(6); + facadeState = FacadeItemBehaviour.getFacadeState(item); break; } } - return itemStack; + if (facadeState != null) { + FacadeItemBehaviour.setFacadeState(itemStack, facadeState); + itemStack.setCount(6); + return itemStack; + } + return ItemStack.EMPTY; } @Override @@ -94,13 +105,13 @@ public NonNullList getIngredients() { @Override public boolean canCraftInDimensions(int width, int height) { - return false; + return width * height >= 4; } @Override public ItemStack getResultItem(RegistryAccess registryManager) { var result = GTItems.COVER_FACADE.asStack(); - FacadeItemBehaviour.setFacadeStack(GTItems.COVER_FACADE.asStack(), new ItemStack(Blocks.STONE)); + FacadeItemBehaviour.setFacadeState(result, Blocks.STONE.defaultBlockState()); return result; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java new file mode 100644 index 00000000000..c1ba8744fb0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java @@ -0,0 +1,127 @@ +package com.gregtechceu.gtceu.api.registry.registrate; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; + +import net.minecraft.client.color.block.BlockColor; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.BlockBuilder; +import com.tterrag.registrate.builders.BlockEntityBuilder; +import com.tterrag.registrate.builders.BuilderCallback; +import com.tterrag.registrate.providers.*; +import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables; +import com.tterrag.registrate.util.nullness.*; + +import java.util.function.Supplier; + +public class GTBlockBuilder extends BlockBuilder { + + // spotless:off + public static GTBlockBuilder create(AbstractRegistrate owner, P parent, String name, + BuilderCallback callback, + NonNullFunction factory) { + return new GTBlockBuilder<>(owner, parent, name, callback, factory, BlockBehaviour.Properties::of) + .defaultBlockstate().defaultLoot().defaultLang(); + } + + protected GTBlockBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, + NonNullFunction factory, + NonNullSupplier initialProperties) { + super(owner, parent, name, callback, factory, initialProperties); + } + + public GTBlockBuilder exBlockstate(NonNullBiConsumer, GTBlockstateProvider> cons) { + return setDataGeneric(ProviderType.BLOCKSTATE, (ctx, prov) -> cons.accept(ctx, (GTBlockstateProvider) prov)); + } + + // region default overrides + + @Override + public GTBlockBuilder properties(NonNullUnaryOperator func) { + return (GTBlockBuilder) super.properties(func); + } + + @Override + public GTBlockBuilder initialProperties(NonNullSupplier block) { + return (GTBlockBuilder) super.initialProperties(block); + } + + @SuppressWarnings("removal") + @Override + public GTBlockBuilder addLayer(Supplier> layer) { + return (GTBlockBuilder) super.addLayer(layer); + } + + @Override + public GTBlockBuilder simpleItem() { + return (GTBlockBuilder) super.simpleItem(); + } + + @Override + public GTBlockBuilder simpleBlockEntity(BlockEntityBuilder.BlockEntityFactory factory) { + return (GTBlockBuilder) super.simpleBlockEntity(factory); + } + + @Override + public BlockEntityBuilder> blockEntity(BlockEntityBuilder.BlockEntityFactory factory) { + return super.blockEntity(factory); + } + + @Override + public GTBlockBuilder color(NonNullSupplier> colorHandler) { + return (GTBlockBuilder) super.color(colorHandler); + } + + @Override + public GTBlockBuilder defaultBlockstate() { + return (GTBlockBuilder) super.defaultBlockstate(); + } + + @Override + public GTBlockBuilder blockstate(NonNullBiConsumer, RegistrateBlockstateProvider> cons) { + return (GTBlockBuilder) setData(ProviderType.BLOCKSTATE, cons); + } + + @Override + public GTBlockBuilder defaultLang() { + return (GTBlockBuilder) super.defaultLang(); + } + + @Override + public GTBlockBuilder lang(String name) { + return (GTBlockBuilder) super.lang(name); + } + + @Override + public GTBlockBuilder defaultLoot() { + return (GTBlockBuilder) super.defaultLoot(); + } + + @Override + public GTBlockBuilder loot(NonNullBiConsumer cons) { + return (GTBlockBuilder) super.loot(cons); + } + + @Override + public GTBlockBuilder recipe(NonNullBiConsumer, RegistrateRecipeProvider> cons) { + return (GTBlockBuilder) super.recipe(cons); + } + + // why is it final >:( + // @SafeVarargs + // public final BlockBuilder tag(TagKey... tags) { + // return tag(ProviderType.BLOCK_TAGS, tags); + // } + + public GTBlockBuilder setDataGeneric(ProviderType type, NonNullBiConsumer, D> cons) { + getOwner().setDataGenerator(this, type, prov -> cons.accept(DataGenContext.from(this), prov)); + return this; + } + + // spotless:on + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 6a63a23c11f..f637c6d48f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.registry.registrate; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; @@ -14,7 +13,6 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; import com.gregtechceu.gtceu.core.mixins.AbstractRegistrateAccessor; -import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -26,6 +24,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; @@ -37,9 +36,8 @@ import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegistryObject; -import com.tterrag.registrate.Registrate; +import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.Builder; -import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.builders.NoConfigBuilder; import com.tterrag.registrate.providers.ProviderType; import com.tterrag.registrate.util.OneTimeEventReceiver; @@ -52,22 +50,19 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; import java.util.IdentityHashMap; -import java.util.Locale; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; -import java.util.stream.Stream; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class GTRegistrate extends Registrate { +public class GTRegistrate extends AbstractRegistrate { private final AtomicBoolean registered = new AtomicBoolean(false); @@ -93,7 +88,7 @@ public void registerRegistrate() { } @Override - public Registrate registerEventListeners(IEventBus bus) { + public GTRegistrate registerEventListeners(IEventBus bus) { if (!registered.getAndSet(true)) { // recreate the super method so we can register the event listener with LOW priority. Consumer onRegister = this::onRegister; @@ -115,9 +110,8 @@ public Registrate registerEventListeners(IEventBus bus) { return this; } - protected < - P> NoConfigBuilder createCreativeModeTab(P parent, String name, - Consumer config) { + protected

NoConfigBuilder createCreativeModeTab(P parent, String name, + Consumer config) { return this.generic(parent, name, Registries.CREATIVE_MODE_TAB, () -> { var builder = CreativeModeTab.builder() .icon(() -> getAll(Registries.ITEM).stream().findFirst().map(ItemEntry::cast) @@ -138,23 +132,14 @@ public MachineBuilder machine BiFunction blockFactory, BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return MachineBuilder.create(this, name, definitionFactory, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + return new MachineBuilder<>(this, name, definitionFactory, metaMachine, + blockFactory, itemFactory, blockEntityFactory); } public MachineBuilder machine(String name, Function metaMachine) { - return MachineBuilder.create(this, name, MachineDefinition::createDefinition, metaMachine, - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity); - } - - public Stream> machine(String name, - BiFunction metaMachine, - int... tiers) { - return Arrays.stream(tiers) - .mapToObj(tier -> MachineBuilder.create(this, name + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT), - MachineDefinition::createDefinition, holder -> metaMachine.apply(holder, tier), - MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity)); + return new MachineBuilder<>(this, name, MachineDefinition::new, metaMachine, + MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); } public MultiblockMachineBuilder multiblock(String name, @@ -162,14 +147,14 @@ public MultiblockMachineBuilder multiblock(String name, BiFunction blockFactory, BiFunction itemFactory, TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return MultiblockMachineBuilder.createMulti(this, name, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + return new MultiblockMachineBuilder(this, name, metaMachine, + blockFactory, itemFactory, blockEntityFactory); } public MultiblockMachineBuilder multiblock(String name, Function metaMachine) { - return MultiblockMachineBuilder.createMulti(this, name, metaMachine, MetaMachineBlock::new, - MetaMachineItem::new, MetaMachineBlockEntity::createBlockEntity); + return new MultiblockMachineBuilder(this, name, metaMachine, + MetaMachineBlock::new, MetaMachineItem::new, MetaMachineBlockEntity::new); } public SoundEntryBuilder sound(String name) { @@ -180,10 +165,29 @@ public SoundEntryBuilder sound(ResourceLocation name) { return new SoundEntryBuilder(name); } + // Blocks + @Override + public GTBlockBuilder block(NonNullFunction factory) { + return block(this, factory); + } + + @Override + public GTBlockBuilder block(String name, + NonNullFunction factory) { + return block(this, name, factory); + } + + @Override + public GTBlockBuilder block(P parent, + NonNullFunction factory) { + return block(parent, currentName(), factory); + } + @Override - public @NotNull ItemBuilder item(String name, - NonNullFunction factory) { - return super.item(name, factory).lang(FormattingUtil.toEnglishName(name.replaceAll("\\.", "_"))); + public GTBlockBuilder block(P parent, String name, + NonNullFunction factory) { + return (GTBlockBuilder) entry(name, + callback -> GTBlockBuilder.create(this, parent, name, callback, factory)); } private RegistryEntry currentTab; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index a15b9334a93..168e51fb302 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -13,17 +13,21 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.client.renderer.GTRendererProvider; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.BlockEntityWithBERModelRenderer; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; +import com.gregtechceu.gtceu.common.data.GTRecipeTypes; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.renderer.RenderType; @@ -38,18 +42,23 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.client.model.generators.BlockModelBuilder; -import com.tterrag.registrate.Registrate; +import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.ProviderType; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; @@ -62,31 +71,37 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.function.*; import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; +import static com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin.RUNTIME_BLOCKSTATE_PROVIDER; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault @Accessors(chain = true, fluent = true) public class MachineBuilder extends BuilderBase { - protected final Registrate registrate; + protected final GTRegistrate registrate; protected final String name; protected final BiFunction blockFactory; protected final BiFunction itemFactory; protected final TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory; - @Setter // non-final for KJS - protected Function definition; - @Setter // non-final for KJS - protected Function machine; + + protected final Function definition; + protected final Function machine; @Nullable + @Getter @Setter - private Supplier renderer; + private MachineBuilder.ModelInitializer model = null; + @Nullable + @Getter + @Setter + private NonNullBiConsumer, GTBlockstateProvider> blockModel = null; + @Getter + protected final Map, @Nullable Comparable> modelProperties = new IdentityHashMap<>(); @Setter private VoxelShape shape = Shapes.block(); @Setter @@ -97,7 +112,7 @@ public class MachineBuilder extends Builde @Setter private boolean allowExtendedFacing = false; @Setter - private boolean hasTESR; + private boolean hasBER; @Setter private boolean renderMultiblockWorldPreview = true; @Setter @@ -106,14 +121,16 @@ public class MachineBuilder extends Builde private NonNullUnaryOperator blockProp = p -> p; @Setter private NonNullUnaryOperator itemProp = p -> p; + @Nullable @Setter private Consumer> blockBuilder; + @Nullable @Setter private Consumer> itemBuilder; @Setter - private NonNullConsumer> onBlockEntityRegister = MetaMachineBlockEntity::onBlockEntityRegister; + private NonNullConsumer> onBlockEntityRegister = NonNullConsumer.noop(); @Getter // getter for KJS - private GTRecipeType[] recipeTypes; + private @Nullable GTRecipeType @Nullable [] recipeTypes = null; @Getter @Setter // getter for KJS private int tier; @@ -126,6 +143,7 @@ public class MachineBuilder extends Builde GTValues.VC[tier] : tintIndex == 1 ? paintingColor : -1); private PartAbility[] abilities = new PartAbility[0]; private final List tooltips = new ArrayList<>(); + @Nullable @Setter private BiConsumer> tooltipBuilder; private RecipeModifier recipeModifier = new RecipeModifierList(GTRecipeModifiers.OC_NON_PERFECT); @@ -164,12 +182,12 @@ public class MachineBuilder extends Builde @Nullable private String langValue = null; - protected MachineBuilder(Registrate registrate, String name, - Function definition, - Function machine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { + public MachineBuilder(GTRegistrate registrate, String name, + Function definition, + Function machine, + BiFunction blockFactory, + BiFunction itemFactory, + TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { super(new ResourceLocation(registrate.getModid(), name)); this.registrate = registrate; this.name = name; @@ -182,6 +200,7 @@ protected MachineBuilder(Registrate registrate, String name, public MachineBuilder recipeType(GTRecipeType type) { this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + initRecipeMachineModelProperties(type); return this; } @@ -190,73 +209,119 @@ public MachineBuilder recipeTypes(GTRecipeType... types) { for (GTRecipeType type : types) { this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); } + initRecipeMachineModelProperties(types); return this; } - public static < - DEFINITION extends MachineDefinition> MachineBuilder create(Registrate registrate, String name, - Function definitionFactory, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MachineBuilder<>(registrate, name, definitionFactory, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + protected void initRecipeMachineModelProperties(GTRecipeType... types) { + if (types.length > 0 && + Arrays.stream(types).noneMatch(type -> type == GTRecipeTypes.DUMMY_RECIPES)) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + } } - public MachineBuilder modelRenderer(Supplier model) { - this.renderer = () -> new MachineRenderer(model.get()); - return this; + public MachineBuilder simpleModel(ResourceLocation modelName) { + return model(createBasicMachineModel(modelName)); + } + + public MachineBuilder defaultModel() { + return simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); + } + + public MachineBuilder tieredHullModel(ResourceLocation model) { + return model(createTieredHullMachineModel(model)); + } + + public MachineBuilder overlayTieredHullModel(String name) { + return overlayTieredHullModel(new ResourceLocation(registrate.getModid(), "block/machine/part/" + name)); + } + + public MachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + return model(createOverlayTieredHullMachineModel(overlayModel)); + } + + public MachineBuilder colorOverlayTieredHullModel(String overlay) { + return colorOverlayTieredHullModel(overlay, null); + } + + public MachineBuilder colorOverlayTieredHullModel(String overlay, + @Nullable String emissiveOverlay) { + ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); + return colorOverlayTieredHullModel(overlayTex, emissiveOverlayTex); } - public MachineBuilder defaultModelRenderer() { - return modelRenderer(() -> new ResourceLocation(registrate.getModid(), "block/" + name)); + public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + return colorOverlayTieredHullModel(overlay, null); } - public MachineBuilder tieredHullRenderer(ResourceLocation model) { - return renderer(() -> new TieredHullMachineRenderer(tier, model)); + public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); + return model(createColorOverlayTieredHullMachineModel(overlay, emissiveOverlay)); } - public MachineBuilder overlayTieredHullRenderer(String name) { - return renderer(() -> new OverlayTieredMachineRenderer(tier, - new ResourceLocation(registrate.getModid(), "block/machine/part/" + name))); + public MachineBuilder overlaySteamHullModel(String name) { + return overlaySteamHullModel(new ResourceLocation(registrate.getModid(), "block/machine/part/" + name)); } - public MachineBuilder overlaySteamHullRenderer(String name) { - return renderer(() -> new OverlaySteamMachineRenderer( - new ResourceLocation(registrate.getModid(), "block/machine/part/" + name))); + public MachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + modelProperty(SteamMachine.STEEL_PROPERTY, ConfigHolder.INSTANCE.machines.steelSteamMultiblocks); + return model(createOverlaySteamHullMachineModel(overlayModel)); } - public MachineBuilder workableTieredHullRenderer(ResourceLocation workableModel) { - return renderer(() -> new WorkableTieredHullMachineRenderer(tier, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(String overlay) { + return colorOverlaySteamHullModel(overlay, null); } - public MachineBuilder simpleGeneratorMachineRenderer(ResourceLocation workableModel) { - return renderer(() -> new SimpleGeneratorMachineRenderer(tier, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(String overlay, + @Nullable String emissiveOverlay) { + ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); + return colorOverlaySteamHullModel(overlayTex, emissiveOverlayTex); } - public MachineBuilder workableSteamHullRenderer(boolean isHighPressure, - ResourceLocation workableModel) { - return renderer(() -> new WorkableSteamMachineRenderer(isHighPressure, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + return colorOverlaySteamHullModel(overlay, null); } - public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, - ResourceLocation workableModel) { - return renderer(() -> new WorkableCasingMachineRenderer(baseCasing, workableModel)); + public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); + return model(createColorOverlaySteamHullMachineModel(overlay, emissiveOverlay)); } - public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, - ResourceLocation workableModel, boolean tint) { - return renderer(() -> new WorkableCasingMachineRenderer(baseCasing, workableModel, tint)); + public MachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + return model(createWorkableTieredHullMachineModel(workableModel)); } - public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, - boolean tint) { - return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel, tint)); + public MachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + return model(createSimpleGeneratorModel(workableModel)); } - public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { - return renderer(() -> new WorkableSidedCasingMachineRenderer(basePath, overlayModel)); + public MachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + return model(createWorkableSteamHullMachineModel(isHighPressure, workableModel)); + } + + public MachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + return model(createWorkableCasingMachineModel(baseCasing, workableModel)); + } + + public MachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return model(createSidedOverlayCasingMachineModel(baseCasing, workableModel)); + } + + public MachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + return model(createSidedWorkableCasingMachineModel(baseCasing, workableModel)); } public MachineBuilder appearanceBlock(Supplier block) { @@ -264,8 +329,12 @@ public MachineBuilder appearanceBlock(Supplier bloc return this; } - public MachineBuilder tooltips(Component... components) { - tooltips.addAll(Arrays.stream(components).filter(Objects::nonNull).toList()); + public MachineBuilder tooltips(@Nullable Component... components) { + return tooltips(Arrays.asList(components)); + } + + public MachineBuilder tooltips(List components) { + tooltips.addAll(components.stream().filter(Objects::nonNull).toList()); return this; } @@ -284,6 +353,45 @@ public MachineBuilder abilities(PartAbility... abilities) { return this; } + public MachineBuilder modelProperty(Property property) { + return modelProperty(property, null); + } + + public > MachineBuilder modelProperty(Property property, + @Nullable T defaultValue) { + this.modelProperties.put(property, defaultValue); + return this; + } + + @Tolerate + public MachineBuilder modelProperties(Property... properties) { + return this.modelProperties(List.of(properties)); + } + + @Tolerate + public MachineBuilder modelProperties(Collection> properties) { + for (Property prop : properties) { + this.modelProperties.put(prop, null); + } + return this; + } + + @Tolerate + public MachineBuilder modelProperties(Map, ? extends Comparable> properties) { + this.modelProperties.putAll(properties); + return this; + } + + public MachineBuilder removeModelProperty(Property property) { + this.modelProperties.remove(property); + return this; + } + + public MachineBuilder clearModelProperties() { + this.modelProperties.clear(); + return this; + } + public MachineBuilder recipeModifier(RecipeModifier recipeModifier) { this.recipeModifier = recipeModifier instanceof RecipeModifierList list ? list : new RecipeModifierList(recipeModifier); @@ -327,6 +435,12 @@ protected DEFINITION createDefinition() { return definition.apply(new ResourceLocation(registrate.getModid(), name)); } + @Override + public void generateAssetJsons(AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + KJSCallWrapper.generateAssetJsons(generator, this, this.value); + } + @Override public void generateLang(LangEventJS lang) { super.generateLang(lang); @@ -335,10 +449,32 @@ public void generateLang(LangEventJS lang) { } } + @SuppressWarnings({ "unchecked", "rawtypes" }) + protected void setupStateDefinition(MachineDefinition definition) { + StateDefinition.Builder builder = new StateDefinition.Builder<>( + definition); + this.modelProperties.keySet().forEach(builder::add); + definition.setStateDefinition(builder.create(MachineDefinition::defaultRenderState, MachineRenderState::new)); + + MachineRenderState defaultState = definition.getStateDefinition().any(); + for (var entry : this.modelProperties.entrySet()) { + if (entry.getValue() == null) continue; + defaultState = defaultState.setValue((Property) entry.getKey(), (Comparable) entry.getValue()); + } + + definition.registerDefaultState(defaultState); + } + @HideFromJS public DEFINITION register() { + this.registrate.object(name); var definition = createDefinition(); + definition.setRotationState(rotationState); + setupStateDefinition(definition); + if (model == null && blockModel == null) { + simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); + } var blockBuilder = BlockBuilderWrapper.makeBlockBuilder(this, definition); if (this.langValue != null) { blockBuilder.lang(langValue); @@ -356,11 +492,11 @@ public DEFINITION register() { var item = itemBuilder.register(); var blockEntityBuilder = registrate - .blockEntity(name, (type, pos, state) -> blockEntityFactory.apply(type, pos, state).self()) + .blockEntity((type, pos, state) -> blockEntityFactory.apply(type, pos, state).self()) .onRegister(onBlockEntityRegister) .validBlock(block); - if (hasTESR) { - blockEntityBuilder = blockEntityBuilder.renderer(() -> GTRendererProvider::getOrCreate); + if (hasBER) { + blockEntityBuilder = blockEntityBuilder.renderer(() -> BlockEntityWithBERModelRenderer::new); } var blockEntity = blockEntityBuilder.register(); definition.setRecipeTypes(recipeTypes); @@ -383,9 +519,6 @@ public DEFINITION register() { definition.setRegressWhenWaiting(this.regressWhenWaiting); definition.setAllowCoverOnFront(this.allowCoverOnFront); - if (renderer == null) { - renderer = () -> new MachineRenderer(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); - } if (recipeTypes != null) { for (GTRecipeType type : recipeTypes) { if (type != null && type.getIconSupplier() == null) { @@ -401,7 +534,6 @@ public DEFINITION register() { } definition.setAppearance(appearance); definition.setAllowExtendedFacing(allowExtendedFacing); - definition.setRenderer(GTCEu.isClientSide() ? renderer.get() : IRenderer.EMPTY); definition.setShape(shape); definition.setDefaultPaintingColor(paintingColor); definition.setRenderXEIPreview(renderMultiblockXEIPreview); @@ -410,43 +542,103 @@ public DEFINITION register() { return definition; } - static class BlockBuilderWrapper { - - @SuppressWarnings("removal") - public static < - DEFINITION extends MachineDefinition> BlockBuilder makeBlockBuilder(MachineBuilder builder, - DEFINITION definition) { - return builder.registrate.block(builder.name, properties -> { - RotationState.set(builder.rotationState); - MachineDefinition.setBuilt(definition); - var b = builder.blockFactory.apply(properties, definition); - RotationState.clear(); - MachineDefinition.clearBuilt(); - return b.self(); - }) + @FunctionalInterface + public interface ModelInitializer { + + void configureModel(@NotNull DataGenContext context, + @NotNull GTBlockstateProvider provider, + @NotNull MachineModelBuilder builder); + + default ModelInitializer andThen(ModelInitializer after) { + Objects.requireNonNull(after); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, builder); + after.configureModel(ctx, prov, builder); + }; + } + + default ModelInitializer andThen(Consumer> after) { + Objects.requireNonNull(after); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, builder); + after.accept(builder); + }; + } + + default ModelInitializer compose(ModelInitializer before) { + Objects.requireNonNull(before); + return (ctx, prov, builder) -> { + before.configureModel(ctx, prov, builder); + this.configureModel(ctx, prov, builder); + }; + } + + default ModelInitializer compose(UnaryOperator> before) { + Objects.requireNonNull(before); + return (ctx, prov, builder) -> { + this.configureModel(ctx, prov, before.apply(builder)); + }; + } + } + + // spotless:off + protected static class BlockBuilderWrapper { + + public static BlockBuilder> makeBlockBuilder(MachineBuilder builder, + DEFINITION definition) { + return builder.registrate.block(properties -> makeBlock(builder, definition, properties)) .color(() -> () -> IMachineBlock::colorTinted) .initialProperties(() -> Blocks.DISPENSER) .properties(BlockBehaviour.Properties::noLootTable) .addLayer(() -> RenderType::cutoutMipped) - // .tag(GTToolType.WRENCH.harvestTag) - .blockstate(NonNullBiConsumer.noop()) + .exBlockstate(builder.blockModel != null ? builder.blockModel : createMachineModel(builder.model)) .properties(builder.blockProp) .onRegister(b -> Arrays.stream(builder.abilities).forEach(a -> a.register(builder.tier, b))); } + + private static Block makeBlock(MachineBuilder builder, DEFINITION definition, + BlockBehaviour.Properties properties) { + MachineDefinition.setBuilt(definition); + var b = builder.blockFactory.apply(properties, definition); + MachineDefinition.clearBuilt(); + return b.self(); + } } - static class ItemBuilderWrapper { + protected static class ItemBuilderWrapper { - public static < - DEFINITION extends MachineDefinition> ItemBuilder makeItemBuilder(MachineBuilder builder, - BlockEntry block) { + public static ItemBuilder> makeItemBuilder(MachineBuilder builder, + BlockEntry block) { return builder.registrate - .item(builder.name, - properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties)) + .item(properties -> builder.itemFactory.apply((IMachineBlock) block.get(), properties)) .setData(ProviderType.LANG, NonNullBiConsumer.noop()) // do not gen any lang keys - .model(NonNullBiConsumer.noop()) + // copied from BlockBuilder#item + .model((ctx, prov) -> { + prov.withExistingParent(ctx.getName(), new ResourceLocation(builder.registrate.getModid(), + "block/machine/" + ctx.getName())); + }) .color(() -> () -> builder.itemColor::apply) .properties(builder.itemProp); } } + // spotless:on + + protected static final class KJSCallWrapper { + + public static void generateAssetJsons(AssetJsonGenerator generator, + MachineBuilder builder, D definition) { + if (builder.model() == null && builder.blockModel() == null) return; + + final ResourceLocation id = definition.getId(); + // Fake a data provider for the GT model builders + var context = new DataGenContext<>(definition::getBlock, definition.getName(), id); + if (builder.blockModel() != null) { + builder.blockModel().accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } else { + GTMachineModels.createMachineModel(builder.model()).accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } + + generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/").toString())); + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index f5ccba661d2..222545a41f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; @@ -18,10 +17,9 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -35,11 +33,13 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.shapes.VoxelShape; -import com.tterrag.registrate.Registrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; import dev.latvian.mods.rhino.util.HideFromJS; @@ -80,24 +80,17 @@ public class MultiblockMachineBuilder extends MachineBuilder> additionalDisplay = (m, l) -> {}; - protected MultiblockMachineBuilder(Registrate registrate, String name, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - super(registrate, name, MultiblockMachineDefinition::createDefinition, metaMachine::apply, blockFactory, + public MultiblockMachineBuilder(GTRegistrate registrate, String name, + Function metaMachine, + BiFunction blockFactory, + BiFunction itemFactory, + TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { + super(registrate, name, MultiblockMachineDefinition::new, metaMachine::apply, blockFactory, itemFactory, blockEntityFactory); allowExtendedFacing(true); allowCoverOnFront(true); - } - - public static MultiblockMachineBuilder createMulti(Registrate registrate, String name, - Function metaMachine, - BiFunction blockFactory, - BiFunction itemFactory, - TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory) { - return new MultiblockMachineBuilder(registrate, name, metaMachine, blockFactory, itemFactory, - blockEntityFactory); + // always add the formed property to multi controllers + modelProperty(IMultiController.IS_FORMED_PROPERTY, false); } public MultiblockMachineBuilder shapeInfo(Function shape) { @@ -122,18 +115,13 @@ public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { } @Override - public MultiblockMachineBuilder definition(Function definition) { - return (MultiblockMachineBuilder) super.definition(definition); - } - - @Override - public MultiblockMachineBuilder machine(Function machine) { - return (MultiblockMachineBuilder) super.machine(machine); + public MultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { + return (MultiblockMachineBuilder) super.model(model); } @Override - public MultiblockMachineBuilder renderer(@Nullable Supplier renderer) { - return (MultiblockMachineBuilder) super.renderer(renderer); + public MultiblockMachineBuilder blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { + return (MultiblockMachineBuilder) super.blockModel(blockModel); } @Override @@ -153,8 +141,8 @@ public MultiblockMachineBuilder rotationState(RotationState rotationState) { } @Override - public MultiblockMachineBuilder hasTESR(boolean hasTESR) { - return (MultiblockMachineBuilder) super.hasTESR(hasTESR); + public MultiblockMachineBuilder hasBER(boolean hasBER) { + return (MultiblockMachineBuilder) super.hasBER(hasBER); } @Override @@ -207,54 +195,80 @@ public MultiblockMachineBuilder itemColor(BiFunction model) { - return (MultiblockMachineBuilder) super.modelRenderer(model); + public MultiblockMachineBuilder simpleModel(ResourceLocation model) { + return (MultiblockMachineBuilder) super.simpleModel(model); + } + + @Override + public MultiblockMachineBuilder defaultModel() { + return (MultiblockMachineBuilder) super.defaultModel(); + } + + @Override + public MultiblockMachineBuilder tieredHullModel(ResourceLocation model) { + return (MultiblockMachineBuilder) super.tieredHullModel(model); } @Override - public MultiblockMachineBuilder defaultModelRenderer() { - return (MultiblockMachineBuilder) super.defaultModelRenderer(); + public MultiblockMachineBuilder overlayTieredHullModel(String name) { + return (MultiblockMachineBuilder) super.overlayTieredHullModel(name); } @Override - public MultiblockMachineBuilder tieredHullRenderer(ResourceLocation model) { - return (MultiblockMachineBuilder) super.tieredHullRenderer(model); + public MultiblockMachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.overlayTieredHullModel(overlayModel); } @Override - public MultiblockMachineBuilder overlayTieredHullRenderer(String name) { - return (MultiblockMachineBuilder) super.overlayTieredHullRenderer(name); + public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay); } @Override - public MultiblockMachineBuilder workableTieredHullRenderer(ResourceLocation workableModel) { - return (MultiblockMachineBuilder) super.workableTieredHullRenderer(workableModel); + public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay, @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, emissiveOverlay); } @Override - public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation overlayModel) { - return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel); + public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay); } @Override - public MultiblockMachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation overlayModel, - boolean tint) { - return (MultiblockMachineBuilder) super.workableCasingRenderer(baseCasing, overlayModel, tint); + public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, emissiveOverlay); } @Override - public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, - boolean tint) { - return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel, tint); + public MultiblockMachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.workableTieredHullModel(workableModel); } @Override - public MultiblockMachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel) { - return (MultiblockMachineBuilder) super.sidedWorkableCasingRenderer(basePath, overlayModel); + public MultiblockMachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.simpleGeneratorModel(workableModel); } @Override - public MultiblockMachineBuilder tooltipBuilder(BiConsumer> tooltipBuilder) { + public MultiblockMachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.workableCasingModel(baseCasing, overlayModel); + } + + @Override + public MultiblockMachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.sidedOverlayCasingModel(baseCasing, workableModel); + } + + @Override + public MultiblockMachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.sidedWorkableCasingModel(baseCasing, workableModel); + } + + @Override + public MultiblockMachineBuilder tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { return (MultiblockMachineBuilder) super.tooltipBuilder(tooltipBuilder); } @@ -274,17 +288,48 @@ public MultiblockMachineBuilder langValue(@Nullable String langValue) { } @Override - public MultiblockMachineBuilder overlaySteamHullRenderer(String name) { - return (MultiblockMachineBuilder) super.overlaySteamHullRenderer(name); + public MultiblockMachineBuilder overlaySteamHullModel(String name) { + return (MultiblockMachineBuilder) super.overlaySteamHullModel(name); + } + + @Override + public MultiblockMachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + return (MultiblockMachineBuilder) super.overlaySteamHullModel(overlayModel); } @Override - public MultiblockMachineBuilder workableSteamHullRenderer(boolean isHighPressure, ResourceLocation workableModel) { - return (MultiblockMachineBuilder) super.workableSteamHullRenderer(isHighPressure, workableModel); + public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay); } @Override - public MultiblockMachineBuilder tooltips(Component... components) { + public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay, @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, emissiveOverlay); + } + + @Override + public MultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, emissiveOverlay); + } + + @Override + public MultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay); + } + + @Override + public MultiblockMachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { + return (MultiblockMachineBuilder) super.workableSteamHullModel(isHighPressure, workableModel); + } + + @Override + public MultiblockMachineBuilder tooltips(@Nullable Component... components) { + return (MultiblockMachineBuilder) super.tooltips(components); + } + + @Override + public MultiblockMachineBuilder tooltips(List components) { return (MultiblockMachineBuilder) super.tooltips(components); } @@ -309,6 +354,42 @@ public MultiblockMachineBuilder abilities(PartAbility... abilities) { return (MultiblockMachineBuilder) super.abilities(abilities); } + @Override + public MultiblockMachineBuilder modelProperty(Property property) { + return (MultiblockMachineBuilder) super.modelProperty(property); + } + + @Override + public > MultiblockMachineBuilder modelProperty(Property property, + @Nullable T defaultValue) { + return (MultiblockMachineBuilder) super.modelProperty(property, defaultValue); + } + + @Override + public MultiblockMachineBuilder modelProperties(Property... properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder modelProperties(Collection> properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder modelProperties(Map, ? extends Comparable> properties) { + return (MultiblockMachineBuilder) super.modelProperties(properties); + } + + @Override + public MultiblockMachineBuilder removeModelProperty(Property property) { + return (MultiblockMachineBuilder) super.removeModelProperty(property); + } + + @Override + public MultiblockMachineBuilder clearModelProperties() { + return (MultiblockMachineBuilder) super.clearModelProperties(); + } + @Override public MultiblockMachineBuilder paintingColor(int paintingColor) { return (MultiblockMachineBuilder) super.paintingColor(paintingColor); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java new file mode 100644 index 00000000000..fc849e250f0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.api.registry.registrate; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java new file mode 100644 index 00000000000..40bf8542286 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/provider/GTBlockstateProvider.java @@ -0,0 +1,173 @@ +package com.gregtechceu.gtceu.api.registry.registrate.provider; + +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.data.RotationState; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.util.ExtendedBlockModelRotation; + +import net.minecraft.core.Direction; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.PackOutput; +import net.minecraft.data.models.blockstates.*; +import net.minecraft.server.packs.PackType; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.IGeneratedBlockState; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.ExistingFileHelper.ResourceType; +import net.minecraftforge.data.event.GatherDataEvent; + +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.RegistrateProvider; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; + +public class GTBlockstateProvider extends RegistrateBlockstateProvider { + + public static final String Z_ROT_PROPERTY_NAME = "gtceu:z"; + private static final VariantProperty X_ROT = VariantProperties.X_ROT; + private static final VariantProperty Y_ROT = VariantProperties.Y_ROT; + private static final VariantProperty Z_ROT = new VariantProperty<>(Z_ROT_PROPERTY_NAME, + r -> new JsonPrimitive(r.ordinal() * 90)); + + public static final ResourceType TEXTURE = new ResourceType(PackType.CLIENT_RESOURCES, ".png", "textures"); + public static final ResourceType MODEL = new ResourceType(PackType.CLIENT_RESOURCES, ".json", "models"); + + public GTBlockstateProvider(AbstractRegistrate parent, GatherDataEvent event, + Map, RegistrateProvider> existing) { + this(parent, event.getGenerator().getPackOutput(), event.getExistingFileHelper()); + // replace the default blockstate provider with this one + existing.put(ProviderType.BLOCKSTATE, this); + } + + public GTBlockstateProvider(AbstractRegistrate parent, PackOutput packOutput, ExistingFileHelper exFileHelper) { + super(parent, packOutput, exFileHelper); + } + + private static GTBlockstateProvider CURRENT_PROVIDER = null; + + public static GTBlockstateProvider getCurrentProvider() { + return CURRENT_PROVIDER; + } + + @Override + public @NotNull CompletableFuture run(CachedOutput cache) { + CURRENT_PROVIDER = this; + var value = super.run(cache); + + CURRENT_PROVIDER = null; + return value; + } + + public ExistingFileHelper getExistingFileHelper() { + return this.models().existingFileHelper; + } + + public MultiVariantGenerator multiVariantGenerator(Block block) { + var multiVariant = MultiVariantGenerator.multiVariant(block); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiVariant)); + return multiVariant; + } + + public MultiVariantGenerator multiVariantGenerator(Block block, Variant baseVariant) { + var multiVariant = MultiVariantGenerator.multiVariant(block, baseVariant); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiVariant)); + return multiVariant; + } + + public MultiPartGenerator multiPartGenerator(Block block) { + var multiPart = MultiPartGenerator.multiPart(block); + registeredBlocks.put(block, new BlockStateGeneratorWrapper(multiPart)); + return multiPart; + } + + public static @Nullable PropertyDispatch createFacingDispatch(MachineDefinition definition) { + return createFacingDispatch(definition.getRotationState(), definition.isAllowExtendedFacing()); + } + + public static @Nullable PropertyDispatch createFacingDispatch(RotationState rotationState, + boolean allowExtendedFacing) { + // doesn't have a rotation property. + if (rotationState == RotationState.NONE) return null; + + PropertyDispatch dispatch; + if (!allowExtendedFacing) { + var disp = PropertyDispatch.property(rotationState.property); + + dispatch = disp.generate((front) -> { + var orientation = ExtendedBlockModelRotation.get(front, Direction.NORTH); + return applyOrientation(Variant.variant(), orientation); + }); + } else { + var disp = PropertyDispatch.properties(rotationState.property, GTBlockStateProperties.UPWARDS_FACING); + + dispatch = disp.generate((front, up) -> { + var orientation = ExtendedBlockModelRotation.get(front, up); + return applyOrientation(Variant.variant(), orientation); + }); + } + return dispatch; + } + + public static Variant applyOrientation(Variant variant, ExtendedBlockModelRotation orientation) { + return applyRotation(variant, orientation.getAngleX(), orientation.getAngleY(), orientation.getAngleZ()); + } + + public static Variant applyRotation(Variant variant, int angleX, int angleY, int angleZ) { + angleX = normalizeAngle(angleX); + angleY = normalizeAngle(angleY); + angleZ = normalizeAngle(angleZ); + + if (angleX != 0) variant = variant.with(X_ROT, rotationByAngle(angleX)); + if (angleY != 0) variant = variant.with(Y_ROT, rotationByAngle(angleY)); + if (angleZ != 0) variant = variant.with(Z_ROT, rotationByAngle(angleZ)); + return variant; + } + + private static int normalizeAngle(int angle) { + return angle - (angle / 360) * 360; + } + + private static VariantProperties.Rotation rotationByAngle(int angle) { + return switch (angle) { + case 0 -> VariantProperties.Rotation.R0; + case 90 -> VariantProperties.Rotation.R90; + case 180 -> VariantProperties.Rotation.R180; + case 270 -> VariantProperties.Rotation.R270; + default -> throw new IllegalArgumentException("Invalid angle: " + angle); + }; + } + + protected Optional getExistingBlockStateGenerator(Block block) { + return Optional.ofNullable(registeredBlocks.get(block)) + .filter(g -> g instanceof BlockStateGeneratorWrapper) + .map(g -> (BlockStateGeneratorWrapper) g); + } + + public Optional getExistingMultiVariantGenerator(Block block) { + return getExistingBlockStateGenerator(block) + .filter(g -> g.generator() instanceof MultiVariantGenerator) + .map(g -> (MultiVariantGenerator) g.generator()); + } + + public Optional getExistingMultipartGenerator(Block block) { + return getExistingBlockStateGenerator(block) + .filter(g -> g.generator() instanceof MultiPartGenerator) + .map(g -> (MultiPartGenerator) g.generator()); + } + + public record BlockStateGeneratorWrapper(BlockStateGenerator generator) implements IGeneratedBlockState { + + @Override + public JsonObject toJson() { + return generator.get().getAsJsonObject(); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index 7ad00828d4d..9e04ad30ded 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -8,6 +8,8 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.LampBlockItem; +import com.gregtechceu.gtceu.client.model.item.FacadeUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; import com.gregtechceu.gtceu.client.particle.HazardParticle; import com.gregtechceu.gtceu.client.particle.MufflerParticle; import com.gregtechceu.gtceu.client.renderer.entity.GTBoatRenderer; @@ -15,6 +17,9 @@ import com.gregtechceu.gtceu.client.renderer.item.decorator.GTComponentItemDecorator; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTLampItemOverlayRenderer; import com.gregtechceu.gtceu.client.renderer.item.decorator.GTToolBarRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderManager; +import com.gregtechceu.gtceu.client.renderer.machine.impl.*; +import com.gregtechceu.gtceu.client.renderer.machine.impl.BoilerMultiPartRender; import com.gregtechceu.gtceu.common.CommonProxy; import com.gregtechceu.gtceu.common.data.GTBlockEntities; import com.gregtechceu.gtceu.common.data.GTEntityTypes; @@ -63,6 +68,7 @@ public static void init() { Layers.registerLayer(OreRenderLayer::new, "ore_veins"); Layers.registerLayer(FluidRenderLayer::new, "bedrock_fluids"); } + initializeDynamicRenders(); } @SubscribeEvent @@ -123,4 +129,20 @@ public void onClientSetup(FMLClientSetupEvent event) { FTBChunksPlugin.addEventListeners(); } } + + public static void initializeDynamicRenders() { + DynamicRenderManager.register(GTCEu.id("quantum_tank_fluid"), QuantumTankFluidRender.TYPE); + DynamicRenderManager.register(GTCEu.id("quantum_chest_item"), QuantumChestItemRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("fusion_ring"), FusionRingRender.TYPE); + DynamicRenderManager.register(GTCEu.id("boiler_multi_parts"), BoilerMultiPartRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("fluid_area"), FluidAreaRender.TYPE); + } + + @SubscribeEvent + public void onRegisterModelLoaders(ModelEvent.RegisterGeometryLoaders event) { + event.register(MachineModelLoader.ID.getPath(), MachineModelLoader.INSTANCE); + event.register("facade", FacadeUnbakedModel.Loader.INSTANCE); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java new file mode 100644 index 00000000000..f91a52c0b2a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/BaseBakedModel.java @@ -0,0 +1,50 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.IDynamicBakedModel; + +import org.jetbrains.annotations.NotNull; + +public abstract class BaseBakedModel implements IDynamicBakedModel { + + public BaseBakedModel() {} + + @Override + public boolean useAmbientOcclusion() { + return true; + } + + @Override + public boolean isGui3d() { + return true; + } + + @Override + public boolean usesBlockLight() { + return true; + } + + @Override + public boolean isCustomRenderer() { + return false; + } + + @Override + @OnlyIn(Dist.CLIENT) + public @NotNull ItemOverrides getOverrides() { + return ItemOverrides.EMPTY; + } + + @Override + @OnlyIn(Dist.CLIENT) + public @NotNull TextureAtlasSprite getParticleIcon() { + return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) + .apply(MissingTextureAtlasSprite.getLocation()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java new file mode 100644 index 00000000000..af22e210a5d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/BasicUnbakedModel.java @@ -0,0 +1,34 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.Collections; +import java.util.function.Function; + +public class BasicUnbakedModel implements UnbakedModel { + + @Override + public @NotNull Collection getDependencies() { + return Collections.emptyList(); + } + + @Override + public void resolveParents(@NotNull Function function) { + for (ResourceLocation dependency : getDependencies()) { + function.apply(dependency).resolveParents(function); + } + } + + @Override + public @Nullable BakedModel bake(@NotNull ModelBaker baker, + @NotNull Function spriteGetter, + @NotNull ModelState state, @NotNull ResourceLocation location) { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java new file mode 100644 index 00000000000..70aadb40de9 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.jetbrains.annotations.NotNull; + +public interface IBlockEntityRendererBakedModel extends BakedModel, BlockEntityRenderer { + + BlockEntityType getBlockEntityType(); + + void render(@NotNull T blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay); + + default void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {} + + default boolean shouldRender(T blockEntity, @NotNull Vec3 cameraPos) { + return Vec3.atCenterOf(blockEntity.getBlockPos()).closerThan(cameraPos, this.getViewDistance()); + } + + default AABB getRenderBoundingBox(T blockEntity) { + BlockPos pos = blockEntity.getBlockPos(); + return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); + } + + @Override + default boolean isCustomRenderer() { + return true; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java b/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java deleted file mode 100644 index 7669fafb22d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/ModelUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.data.ModelData; - -import java.util.List; - -@OnlyIn(Dist.CLIENT) -public class ModelUtil { - - public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, - BlockState state, Direction side, RandomSource rand) { - return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java index 0ccc902d6d3..b47102e9c3e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java @@ -2,21 +2,25 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.utils.GTUtil; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import com.gregtechceu.gtceu.utils.memoization.MemoizedSupplier; import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; @@ -55,12 +59,10 @@ public class PipeModel { public static final ResourceLocation PIPE_BLOCKED_OVERLAY_DL = GTCEu.id("block/pipe/blocked/pipe_blocked_dl"); public static final ResourceLocation PIPE_BLOCKED_OVERLAY_DR = GTCEu.id("block/pipe/blocked/pipe_blocked_dr"); public static final ResourceLocation PIPE_BLOCKED_OVERLAY_LR = GTCEu.id("block/pipe/blocked/pipe_blocked_lr"); - private static final EnumMap> FACE_BORDER_MAP = new EnumMap<>( - Direction.class); private static final Int2ObjectMap RESTRICTOR_MAP = new Int2ObjectOpenHashMap<>(); private static boolean isRestrictorInitialized; - public static void initializeRestrictor(Function atlas) { + protected static void initializeRestrictor(Function atlas) { addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_UP), Border.TOP); addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_DOWN), Border.BOTTOM); addRestrictor(atlas.apply(PIPE_BLOCKED_OVERLAY_UD), Border.TOP, Border.BOTTOM); @@ -78,20 +80,18 @@ public static void initializeRestrictor(Function> FACE_BORDER_MAP = Util.make(() -> { + EnumMap> map = new EnumMap<>(Direction.class); + + map.put(Direction.DOWN, borderMap(Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)); + map.put(Direction.UP, borderMap(Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)); + map.put(Direction.NORTH, borderMap(Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST)); + map.put(Direction.SOUTH, borderMap(Direction.DOWN, Direction.UP, Direction.WEST, Direction.EAST)); + map.put(Direction.WEST, borderMap(Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH)); + map.put(Direction.EAST, borderMap(Direction.DOWN, Direction.UP, Direction.NORTH, Direction.SOUTH)); + + return map; + }); public final static int ITEM_CONNECTIONS = 0b001100; public final float thickness; @@ -100,17 +100,20 @@ public static void initializeRestrictor(Function sideTexture, endTexture; @Nullable - public MemoizedSupplier<@Nullable ResourceLocation> secondarySideTexture, secondaryEndTexture; + public MemoizedSupplier secondarySideTexture, secondaryEndTexture; @Setter - public ResourceLocation sideOverlayTexture, endOverlayTexture; + public @Nullable ResourceLocation sideOverlayTexture, endOverlayTexture; @OnlyIn(Dist.CLIENT) - TextureAtlasSprite sideSprite, endSprite, secondarySideSprite, secondaryEndSprite, sideOverlaySprite, - endOverlaySprite; + private @Nullable TextureAtlasSprite sideSprite, endSprite; + @OnlyIn(Dist.CLIENT) + private @Nullable TextureAtlasSprite secondarySideSprite, secondaryEndSprite; + @OnlyIn(Dist.CLIENT) + private @Nullable TextureAtlasSprite sideOverlaySprite, endOverlaySprite; public PipeModel(float thickness, Supplier sideTexture, Supplier endTexture, - @Nullable Supplier<@Nullable ResourceLocation> secondarySideTexture, - @Nullable Supplier<@Nullable ResourceLocation> secondaryEndTexture) { + @Nullable Supplier secondarySideTexture, + @Nullable Supplier secondaryEndTexture) { this.sideTexture = GTMemoizer.memoize(sideTexture); this.endTexture = GTMemoizer.memoize(endTexture); this.secondarySideTexture = secondarySideTexture != null ? GTMemoizer.memoize(secondarySideTexture) : @@ -131,6 +134,32 @@ public PipeModel(float thickness, Supplier sideTexture, Suppli normal.getY() == 0 ? max : normal.getY() > 0 ? 1 : min, normal.getZ() == 0 ? max : normal.getZ() > 0 ? 1 : min)); } + + if (!isRestrictorInitialized) { + ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + initializeRestrictor(event.getAtlas()::getSprite); + }); + + isRestrictorInitialized = true; + } + ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + TextureAtlas atlas = event.getAtlas(); + + sideSprite = atlas.getSprite(sideTexture.get()); + endSprite = atlas.getSprite(endTexture.get()); + if (secondarySideTexture != null) { + secondarySideSprite = atlas.getSprite(secondarySideTexture.get()); + } + if (secondaryEndTexture != null) { + secondaryEndSprite = atlas.getSprite(secondaryEndTexture.get()); + } + if (sideOverlayTexture != null) { + sideOverlaySprite = atlas.getSprite(sideOverlayTexture); + } + if (endOverlayTexture != null) { + endOverlaySprite = atlas.getSprite(endOverlayTexture); + } + }); } public VoxelShape getShapes(int connections) { @@ -146,29 +175,6 @@ public VoxelShape getShapes(int connections) { @OnlyIn(Dist.CLIENT) public List bakeQuads(@Nullable Direction side, int connections, int blockedConnections) { - if (!isRestrictorInitialized) { - initializeRestrictor(ModelFactory::getBlockSprite); - isRestrictorInitialized = true; - } - if (sideSprite == null) { - sideSprite = ModelFactory.getBlockSprite(sideTexture.get()); - } - if (endSprite == null) { - endSprite = ModelFactory.getBlockSprite(endTexture.get()); - } - if (secondarySideTexture != null && secondarySideTexture.get() != null && secondarySideSprite == null) { - secondarySideSprite = ModelFactory.getBlockSprite(secondarySideTexture.get()); - } - if (secondaryEndTexture != null && secondaryEndTexture.get() != null && secondaryEndSprite == null) { - secondaryEndSprite = ModelFactory.getBlockSprite(secondaryEndTexture.get()); - } - if (sideOverlayTexture != null && sideOverlaySprite == null) { - sideOverlaySprite = ModelFactory.getBlockSprite(sideOverlayTexture); - } - if (endOverlayTexture != null && endOverlaySprite == null) { - endOverlaySprite = ModelFactory.getBlockSprite(endOverlayTexture); - } - if (side != null) { if (thickness == 1) { // full block List quads = new ArrayList<>(); @@ -250,12 +256,9 @@ public List bakeQuads(@Nullable Direction side, int connections, int return quads; } - @NotNull + @SuppressWarnings("DataFlowIssue") @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - if (sideSprite == null) { - sideSprite = ModelFactory.getBlockSprite(sideTexture.get()); - } + public @NotNull TextureAtlasSprite getParticleTexture() { return sideSprite; } @@ -282,13 +285,13 @@ public void registerTextureAtlas(Consumer register) { register.accept(endTexture.get()); if (secondarySideTexture != null) { secondarySideTexture.invalidate(); - if (secondarySideTexture.get() != null) { + if (secondarySideTexture.get() != GTModels.BLANK_TEXTURE) { register.accept(secondarySideTexture.get()); } } if (secondaryEndTexture != null) { secondaryEndTexture.invalidate(); - if (secondaryEndTexture.get() != null) { + if (secondaryEndTexture.get() != GTModels.BLANK_TEXTURE) { register.accept(secondaryEndTexture.get()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java new file mode 100644 index 00000000000..ad344efc5c1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java @@ -0,0 +1,38 @@ +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; + +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +public class SpriteCapturer implements Function { + + private final Function original; + @Getter + private final Map capturedMaterials = new HashMap<>(); + private final Map capturedNames = new HashMap<>(); + + public SpriteCapturer(Function original) { + this.original = original; + } + + public void captureMaterialName(Material material, String name) { + this.capturedNames.putIfAbsent(material, name); + } + + @Override + public TextureAtlasSprite apply(Material material) { + var sprite = original.apply(material); + + String materialName = capturedNames.get(material); + if (materialName != null) { + capturedMaterials.put(materialName, sprite); + capturedNames.remove(material); + } + return sprite; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java deleted file mode 100644 index b31fed17bff..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteOverrider.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.Map; -import java.util.function.Function; - -@OnlyIn(Dist.CLIENT) -public record SpriteOverrider(Map override) - implements Function { - - @Override - public TextureAtlasSprite apply(Material material) { - return material.sprite(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java new file mode 100644 index 00000000000..91df9100092 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java @@ -0,0 +1,66 @@ +package com.gregtechceu.gtceu.client.model; + +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.data.ModelData; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class TextureOverrideModel extends BakedModelWrapper { + + @NotNull + @Getter + protected final Map textureOverrides; + + public TextureOverrideModel(T child, Map textureOverrides) { + super(child); + this.textureOverrides = textureOverrides; + } + + public BakedModel getChild() { + return this.originalModel; + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + return retextureQuads(super.getQuads(state, side, rand, extraData, renderType), textureOverrides); + } + + public static Map resolveOverrides(Map overrides, + Map toOverride) { + Map textures = new HashMap<>(); + for (var entry : overrides.entrySet()) { + textures.put(toOverride.get(entry.getKey()), entry.getValue()); + } + return textures; + } + + public static List retextureQuads(List quads, + Map overrides) { + List newQuads = new LinkedList<>(); + for (BakedQuad quad : quads) { + TextureAtlasSprite original = quad.getSprite(); + TextureAtlasSprite replacement = overrides.get(original); + if (replacement != null) { + newQuads.add(GTQuadTransformers.setSprite(quad, replacement)); + } else { + newQuads.add(quad); + } + } + return newQuads; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java deleted file mode 100644 index b55177244f9..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/WorkableOverlayModel.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.utils.GTUtil; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.*; -import java.util.function.Consumer; - -import javax.annotation.ParametersAreNonnullByDefault; - -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class WorkableOverlayModel { - - public enum OverlayFace { - - FRONT, - BACK, - TOP, - BOTTOM, - SIDE; - - public static final OverlayFace[] VALUES = values(); - - public static OverlayFace bySide(Direction side) { - return switch (side) { - case DOWN -> BOTTOM; - case UP -> TOP; - case NORTH -> FRONT; - case SOUTH -> BACK; - case WEST, EAST -> SIDE; - }; - } - } - - protected final ResourceLocation location; - - @OnlyIn(Dist.CLIENT) - public Map sprites; - - @OnlyIn(Dist.CLIENT) - public static class ActivePredicate { - - private final ResourceLocation normalSprite; - private final ResourceLocation activeSprite; - private final ResourceLocation pausedSprite; - - private final ResourceLocation normalSpriteEmissive; - private final ResourceLocation activeSpriteEmissive; - private final ResourceLocation pausedSpriteEmissive; - - public ActivePredicate(@Nullable ResourceLocation normalSprite, - @Nullable ResourceLocation activeSprite, - @Nullable ResourceLocation pausedSprite, - @Nullable ResourceLocation normalSpriteEmissive, - @Nullable ResourceLocation activeSpriteEmissive, - @Nullable ResourceLocation pausedSpriteEmissive) { - this.normalSprite = normalSprite; - this.activeSprite = activeSprite; - this.pausedSprite = pausedSprite; - this.normalSpriteEmissive = normalSpriteEmissive; - this.activeSpriteEmissive = activeSpriteEmissive; - this.pausedSpriteEmissive = pausedSpriteEmissive; - } - - @Nullable - public TextureAtlasSprite getSprite(boolean active, boolean workingEnabled) { - return getTextureAtlasSprite(active, workingEnabled, activeSprite, pausedSprite, normalSprite); - } - - @Nullable - public TextureAtlasSprite getEmissiveSprite(boolean active, boolean workingEnabled) { - return getTextureAtlasSprite(active, workingEnabled, activeSpriteEmissive, pausedSpriteEmissive, - normalSpriteEmissive); - } - - @Nullable - private TextureAtlasSprite getTextureAtlasSprite(boolean active, boolean workingEnabled, - @Nullable ResourceLocation activeSprite, - @Nullable ResourceLocation pausedSprite, - @Nullable ResourceLocation normalSprite) { - if (active) { - if (workingEnabled) { - return activeSprite == null ? null : ModelFactory.getBlockSprite(activeSprite); - } else { - return pausedSprite == null ? null : ModelFactory.getBlockSprite(pausedSprite); - } - } - return normalSprite == null ? null : ModelFactory.getBlockSprite(normalSprite); - } - } - - public WorkableOverlayModel(ResourceLocation location) { - this.location = location; - if (GTCEu.isClientSide()) { - this.sprites = new EnumMap<>(OverlayFace.class); - } - } - - @OnlyIn(Dist.CLIENT) - public List bakeQuads(@Nullable Direction side, ModelState modelState, - boolean isActive, boolean isWorkingEnabled) { - var quads = new ArrayList(); - - for (var renderSide : GTUtil.DIRECTIONS) { - ActivePredicate predicate = sprites.get(OverlayFace.bySide(renderSide)); - if (predicate != null) { - var texture = predicate.getSprite(isActive, isWorkingEnabled); - if (texture != null) { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -1, 0, true, true); - if (quad.getDirection() == side) { - quads.add(quad); - } - } - - texture = predicate.getEmissiveSprite(isActive, isWorkingEnabled); - if (texture != null) { - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -101, 15, true, false); - if (quad.getDirection() == side) { - quads.add(quad); - } - } else { - var quad = StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, renderSide, texture, - modelState, -1, 0, true, true); - if (quad.getDirection() == side) { - quads.add(quad); - } - } - } - } - } - return quads; - } - - @NotNull - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - for (ActivePredicate predicate : sprites.values()) { - TextureAtlasSprite sprite = predicate.getSprite(false, false); - if (sprite != null) return sprite; - } - return ModelFactory.getBlockSprite(MissingTextureAtlasSprite.getLocation()); - } - - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - IItemRendererProvider.disabled.set(true); - Minecraft.getInstance().getItemRenderer().render(stack, transformType, leftHand, matrixStack, buffer, - combinedLight, combinedOverlay, - (ItemBakedModel) (state, direction, random) -> bakeQuads(direction, BlockModelRotation.X0_Y0, - false, false)); - IItemRendererProvider.disabled.set(false); - } - - @OnlyIn(Dist.CLIENT) - public void registerTextureAtlas(Consumer register) { - ResourceManager resManager = Minecraft.getInstance().getResourceManager(); - - sprites.clear(); - for (OverlayFace overlayFace : OverlayFace.VALUES) { - final String overlayPath = "/overlay_" + overlayFace.name().toLowerCase(Locale.ROOT); - - var normalSprite = new ResourceLocation(location.getNamespace(), location.getPath() + overlayPath); - var normalSprite1 = getTextureLocation(normalSprite); - if (resManager.getResource(normalSprite1).isEmpty()) continue; - register.accept(normalSprite); - - // normal - final String active = String.format("%s_active", overlayPath); - ResourceLocation activeSprite = new ResourceLocation(location.getNamespace(), location.getPath() + active); - var activeSprite1 = getTextureLocation(activeSprite); - if (resManager.getResource(activeSprite1).isPresent()) register.accept(activeSprite); - else activeSprite = normalSprite; - - final String paused = String.format("%s_paused", overlayPath); - ResourceLocation pausedSprite = new ResourceLocation(location.getNamespace(), location.getPath() + paused); - var pausedSprite1 = getTextureLocation(pausedSprite); - if (resManager.getResource(pausedSprite1).isPresent()) register.accept(pausedSprite); - else pausedSprite = normalSprite; - - // emissive - ResourceLocation normalSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + overlayPath + "_emissive"); - var normalSpriteEmissive1 = getTextureLocation(normalSpriteEmissive); - if (resManager.getResource(normalSpriteEmissive1).isPresent()) register.accept(normalSpriteEmissive); - else normalSpriteEmissive = null; - - ResourceLocation activeSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + active + "_emissive"); - var activeSpriteEmissive1 = getTextureLocation(activeSpriteEmissive); - if (resManager.getResource(activeSpriteEmissive1).isPresent()) register.accept(activeSpriteEmissive); - else activeSpriteEmissive = null; - - ResourceLocation pausedSpriteEmissive = new ResourceLocation(location.getNamespace(), - location.getPath() + paused + "_emissive"); - var pausedSpriteEmissive1 = getTextureLocation(pausedSpriteEmissive); - if (resManager.getResource(pausedSpriteEmissive1).isPresent()) register.accept(pausedSpriteEmissive); - else pausedSpriteEmissive = null; - - sprites.put(overlayFace, new ActivePredicate(normalSprite, activeSprite, pausedSprite, - normalSpriteEmissive, activeSpriteEmissive, pausedSpriteEmissive)); - } - } - - private ResourceLocation getTextureLocation(ResourceLocation location) { - return new ResourceLocation(location.getNamespace(), "textures/%s.png".formatted(location.getPath())); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java new file mode 100644 index 00000000000..c6e6480c272 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/item/FacadeUnbakedModel.java @@ -0,0 +1,54 @@ +package com.gregtechceu.gtceu.client.model.item; + +import com.gregtechceu.gtceu.client.renderer.cover.FacadeCoverRenderer; + +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Function; + +public class FacadeUnbakedModel implements IUnbakedGeometry { + + private final @NotNull BlockModel defaultModel; + + private FacadeUnbakedModel(@NotNull BlockModel defaultModel) { + this.defaultModel = defaultModel; + } + + @Override + public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, + Function spriteGetter, ModelState modelState, + ItemOverrides overrides, ResourceLocation modelLocation) { + BakedModel bakedParent = defaultModel.bake(baker, defaultModel, spriteGetter, modelState, modelLocation, true); + return new FacadeCoverRenderer(bakedParent); + } + + @Override + public void resolveParents(Function modelGetter, + IGeometryBakingContext context) { + defaultModel.resolveParents(modelGetter); + } + + public static class Loader implements IGeometryLoader { + + public static final Loader INSTANCE = new Loader(); + + protected Loader() {} + + @Override + public FacadeUnbakedModel read(JsonObject json, JsonDeserializationContext context) throws JsonParseException { + return new FacadeUnbakedModel(context.deserialize(json.get("default_model"), BlockModel.class)); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java similarity index 57% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java index d33e0e27c59..df1275c8983 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IControllerRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IControllerModelRenderer.java @@ -1,25 +1,28 @@ -package com.gregtechceu.gtceu.client.renderer.machine; +package com.gregtechceu.gtceu.client.model.machine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -public interface IControllerRenderer { +public interface IControllerModelRenderer { /** * Render a specific model for given part. */ @OnlyIn(Dist.CLIENT) - void renderPartModel(List quads, IMultiController machine, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, ModelState modelState); + void renderPartModel(List quads, IMultiController machine, IMultiPart part, + Direction frontFacing, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java new file mode 100644 index 00000000000..b04d6f8e13d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -0,0 +1,101 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +public interface IMachineRendererModel extends IBlockEntityRendererBakedModel { + + MachineDefinition getDefinition(); + + void render(T machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay); + + default void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {} + + default boolean shouldRenderOffScreen(T machine) { + return false; + } + + default boolean shouldRender(T machine, Vec3 cameraPos) { + return Vec3.atCenterOf(machine.self().getPos()).closerThan(cameraPos, this.getViewDistance()); + } + + default AABB getRenderBoundingBox(T machine) { + BlockPos pos = machine.self().getPos(); + return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); + } + + // region default impls + + @Override + default BlockEntityType getBlockEntityType() { + return getDefinition().getBlockEntityType(); + } + + @ApiStatus.NonExtendable + @SuppressWarnings("unchecked") + @Override + default void render(@NotNull BlockEntity blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + if (machineBE.getDefinition() != getDefinition()) return; + + this.render((T) machineBE.getMetaMachine(), partialTick, + poseStack, buffer, packedLight, packedOverlay); + } + + @ApiStatus.NonExtendable + @SuppressWarnings("unchecked") + @Override + default boolean shouldRenderOffScreen(@NotNull BlockEntity blockEntity) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) + return IBlockEntityRendererBakedModel.super.shouldRenderOffScreen(blockEntity); + if (machineBE.getDefinition() != getDefinition()) + return IBlockEntityRendererBakedModel.super.shouldRenderOffScreen(blockEntity); + + return this.shouldRenderOffScreen((T) machineBE.getMetaMachine()); + } + + @ApiStatus.NonExtendable + @SuppressWarnings("unchecked") + @Override + default boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) + return IBlockEntityRendererBakedModel.super.shouldRender(blockEntity, cameraPos); + if (machineBE.getDefinition() != getDefinition()) + return IBlockEntityRendererBakedModel.super.shouldRender(blockEntity, cameraPos); + + return this.shouldRender((T) machineBE.getMetaMachine(), cameraPos); + } + + @ApiStatus.NonExtendable + @SuppressWarnings("unchecked") + @Override + default AABB getRenderBoundingBox(BlockEntity blockEntity) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) + return IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); + if (machineBE.getDefinition() != getDefinition()) + return IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); + + return this.getRenderBoundingBox((T) machineBE.getMetaMachine()); + } + + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java new file mode 100644 index 00000000000..a5321f1f134 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -0,0 +1,449 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; +import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.SpriteCapturer; +import com.gregtechceu.gtceu.client.model.TextureOverrideModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; +import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; +import com.gregtechceu.gtceu.common.data.models.GTModels; +import com.gregtechceu.gtceu.core.mixins.ldlib.CustomBakedModelAccessor; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.QuadTransformers; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.geometry.UnbakedGeometryHelper; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Transformation; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; + +public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, + IMachineRendererModel { + + public static final float COVER_OVERLAY_OFFSET = 0.008f; + + public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); + public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); + public static final ResourceLocation ITEM_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_item_output"); + + private static @Nullable TextureAtlasSprite pipeOverlaySprite; + private static @Nullable TextureAtlasSprite fluidOutputOverlaySprite; + private static @Nullable TextureAtlasSprite itemOutputOverlaySprite; + private static @Nullable TextureAtlasSprite blankSprite; + private static boolean overlaysInitialized = false; + + public static final Map> TEXTURE_REMAPS = Util.make(new HashMap<>(), map -> { + var all = List.of("all"); + + map.put("side", all); + map.put("top", all); + map.put("bottom", all); + map.put("all", List.of("side", "top", "bottom")); + }); + + @Getter + private final MachineDefinition definition; + private final Map modelsByState; + private final @Nullable MultiPartBakedModel multiPart; + @Getter + private final List> dynamicRenders; + + @Getter + private final ItemTransforms transforms; + private final Transformation rootTransform; + private final ModelState modelState; + @Getter + private final boolean isGui3d; + @Accessors(fluent = true) + @Getter + private final boolean usesBlockLight, useAmbientOcclusion; + + @Setter + private TextureAtlasSprite particleIcon = null; + private final SpriteCapturer spriteCapturer; + @Setter + private Set replaceableTextures; + @Setter + private Map textureOverrides; + + public MachineModel(MachineDefinition definition, + Map modelsByState, + @Nullable MultiPartBakedModel multiPart, + List> dynamicRenders, + SpriteCapturer spriteCapturer, + ItemTransforms transforms, Transformation rootTransform, ModelState modelState, + boolean isGui3d, boolean usesBlockLight, boolean useAmbientOcclusion) { + this.definition = definition; + this.modelsByState = modelsByState; + this.multiPart = multiPart; + this.dynamicRenders = dynamicRenders; + this.spriteCapturer = spriteCapturer; + + this.transforms = transforms; + this.rootTransform = rootTransform; + this.modelState = modelState; + this.isGui3d = isGui3d; + this.usesBlockLight = usesBlockLight; + this.useAmbientOcclusion = useAmbientOcclusion; + + for (DynamicRender render : this.dynamicRenders) { + render.setParent(this); + } + + if (!overlaysInitialized) { + ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + spriteCapturer.getCapturedMaterials().clear(); + + TextureAtlas atlas = event.getAtlas(); + + pipeOverlaySprite = atlas.getSprite(PIPE_OVERLAY); + fluidOutputOverlaySprite = atlas.getSprite(FLUID_OUTPUT_OVERLAY); + itemOutputOverlaySprite = atlas.getSprite(ITEM_OUTPUT_OVERLAY); + blankSprite = atlas.getSprite(GTModels.BLANK_TEXTURE); + + ICoverableRenderer.initSprites(atlas::getSprite); + }); + overlaysInitialized = true; + } + } + + @SuppressWarnings("deprecation") + @Override + public @NotNull TextureAtlasSprite getParticleIcon() { + if (particleIcon != null) { + return particleIcon; + } else if (!modelsByState.isEmpty()) { + return modelsByState.get(getDefinition().defaultRenderState()).getParticleIcon(); + } else if (multiPart != null) { + return multiPart.getParticleIcon(); + } else { + return Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS) + .apply(MissingTextureAtlasSprite.getLocation()); + } + } + + @Override + public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + MachineRenderState renderState = machine != null ? machine.getRenderState() : + getDefinition().defaultRenderState(); + + if (modelsByState.containsKey(renderState)) { + return modelsByState.get(renderState).getParticleIcon(modelData); + } else if (multiPart != null) { + return multiPart.getParticleIcon(renderState, modelData); + } else { + return super.getParticleIcon(modelData); + } + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + // If there is a root transform, undo the ModelState transform, apply it, then + // re-apply the ModelState transform. + // This is necessary because of things like UV locking, which should only respond to the ModelState, and as such + // that is the only transform that should be applied during face bake. + var postTransform = QuadTransformers.empty(); + if (!rootTransform.isIdentity()) { + postTransform = UnbakedGeometryHelper.applyRootTransform(modelState, rootTransform); + } + + List quads; + if (modelData.has(MODEL_DATA_LEVEL) && modelData.has(MODEL_DATA_POS)) { + quads = getMachineQuads(state, side, rand, modelData, renderType); + } else { + // if it doesn't have either of those properties, we're rendering an item. + quads = renderMachine(null, state, Direction.NORTH, side, rand, modelData, renderType); + } + postTransform.processInPlace(quads); + return quads; + } + + public List getMachineQuads(@Nullable BlockState blockState, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData modelData, + @Nullable RenderType renderType) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + if (machine == null) return Collections.emptyList(); + + // render machine quads + List quads = renderMachine(machine, blockState, machine.getFrontFacing(), + side, rand, modelData, renderType); + + // render auto IO + if (machine instanceof IAutoOutputItem autoOutputItem) { + var itemFace = autoOutputItem.getOutputFacingItems(); + if (itemFace != null && side == itemFace) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, + side, pipeOverlaySprite, BlockModelRotation.X0_Y0, + -1, 0, true, true)); + if (autoOutputItem.isAutoOutputItems()) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, + side, itemOutputOverlaySprite, BlockModelRotation.X0_Y0, + -101, 15, true, true)); + } + } + } + if (machine instanceof IAutoOutputFluid autoOutputFluid) { + var fluidFace = autoOutputFluid.getOutputFacingFluids(); + if (fluidFace != null && side == fluidFace) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, + side, pipeOverlaySprite, BlockModelRotation.X0_Y0, + -1, 0, true, true)); + if (autoOutputFluid.isAutoOutputFluids()) { + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, + side, fluidOutputOverlaySprite, BlockModelRotation.X0_Y0, + -101, 15, true, true)); + } + } + } + + // render covers + int start = quads.size(); + ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), pos, level, + side, rand, modelData, renderType); + var iterator = quads.listIterator(start); + while (iterator.hasNext()) { + GTQuadTransformers.offset(COVER_OVERLAY_OFFSET).processInPlace(iterator.next()); + } + return quads; + } + + public List renderMachine(@Nullable MetaMachine machine, @Nullable BlockState blockState, + Direction frontFacing, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + List quads = new LinkedList<>(); + + if (!dynamicRenders.isEmpty()) { + for (var render : dynamicRenders) { + quads.addAll(render.getQuads(blockState, side, rand, modelData, renderType)); + } + } + MachineRenderState renderState = machine != null ? machine.getRenderState() : definition.defaultRenderState(); + renderBaseModel(quads, renderState, blockState, side, rand, modelData, renderType); + + if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { + quads = replacePartBaseModel(quads, part, frontFacing, side, rand, modelData, renderType); + } + if (machine != null) { + // we have to recalculate CTM ourselves. + // this is the slowest part by a long shot because the LDLib quad logic isn't very optimized. + return CustomBakedModel.reBakeCustomQuads(quads, machine.getLevel(), machine.getPos(), + blockState, side, 0.0f); + } else { + return quads; + } + } + + public void renderBaseModel(List quads, @NotNull MachineRenderState renderState, + @Nullable BlockState blockState, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (multiPart != null) { + quads.addAll(multiPart.getMachineQuads(definition, renderState, blockState, + side, rand, modelData, renderType)); + } else { + quads.addAll(modelsByState.get(renderState).getQuads(blockState, side, rand, modelData, renderType)); + } + } + + public List replacePartBaseModel(List originalQuads, IMultiPart part, Direction frontFacing, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + var controllers = part.getControllers(); + for (IMultiController controller : controllers) { + var state = controller.self().getBlockState(); + BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + List newQuads = null; + + // spotless:off + if (model instanceof IControllerModelRenderer controllerRenderer) { + controllerRenderer.renderPartModel(originalQuads, controller, part, frontFacing, side, + rand, modelData, renderType); + } else if (model instanceof MachineModel controllerModel) { + newQuads = renderPartOverrides(controllerModel, controller, originalQuads, part, frontFacing, + side, rand, modelData, renderType); + } else if (model instanceof CustomBakedModelAccessor ctmModel && + ctmModel.gtceu$getParent() instanceof MachineModel controllerModel) { + newQuads = renderPartOverrides(controllerModel, controller, originalQuads, + part, frontFacing, side, rand, modelData, renderType); + } + if (newQuads != null) { + return newQuads; + } + // spotless:on + } + return originalQuads; + } + + public List remapReplaceableTextures(String key) { + if (this.replaceableTextures.contains(key)) { + return Collections.singletonList(key); + } else { + List remapped = TEXTURE_REMAPS.get(key); + if (remapped != null) return remapped; + else return Collections.emptyList(); + } + } + + private List renderPartOverrides(MachineModel controllerModel, IMultiController controller, + List originalQuads, IMultiPart part, Direction frontFacing, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + var overrides = controllerModel.textureOverrides; + + for (var render : controllerModel.getDynamicRenders()) { + if (render instanceof IControllerModelRenderer controllerRenderer) { + controllerRenderer.renderPartModel(originalQuads, controller, part, frontFacing, side, + rand, modelData, renderType); + // assume the renderer drew the base model, and replace the override textures with empty ones + overrides = new HashMap<>(); + for (String key : this.replaceableTextures) { + overrides.put(key, blankSprite); + } + break; + } + } + if (overrides.isEmpty()) { + return originalQuads; + } + + // parse out valid overrides + Map remaps = new IdentityHashMap<>(); + final TextureAtlasSprite missingno = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS) + .apply(MissingTextureAtlasSprite.getLocation()); + final Map finalOverrides = overrides; + overrides = finalOverrides.keySet().stream() + .flatMap(key -> { + var remapped = remapReplaceableTextures(key); + for (String r : remapped) { + remaps.put(r, key); + } + return remapped.stream(); + }) + .collect(Collectors.toMap(Function.identity(), + key -> finalOverrides.getOrDefault(remaps.get(key), missingno), + (o1, o2) -> o1)); + + // actually process the sprite replacement + var replacementSprites = TextureOverrideModel.resolveOverrides(overrides, + this.spriteCapturer.getCapturedMaterials()); + return TextureOverrideModel.retextureQuads(originalQuads, replacementSprites); + } + + @Override + public boolean isCustomRenderer() { + if (dynamicRenders.isEmpty()) return false; + for (DynamicRender render : dynamicRenders) { + if (render.isCustomRenderer()) return true; + } + return false; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public void render(MetaMachine machine, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (dynamicRenders.isEmpty()) return; + Vec3 cameraPos = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + for (DynamicRender model : dynamicRenders) { + if (!model.shouldRender(machine, cameraPos)) { + continue; + } + model.render(machine, partialTick, poseStack, buffer, packedLight, packedOverlay); + } + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (dynamicRenders.isEmpty()) return; + for (DynamicRender model : dynamicRenders) { + model.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public AABB getRenderBoundingBox(MetaMachine machine) { + AABB bounds = IMachineRendererModel.super.getRenderBoundingBox(machine); + if (dynamicRenders.isEmpty()) return bounds; + for (DynamicRender model : dynamicRenders) { + bounds = bounds.minmax(model.getRenderBoundingBox(machine)); + } + return bounds; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public boolean shouldRenderOffScreen(MetaMachine machine) { + if (dynamicRenders.isEmpty()) return false; + for (DynamicRender render : dynamicRenders) { + if (render.shouldRenderOffScreen(machine)) return true; + } + return false; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public boolean shouldRender(MetaMachine machine, Vec3 cameraPos) { + if (dynamicRenders.isEmpty()) return false; + for (DynamicRender model : dynamicRenders) { + if (model.shouldRender(machine, Minecraft.getInstance().gameRenderer.getMainCamera().getPosition())) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java new file mode 100644 index 00000000000..17284d43880 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java @@ -0,0 +1,272 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.client.model.BasicUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartSelector; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartUnbakedModel; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; +import com.gregtechceu.gtceu.client.model.machine.variant.VariantState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderManager; + +import net.minecraft.client.renderer.block.BlockModelShaper; +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.resources.model.ModelResourceLocation; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.model.ExtendedBlockModelDeserializer; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.common.util.TransformationHelper; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import com.google.common.base.Preconditions; +import com.google.common.base.Splitter; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.gson.*; +import com.mojang.datafixers.util.Either; +import com.mojang.math.Transformation; +import com.mojang.serialization.JsonOps; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; + +@Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class MachineModelLoader implements IGeometryLoader { + + public static final MachineModelLoader INSTANCE = new MachineModelLoader(); + public static final ResourceLocation ID = GTCEu.id("machine"); + public static final Gson GSON = new GsonBuilder() + .registerTypeAdapter(BlockModel.class, new ExtendedBlockModelDeserializer()) + .registerTypeAdapter(BlockElement.class, new BlockElement.Deserializer()) + .registerTypeAdapter(BlockElementFace.class, new BlockElementFace.Deserializer()) + .registerTypeAdapter(BlockFaceUV.class, new BlockFaceUV.Deserializer()) + .registerTypeAdapter(ItemTransform.class, new ItemTransform.Deserializer()) + .registerTypeAdapter(ItemTransforms.class, new ItemTransforms.Deserializer()) + .registerTypeAdapter(ItemOverride.class, new ItemOverride.Deserializer()) + .registerTypeAdapter(Transformation.class, new TransformationHelper.Deserializer()) + + .registerTypeAdapter(MultiVariantModel.class, new MultiVariantModel.Deserializer()) + .registerTypeAdapter(VariantState.class, new VariantState.Deserializer()) + .registerTypeAdapter(MultiPartSelector.class, new MultiPartSelector.Deserializer()) + .create(); + private static final Logger LOGGER = LogManager.getLogger("GT MACHINE MODEL LOADER"); + + private static final Splitter COMMA_SPLITTER = Splitter.on(','); + private static final Splitter EQUAL_SPLITTER = Splitter.on('=').limit(2); + private static final UnbakedModel MISSING_MARKER = new BasicUnbakedModel(); + + private static final Map>> DYNAMIC_RENDERERS = new HashMap<>(); + + private MachineModelLoader() {} + + @SubscribeEvent + public static void loadDynamicModels(ModelEvent.ModifyBakingResult event) { + if (DYNAMIC_RENDERERS.isEmpty()) return; + + Map models = event.getModels(); + for (var entry : DYNAMIC_RENDERERS.entrySet()) { + ResourceLocation machineId = entry.getKey(); + for (DynamicRender renderer : entry.getValue()) { + String rendererName = renderer.getType().getId().getPath(); + + String fakeModelPath = DynamicRenderManager.MODEL_ID_FORMATTER.apply(machineId.getPath(), rendererName); + models.put(machineId.withPath(fakeModelPath), renderer); + } + } + } + + @Override + public UnbakedMachineModel read(JsonObject json, JsonDeserializationContext context) throws JsonParseException { + ResourceLocation machineId = new ResourceLocation(GsonHelper.getAsString(json, "machine")); + MachineDefinition definition = GTRegistries.MACHINES.get(machineId); + Preconditions.checkNotNull(definition, "A machine with id " + machineId + " does not exist."); + + // load the inner models + final Map variants = new HashMap<>(); + if (json.has("variants")) { + JsonObject variantsJson = GsonHelper.getAsJsonObject(json, "variants"); + for (Map.Entry entry : variantsJson.entrySet()) { + variants.put(entry.getKey(), GSON.fromJson(entry.getValue(), MultiVariantModel.class)); + } + } + final @Nullable MultiPartUnbakedModel multiPart; + if (json.has("multipart")) { + JsonArray multipartJson = GsonHelper.getAsJsonArray(json, "multipart"); + multiPart = MultiPartUnbakedModel.deserialize(definition, multipartJson); + } else { + multiPart = null; + } + if (variants.isEmpty() && (multiPart == null || multiPart.getModels().isEmpty())) { + throw new JsonParseException("Model for machine %s doesn't have 'variants' or 'multipart' defined" + .formatted(machineId)); + } + + // resolve the state -> variant map + StateDefinition stateDefinition = definition.getStateDefinition(); + ImmutableList possibleStates = stateDefinition.getPossibleStates(); + Map statesToModels = new IdentityHashMap<>(); + if (multiPart != null) { + possibleStates.forEach((state) -> statesToModels.put(state, multiPart)); + } + + Map modelsToStates = new HashMap<>(); + possibleStates.forEach((state) -> { + modelsToStates.put(stateToModelLocation(machineId, state), state); + }); + + try { + variants.forEach((key, curModel) -> { + try { + possibleStates.stream().filter(predicate(stateDefinition, key)).forEach((state) -> { + UnbakedModel prevModel = statesToModels.put(state, curModel); + if (prevModel != null && prevModel != multiPart) { + statesToModels.put(state, MISSING_MARKER); + throw new IllegalStateException( + "Overlapping definition with: " + variants.entrySet().stream() + .filter((entry) -> entry.getValue() == prevModel) + .findFirst() + .map(Map.Entry::getKey) + .orElse("Invalid key? This shouldn't happen")); + } + }); + } catch (Exception e) { + LOGGER.warn("Exception loading model for machine: '{}' for variant: '{}': {}", machineId, key, e); + } + }); + } finally { + modelsToStates.forEach((modelLoc, state) -> { + UnbakedModel unbaked = statesToModels.get(state); + if (unbaked == null) { + LOGGER.warn("Exception loading model for machine: '{}' missing model for variant: '{}'", machineId, + modelLoc); + statesToModels.put(state, MISSING_MARKER); + } + }); + } + + // load dynamic renders + List> dynamicRenders = new ArrayList<>(); + JsonArray array = GsonHelper.getAsJsonArray(json, "dynamic_renders", null); + if (array != null) { + for (JsonElement entry : array) { + var render = DynamicRender.CODEC.parse(JsonOps.INSTANCE, entry) + .getOrThrow(false, LOGGER::error); + dynamicRenders.add(render); + } + DYNAMIC_RENDERERS.put(machineId, dynamicRenders); + } + + // CTM info etc. + Set replaceableTextures = new HashSet<>(); + array = GsonHelper.getAsJsonArray(json, "replaceable_textures", null); + if (array != null) { + for (int i = 0; i < array.size(); i++) { + String entry = GsonHelper.convertToString(array.get(i), "replaceable_textures[%s]".formatted(i)); + replaceableTextures.add(entry); + } + } + Map textureOverrides = new HashMap<>(); + JsonObject overrideJson = GsonHelper.getAsJsonObject(json, "texture_overrides", null); + if (overrideJson != null) { + for (var entry : overrideJson.asMap().entrySet()) { + String value = GsonHelper.convertToString(entry.getValue(), entry.getKey()); + textureOverrides.put(entry.getKey(), new ResourceLocation(value)); + } + } + + return new UnbakedMachineModel(definition, statesToModels, multiPart, dynamicRenders, + replaceableTextures, textureOverrides); + } + + protected static void resolveStateModels(UnbakedMachineModel model, + Function resolver) { + UnbakedModel missingModel = resolver.apply(ModelBakery.MISSING_MODEL_LOCATION); + + final MultiPartUnbakedModel multiPart = model.getMultiPart(); + if (multiPart != null) { + multiPart.resolveParents(resolver); + } + Map modelsCopy = new IdentityHashMap<>(model.getModels()); + modelsCopy.forEach((state, variant) -> { + if (variant == null || variant == MISSING_MARKER) { + // replace null & markers with the actual missing model + model.getModels().put(state, missingModel); + } else { + variant.resolveParents(resolver); + model.getModels().put(state, variant); + } + }); + } + + private static Predicate predicate(StateDefinition container, + String variant) { + Map, Comparable> properties = Maps.newHashMap(); + + for (String propertyEntry : COMMA_SPLITTER.split(variant)) { + Iterator keyValue = EQUAL_SPLITTER.split(propertyEntry).iterator(); + if (keyValue.hasNext()) { + String key = keyValue.next(); + Property property = container.getProperty(key); + if (property != null && keyValue.hasNext()) { + String value = keyValue.next(); + Comparable comparable = getValueHelper(property, value); + if (comparable == null) { + throw new RuntimeException("Unknown value: '" + value + + "' for machine model state property: '" + key + "' " + property.getPossibleValues()); + } + + properties.put(property, comparable); + } else if (!key.isEmpty()) { + throw new RuntimeException("Unknown machine model state property: '" + key + "'"); + } + } + } + + MachineDefinition machine = container.getOwner(); + return (state) -> { + if (state == null || !state.is(machine)) { + return false; + } + for (var entry : properties.entrySet()) { + if (!Objects.equals(state.getValue(entry.getKey()), entry.getValue())) { + return false; + } + } + return true; + }; + } + + @Nullable + static > T getValueHelper(Property property, String value) { + return property.getValue(value).orElse(null); + } + + public static ModelResourceLocation stateToModelLocation(ResourceLocation location, MachineRenderState state) { + return new ModelResourceLocation(location, BlockModelShaper.statePropertiesToString(state.getValues())); + } + + public static Either parseVariant(JsonElement value, + JsonDeserializationContext context) throws JsonParseException { + if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) { + String modelName = value.getAsString(); + return Either.left(new ResourceLocation(modelName)); + } else { + return Either.right(context.deserialize(value, BlockModel.class)); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java new file mode 100644 index 00000000000..ec43fff974f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineRenderState.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.registry.GTRegistries; + +import net.minecraft.world.level.block.state.StateHolder; +import net.minecraft.world.level.block.state.properties.Property; + +import com.google.common.collect.ImmutableMap; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; + +public class MachineRenderState extends StateHolder { + + public static final Codec CODEC = codec(GTRegistries.MACHINES.codec(), + MachineDefinition::defaultRenderState).stable(); + + public MachineRenderState(MachineDefinition owner, ImmutableMap, Comparable> values, + MapCodec propertiesCodec) { + super(owner, values, propertiesCodec); + } + + public MachineDefinition getDefinition() { + return this.owner; + } + + public boolean is(MetaMachine machine) { + return this.is(machine.getDefinition()); + } + + public boolean is(MachineDefinition definition) { + return this.getDefinition() == definition; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java new file mode 100644 index 00000000000..a331904c434 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java @@ -0,0 +1,87 @@ +package com.gregtechceu.gtceu.client.model.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.SpriteCapturer; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; +import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartUnbakedModel; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; + +import net.minecraft.client.renderer.block.model.*; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; + +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Function; + +public class UnbakedMachineModel implements IUnbakedGeometry { + + @Getter + private final MachineDefinition definition; + @Getter + private final Map models; + @Nullable + @Getter + private final MultiPartUnbakedModel multiPart; + @Getter + private final List> dynamicRenders; + private final Set replaceableTextures; + private final Map textureOverrides; + + public UnbakedMachineModel(MachineDefinition definition, + Map models, + @Nullable MultiPartUnbakedModel multiPart, + List> dynamicRenders, + + Set replaceableTextures, + Map textureOverrides) { + this.definition = definition; + this.models = models; + this.multiPart = multiPart; + this.dynamicRenders = dynamicRenders; + this.replaceableTextures = replaceableTextures; + this.textureOverrides = textureOverrides; + } + + @Override + public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, + Function spriteGetter, ModelState modelState, + ItemOverrides overrides, ResourceLocation modelLocation) { + Map textureOverrides = new HashMap<>(); + for (var entry : this.textureOverrides.entrySet()) { + Material material = new Material(TextureAtlas.LOCATION_BLOCKS, entry.getValue()); + textureOverrides.put(entry.getKey(), spriteGetter.apply(material)); + } + final var spriteCapturer = new SpriteCapturer(spriteGetter); + + Map baseModels = new IdentityHashMap<>(); + models.forEach((machineState, unbaked) -> { + baseModels.put(machineState, unbaked.bake(baker, spriteCapturer, modelState, modelLocation)); + }); + MultiPartBakedModel multiPart = this.multiPart == null ? null : + this.multiPart.bake(baker, spriteCapturer, modelState, modelLocation); + + MachineModel model = new MachineModel(this.getDefinition(), baseModels, multiPart, + this.dynamicRenders, spriteCapturer, + context.getTransforms(), context.getRootTransform(), modelState, + context.isGui3d(), context.useBlockLight(), context.useAmbientOcclusion()); + + if (context.hasMaterial("particle")) { + model.setParticleIcon(spriteGetter.apply(context.getMaterial("particle"))); + } + model.setReplaceableTextures(this.replaceableTextures); + model.setTextureOverrides(textureOverrides); + return model; + } + + @Override + public void resolveParents(Function resolver, IGeometryBakingContext context) { + MachineModelLoader.resolveStateModels(this, resolver); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java new file mode 100644 index 00000000000..b2a9f6ddcf7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/AndPartCondition.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; + +import java.util.List; +import java.util.function.Predicate; + +public class AndPartCondition implements PartCondition { + + public static final String TOKEN = "AND"; + private final Iterable conditions; + + public AndPartCondition(Iterable conditions) { + this.conditions = conditions; + } + + public Predicate getPredicate(StateDefinition def) { + List> predicates = Streams.stream(this.conditions) + .map((condition) -> condition.getPredicate(def)) + .toList(); + return (state) -> predicates.stream().allMatch((p) -> p.test(state)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java new file mode 100644 index 00000000000..3c7aa3489fe --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/KeyValuePartCondition.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; + +import com.google.common.base.Splitter; + +import java.util.List; +import java.util.Locale; +import java.util.Optional; +import java.util.function.Predicate; + +public class KeyValuePartCondition implements PartCondition { + + private static final Splitter PIPE_SPLITTER = Splitter.on('|').omitEmptyStrings(); + private final String key; + private final String value; + + public KeyValuePartCondition(String key, String value) { + this.key = key; + this.value = value; + } + + public Predicate getPredicate(StateDefinition def) { + Property property = def.getProperty(this.key); + if (property == null) { + throw new RuntimeException( + String.format(Locale.ROOT, "Unknown property '%s' on machine '%s'", this.key, def.getOwner())); + } else { + String value = this.value; + boolean invert = !value.isEmpty() && value.charAt(0) == '!'; + if (invert) { + value = value.substring(1); + } + + List unparsedPredicates = PIPE_SPLITTER.splitToList(value); + if (unparsedPredicates.isEmpty()) { + throw new RuntimeException( + String.format(Locale.ROOT, "Empty value '%s' for property '%s' on machine '%s'", + this.value, this.key, def.getOwner())); + } else { + Predicate predicate; + if (unparsedPredicates.size() == 1) { + predicate = this.getStatePredicate(def, property, value); + } else { + List> parsed = unparsedPredicates.stream() + .map((string) -> this.getStatePredicate(def, property, string)) + .toList(); + predicate = (state) -> parsed.stream().anyMatch((p) -> p.test(state)); + } + + return invert ? predicate.negate() : predicate; + } + } + } + + private Predicate getStatePredicate(StateDefinition def, + Property property, String value) { + Optional optional = property.getValue(value); + if (optional.isEmpty()) { + throw new RuntimeException( + String.format(Locale.ROOT, "Unknown value '%s' for property '%s' on '%s' in '%s'", + value, this.key, def.getOwner(), this.value)); + } else { + return (state) -> state.getValue(property).equals(optional.get()); + } + } + + @Override + public String toString() { + return "KeyValueCondition{" + "key='" + key + "', value='" + value + "'}"; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java new file mode 100644 index 00000000000..950f169453d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java @@ -0,0 +1,220 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.Util; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.ChunkRenderTypeSet; +import net.minecraftforge.client.model.IDynamicBakedModel; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.MultipartModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; +import lombok.Getter; +import lombok.experimental.Accessors; +import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Predicate; + +import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; + +public class MultiPartBakedModel implements IDynamicBakedModel { + + private final List, BakedModel>> selectors; + protected final boolean hasAmbientOcclusion; + @Getter + protected final boolean isGui3d; + @Accessors(fluent = true) + @Getter + protected final boolean usesBlockLight; + @Getter + protected final TextureAtlasSprite particleIcon; + @Getter + protected final ItemTransforms transforms; + @Getter + protected final ItemOverrides overrides; + private final Map selectorCache = new Object2ObjectOpenCustomHashMap<>( + Util.identityStrategy()); + private final BakedModel defaultModel; + + @SuppressWarnings("deprecation") + public MultiPartBakedModel(List, BakedModel>> selectors) { + this.selectors = selectors; + BakedModel defaultModel = selectors.iterator().next().getRight(); + this.defaultModel = defaultModel; + this.hasAmbientOcclusion = defaultModel.useAmbientOcclusion(); + this.isGui3d = defaultModel.isGui3d(); + this.usesBlockLight = defaultModel.usesBlockLight(); + this.particleIcon = defaultModel.getParticleIcon(); + this.transforms = defaultModel.getTransforms(); + this.overrides = defaultModel.getOverrides(); + } + + public BitSet getSelectors(@Nullable MachineRenderState state) { + BitSet bitset = this.selectorCache.get(state); + if (bitset == null) { + bitset = new BitSet(); + + for (int i = 0; i < this.selectors.size(); ++i) { + Pair, BakedModel> pair = this.selectors.get(i); + if (pair.getLeft().test(state)) { + bitset.set(i); + } + } + + this.selectorCache.put(state, bitset); + } + return bitset; + } + + @Override + public List getQuads(@Nullable BlockState state, @Nullable Direction side, + RandomSource rand, ModelData modelData, @Nullable RenderType renderType) { + return defaultModel.getQuads(state, side, rand, modelData, renderType); + } + + public List getMachineQuads(MachineDefinition definition, MachineRenderState renderState, + @Nullable BlockState blockState, @Nullable Direction direction, + RandomSource random, ModelData modelData, @Nullable RenderType renderType) { + if (blockState == null) blockState = definition.defaultBlockState(); + + BitSet bitset = getSelectors(renderState); + List quads = new ArrayList<>(); + long k = random.nextLong(); + + for (int j = 0; j < bitset.length(); ++j) { + if (bitset.get(j)) { + var model = this.selectors.get(j).getRight(); + + ModelData partData = MultipartModelData.resolve(modelData, model); + if (renderType == null || model.getRenderTypes(blockState, random, partData).contains(renderType)) { + quads.addAll(model.getQuads(blockState, direction, RandomSource.create(k), partData, renderType)); + } + } + } + + return quads; + } + + @Override + public ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + if (machine == null) return IDynamicBakedModel.super.getRenderTypes(state, rand, modelData); + + var renderTypeSets = new LinkedList(); + var selectors = getSelectors(machine.getRenderState()); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + + ModelData partData = MultipartModelData.resolve(modelData, model); + renderTypeSets.add(model.getRenderTypes(state, rand, partData)); + } + } + return ChunkRenderTypeSet.union(renderTypeSets); + } + + @Override + public ModelData getModelData(BlockAndTintGetter level, BlockPos pos, BlockState state, ModelData modelData) { + ModelData.Builder builder = modelData.derive() + .with(MODEL_DATA_LEVEL, level) + .with(MODEL_DATA_POS, pos); + + var machine = MetaMachine.getMachine(level, pos); + if (machine == null) return builder.build(); + + MultipartModelData.Builder multiPartData = MultipartModelData.builder(); + var selectors = getSelectors(machine.getRenderState()); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + multiPartData.with(model, model.getModelData(level, pos, state, modelData)); + } + } + builder.with(MultipartModelData.PROPERTY, multiPartData.build()); + + return builder.build(); + } + + @Override + public boolean useAmbientOcclusion() { + return this.hasAmbientOcclusion; + } + + @Override + public boolean useAmbientOcclusion(BlockState state) { + return this.defaultModel.useAmbientOcclusion(state); + } + + @Override + public boolean useAmbientOcclusion(BlockState state, net.minecraft.client.renderer.RenderType renderType) { + return this.defaultModel.useAmbientOcclusion(state, renderType); + } + + @Override + public boolean isCustomRenderer() { + return false; + } + + @Override + public TextureAtlasSprite getParticleIcon(ModelData modelData) { + BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); + BlockPos pos = modelData.get(MODEL_DATA_POS); + + var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + if (machine != null) return getParticleIcon(machine.getRenderState(), modelData); + else return this.defaultModel.getParticleIcon(modelData); + } + + public TextureAtlasSprite getParticleIcon(@NotNull MachineRenderState renderState, ModelData modelData) { + var selectors = getSelectors(renderState); + for (int i = 0; i < selectors.length(); i++) { + if (selectors.get(i)) { + BakedModel model = this.selectors.get(i).getRight(); + ModelData partData = MultipartModelData.resolve(modelData, model); + + return model.getParticleIcon(partData); + } + } + return this.defaultModel.getParticleIcon(modelData); + } + + @Override + public BakedModel applyTransform(ItemDisplayContext transformType, PoseStack poseStack, + boolean applyLeftHandTransform) { + return this.defaultModel.applyTransform(transformType, poseStack, applyLeftHandTransform); + } + + public static class Builder { + + private final List, BakedModel>> selectors = new ArrayList<>(); + + public void add(Predicate predicate, BakedModel model) { + this.selectors.add(Pair.of(predicate, model)); + } + + public MultiPartBakedModel build() { + return new MultiPartBakedModel(this.selectors); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java new file mode 100644 index 00000000000..955f29e579e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartSelector.java @@ -0,0 +1,88 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; + +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; +import com.google.gson.*; +import lombok.Getter; + +import java.lang.reflect.Type; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +public class MultiPartSelector implements ModelState { + + private final PartCondition condition; + @Getter + private final MultiVariantModel variant; + + public MultiPartSelector(PartCondition condition, MultiVariantModel variant) { + this.condition = condition; + this.variant = variant; + } + + public Predicate getPredicate(StateDefinition definition) { + return this.condition.getPredicate(definition); + } + + public static class Deserializer implements JsonDeserializer { + + public MultiPartSelector deserialize(JsonElement json, + Type type, JsonDeserializationContext context) throws JsonParseException { + return fromJson(json, context); + } + + public static MultiPartSelector fromJson(JsonElement json, + JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonobject = json.getAsJsonObject(); + return new MultiPartSelector(getSelector(jsonobject), + context.deserialize(jsonobject.get("apply"), MultiVariantModel.class)); + } + + private static PartCondition getSelector(JsonObject json) { + return json.has("when") ? + getCondition(GsonHelper.getAsJsonObject(json, "when")) : + PartCondition.TRUE; + } + + private static PartCondition getCondition(JsonObject json) { + Set> entries = json.entrySet(); + if (entries.isEmpty()) { + throw new JsonParseException("No elements found in selector"); + } else if (entries.size() == 1) { + if (json.has(OrPartCondition.TOKEN)) { + List conditions = Streams + .stream(GsonHelper.getAsJsonArray(json, OrPartCondition.TOKEN)) + .map((e) -> getCondition(e.getAsJsonObject())) + .toList(); + return new OrPartCondition(conditions); + } else if (json.has(AndPartCondition.TOKEN)) { + List conditions = Streams + .stream(GsonHelper.getAsJsonArray(json, AndPartCondition.TOKEN)) + .map((e) -> getCondition(e.getAsJsonObject())) + .toList(); + return new AndPartCondition(conditions); + } else { + return getKeyValueCondition(entries.iterator().next()); + } + } else { + return new AndPartCondition(entries.stream() + .map(MultiPartSelector.Deserializer::getKeyValueCondition) + .collect(Collectors.toList())); + } + } + + private static PartCondition getKeyValueCondition(Map.Entry entry) { + return new KeyValuePartCondition(entry.getKey(), entry.getValue().getAsString()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java new file mode 100644 index 00000000000..ad409961090 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartUnbakedModel.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.gson.*; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public record MultiPartUnbakedModel(StateDefinition definition, + List selectors) + implements UnbakedModel { + + public Set getModels() { + Set set = new HashSet<>(); + + for (MultiPartSelector selector : this.selectors()) { + set.add(selector.getVariant()); + } + return set; + } + + @Override + public Collection getDependencies() { + return this.selectors().stream() + .flatMap((selector) -> selector.getVariant().getDependencies().stream()) + .collect(Collectors.toSet()); + } + + @Override + public void resolveParents(Function resolver) { + this.selectors().forEach((selector) -> selector.getVariant().resolveParents(resolver)); + } + + @Override + public MultiPartBakedModel bake(ModelBaker baker, Function spriteGetter, + ModelState state, ResourceLocation location) { + MultiPartBakedModel.Builder builder = new MultiPartBakedModel.Builder(); + + for (MultiPartSelector selector : this.selectors()) { + BakedModel bakedmodel = selector.getVariant().bake(baker, spriteGetter, state, location); + if (bakedmodel != null) { + builder.add(selector.getPredicate(this.definition), bakedmodel); + } + } + return builder.build(); + } + + public static MultiPartUnbakedModel deserialize(MachineDefinition definition, JsonArray elements) { + return new MultiPartUnbakedModel(definition.getStateDefinition(), getSelectors(elements)); + } + + private static List getSelectors(JsonArray elements) { + List list = new ArrayList<>(); + + for (JsonElement e : elements) { + list.add(MachineModelLoader.GSON.fromJson(e, MultiPartSelector.class)); + } + return list; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java new file mode 100644 index 00000000000..cf124314c79 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/OrPartCondition.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import com.google.common.collect.Streams; + +import java.util.List; +import java.util.function.Predicate; + +public class OrPartCondition implements PartCondition { + + public static final String TOKEN = "OR"; + private final Iterable conditions; + + public OrPartCondition(Iterable conditions) { + this.conditions = conditions; + } + + public Predicate getPredicate(StateDefinition def) { + List> predicates = Streams.stream(this.conditions) + .map((condition) -> condition.getPredicate(def)) + .toList(); + return (state) -> predicates.stream().anyMatch((p) -> p.test(state)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java new file mode 100644 index 00000000000..0c6fc180b49 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/PartCondition.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import net.minecraft.world.level.block.state.StateDefinition; + +import java.util.function.Predicate; + +@FunctionalInterface +public interface PartCondition { + + PartCondition TRUE = (definition) -> state -> true; + PartCondition FALSE = (definition) -> state -> false; + + Predicate getPredicate(StateDefinition def); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java new file mode 100644 index 00000000000..a12c8c38e52 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model.machine.multipart; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java new file mode 100644 index 00000000000..44e05895cc3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java @@ -0,0 +1,71 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; + +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import lombok.Getter; + +public class EnergyIOOverlay { + + public static final EnergyIOOverlay ENERGY_IN_1A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in"); + public static final EnergyIOOverlay ENERGY_IN_2A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in"); + public static final EnergyIOOverlay ENERGY_IN_4A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in"); + public static final EnergyIOOverlay ENERGY_IN_8A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in"); + public static final EnergyIOOverlay ENERGY_IN_16A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in"); + public static final EnergyIOOverlay ENERGY_IN_64A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in"); + + public static final EnergyIOOverlay ENERGY_OUT_1A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out"); + public static final EnergyIOOverlay ENERGY_OUT_2A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out"); + public static final EnergyIOOverlay ENERGY_OUT_4A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out"); + public static final EnergyIOOverlay ENERGY_OUT_8A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out"); + public static final EnergyIOOverlay ENERGY_OUT_16A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out"); + public static final EnergyIOOverlay ENERGY_OUT_64A = new EnergyIOOverlay( + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out"); + + public static final Int2ObjectMap IN_OVERLAYS_FOR_AMP = Util.make(new Int2ObjectArrayMap<>(6), + map -> { + map.put(1, ENERGY_IN_1A); + map.put(2, ENERGY_IN_2A); + map.put(4, ENERGY_IN_4A); + map.put(8, ENERGY_IN_8A); + map.put(16, ENERGY_IN_16A); + map.put(64, ENERGY_IN_64A); + map.defaultReturnValue(ENERGY_IN_1A); + }); + + public static final Int2ObjectMap OUT_OVERLAYS_FOR_AMP = Util.make(new Int2ObjectArrayMap<>(6), + map -> { + map.put(1, ENERGY_OUT_1A); + map.put(2, ENERGY_OUT_2A); + map.put(4, ENERGY_OUT_4A); + map.put(8, ENERGY_OUT_8A); + map.put(16, ENERGY_OUT_16A); + map.put(64, ENERGY_OUT_64A); + map.defaultReturnValue(ENERGY_OUT_1A); + }); + + @Getter + private final ResourceLocation tintedPart; + @Getter + private final ResourceLocation ioPart; + + public EnergyIOOverlay(String tintedPart, String ioPart) { + this.tintedPart = GTCEu.id(tintedPart); + this.ioPart = GTCEu.id(ioPart); + } +} 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 new file mode 100644 index 00000000000..3ea09f9003c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/HPCAOverlay.java @@ -0,0 +1,97 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +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 net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.data.ExistingFileHelper; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.EnumMap; +import java.util.Map; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +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; + } + 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); + } + // spotless:on + + public static final HPCAOverlay EMPTY = new HPCAOverlay(); + + private final Map textures = new EnumMap<>(Status.class); + private final Map emissiveTextures = new EnumMap<>(Status.class); + + public HPCAOverlay(@Nullable ResourceLocation normalSprite, + @Nullable ResourceLocation activeSprite, + @Nullable ResourceLocation damagedSprite, + @Nullable ResourceLocation damagedActiveSprite, + @Nullable ResourceLocation normalSpriteEmissive, + @Nullable ResourceLocation activeSpriteEmissive, + @Nullable ResourceLocation damagedSpriteEmissive, + @Nullable ResourceLocation damagedActiveSpriteEmissive) { + textures.put(Status.IDLE, normalSprite); + emissiveTextures.put(Status.IDLE, normalSpriteEmissive); + + textures.put(Status.WORKING, activeSprite); + emissiveTextures.put(Status.WORKING, activeSpriteEmissive); + + textures.put(Status.WAITING, damagedActiveSprite); + emissiveTextures.put(Status.WAITING, damagedActiveSpriteEmissive); + textures.put(Status.SUSPEND, damagedSprite); + emissiveTextures.put(Status.SUSPEND, damagedSpriteEmissive); + } + + private HPCAOverlay() {} + + private static Status getStatus(boolean active, boolean damaged) { + if (damaged && active) return Status.WAITING; + else if (damaged) return Status.SUSPEND; + else if (active) return Status.WORKING; + else return Status.IDLE; + } + + public @NotNull ResourceLocation getTexture(boolean active, boolean damaged) { + ResourceLocation value = textures.get(getStatus(active, damaged)); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + + public @NotNull ResourceLocation getEmissiveTexture(boolean active, boolean damaged) { + ResourceLocation value = emissiveTextures.get(getStatus(active, damaged)); + return value != null ? value : GTModels.BLANK_TEXTURE; + } +} 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 new file mode 100644 index 00000000000..bf09a89f026 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/WorkableOverlays.java @@ -0,0 +1,134 @@ +package com.gregtechceu.gtceu.client.model.machine.overlays; + +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.GTMachineModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.data.ExistingFileHelper; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class WorkableOverlays { + + public static WorkableOverlays get(ResourceLocation textureDir, ExistingFileHelper fileHelper) { + WorkableOverlays model = new WorkableOverlays(textureDir); + + for (OverlayFace overlayFace : OverlayFace.VALUES) { + final String overlayPath = "/" + GTMachineModels.OVERLAY_PREFIX + overlayFace.getName(); + + // normal + var normalSprite = textureDir.withSuffix(overlayPath); + if (!fileHelper.exists(normalSprite, GTBlockstateProvider.TEXTURE)) { + model.textures.put(overlayFace, StatusTextures.EMPTY); + continue; + } + ResourceLocation activeSprite = normalSprite.withSuffix("_active"); + if (!fileHelper.exists(activeSprite, GTBlockstateProvider.TEXTURE)) activeSprite = normalSprite; + + ResourceLocation pausedSprite = normalSprite.withSuffix("_paused"); + if (!fileHelper.exists(pausedSprite, GTBlockstateProvider.TEXTURE)) pausedSprite = normalSprite; + + // 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 pausedSpriteEmissive = pausedSprite.withSuffix("_emissive"); + if (!fileHelper.exists(pausedSpriteEmissive, GTBlockstateProvider.TEXTURE)) pausedSpriteEmissive = null; + + model.textures.put(overlayFace, new StatusTextures(normalSprite, activeSprite, pausedSprite, + normalSpriteEmissive, activeSpriteEmissive, pausedSpriteEmissive)); + } + return model; + } + + @Getter + private final ResourceLocation location; + + @Getter + private final Map textures = new EnumMap<>(OverlayFace.class); + + public WorkableOverlays(ResourceLocation location) { + this.location = location; + } + + public enum OverlayFace { + + FRONT, + BACK, + TOP, + BOTTOM, + SIDE; + + public static final OverlayFace[] VALUES = values(); + + public static OverlayFace bySide(Direction side) { + return switch (side) { + case DOWN -> BOTTOM; + case UP -> TOP; + case NORTH -> FRONT; + case SOUTH -> BACK; + case WEST, EAST -> SIDE; + }; + } + + public String getName() { + return this.name().toLowerCase(Locale.ROOT); + } + } + + @OnlyIn(Dist.CLIENT) + public static class StatusTextures { + + public static final StatusTextures EMPTY = new StatusTextures(); + + private final Map textures = new EnumMap<>(Status.class); + private final Map emissiveTextures = new EnumMap<>(Status.class); + + public StatusTextures(@Nullable ResourceLocation normalSprite, + @Nullable ResourceLocation activeSprite, + @Nullable ResourceLocation pausedSprite, + @Nullable ResourceLocation normalSpriteEmissive, + @Nullable ResourceLocation activeSpriteEmissive, + @Nullable ResourceLocation pausedSpriteEmissive) { + textures.put(Status.IDLE, normalSprite); + emissiveTextures.put(Status.IDLE, normalSpriteEmissive); + + textures.put(Status.WORKING, activeSprite); + emissiveTextures.put(Status.WORKING, activeSpriteEmissive); + textures.put(Status.WAITING, activeSprite); + emissiveTextures.put(Status.WAITING, activeSpriteEmissive); + + textures.put(Status.SUSPEND, pausedSprite); + emissiveTextures.put(Status.SUSPEND, pausedSpriteEmissive); + } + + private StatusTextures() {} + + public @NotNull ResourceLocation getTexture(@NotNull Status status) { + ResourceLocation value = textures.get(status); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + + public @NotNull ResourceLocation getEmissiveTexture(@NotNull Status status) { + ResourceLocation value = emissiveTextures.get(status); + return value != null ? value : GTModels.BLANK_TEXTURE; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java new file mode 100644 index 00000000000..b33bc67f7be --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java new file mode 100644 index 00000000000..ef54f56a960 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/MultiVariantModel.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.client.model.machine.variant; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.SimpleModelState; + +import com.google.gson.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public record MultiVariantModel(List variants) implements UnbakedModel { + + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (other instanceof MultiVariantModel model) { + return this.variants.equals(model.variants); + } else { + return false; + } + } + + public @NotNull Collection getDependencies() { + return this.variants.stream() + .map(VariantState::getModel) + .flatMap(either -> either.map(Stream::of, model -> model.getDependencies().stream())) + .collect(Collectors.toSet()); + } + + public void resolveParents(@NotNull Function resolver) { + this.variants.forEach((variant) -> { + UnbakedModel model = variant.getModel().map(resolver, Function.identity()); + variant.setResolvedModel(model); + model.resolveParents(resolver); + }); + } + + public @Nullable BakedModel bake(@NotNull ModelBaker baker, + @NotNull Function spriteGetter, + @NotNull ModelState state, @NotNull ResourceLocation location) { + if (this.variants.isEmpty()) { + return null; + } else { + WeightedBakedModel.Builder weightedBuilder = new WeightedBakedModel.Builder(); + + for (VariantState variant : this.variants) { + // rotate the transform by both the variant and the original blockstate rotation + var actualRotation = state.getRotation().compose(variant.getRotation()); + var actualState = new SimpleModelState(actualRotation, variant.isUvLocked()); + + BakedModel baked = variant.getResolvedModel().bake(baker, spriteGetter, actualState, location); + weightedBuilder.add(baked, variant.getWeight()); + } + return weightedBuilder.build(); + } + } + + @OnlyIn(Dist.CLIENT) + public static class Deserializer implements JsonDeserializer { + + public MultiVariantModel deserialize(JsonElement json, Type type, JsonDeserializationContext context) + throws JsonParseException { + List variants = new ArrayList<>(); + if (json.isJsonArray()) { + JsonArray array = json.getAsJsonArray(); + if (array.isEmpty()) { + throw new JsonParseException("Empty variant array"); + } + + for (JsonElement v : array) { + variants.add(context.deserialize(v, VariantState.class)); + } + } else { + variants.add(context.deserialize(json, VariantState.class)); + } + + return new MultiVariantModel(variants); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java new file mode 100644 index 00000000000..3de267472fd --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/variant/VariantState.java @@ -0,0 +1,93 @@ +package com.gregtechceu.gtceu.client.model.machine.variant; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.util.VariantRotationHelpers; + +import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; + +import com.google.gson.*; +import com.mojang.datafixers.util.Either; +import com.mojang.math.Transformation; +import lombok.Getter; +import lombok.Setter; + +import java.lang.reflect.Type; +import java.util.Objects; + +public class VariantState implements ModelState { + + @Getter + private final Either model; + @Getter + private final Transformation rotation; + @Getter + private final boolean uvLocked; + @Getter + private final int weight; + @Getter + @Setter + private UnbakedModel resolvedModel; + + public VariantState(Either model, + Transformation rotation, boolean uvLocked, int weight) { + this.model = model; + this.rotation = rotation; + this.uvLocked = uvLocked; + this.weight = weight; + } + + public boolean equals(Object other) { + if (this == other) { + return true; + } else if (!(other instanceof VariantState variantState)) { + return false; + } else { + return this.model.equals(variantState.model) && + Objects.equals(this.rotation, variantState.rotation) && + this.uvLocked == variantState.uvLocked && + this.weight == variantState.weight; + } + } + + public int hashCode() { + int i = this.model.hashCode(); + i = 31 * i + this.rotation.hashCode(); + i = 31 * i + Boolean.valueOf(this.uvLocked).hashCode(); + return 31 * i + this.weight; + } + + public static class Deserializer implements JsonDeserializer { + + public VariantState deserialize(JsonElement json, Type type, JsonDeserializationContext context) + throws JsonParseException { + JsonObject obj = json.getAsJsonObject(); + var model = MachineModelLoader.parseVariant(obj.get("model"), context); + var rot = this.getBlockRotation(obj); + boolean isUvLock = GsonHelper.getAsBoolean(obj, "uvlock", false); + int weight = this.getWeight(obj); + return new VariantState(model, rot, isUvLock, weight); + } + + protected Transformation getBlockRotation(JsonObject json) { + int x = GsonHelper.getAsInt(json, "x", 0); + int y = GsonHelper.getAsInt(json, "y", 0); + int z = GsonHelper.getAsInt(json, GTBlockstateProvider.Z_ROT_PROPERTY_NAME, 0); + Transformation rotation = VariantRotationHelpers.getRotationTransform(x, y, z); + if (rotation != null) return rotation; + else throw new JsonParseException("Invalid ExtendedBlockModelRotation x: " + x + ", y: " + y + ", z: " + z); + } + + protected int getWeight(JsonObject json) { + int i = GsonHelper.getAsInt(json, "weight", 1); + if (i < 1) { + throw new JsonParseException("Invalid weight " + i + " found, expected integer >= 1"); + } else { + return i; + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java new file mode 100644 index 00000000000..756fd4d977e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/model/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.model; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java new file mode 100644 index 00000000000..f64a719b510 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockEntityWithBERModelRenderer.java @@ -0,0 +1,99 @@ +package com.gregtechceu.gtceu.client.renderer; + +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; + +import javax.annotation.ParametersAreNonnullByDefault; + +@SuppressWarnings("unchecked") +@OnlyIn(Dist.CLIENT) +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class BlockEntityWithBERModelRenderer implements BlockEntityRenderer { + + private final BlockRenderDispatcher blockRenderDispatcher; + + public BlockEntityWithBERModelRenderer(BlockEntityRendererProvider.Context context) { + this.blockRenderDispatcher = context.getBlockRenderDispatcher(); + } + + @Override + public void render(T blockEntity, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() != blockEntity.getType()) return; + + ((IBlockEntityRendererBakedModel) berModel).render(blockEntity, partialTick, + poseStack, buffer, packedLight, packedOverlay); + } else { + Level level = blockEntity.getLevel(); + BlockPos pos = blockEntity.getBlockPos(); + + // noinspection DataFlowIssue,UnstableApiUsage + ModelData modelData = level.getModelDataManager().getAt(pos); + if (modelData == null) modelData = ModelData.EMPTY; + + long randomSeed = blockState.getSeed(pos); + RandomSource random = RandomSource.create(); + random.setSeed(randomSeed); + + for (RenderType renderType : model.getRenderTypes(blockState, random, modelData)) { + VertexConsumer consumer = buffer.getBuffer(renderType); + blockRenderDispatcher.getModelRenderer() + .tesselateBlock(level, model, blockState, pos, + poseStack, consumer, true, random, randomSeed, + OverlayTexture.NO_OVERLAY, modelData, renderType); + } + } + } + + @Override + public boolean shouldRenderOffScreen(T blockEntity) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() == blockEntity.getType()) { + return ((IBlockEntityRendererBakedModel) berModel).shouldRenderOffScreen(blockEntity); + } + } + return BlockEntityRenderer.super.shouldRenderOffScreen(blockEntity); + } + + @Override + public boolean shouldRender(T blockEntity, Vec3 cameraPos) { + BlockState blockState = blockEntity.getBlockState(); + BakedModel model = blockRenderDispatcher.getBlockModel(blockState); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + if (berModel.getBlockEntityType() == blockEntity.getType()) { + return ((IBlockEntityRendererBakedModel) berModel).shouldRender(blockEntity, cameraPos); + } + } + return BlockEntityRenderer.super.shouldRender(blockEntity, cameraPos); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java index 69f48e2e5f7..de352d7f65a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java @@ -8,16 +8,18 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.pipenet.IPipeType; +import com.gregtechceu.gtceu.client.util.PoseStackExtensions; +import com.gregtechceu.gtceu.client.util.RenderUtil; import com.gregtechceu.gtceu.common.item.CoverPlaceBehavior; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; @@ -33,17 +35,19 @@ import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.*; +import lombok.experimental.ExtensionMethod; +import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; -import org.joml.Quaternionf; import org.joml.Vector3f; import java.util.Set; import java.util.function.Function; +import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; + @OnlyIn(Dist.CLIENT) +@ExtensionMethod(PoseStackExtensions.class) public class BlockHighlightRenderer { public static void renderBlockHighlight(PoseStack poseStack, Camera camera, BlockHitResult target, @@ -58,6 +62,7 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc Set toolType = ToolHelper.getToolTypes(held); BlockEntity blockEntity = level.getBlockEntity(blockPos); + Vec3 cameraPos = camera.getPosition(); // draw tool grid highlight if ((!toolType.isEmpty()) || (held.isEmpty() && player.isShiftKeyDown())) { IToolGridHighlight gridHighlight = null; @@ -71,8 +76,8 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc gridHighlight = new IToolGridHighlight() { @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, - Set toolTypes, Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, + Set toolTypes, Direction side) { return behavior.showSideTip(state, side) ? GuiTextures.TOOL_FRONT_FACING_ROTATION : null; } @@ -83,14 +88,10 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, return; } var state = level.getBlockState(blockPos); - Vec3 pos = camera.getPosition(); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); if (gridHighlight.shouldRenderGrid(player, blockPos, state, held, toolType)) { - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); final IToolGridHighlight finalGridHighlight = gridHighlight; - drawGridOverlays(poseStack, buffer, target, + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, side -> finalGridHighlight.sideTips(player, blockPos, state, toolType, side)); } else { var facing = target.getDirection(); @@ -99,20 +100,24 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - poseStack.translate(facing.getStepX() * 0.01, facing.getStepY() * 0.01, - facing.getStepZ() * 0.01); - RenderUtils.moveToFace(poseStack, blockPos.getX(), blockPos.getY(), blockPos.getZ(), facing); + poseStack.translate(facing.getStepX() * 0.01f, facing.getStepY() * 0.01f, + facing.getStepZ() * 0.01f); + RenderUtil.moveToFace(poseStack, + blockPos.getX() - cameraPos.x(), + blockPos.getY() - cameraPos.y(), + blockPos.getZ() - cameraPos.z(), + facing); if (facing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, facing, Direction.SOUTH); + RenderUtil.rotateToFace(poseStack, facing, Direction.SOUTH); } else { - RenderUtils.rotateToFace(poseStack, facing, null); + RenderUtil.rotateToFace(poseStack, facing, Direction.NORTH); } poseStack.scale(1f / 16, 1f / 16, 0); poseStack.translate(-8, -8, 0); - texture.copy() - .draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), 0, 0, 4, 4, - 8, 8); + + drawResourceTexture(poseStack, multiBufferSource, texture, 0xffffffff, + 4, 4, 8, 8); + RenderSystem.disableBlend(); RenderSystem.enableDepthTest(); } @@ -125,13 +130,9 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, ICoverable coverable = GTCapabilityHelper.getCoverable(level, blockPos, target.getDirection()); if (coverable != null && CoverPlaceBehavior.isCoverBehaviorItem(held, coverable::hasAnyCover, coverDef -> ICoverable.canPlaceCover(coverDef, coverable))) { - Vec3 pos = camera.getPosition(); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); - drawGridOverlays(poseStack, buffer, target, + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, side -> coverable.hasCover(side) ? null : GuiTextures.TOOL_ATTACH_COVER); poseStack.popPose(); @@ -142,14 +143,11 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, null; if (pipeType instanceof IPipeType type && blockEntity instanceof PipeBlockEntity pipeBlockEntity && pipeBlockEntity.getPipeType().type().equals(type.type())) { - Vec3 pos = camera.getPosition(); poseStack.pushPose(); - poseStack.translate(-pos.x, -pos.y, -pos.z); - var buffer = multiBufferSource.getBuffer(RenderType.lines()); - RenderSystem.lineWidth(3); - drawGridOverlays(poseStack, buffer, target, side -> level.isEmptyBlock(blockPos.relative(side)) ? - pipeBlockEntity.getPipeTexture(true) : null); + drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, + side -> level.isEmptyBlock(blockPos.relative(side)) ? + pipeBlockEntity.getPipeTexture(true) : null); poseStack.popPose(); } @@ -160,16 +158,16 @@ public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, private static float gColour; private static float bColour; - private static void drawGridOverlays(PoseStack poseStack, VertexConsumer buffer, BlockHitResult blockHitResult, - Function test) { + private static void drawGridOverlays(PoseStack poseStack, MultiBufferSource bufferSource, Vec3 cameraPos, + BlockHitResult blockHitResult, Function texture) { rColour = gColour = 0.2F + (float) Math.sin((System.currentTimeMillis() % (Mth.PI * 800)) / 800) / 2; bColour = 1f; var blockPos = blockHitResult.getBlockPos(); var facing = blockHitResult.getDirection(); - float maxX = blockPos.getX() + 1; float minX = blockPos.getX(); - float maxY = blockPos.getY() + 1; + float maxX = blockPos.getX() + 1; float minY = blockPos.getY(); + float maxY = blockPos.getY() + 1; float maxZ = blockPos.getZ() + 1.01f; var attachSide = ICoverable.traceCoverSide(blockHitResult); var topRight = new Vector3f(maxX, maxY, maxZ); @@ -186,122 +184,36 @@ private static void drawGridOverlays(PoseStack poseStack, VertexConsumer buffer, bottomLeft.sub(cubeCenter); topLeft.sub(cubeCenter); - ResourceTexture leftBlocked; - ResourceTexture topBlocked; - ResourceTexture rightBlocked; - ResourceTexture bottomBlocked; - ResourceTexture frontBlocked = test.apply(facing); - ResourceTexture backBlocked = test.apply(facing.getOpposite()); - boolean hoverLeft, hoverTop, hoverRight, hoverBottom, hoverFront, hoverBack; - hoverFront = attachSide == facing; - hoverBack = attachSide == facing.getOpposite(); - final Vector3f down = new Vector3f(0, -1, 0); - - switch (facing) { - case WEST -> { - topRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - shift.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, down)); - - leftBlocked = test.apply(Direction.NORTH); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.SOUTH); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.NORTH; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.SOUTH; - hoverBottom = attachSide == Direction.DOWN; - } - case EAST -> { - topRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - shift.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, down)); - - leftBlocked = test.apply(Direction.SOUTH); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.NORTH); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.SOUTH; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.NORTH; - hoverBottom = attachSide == Direction.DOWN; - } - case NORTH -> { - topRight.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - shift.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.PI, down)); - - leftBlocked = test.apply(Direction.EAST); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.WEST); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.EAST; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.WEST; - hoverBottom = attachSide == Direction.DOWN; - } - case UP -> { - Vector3f side = new Vector3f(1, 0, 0); - topRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - bottomRight.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - bottomLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - topLeft.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - shift.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - shiftVert.rotate(new Quaternionf().rotateAxis(-Mth.HALF_PI, side)); - - leftBlocked = test.apply(Direction.EAST); - topBlocked = test.apply(Direction.SOUTH); - rightBlocked = test.apply(Direction.WEST); - bottomBlocked = test.apply(Direction.NORTH); - hoverLeft = attachSide == Direction.EAST; - hoverTop = attachSide == Direction.SOUTH; - hoverRight = attachSide == Direction.WEST; - hoverBottom = attachSide == Direction.NORTH; - } - case DOWN -> { - Vector3f side = new Vector3f(1, 0, 0); - topRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - bottomRight.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - bottomLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - topLeft.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - shift.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - shiftVert.rotate(new Quaternionf().rotateAxis(Mth.HALF_PI, side)); - - leftBlocked = test.apply(Direction.WEST); - topBlocked = test.apply(Direction.SOUTH); - rightBlocked = test.apply(Direction.EAST); - bottomBlocked = test.apply(Direction.NORTH); - hoverLeft = attachSide == Direction.WEST; - hoverTop = attachSide == Direction.SOUTH; - hoverRight = attachSide == Direction.EAST; - hoverBottom = attachSide == Direction.NORTH; - } - default -> { - leftBlocked = test.apply(Direction.WEST); - topBlocked = test.apply(Direction.UP); - rightBlocked = test.apply(Direction.EAST); - bottomBlocked = test.apply(Direction.DOWN); - hoverLeft = attachSide == Direction.WEST; - hoverTop = attachSide == Direction.UP; - hoverRight = attachSide == Direction.EAST; - hoverBottom = attachSide == Direction.DOWN; - } - } + var south = Direction.SOUTH.step(); + var frontVec = getDirectionAxis(facing); + var rotationAngle = getRotationAngle(south, frontVec); + var rotationAxis = getRotationAxis(south, frontVec); + topRight.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); + bottomRight.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); + bottomLeft.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); + topLeft.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); + + Direction front = facing; + Direction back = facing.getOpposite(); + Direction left = RelativeDirection.LEFT.getActualDirection(facing); + Direction right = RelativeDirection.RIGHT.getActualDirection(facing); + Direction top = RelativeDirection.UP.getActualDirection(facing); + Direction bottom = RelativeDirection.DOWN.getActualDirection(facing); + + ResourceTexture leftBlocked = texture.apply(left); + ResourceTexture rightBlocked = texture.apply(right); + ResourceTexture topBlocked = texture.apply(top); + ResourceTexture bottomBlocked = texture.apply(bottom); + ResourceTexture frontBlocked = texture.apply(front); + ResourceTexture backBlocked = texture.apply(back); topRight.add(cubeCenter); bottomRight.add(cubeCenter); bottomLeft.add(cubeCenter); topLeft.add(cubeCenter); + var buffer = bufferSource.getBuffer(RenderType.lines()); + RenderSystem.lineWidth(3); var mat = poseStack.last().pose(); // straight top bottom lines drawLine(mat, buffer, new Vector3f(topRight).add(new Vector3f(shift).mul(-1)), @@ -320,38 +232,43 @@ private static void drawGridOverlays(PoseStack poseStack, VertexConsumer buffer, RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - poseStack.translate(facing.getStepX() * 0.01, facing.getStepY() * 0.01, facing.getStepZ() * 0.01); - RenderUtils.moveToFace(poseStack, blockPos.getX(), blockPos.getY(), blockPos.getZ(), facing); - if (facing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, facing, Direction.SOUTH); - } else { - RenderUtils.rotateToFace(poseStack, facing, null); - } + poseStack.translate(facing.getStepX() * 0.01f, facing.getStepY() * 0.01f, facing.getStepZ() * 0.01f); + RenderUtil.moveToFace(poseStack, + blockPos.getX() - cameraPos.x(), + blockPos.getY() - cameraPos.y(), + blockPos.getZ() - cameraPos.z(), + facing); + RenderUtil.rotateToFace(poseStack, facing, Direction.SOUTH); poseStack.scale(1f / 16, 1f / 16, 0); poseStack.translate(-8, -8, 0); + poseStack.scale(0.9f, 0.9f, 1); - var graphics = GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())); if (leftBlocked != null) { - leftBlocked.copy().scale(0.9f).setColor(hoverLeft ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 6, 4, 4); + int color = attachSide == left ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, leftBlocked, color, 0, 6, 4, 4); } if (topBlocked != null) { - topBlocked.copy().scale(0.9f).setColor(hoverTop ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 0, 4, 4); + int color = attachSide == top ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, topBlocked, color, 6, 12, 4, 4); } if (rightBlocked != null) { - rightBlocked.copy().scale(0.9f).setColor(hoverRight ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 6, 4, 4); + int color = attachSide == right ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, rightBlocked, color, 12, 6, 4, 4); } if (bottomBlocked != null) { - bottomBlocked.copy().scale(0.9f).setColor(hoverBottom ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 12, 4, 4); + int color = attachSide == bottom ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, bottomBlocked, color, 6, 0, 4, 4); } if (frontBlocked != null) { - frontBlocked.copy().scale(0.9f).setColor(hoverFront ? -1 : 0x44ffffff).draw(graphics, 0, 0, 6, 6, 4, 4); + int color = attachSide == front ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, frontBlocked, color, 6, 6, 4, 4); } if (backBlocked != null) { - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 0, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 0, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 0, 12, 4, 4); - backBlocked.copy().scale(0.9f).setColor(hoverBack ? -1 : 0x44ffffff).draw(graphics, 0, 0, 12, 12, 4, 4); + int color = attachSide == back ? 0xffffffff : 0x44ffffff; + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 0, 0, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 12, 0, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 0, 12, 4, 4); + drawResourceTexture(poseStack, bufferSource, backBlocked, color, 12, 12, 4, 4); } RenderSystem.disableBlend(); RenderSystem.enableDepthTest(); @@ -370,4 +287,19 @@ private static void drawLine(Matrix4f mat, VertexConsumer buffer, Vector3f from, .normal(normal.x, normal.y, normal.z) .endVertex(); } + + private static void drawResourceTexture(PoseStack poseStack, MultiBufferSource bufferSource, + ResourceTexture texture, int color, + float x, float y, float w, float h) { + VertexConsumer consumer = bufferSource.getBuffer(RenderType.text(texture.imageLocation)); + var pose = poseStack.last().pose(); + float u0 = texture.offsetX, v0 = texture.offsetY; + float u1 = texture.imageWidth, v1 = texture.imageHeight; + // spotless:off + consumer.vertex(pose, x, y + h, 0).color(color).uv(u0, v0 + v1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x + w, y + h, 0).color(color).uv(u0 + u1, v0 + v1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x + w, y, 0).color(color).uv(u0 + u1, v0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, x, y, 0).color(color).uv(u0, v0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + // spotless:on + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java deleted file mode 100644 index 1f7e7f00087..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockStateModelRenderer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer; - -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -public class BlockStateModelRenderer implements IRenderer { - - private final Map models; - - public BlockStateModelRenderer(Block block, Function predicate) { - this.models = new HashMap<>(); - for (BlockState state : block.getStateDefinition().getPossibleStates()) { - models.put(state, predicate.apply(state)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useAO() { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - if (models.containsKey(state)) { - return models.get(state).renderModel(level, pos, state, side, rand); - } - return Collections.emptyList(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java deleted file mode 100644 index 8bcc4e8219a..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRendererProvider.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer; - -import com.lowdragmc.lowdraglib.client.renderer.ATESRRendererProvider; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import javax.annotation.ParametersAreNonnullByDefault; - -@OnlyIn(Dist.CLIENT) -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class GTRendererProvider extends ATESRRendererProvider { - - private static GTRendererProvider INSTANCE; - - private GTRendererProvider(BlockEntityRendererProvider.Context context) { - // ModelBellows.INSTANCE = new ModelBellows(context); - // ModelHungryChest.INSTANCE = new ModelHungryChest(context); - } - - public static GTRendererProvider getOrCreate(BlockEntityRendererProvider.Context context) { - if (INSTANCE == null) { - INSTANCE = new GTRendererProvider(context); - } - return INSTANCE; - } - - @Nullable - public static GTRendererProvider getInstance() { - return INSTANCE; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java new file mode 100644 index 00000000000..6a62552f879 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/ItemWithBERModelRenderer.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.renderer; + +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HalfTransparentBlock; +import net.minecraft.world.level.block.StainedGlassPaneBlock; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.jetbrains.annotations.NotNull; + +public class ItemWithBERModelRenderer extends BlockEntityWithoutLevelRenderer { + + public static final ItemWithBERModelRenderer INSTANCE = new ItemWithBERModelRenderer(); + + protected final ItemRenderer itemRenderer; + + protected ItemWithBERModelRenderer() { + super(Minecraft.getInstance().getBlockEntityRenderDispatcher(), + Minecraft.getInstance().getEntityModels()); + this.itemRenderer = Minecraft.getInstance().getItemRenderer(); + } + + @Override + public void renderByItem(@NotNull ItemStack stack, @NotNull ItemDisplayContext displayContext, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay) { + Level level = Minecraft.getInstance().level; + Player player = Minecraft.getInstance().player; + BakedModel model = itemRenderer.getModel(stack, level, player, 0); + + if (model instanceof IBlockEntityRendererBakedModel berModel) { + berModel.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } else { + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + // also render the normal model here + // because MC skips it if the model is a custom renderer + boolean fabulous = true; + if (displayContext != ItemDisplayContext.GUI && !displayContext.firstPerson() && + stack.getItem() instanceof BlockItem blockItem) { + Block block = blockItem.getBlock(); + fabulous = !(block instanceof HalfTransparentBlock) && !(block instanceof StainedGlassPaneBlock); + } + + for (var renderPass : model.getRenderPasses(stack, fabulous)) { + for (var renderType : renderPass.getRenderTypes(stack, fabulous)) { + VertexConsumer consumer; + if (fabulous) { + consumer = ItemRenderer.getFoilBufferDirect(buffer, renderType, true, stack.hasFoil()); + } else { + consumer = ItemRenderer.getFoilBuffer(buffer, renderType, true, stack.hasFoil()); + } + + itemRenderer.renderModelLists(renderPass, stack, packedLight, packedOverlay, poseStack, consumer); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java index f5bc73abffa..d9c4c3ca16b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/MultiblockInWorldPreviewRenderer.java @@ -285,7 +285,7 @@ public static void renderInWorldPreview(PoseStack poseStack, Camera camera, floa .getBlockEntityRenderDispatcher().getRenderer(tile); if (ber != null) { if (tile.hasLevel() && tile.getType().isValid(tile.getBlockState())) { - ber.render(tile, partialTicks, poseStack, buffers, 0xF000F0, + ber.render(tile, partialTicks, poseStack, buffers, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java deleted file mode 100644 index 4bbfa9f6072..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/CTMModelRenderer.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.block; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class CTMModelRenderer extends IModelRenderer { - - public CTMModelRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean reBakeCustomQuads() { - return true; - } - - @Override - public float reBakeCustomQuadsOffset() { - return 0.000f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java index 31e7bd58312..e8a9e820e37 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/FluidBlockRenderer.java @@ -2,26 +2,33 @@ import com.gregtechceu.gtceu.client.util.RenderUtil; +import net.minecraft.client.renderer.LightTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.world.level.lighting.LightEngine; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import lombok.Data; import lombok.Getter; import org.joml.Matrix4f; import org.joml.Vector3f; +import org.joml.Vector3fc; -import java.util.Collection; -import java.util.Map; -import java.util.Set; +import java.util.*; import static com.gregtechceu.gtceu.client.util.RenderUtil.*; import static net.minecraft.util.FastColor.ARGB32.*; public class FluidBlockRenderer { + public static final MapCodec CODEC = Properties.CODEC + .xmap(FluidBlockRenderer::new, FluidBlockRenderer::getProperties); + @Getter private final Properties properties; @@ -29,19 +36,19 @@ protected FluidBlockRenderer(Properties properties) { this.properties = properties; } - public Vector3f[] transformVertices(Vector3f[] vertices, Direction face) { - var newVertices = new Vector3f[4]; + public Vector3f[] transformVertices(Vector3fc[] vertices, Direction face) { float offsetX = properties.offsetX, offsetY = properties.offsetY, offsetZ = properties.offsetZ; - switch (face) { - case DOWN, UP -> offsetY += properties.offsetFace; - case NORTH, SOUTH -> offsetZ += properties.offsetFace; - case WEST, EAST -> offsetX += properties.offsetFace; + switch (face.getAxis()) { + case X -> offsetX += properties.offsetFace; + case Y -> offsetY += properties.offsetFace; + case Z -> offsetZ += properties.offsetFace; } - for (int i = 0; i < 4; i++) + var newVertices = new Vector3f[4]; + for (int i = 0; i < 4; i++) { newVertices[i] = RenderUtil.transformVertex(vertices[i], face, offsetX, offsetY, offsetZ); - + } return newVertices; } @@ -131,39 +138,52 @@ public void drawFace(Direction face, Matrix4f pose, VertexConsumer consumer, Flu drawFace(pose, consumer, vertices, normal, u0, u1, v0, v1, r, g, b, a, combinedOverlay, combinedLight); } - public void drawFace(Matrix4f pose, VertexConsumer consumer, Vector3f[] vertices, Vector3f normal, float u0, - float u1, float v0, float v1, int r, int g, int b, int a, int combinedOverlay, - int combinedLight) { + public void drawFace(Matrix4f pose, VertexConsumer consumer, Vector3f[] vertices, Vector3fc normal, + float u0, float u1, float v0, float v1, + int r, int g, int b, int a, + int combinedOverlay, int combinedLight) { if (properties.isOverwriteLight()) combinedLight = properties.getLight(); var vert = vertices[0]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u0, v1, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[1]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u0, v0, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[2]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u1, v0, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); vert = vertices[3]; RenderUtil.vertex(pose, consumer, vert.x, vert.y, vert.z, r, g, b, a, u1, v1, - combinedOverlay, combinedLight, normal.x, normal.y, normal.z); + combinedOverlay, combinedLight, normal.x(), normal.y(), normal.z()); } @Data public static class Properties { + // spotless:off + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( + Codec.FLOAT.optionalFieldOf("offset_x", 0.0f).forGetter(Properties::getOffsetX), + Codec.FLOAT.optionalFieldOf("offset_y", 0.0f).forGetter(Properties::getOffsetY), + Codec.FLOAT.optionalFieldOf("offset_z", 0.0f).forGetter(Properties::getOffsetZ), + Codec.FLOAT.optionalFieldOf("offset_face", 0.0f).forGetter(Properties::getOffsetFace), + Codec.BOOL.optionalFieldOf("overwrite_light", false).forGetter(Properties::isOverwriteLight), + Codec.intRange(0, LightEngine.MAX_LEVEL).optionalFieldOf("block_light", 0).forGetter(Properties::getBlockLight), + Codec.intRange(0, LightEngine.MAX_LEVEL).optionalFieldOf("sky_light", 0).forGetter(Properties::getSkyLight) + ).apply(instance, Properties::of)); + // spotless:on + private float offsetX = 0; private float offsetY = 0; private float offsetZ = 0; @@ -171,9 +191,32 @@ public static class Properties { private boolean overwriteLight = false; private int light = 0; - private Direction[] drawFaces = Direction.values(); - public Properties() {} + + public static Properties of(float offsetX, float offsetY, float offsetZ, float offsetFace, + boolean overwriteLight, int light) { + Properties p = new Properties(); + p.setOffsetX(offsetX); + p.setOffsetY(offsetY); + p.setOffsetZ(offsetZ); + p.setOffsetFace(offsetFace); + p.setOverwriteLight(overwriteLight); + p.setLight(light); + return p; + } + + private int getBlockLight() { + return LightTexture.block(this.light); + } + + private int getSkyLight() { + return LightTexture.sky(this.light); + } + + private static Properties of(float offsetX, float offsetY, float offsetZ, float offsetFace, + boolean overwriteLight, int blockLight, int skyLight) { + return of(offsetX, offsetY, offsetZ, offsetFace, overwriteLight, LightTexture.pack(blockLight, skyLight)); + } } public static class Builder { @@ -210,6 +253,12 @@ public Builder setForcedLight(int light) { return this; } + public Builder setForcedLight(int block, int sky) { + properties.setLight(LightTexture.pack(block, sky)); + properties.setOverwriteLight(true); + return this; + } + public FluidBlockRenderer getRenderer() { return new FluidBlockRenderer(properties); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java index afe287e5b0c..193c889179f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/MaterialBlockRenderer.java @@ -26,7 +26,7 @@ public static void reinitModels() { for (MaterialBlockRenderer model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - GTDynamicResourcePack.addBlockModel(modelId, + GTDynamicResourcePack.addBlockModel(blockId, new DelegatedModel(model.type.getBlockModelPath(model.iconSet, true))); GTDynamicResourcePack.addBlockState(blockId, BlockModelGenerators.createSimpleBlock(model.block, modelId)); GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.block.asItem()), diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java index 50aee4338b2..563f1bc6682 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java @@ -43,7 +43,7 @@ public static void reinitModels() { for (OreBlockRenderer model : MODELS) { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - OreBlockRenderer.cloneBlockModel(modelId, model.block.tagPrefix, model.block.material); + OreBlockRenderer.cloneBlockModel(blockId, model.block.tagPrefix, model.block.material); GTDynamicResourcePack.addBlockState(blockId, BlockModelGenerators.createSimpleBlock(model.block, modelId)); GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.block.asItem()), new DelegatedModel(ModelLocationUtils.getModelLocation(model.block))); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java index 7ca30cc8a84..0b8f3555ed1 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java @@ -1,14 +1,12 @@ package com.gregtechceu.gtceu.client.renderer.block; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.client.model.PipeModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import net.minecraft.client.Minecraft; @@ -27,6 +25,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import com.mojang.blaze3d.vertex.PoseStack; import lombok.Getter; @@ -80,14 +79,10 @@ public List renderModel(BlockAndTintGetter level, BlockPos pos, Block } else if (level.getBlockEntity(pos) instanceof IPipeNode pipeNode) { var quads = new LinkedList<>( pipeModel.bakeQuads(side, pipeNode.getVisualConnections(), pipeNode.getBlockedConnections())); - var modelState = ModelFactory.getRotation(pipeNode.getCoverContainer().getFrontFacing()); - var modelFacing = side == null ? null : - ModelFactory.modelFacing(side, pipeNode.getCoverContainer().getFrontFacing()); - ICoverableRenderer.super.renderCovers(quads, side, rand, pipeNode.getCoverContainer(), modelFacing, pos, - level, modelState); + + ICoverableRenderer.super.renderCovers(quads, pipeNode.getCoverContainer(), pos, level, side, rand, + ModelData.EMPTY, null); if (!pipeNode.getFrameMaterial().isNull()) { - ResourceLocation rl = MaterialIconType.frameGt - .getBlockTexturePath(pipeNode.getFrameMaterial().getMaterialIconSet(), true); BlockState blockState = GTMaterialBlocks.MATERIAL_BLOCKS .get(TagPrefix.frameGt, pipeNode.getFrameMaterial()) .getDefaultState(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java index c77cba559f7..4469c766f4e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/SurfaceRockRenderer.java @@ -35,7 +35,7 @@ public static void reinitModels() { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = blockId.withPrefix("block/"); - GTDynamicResourcePack.addBlockModel(modelId, new DelegatedModel(GTCEu.id("block/surface_rock"))); + GTDynamicResourcePack.addBlockModel(blockId, new DelegatedModel(GTCEu.id("block/surface_rock"))); GTDynamicResourcePack.addBlockState(blockId, MultiVariantGenerator .multiVariant(model.block, Variant.variant().with(VariantProperties.MODEL, modelId)) .with(PropertyDispatch.property(BlockStateProperties.FACING) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java deleted file mode 100644 index fe15c649ef5..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/TextureOverrideRenderer.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.block; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.model.SpriteOverrider; - -import com.lowdragmc.lowdraglib.LDLib; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import lombok.Getter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Consumer; -import java.util.function.Supplier; - -@Getter -public class TextureOverrideRenderer extends CTMModelRenderer { - - @NotNull - protected Map override; - @Nullable - protected Supplier> overrideSupplier; - @OnlyIn(Dist.CLIENT) - protected Map bakedModelCache; - - public TextureOverrideRenderer(ResourceLocation model, @NotNull Map override) { - super(model); - this.override = override; - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - public TextureOverrideRenderer(ResourceLocation model, - @NotNull Supplier> overrideSupplier) { - super(model); - this.override = Collections.emptyMap(); - this.overrideSupplier = overrideSupplier; - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - public TextureOverrideRenderer(ResourceLocation model) { - super(model); - this.override = Collections.emptyMap(); - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - public void initRenderer() { - if (GTCEu.isClientSide()) { - this.bakedModelCache = new ConcurrentHashMap<>(); - } - super.initRenderer(); - } - - public void setTextureOverride(Map override) { - this.override = override; - } - - @Nullable - @OnlyIn(Dist.CLIENT) - protected BakedModel getItemBakedModel() { - if (itemModel == null) { - var model = getModel(); - if (model instanceof BlockModel blockModel && blockModel.getRootModel() == ModelBakery.GENERATION_MARKER) { - // fabric doesn't help us to fix vanilla bakery, so we have to do it ourselves - model = ModelFactory.ITEM_MODEL_GENERATOR.generateBlockModel(new SpriteOverrider(override), blockModel); - } - itemModel = model.bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - BlockModelRotation.X0_Y0, - modelLocation); - } - return itemModel; - } - - @SuppressWarnings("removal") - @Override - @OnlyIn(Dist.CLIENT) - public BakedModel getRotatedModel(Direction frontFacing) { - return blockModels.computeIfAbsent(frontFacing, facing -> getModel().bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - ModelFactory.getRotation(facing), - modelLocation)); - } - - @OnlyIn(Dist.CLIENT) - public BakedModel getRotatedModel(ModelState modelState) { - return bakedModelCache.computeIfAbsent(modelState, state -> getModel().bake( - ModelFactory.getModeBaker(), - new SpriteOverrider(override), - modelState, - modelLocation)); - } - - @SuppressWarnings("deprecation") - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { // prepare for override. - if (bakedModelCache != null) { - bakedModelCache.clear(); - } - if (overrideSupplier != null) override = overrideSupplier.get(); - for (ResourceLocation value : override.values()) { - register.accept(value); - } - } - } - - @Override - public void updateModelWithoutReloadingResource(ResourceLocation modelLocation) { - super.updateModelWithoutReloadingResource(modelLocation); - if (LDLib.isClient()) { - if (bakedModelCache != null) { - bakedModelCache.clear(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java deleted file mode 100644 index c498c9b7c91..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ConveyorCoverRenderer.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.ConveyorCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class ConveyorCoverRenderer implements ICoverRenderer { - - public final static ConveyorCoverRenderer INSTANCE = new ConveyorCoverRenderer(); - public final static ResourceLocation CONVEYOR_OVERLAY = GTCEu.id("block/cover/overlay_conveyor"); - public final static ResourceLocation CONVEYOR_OVERLAY_OUT = GTCEu.id("block/cover/overlay_conveyor_emissive"); - public final static ResourceLocation CONVEYOR_OVERLAY_IN = GTCEu - .id("block/cover/overlay_conveyor_inverted_emissive"); - - protected ConveyorCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof ConveyorCover conveyor && - modelFacing != null) { - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVEYOR_OVERLAY), modelState)); - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory - .getBlockSprite(conveyor.getIo() == IO.OUT ? CONVEYOR_OVERLAY_OUT : CONVEYOR_OVERLAY_IN), - modelState, -101, 15)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CONVEYOR_OVERLAY); - register.accept(CONVEYOR_OVERLAY_IN); - register.accept(CONVEYOR_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 1944bf76499..82642e38c25 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -1,28 +1,24 @@ package com.gregtechceu.gtceu.client.renderer.cover; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.model.ModelUtil; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.ItemBakedModel; +import com.gregtechceu.gtceu.client.util.FacadeBlockAndTintGetter; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.cover.FacadeCover; import com.gregtechceu.gtceu.common.item.FacadeItemBehaviour; import com.gregtechceu.gtceu.utils.GTUtil; -import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.utils.FacadeBlockAndTintGetter; - +import net.minecraft.Util; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.RenderShape; @@ -30,109 +26,137 @@ import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; -import com.mojang.blaze3d.vertex.PoseStack; +import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import org.jetbrains.annotations.NotNull; -import org.joml.AxisAngle4d; -import org.joml.Quaternionf; +import org.jetbrains.annotations.Nullable; -import java.util.LinkedList; -import java.util.List; +import java.util.*; /** * It can only be used for item. * call it in other renderer to render a facade cover. */ -public class FacadeCoverRenderer implements ICoverRenderer { +public class FacadeCoverRenderer extends BaseBakedModel implements ICoverRenderer { + + private static final AABB FACADE_PLANE = new AABB(0.01, 0.01, 0.01, 0.99, 0.99, 1 / 16f); + private static final EnumSet FACADE_EDGE_FACES = EnumSet.of(Direction.DOWN, Direction.UP, + Direction.SOUTH, Direction.WEST, Direction.EAST); + private static final Map COVER_BACK_CUBES = Util.make(new EnumMap<>(Direction.class), map -> { + for (Direction dir : GTUtil.DIRECTIONS) { + var normal = dir.getNormal(); + var cube = new AABB( + normal.getX() > 0 ? 1 : 0, + normal.getY() > 0 ? 1 : 0, + normal.getZ() > 0 ? 1 : 0, + normal.getX() >= 0 ? 1 : 0, + normal.getY() >= 0 ? 1 : 0, + normal.getZ() >= 0 ? 1 : 0); + map.put(dir, cube); + } + }); - public final static FacadeCoverRenderer INSTANCE = new FacadeCoverRenderer(); + public static final FacadeCoverRenderer INSTANCE = new FacadeCoverRenderer(); + private static final Int2ObjectMap CACHE = new Int2ObjectArrayMap<>(); + + @OnlyIn(Dist.CLIENT) + private @Nullable BakedModel defaultItemModel; - protected FacadeCoverRenderer() {} + private FacadeCoverRenderer() {} + + @OnlyIn(Dist.CLIENT) + public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { + this.defaultItemModel = defaultItemModel; + } @Override @OnlyIn(Dist.CLIENT) - public boolean useBlockLight(ItemStack stack) { - return true; + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + if (defaultItemModel != null) { + return defaultItemModel.getQuads(state, side, rand, extraData, renderType); + } + return Collections.emptyList(); } @Override @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - var mc = Minecraft.getInstance(); - var renderItem = FacadeItemBehaviour.getFacadeStack(stack); - BlockState blockState = null; - if (renderItem.getItem() instanceof BlockItem blockItem) { - blockState = blockItem.getBlock().defaultBlockState(); + public @NotNull List getRenderPasses(ItemStack stack, boolean fabulous) { + if (!(stack.getItem() instanceof ComponentItem)) { + return Collections.singletonList(this); } - if (blockState != null && mc.level != null) { - model = mc.getBlockRenderer().getBlockModel(blockState); - if (!model.isCustomRenderer()) { - matrixStack.pushPose(); - ModelFactory.MODEL_TRANSFORM_BLOCK.getTransform(transformType).apply(leftHand, matrixStack); - matrixStack.translate(0, -0.1D, -0.5D); - if (transformType == ItemDisplayContext.FIRST_PERSON_LEFT_HAND || - transformType == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) { - matrixStack.translate(0.5, 0.5, 0.5); - - matrixStack.mulPose(new Quaternionf(new AxisAngle4d().set(90, 0, 1, 0))); - matrixStack.translate(-0.5, -0.5, -0.5); - } - var pose = matrixStack.last(); + BlockState facadeState = FacadeItemBehaviour.getFacadeStateNullable(stack); + if (facadeState == null) { + return Collections.singletonList(this); + } + + int hash = facadeState.hashCode(); + ItemBakedModel model = CACHE.computeIfAbsent(hash, $ -> new ItemBakedModel() { - var level = new FacadeBlockAndTintGetter(mc.level, BlockPos.ZERO, blockState, null); - var quads = new LinkedList<>(ModelUtil.getBakedModelQuads(model, level, BlockPos.ZERO, blockState, - Direction.NORTH, mc.level.random)); + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand) { + return getQuads(state, side, rand, ModelData.EMPTY, null); + } - var cube = new AABB(0.01, 0.01, 0.01, 0.99, 0.99, 1 / 16f); + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + return getFacadeQuads(facadeState, rand, extraData, renderType); + } + }); + return Collections.singletonList(model); + } - for (Direction side : GTUtil.DIRECTIONS) { - if (side != Direction.NORTH) { - quads.add(FaceQuad.builder(side, ModelFactory.getBlockSprite(GTCEu.id("block/cable/wire"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); - quads.add(FaceQuad.builder(side, ModelFactory.getBlockSprite(GTCEu.id("block/cable/wire"))) - .cube(cube).cubeUV().tintIndex(-1).bake()); - } - } + @OnlyIn(Dist.CLIENT) + public List getFacadeQuads(BlockState state, @NotNull RandomSource rand, + @NotNull ModelData extraData, @Nullable RenderType renderType) { + List quads = new ArrayList<>(); - for (BakedQuad bakedQuad : quads) { - buffer.getBuffer(RenderType.cutout()).putBulkData(pose, bakedQuad, 1, 1, 1, combinedLight, - combinedOverlay); - } + var mc = Minecraft.getInstance(); + if (mc.level != null) { + BakedModel model = mc.getBlockRenderer().getBlockModel(state); + if (!model.isCustomRenderer()) { + var level = new FacadeBlockAndTintGetter(mc.level, BlockPos.ZERO, state, null); + extraData = model.getModelData(level, BlockPos.ZERO, state, extraData); + + quads.addAll(model.getQuads(state, null, rand, extraData, renderType)); + quads.addAll(model.getQuads(state, Direction.NORTH, rand, extraData, renderType)); - matrixStack.popPose(); + for (Direction modelSide : FACADE_EDGE_FACES) { + quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, ICoverableRenderer.COVER_BACK_PLATE[0], + BlockModelRotation.X0_Y0, -1, 0, false, true)); + } } } + return quads; } @Override @OnlyIn(Dist.CLIENT) public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { if (coverBehavior instanceof FacadeCover facadeCover) { var state = facadeCover.getFacadeState(); if (state.getRenderShape() == RenderShape.MODEL) { - BlockRenderDispatcher brd = Minecraft.getInstance().getBlockRenderer(); - BakedModel model = brd.getBlockModel(state); + BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + ModelData extraData = model.getModelData(level, BlockPos.ZERO, state, modelData); + + var facadeQuads = model.getQuads(state, coverBehavior.attachedSide, rand, extraData, renderType); if (side == coverBehavior.attachedSide) { - quads.addAll(ModelUtil.getBakedModelQuads(model, level, pos, state, side, rand)); + quads.addAll(facadeQuads); } else if (side == null && coverBehavior.coverHolder.shouldRenderBackSide()) { - var normal = coverBehavior.attachedSide.getNormal(); - var cube = new AABB( - normal.getX() == 0 ? 0 : normal.getX() > 0 ? 1 : 0, - normal.getY() == 0 ? 0 : normal.getY() > 0 ? 1 : 0, - normal.getZ() == 0 ? 0 : normal.getZ() > 0 ? 1 : 0, - normal.getX() == 0 ? 1 : normal.getX() > 0 ? 1 : 0, - normal.getY() == 0 ? 1 : normal.getY() > 0 ? 1 : 0, - normal.getZ() == 0 ? 1 : normal.getZ() > 0 ? 1 : 0); - for (BakedQuad quad : ModelUtil.getBakedModelQuads(model, level, pos, state, - coverBehavior.attachedSide, rand)) { - quads.add(FaceQuad.builder(coverBehavior.attachedSide.getOpposite(), quad.getSprite()) - .cube(cube) - .shade(quad.isShade()) - .tintIndex(quad.getTintIndex()) - .bake()); + AABB cube = COVER_BACK_CUBES.get(coverBehavior.attachedSide); + + for (BakedQuad quad : facadeQuads) { + quads.add(StaticFaceBakery.bakeFace(cube, coverBehavior.attachedSide.getOpposite(), + quad.getSprite(), BlockModelRotation.X0_Y0, + quad.getTintIndex(), 0, false, quad.isShade())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java deleted file mode 100644 index 7b7fbfb6e4d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FluidRegulatorCoverRenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.PumpCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.function.Consumer; - -public class FluidRegulatorCoverRenderer implements ICoverRenderer { - - public final static FluidRegulatorCoverRenderer INSTANCE = new FluidRegulatorCoverRenderer(); - public final static ResourceLocation PUMP_OVERLAY_OUT = GTCEu.id("block/cover/overlay_pump"); - public final static ResourceLocation PUMP_OVERLAY_IN = GTCEu.id("block/cover/overlay_pump_inverted"); - - protected FluidRegulatorCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof PumpCover pump && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(pump.getIo() == IO.OUT ? PUMP_OVERLAY_OUT : PUMP_OVERLAY_IN), - modelState)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PUMP_OVERLAY_IN); - register.accept(PUMP_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java index 10a9f3cf77c..25f36ae3e3b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverRenderer.java @@ -2,43 +2,25 @@ import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; - +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -/** - * Do not use it as a block renderer alone. It should be called from {@link ICoverableRenderer} - */ -public interface ICoverRenderer extends IRenderer { - - /** - * Use - * {@link #renderCover(List, Direction, RandomSource, CoverBehavior, Direction, BlockPos, BlockAndTintGetter, ModelState)} - * instead - */ - @Override - @Deprecated - @OnlyIn(Dist.CLIENT) - default List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - return IRenderer.super.renderModel(level, pos, state, side, rand); - } +public interface ICoverRenderer { @OnlyIn(Dist.CLIENT) void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState); + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index bed0f7296f8..a94f0ecc885 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -1,55 +1,44 @@ package com.gregtechceu.gtceu.client.renderer.cover; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.LinkedList; import java.util.List; +import java.util.function.Function; -public interface ICoverableRenderer extends IRenderer { +public interface ICoverableRenderer { - @Override @OnlyIn(Dist.CLIENT) - default List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - var blockEntity = level == null ? null : level.getBlockEntity(pos); - if (blockEntity != null) { - var coverable = GTCapabilityHelper.getCoverable(blockEntity.getLevel(), blockEntity.getBlockPos(), null); - if (coverable != null) { - var quads = new LinkedList(); - var modelState = ModelFactory.getRotation(coverable.getFrontFacing()); - var modelFacing = side == null ? null : ModelFactory.modelFacing(side, coverable.getFrontFacing()); - renderCovers(quads, side, rand, coverable, modelFacing, pos, level, modelState); - return quads; - } - } - return IRenderer.super.renderModel(level, pos, state, side, rand); + TextureAtlasSprite[] COVER_BACK_PLATE = new TextureAtlasSprite[1]; + + @OnlyIn(Dist.CLIENT) + static void initSprites(Function atlas) { + COVER_BACK_PLATE[0] = atlas.apply(GTCEu.id("block/material_sets/dull/wire_side")); } @OnlyIn(Dist.CLIENT) - default void renderCovers(List quads, @Nullable Direction side, RandomSource rand, - @NotNull ICoverable coverable, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { + default void renderCovers(List quads, @NotNull ICoverable coverable, + BlockPos pos, BlockAndTintGetter level, @Nullable Direction side, + RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { var thickness = coverable.getCoverPlateThickness(); for (Direction face : GTUtil.DIRECTIONS) { var cover = coverable.getCoverAtSide(face); @@ -59,25 +48,24 @@ default void renderCovers(List quads, @Nullable Direction side, Rando double max = 1d - thickness; var normal = face.getNormal(); var cube = new AABB( - normal.getX() == 0 ? 0.001 : normal.getX() > 0 ? max : 0.001, - normal.getY() == 0 ? 0.001 : normal.getY() > 0 ? max : 0.001, - normal.getZ() == 0 ? 0.001 : normal.getZ() > 0 ? max : 0.001, - normal.getX() == 0 ? 0.999 : normal.getX() > 0 ? 0.999 : min, - normal.getY() == 0 ? 0.999 : normal.getY() > 0 ? 0.999 : min, - normal.getZ() == 0 ? 0.999 : normal.getZ() > 0 ? 0.999 : min); + normal.getX() > 0 ? max : 0.001, + normal.getY() > 0 ? max : 0.001, + normal.getZ() > 0 ? max : 0.001, + normal.getX() >= 0 ? 0.999 : min, + normal.getY() >= 0 ? 0.999 : min, + normal.getZ() >= 0 ? 0.999 : min); if (side == null) { // render back - quads.add(FaceQuad - .builder(face.getOpposite(), - ModelFactory.getBlockSprite(GTCEu.id("block/material_sets/dull/wire_side"))) + quads.add(FaceQuad.builder(face.getOpposite(), COVER_BACK_PLATE[0]) .cube(cube).cubeUV().tintIndex(-1).bake()); } else if (side != face.getOpposite()) { // render sides - quads.add(FaceQuad - .builder(side, - ModelFactory.getBlockSprite(GTCEu.id("block/material_sets/dull/wire_side"))) + quads.add(FaceQuad.builder(side, COVER_BACK_PLATE[0]) .cube(cube).cubeUV().tintIndex(-1).bake()); } } - cover.getCoverRenderer().renderCover(quads, side, rand, cover, modelFacing, pos, level, modelState); + // it won't ever be null on the client + // noinspection DataFlowIssue + cover.getCoverRenderer().get() + .renderCover(quads, side, rand, cover, pos, level, modelData, renderType); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java new file mode 100644 index 00000000000..a545a909b47 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java @@ -0,0 +1,89 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.IIOCover; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.client.util.StaticFaceBakery; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class IOCoverRenderer implements ICoverRenderer { + + public static final IOCoverRenderer PUMP_LIKE_COVER_RENDERER = new IOCoverRenderer( + GTCEu.id("block/cover/pump"), + GTCEu.id("block/cover/pump_inverted"), + null, null); + + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite overlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite invertedOverlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite emissiveOverlaySprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite invertedEmissiveOverlaySprite = null; + + public IOCoverRenderer(@Nullable ResourceLocation overlay, + @Nullable ResourceLocation invertedOverlay, + @Nullable ResourceLocation emissiveOverlay, + @Nullable ResourceLocation invertedEmissiveOverlay) { + ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + var atlas = event.getAtlas(); + + if (overlay != null) { + overlaySprite = atlas.getSprite(overlay); + } + if (invertedOverlay != null) { + invertedOverlaySprite = atlas.getSprite(invertedOverlay); + } + if (emissiveOverlay != null) { + emissiveOverlaySprite = atlas.getSprite(emissiveOverlay); + } + if (invertedEmissiveOverlay != null) { + invertedEmissiveOverlaySprite = atlas.getSprite(invertedEmissiveOverlay); + } + }); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void renderCover(List quads, @Nullable Direction side, RandomSource rand, + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if ((side == null || side == coverBehavior.attachedSide) && coverBehavior instanceof IIOCover ioCover) { + boolean isInverted = ioCover.getIo() != IO.OUT; + + if (isInverted && invertedOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, invertedOverlaySprite)); + } else if (overlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, overlaySprite)); + } + if (isInverted && invertedEmissiveOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, invertedEmissiveOverlaySprite, + BlockModelRotation.X0_Y0, -101, 15)); + } else if (emissiveOverlaySprite != null) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, emissiveOverlaySprite, + BlockModelRotation.X0_Y0, -101, 15)); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java deleted file mode 100644 index 545ca844f04..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/PumpCoverRenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.PumpCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.function.Consumer; - -public class PumpCoverRenderer implements ICoverRenderer { - - public final static PumpCoverRenderer INSTANCE = new PumpCoverRenderer(); - public final static ResourceLocation PUMP_OVERLAY_OUT = GTCEu.id("block/cover/overlay_pump"); - public final static ResourceLocation PUMP_OVERLAY_IN = GTCEu.id("block/cover/overlay_pump_inverted"); - - protected PumpCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof PumpCover pump && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(pump.getIo() == IO.OUT ? PUMP_OVERLAY_OUT : PUMP_OVERLAY_IN), - modelState)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PUMP_OVERLAY_IN); - register.accept(PUMP_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java deleted file mode 100644 index 3eae8fa24bf..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/RobotArmCoverRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.cover; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.cover.CoverBehavior; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.cover.RobotArmCover; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class RobotArmCoverRenderer implements ICoverRenderer { - - public final static RobotArmCoverRenderer INSTANCE = new RobotArmCoverRenderer(); - public final static ResourceLocation ARM_OVERLAY = GTCEu.id("block/cover/overlay_arm"); - public final static ResourceLocation ARM_OVERLAY_OUT = GTCEu.id("block/cover/overlay_arm_emissive"); - public final static ResourceLocation AR_OVERLAY_IN = GTCEu.id("block/cover/overlay_arm_inverted_emissive"); - - protected RobotArmCoverRenderer() { - if (GTCEu.isClientSide()) { - registerEvent(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderCover(List quads, @Nullable Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, @Nullable Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && coverBehavior instanceof RobotArmCover robotArm && - modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(ARM_OVERLAY), modelState)); - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(robotArm.getIo() == IO.OUT ? ARM_OVERLAY_OUT : AR_OVERLAY_IN), - modelState, -101, 15)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(ARM_OVERLAY); - register.accept(AR_OVERLAY_IN); - register.accept(ARM_OVERLAY_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java index 959c4ff06d8..9f762805a6a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java @@ -1,60 +1,62 @@ package com.gregtechceu.gtceu.client.renderer.cover; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.utils.ResourceHelper; - +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.function.Consumer; public class SimpleCoverRenderer implements ICoverRenderer { - ResourceLocation texture; - ResourceLocation emissiveTexture; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite sprite = null; + @OnlyIn(Dist.CLIENT) + protected TextureAtlasSprite emissiveSprite = null; public SimpleCoverRenderer(ResourceLocation texture) { - this.texture = texture; - if (GTCEu.isClientSide()) { - registerEvent(); - } + this(texture, null); } - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(texture); - emissiveTexture = new ResourceLocation(texture.getNamespace(), texture.getPath() + "_emissive"); - if (ResourceHelper.isTextureExist(emissiveTexture)) register.accept(emissiveTexture); - else emissiveTexture = null; - } + public SimpleCoverRenderer(ResourceLocation texture, ResourceLocation emissiveTexture) { + ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + var atlas = event.getAtlas(); + + sprite = atlas.getSprite(texture); + if (emissiveTexture != null) { + emissiveSprite = atlas.getSprite(emissiveTexture); + } else { + ResourceLocation emissiveTex = texture.withSuffix("_emissive"); + if (atlas.getTextureLocations().contains(emissiveTex)) { + emissiveSprite = atlas.getSprite(emissiveTex); + } + } + }); } @OnlyIn(Dist.CLIENT) public void renderCover(List quads, Direction side, RandomSource rand, - @NotNull CoverBehavior coverBehavior, Direction modelFacing, BlockPos pos, - BlockAndTintGetter level, ModelState modelState) { - if (side == coverBehavior.attachedSide && modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(texture), modelState)); - if (emissiveTexture != null) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(emissiveTexture), - modelState)); + @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (side == null || side == coverBehavior.attachedSide) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, sprite)); + if (emissiveSprite != null) { + quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, emissiveSprite)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java deleted file mode 100644 index a62b87b1ed2..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/BatteryBufferRenderer.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class BatteryBufferRenderer extends TieredHullMachineRenderer { - - private final int inventorySize; - - public BatteryBufferRenderer(int tier, int inventorySize) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.inventorySize = inventorySize; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null) { - var texture = inventorySize <= 4 ? ENERGY_OUT_4A : - inventorySize <= 8 ? ENERGY_OUT_8A : - ENERGY_OUT_16A; - texture.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java deleted file mode 100644 index ba250064981..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ChargerRenderer.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.*; -import java.util.function.Consumer; - -public class ChargerRenderer extends TieredHullMachineRenderer { - - public final static ResourceLocation CHARGER_IDLE = GTCEu.id("block/machines/charger/overlay_charger_idle"); - public final static ResourceLocation CHARGER_RUNNING = GTCEu.id("block/machines/charger/overlay_charger_running"); - public final static ResourceLocation CHARGER_RUNNING_EMISSIVE = GTCEu - .id("block/machines/charger/overlay_charger_running_emissive"); - public final static ResourceLocation CHARGER_FINISHED = GTCEu.id("block/machines/charger/overlay_charger_finished"); - public final static ResourceLocation CHARGER_FINISHED_EMISSIVE = GTCEu - .id("block/machines/charger/overlay_charger_finished_emissive"); - - public ChargerRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - var state = ChargerMachine.State.IDLE; - if (machine instanceof ChargerMachine charger) { - state = charger.getState(); - } - - if (side != frontFacing || modelFacing == null) { - return; - } - switch (state) { - case IDLE -> quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CHARGER_IDLE), - modelState, -1, 0, false, true)); - case RUNNING -> { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_RUNNING), - modelState, -1, 0, true, true)); - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_RUNNING_EMISSIVE), - modelState, -101, 15, true, false)); - } - } - case FINISHED -> { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CHARGER_FINISHED), - modelState, -1, 0, true, true)); - if (ConfigHolder.INSTANCE.client.machinesEmissiveTextures) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(CHARGER_FINISHED_EMISSIVE), - modelState, -101, 15, true, false)); - } - } - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CHARGER_IDLE); - register.accept(CHARGER_RUNNING); - register.accept(CHARGER_RUNNING_EMISSIVE); - register.accept(CHARGER_FINISHED); - register.accept(CHARGER_FINISHED_EMISSIVE); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java deleted file mode 100644 index dc14480b155..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/ConverterRenderer.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class ConverterRenderer extends TieredHullMachineRenderer { - - private static final ResourceLocation CONVERTER_FE_IN = GTCEu.id("block/overlay/converter/converter_native_in"); - private static final ResourceLocation CONVERTER_FE_OUT = GTCEu.id("block/overlay/converter/converter_native_out"); - private final OverlayEnergyIORenderer ENERGY_IN; - private final OverlayEnergyIORenderer ENERGY_OUT; - - public ConverterRenderer(int tier, int baseAmp) { - super(tier, GTCEu.id("block/machine/hull_machine")); - switch (baseAmp) { - case 4: - ENERGY_IN = ENERGY_IN_4A; - ENERGY_OUT = ENERGY_OUT_4A; - break; - case 8: - ENERGY_IN = ENERGY_IN_8A; - ENERGY_OUT = ENERGY_OUT_8A; - break; - case 16: - ENERGY_IN = ENERGY_IN_16A; - ENERGY_OUT = ENERGY_OUT_16A; - break; - default: - ENERGY_IN = ENERGY_IN_1A; - ENERGY_OUT = ENERGY_OUT_1A; - break; - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - var isFeToEu = false; - if (machine instanceof ConverterMachine converter) { - isFeToEu = converter.isFeToEu(); - } - if (side == frontFacing && modelFacing != null) { - if (isFeToEu) { - ENERGY_OUT.renderOverlay(quads, modelFacing, modelState, 2); - } else { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVERTER_FE_OUT), - modelState, -1)); - } - } else if (side != null && modelFacing != null) { - if (isFeToEu) { - quads.add(StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(CONVERTER_FE_IN), - modelState, -1)); - } else { - ENERGY_IN.renderOverlay(quads, modelFacing, modelState, 2); - } - } - } - - @Override - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(CONVERTER_FE_IN); - register.accept(CONVERTER_FE_OUT); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java deleted file mode 100644 index 55468bc5915..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/CrateRenderer.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; -import com.gregtechceu.gtceu.utils.GTUtil; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class CrateRenderer extends MachineRenderer { - - private static final ResourceLocation MAINTENANCE_OVERLAY_TAPED = GTCEu - .id("block/overlay/machine/overlay_crate_taped"); - - public CrateRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof CrateMachine crate && crate.isTaped()) { - for (var direction : GTUtil.DIRECTIONS) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, direction, - ModelFactory.getBlockSprite(MAINTENANCE_OVERLAY_TAPED), modelState, -1, 0, true, true)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java deleted file mode 100644 index 9a532aa4812..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DiodeRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class DiodeRenderer extends TieredHullMachineRenderer { - - public DiodeRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - OverlayEnergyIORenderer energyIn = ENERGY_IN_1A; - OverlayEnergyIORenderer energyOut = ENERGY_OUT_1A; - var amps = 1; - if (machine instanceof DiodePartMachine diode) { - amps = diode.getAmps(); - } - switch (amps) { - case 2 -> { - energyIn = ENERGY_IN_2A; - energyOut = ENERGY_OUT_2A; - } - case 4 -> { - energyIn = ENERGY_IN_4A; - energyOut = ENERGY_OUT_4A; - } - case 8 -> { - energyIn = ENERGY_IN_8A; - energyOut = ENERGY_OUT_8A; - } - case 16 -> { - energyIn = ENERGY_IN_16A; - energyOut = ENERGY_OUT_16A; - } - } - - if (side == frontFacing && modelFacing != null) { - energyOut.renderOverlay(quads, modelFacing, modelState, 2); - } else if (side != null && modelFacing != null) { - energyIn.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java new file mode 100644 index 00000000000..14921e43e1d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java @@ -0,0 +1,59 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; +import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.machine.IMachineRendererModel; +import com.gregtechceu.gtceu.client.model.machine.MachineModel; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.serialization.Codec; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public abstract class DynamicRender> extends BaseBakedModel + implements Comparable>, IMachineRendererModel { + + public static final Codec> CODEC = DynamicRenderManager.TYPE_CODEC + .dispatchStable(DynamicRender::getType, DynamicRenderType::codec); + + @Getter + @Setter + protected MachineModel parent; + + public DynamicRender() {} + + public abstract DynamicRenderType getType(); + + @Override + public MachineDefinition getDefinition() { + return parent.getDefinition(); + } + + @Override + public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction elementSide, + @NotNull RandomSource rand, @NotNull ModelData extraData, + @Nullable RenderType renderType) { + return List.of(); + } + + @Override + public int compareTo(@NotNull DynamicRender o) { + return this.getType().compareTo(o.getType()); + } + + @Override + public boolean isCustomRenderer() { + return IMachineRendererModel.super.isCustomRenderer(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java new file mode 100644 index 00000000000..705dd9b9ae3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.impl.*; +import com.gregtechceu.gtceu.common.block.BoilerFireboxType; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; + +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; + +public class DynamicRenderHelper { + + public static DynamicRender makeBoilerPartRender(BoilerFireboxType fireboxType, + Supplier casingBlock) { + return new BoilerMultiPartRender(fireboxType, casingBlock); + } + + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public static DynamicRender makeFluidAreaRender(FluidBlockRenderer fluidBlockRenderer, + Optional fixedFluid, + List drawFaces) { + return new FluidAreaRender(fluidBlockRenderer, fixedFluid, drawFaces); + } + + public static DynamicRender makeRecipeFluidAreaRender() { + return makeFluidAreaRender(FluidBlockRenderer.Builder.create() + .setFaceOffset(-0.125f) + .setForcedLight(LightTexture.FULL_BRIGHT) + .getRenderer(), Optional.empty(), FluidAreaRender.DEFAULT_FACES); + } + + public static DynamicRender createPBFLavaRender() { + return makeFluidAreaRender(FluidBlockRenderer.Builder.create() + .setFaceOffset(-0.125f) + .setForcedLight(LightTexture.FULL_BRIGHT) + .getRenderer(), Optional.of(Fluids.LAVA.getSource()), FluidAreaRender.DEFAULT_FACES); + } + + public static DynamicRender createFusionRingRender() { + return new FusionRingRender(); + } + + public static DynamicRender createQuantumChestRender() { + return new QuantumChestItemRender(); + } + + public static DynamicRender createQuantumTankRender() { + return new QuantumTankFluidRender(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java new file mode 100644 index 00000000000..d33373db729 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderManager.java @@ -0,0 +1,59 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.resources.ResourceLocation; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import org.jetbrains.annotations.Nullable; + +import java.util.function.BinaryOperator; + +public final class DynamicRenderManager { + + public static final BinaryOperator MODEL_ID_FORMATTER = "/block/machine/%s/dynamic_render/%s"::formatted; + + public static final Codec> TYPE_CODEC = ResourceLocation.CODEC.flatXmap( + id -> { + var type = DynamicRenderManager.getType(id); + if (type != null) { + return DataResult.success(type); + } else { + return DataResult.error(() -> "Dynamic render type with ID " + id + " does not exist"); + } + }, type -> { + ResourceLocation id = getId(type); + if (id != null) { + return DataResult.success(id); + } else { + return DataResult.error(() -> "Dynamic render type " + type + " is not registered"); + } + }); + + private static final BiMap> DYNAMIC_RENDERER_TYPES = HashBiMap.create(5); + + // spotless:off + public static > DynamicRenderType register(ResourceLocation id, + DynamicRenderType type) { + if (DYNAMIC_RENDERER_TYPES.containsKey(id)) { + throw new IllegalArgumentException("Cannot register multiple dynamic render types with the same id! Tried " + id); + } + DYNAMIC_RENDERER_TYPES.put(id, type); + return type; + } + + @SuppressWarnings("unchecked") + public static > @Nullable DynamicRenderType getType(ResourceLocation id) { + return (DynamicRenderType) DYNAMIC_RENDERER_TYPES.get(id); + } + + public static @Nullable ResourceLocation getId(DynamicRenderType type) { + return DYNAMIC_RENDERER_TYPES.inverse().get(type); + } + // spotless:on + + private DynamicRenderManager() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java new file mode 100644 index 00000000000..db237eb19cc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderType.java @@ -0,0 +1,21 @@ +package com.gregtechceu.gtceu.client.renderer.machine; + +import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; + +import net.minecraft.resources.ResourceLocation; + +import com.mojang.serialization.Codec; +import org.jetbrains.annotations.NotNull; + +public record DynamicRenderType>(Codec codec) + implements Comparable> { + + public ResourceLocation getId() { + return DynamicRenderManager.getId(this); + } + + @Override + public int compareTo(@NotNull DynamicRenderType o) { + return this.getId().compareTo(o.getId()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java deleted file mode 100644 index d1681943b68..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/HPCAPartRenderer.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.research.HPCAMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAComponentPartMachine; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class HPCAPartRenderer extends TieredHullMachineRenderer { - - private final ResourceLocation texture, activeTexture, activeEmissiveTexture, damagedTexture, damagedActiveTexture, - damagedActiveEmissiveTexture; - - public HPCAPartRenderer(boolean isAdvanced, ResourceLocation texture, ResourceLocation damagedTexture) { - super(GTValues.ZPM, - isAdvanced ? GTCEu.id("block/computer_casing") : GTCEu.id("block/advanced_computer_casing")); - this.texture = texture; - this.activeTexture = texture.withSuffix("_active"); - this.activeEmissiveTexture = this.activeTexture.withSuffix("_emissive"); - this.damagedTexture = damagedTexture; - this.damagedActiveTexture = damagedTexture.withSuffix("_active"); - this.damagedActiveEmissiveTexture = this.damagedActiveTexture.withSuffix("_emissive"); - } - - public HPCAPartRenderer(boolean isAdvanced, - ResourceLocation texture, - @Nullable ResourceLocation activeTexture, - @Nullable ResourceLocation activeEmissiveTexture, - @Nullable ResourceLocation damagedTexture, - @Nullable ResourceLocation damagedActiveTexture, - @Nullable ResourceLocation damagedActiveEmissiveTexture) { - super(GTValues.ZPM, - isAdvanced ? GTCEu.id("block/computer_casing") : GTCEu.id("block/advanced_computer_casing")); - this.texture = texture; - this.activeTexture = activeTexture; - this.activeEmissiveTexture = activeEmissiveTexture; - this.damagedTexture = damagedTexture; - this.damagedActiveTexture = damagedActiveTexture; - this.damagedActiveEmissiveTexture = damagedActiveEmissiveTexture; - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof HPCAComponentPartMachine hpcaComponent) { - ResourceLocation texture, emissiveTexture = null; - var controller = hpcaComponent.isFormed() ? hpcaComponent.getControllers().first() : null; - if (controller != null && (controller instanceof IWorkable workable && workable.isActive())) { - if (hpcaComponent.isDamaged()) { - texture = this.damagedActiveTexture; - emissiveTexture = this.damagedActiveEmissiveTexture; - } else { - texture = this.activeTexture; - emissiveTexture = this.activeEmissiveTexture; - } - } else { - if (hpcaComponent.isDamaged()) { - texture = this.damagedTexture; - } else { - texture = this.texture; - } - } - if (texture == null) { - texture = this.texture; - } - if (texture != null) { - Direction facing = frontFacing; - // Always render this outwards in the HPCA, in case it is not placed outwards in structure. - // Check for HPCA specifically since these components could potentially be used in other multiblocks. - if (controller instanceof HPCAMachine hpca) { - facing = RelativeDirection.RIGHT.getRelative(hpca.getFrontFacing(), hpca.getUpwardsFacing(), - hpca.isFlipped()); - } - facing = ModelFactory.modelFacing(frontFacing, facing); - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, facing, - ModelFactory.getBlockSprite(texture), modelState, -1, 0, true, true)); - if (emissiveTexture != null) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, facing, - ModelFactory.getBlockSprite(emissiveTexture), - modelState, -101, 15, true, false)); - } - } - } else { - ResourceLocation texture = this.texture; - if (texture != null) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, Direction.NORTH, - ModelFactory.getBlockSprite(texture), modelState, -1, 0, true, true)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java deleted file mode 100644 index d820d45802c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/IPartRenderer.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public interface IPartRenderer { - - /** - * Render part according to its controllers. - * - * @return whether its model has been replaced with controller's model - */ - @OnlyIn(Dist.CLIENT) - default boolean renderReplacedPartMachine(List quads, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - var controllers = part.getControllers(); - for (IMultiController controller : controllers) { - var state = controller.self().getBlockState(); - if (state.getBlock() instanceof MetaMachineBlock block) { - var renderer = block.definition.getRenderer(); - if (renderer instanceof IControllerRenderer controllerRenderer) { - controllerRenderer.renderPartModel(quads, controller, part, frontFacing, side, rand, modelFacing, - modelState); - return true; - } else if (renderer instanceof MachineRenderer machineRenderer) { - machineRenderer.renderBaseModel(quads, block.definition, controller.self(), modelState, side, rand); - return true; - } - } - } - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java deleted file mode 100644 index 958b2aad979..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeBoilerRenderer.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.block.BoilerFireboxType; -import com.gregtechceu.gtceu.utils.GTMatrixUtils; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class LargeBoilerRenderer extends WorkableCasingMachineRenderer implements IControllerRenderer { - - public static final ResourceLocation BLOOM_OVERLAY = GTCEu.id("block/casings/firebox/machine_casing_firebox_bloom"); - public final BoilerFireboxType firebox; - - public LargeBoilerRenderer(ResourceLocation texture, BoilerFireboxType firebox, ResourceLocation workableModel) { - super(texture, workableModel); - this.firebox = firebox; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderPartModel(List quads, IMultiController machine, IMultiPart part, Direction frontFacing, - @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - if (side == null) { - return; - } - - var multiFront = MetaMachine.getFrontFacing(machine.self()); - var multiUpward = MetaMachine.getUpwardFacing(machine.self()); - var multiState = GTMatrixUtils.createRotationState(multiFront, Direction.NORTH); - var multiFacing = ModelFactory.modelFacing(side, multiFront); - var flipped = machine.self().isFlipped(); - var relativeDown = RelativeDirection.DOWN.getRelative(multiFront, multiUpward, flipped); - // the rest of the owl - if (machine.self().getPos().relative(relativeDown).get(relativeDown.getAxis()) != - part.self().getPos().get(relativeDown.getAxis())) { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(baseCasing), multiState)); - return; - } - // firebox - if (side == relativeDown) { - quads.add( - StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.bottom()), multiState)); - } else if (side == RelativeDirection.UP.getRelative(multiFacing, multiUpward, flipped)) { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.top()), multiState)); - } else { - quads.add(StaticFaceBakery.bakeFace(multiFacing, ModelFactory.getBlockSprite(firebox.side()), multiState)); - if (machine instanceof IRecipeLogicMachine recipeLogicMachine && - recipeLogicMachine.getRecipeLogic().isWorking()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.SLIGHTLY_OVER_BLOCK, multiFacing, - ModelFactory.getBlockSprite(BLOOM_OVERLAY), multiState, -101, 15, true, false)); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java deleted file mode 100644 index 2a08ab8f283..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/LargeMinerRenderer.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class LargeMinerRenderer extends WorkableCasingMachineRenderer { - - public static final AABB BEHIND_BLOCK = new AABB(0, -0.005, 1, 1, 1, 2); - - public LargeMinerRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IMultiController controller && controller.isFormed() && side == Direction.DOWN && - modelFacing != null) { - quads.add(StaticFaceBakery.bakeFace(BEHIND_BLOCK, modelFacing, - ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), modelState, -101, 15, true, true)); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java deleted file mode 100644 index 2aa9b3e28e8..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MachineRenderer.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; -import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; -import com.gregtechceu.gtceu.client.model.ItemBakedModel; -import com.gregtechceu.gtceu.client.renderer.block.TextureOverrideRenderer; -import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.utils.GTMatrixUtils; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; -import com.lowdragmc.lowdraglib.client.model.ModelFactory; -import com.lowdragmc.lowdraglib.client.model.custommodel.ICTMPredicate; -import com.lowdragmc.lowdraglib.client.renderer.IItemRendererProvider; -import com.lowdragmc.lowdraglib.utils.FacadeBlockAndTintGetter; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.vertex.PoseStack; -import org.jetbrains.annotations.Nullable; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Consumer; - -public class MachineRenderer extends TextureOverrideRenderer - implements ICoverableRenderer, IPartRenderer, ICTMPredicate { - - public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); - public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); - public static final ResourceLocation ITEM_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_item_output"); - - public MachineRenderer(ResourceLocation modelLocation) { - super(modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useBlockLight(ItemStack stack) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean useAO() { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack matrixStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (stack.getItem() instanceof MetaMachineItem machineItem) { - IItemRendererProvider.disabled.set(true); - Minecraft.getInstance().getItemRenderer().render(stack, transformType, leftHand, matrixStack, buffer, - combinedLight, combinedOverlay, - new ItemBakedModel() { - - @Override - @OnlyIn(Dist.CLIENT) - public List getQuads(@Nullable BlockState state, @Nullable Direction direction, - RandomSource random) { - List quads = new LinkedList<>(); - renderMachine(quads, machineItem.getDefinition(), null, Direction.NORTH, direction, random, - direction, BlockModelRotation.X0_Y0); - return quads; - } - }); - IItemRendererProvider.disabled.set(false); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public final List renderModel(@Nullable BlockAndTintGetter level, @Nullable BlockPos pos, - @Nullable BlockState state, @Nullable Direction side, RandomSource rand) { - if (state != null && state.getBlock() instanceof MetaMachineBlock machineBlock) { - var frontFacing = machineBlock.getFrontFacing(state); - var machine = (level == null || pos == null) ? null : machineBlock.getMachine(level, pos); - if (machine != null) { - var definition = machine.getDefinition(); - var machineModelState = GTMatrixUtils.createRotationState(frontFacing, - MetaMachine.getUpwardFacing(machine)); - var blockModelState = ModelFactory.getRotation(frontFacing); - var modelFacing = side == null ? null : ModelFactory.modelFacing(side, frontFacing); - var quads = new LinkedList(); - // render machine additional quads - renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, machineModelState); - - // render auto IO - if (machine instanceof IAutoOutputItem autoOutputItem) { - var itemFace = autoOutputItem.getOutputFacingItems(); - if (itemFace != null && side == itemFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(PIPE_OVERLAY), blockModelState, - -1, 0, true, true)); - if (autoOutputItem.isAutoOutputItems()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(ITEM_OUTPUT_OVERLAY), blockModelState, - -101, 15, true, true)); - } - } - } - if (machine instanceof IAutoOutputFluid autoOutputFluid) { - var fluidFace = autoOutputFluid.getOutputFacingFluids(); - if (fluidFace != null && side == fluidFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(PIPE_OVERLAY), blockModelState, - -1, 0, true, true)); - if (autoOutputFluid.isAutoOutputFluids()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - modelFacing, ModelFactory.getBlockSprite(FLUID_OUTPUT_OVERLAY), blockModelState, - -101, 15, true, true)); - } - } - } - - // render covers - int start = quads.size(); - ICoverableRenderer.super.renderCovers(quads, side, rand, machine.getCoverContainer(), modelFacing, pos, - level, blockModelState); - var iterator = quads.listIterator(start); - while (iterator.hasNext()) { - iterator.set(Quad.from(iterator.next(), coverOverlayOffset()).rebake()); - } - return quads; - } - } - return Collections.emptyList(); - } - - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(MetaMachine.getFrontFacing(machine)) - .getQuads(definition.defaultBlockState(), side, rand)); - } - - /** - * Render machine block / item - * - * @param quads quads pipeline - * @param definition machine definition - * @param machine if null, rendering item - * @param frontFacing front facing - * @param side quad side - * @param rand random - * @param modelFacing model facing before rotation - * @param modelState uvLocked rotation according to the front facing - */ - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - if (!(machine instanceof IMultiPart part) || !part.replacePartModelWhenFormed() || - !renderReplacedPartMachine(quads, part, frontFacing, side, rand, modelFacing, modelState)) { - renderBaseModel(quads, definition, machine, modelState, side, rand); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_OVERLAY); - register.accept(FLUID_OUTPUT_OVERLAY); - register.accept(ITEM_OUTPUT_OVERLAY); - } - } - - ////////////////////////////////////// - // ********** CTM ***********// - ////////////////////////////////////// - @Override - public boolean isConnected(BlockAndTintGetter level, BlockState state, BlockPos pos, BlockState sourceState, - BlockPos sourcePos, Direction side) { - var stateAppearance = FacadeBlockAndTintGetter.getAppearance(state, level, pos, side, sourceState, sourcePos); - var sourceStateAppearance = FacadeBlockAndTintGetter.getAppearance(sourceState, level, sourcePos, side, state, - pos); - return stateAppearance == sourceStateAppearance; - } - - public float coverOverlayOffset() { - return .008f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java deleted file mode 100644 index b8d428660c4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MaintenanceHatchPartRenderer.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class MaintenanceHatchPartRenderer extends OverlayTieredMachineRenderer { - - private static final ResourceLocation MAINTENANCE_OVERLAY_TAPED = GTCEu - .id("block/overlay/machine/overlay_maintenance_taped"); - - public MaintenanceHatchPartRenderer(int tier, ResourceLocation overlayModel) { - super(tier, overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null && machine instanceof IMaintenanceMachine maintenanceHatch && - maintenanceHatch.isTaped()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, modelFacing, - ModelFactory.getBlockSprite(MAINTENANCE_OVERLAY_TAPED), modelState, -1, 0, true, true)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(MAINTENANCE_OVERLAY_TAPED); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java deleted file mode 100644 index dcd1abaa041..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/MinerRenderer.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; -import com.gregtechceu.gtceu.common.data.GTMaterials; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.google.common.collect.ImmutableMap; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class MinerRenderer extends WorkableTieredHullMachineRenderer { - - public static final ResourceLocation PIPE_IN_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe_in"); - public static final ImmutableMap MATERIALS_TO_CASING_MODELS; - - static { - ImmutableMap.Builder builder = ImmutableMap.builder(); - builder.put(GTMaterials.Bronze, GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks")); - builder.put(GTMaterials.Invar, GTCEu.id("block/casings/solid/machine_casing_heatproof")); - builder.put(GTMaterials.Aluminium, GTCEu.id("block/casings/solid/machine_casing_frost_proof")); - builder.put(GTMaterials.Steel, GTCEu.id("block/casings/solid/machine_casing_solid_steel")); - builder.put(GTMaterials.StainlessSteel, GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel")); - builder.put(GTMaterials.Titanium, GTCEu.id("block/casings/solid/machine_casing_stable_titanium")); - builder.put(GTMaterials.TungstenSteel, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel")); - builder.put(GTMaterials.Polytetrafluoroethylene, GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); - builder.put(GTMaterials.HSSE, GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); - - MATERIALS_TO_CASING_MODELS = builder.build(); - } - - public MinerRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == Direction.DOWN) quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), - modelState)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_IN_OVERLAY); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java deleted file mode 100644 index 61623a29adf..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayEnergyIORenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; - -import java.util.List; - -public class OverlayEnergyIORenderer { - - public static final OverlayEnergyIORenderer ENERGY_IN_1A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_2A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_4A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_8A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_16A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in"); - public static final OverlayEnergyIORenderer ENERGY_IN_64A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in"); - - public static final OverlayEnergyIORenderer ENERGY_OUT_1A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_2A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_4A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_8A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_16A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out"); - public static final OverlayEnergyIORenderer ENERGY_OUT_64A = new OverlayEnergyIORenderer( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out"); - - private final ResourceLocation tintedPart; - private final ResourceLocation ioPart; - - public OverlayEnergyIORenderer(String tintedPart, String ioPart) { - this.tintedPart = GTCEu.id(tintedPart); - this.ioPart = GTCEu.id(ioPart); - } - - public void renderOverlay(List quads, Direction modelFacing, ModelState modelState, int tintIndex) { - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, modelFacing, - ModelFactory.getBlockSprite(tintedPart), modelState, tintIndex, 0, true, true)); - quads.add(StaticFaceBakery.bakeFace( - StaticFaceBakery.SLIGHTLY_OVER_BLOCK, modelFacing, - ModelFactory.getBlockSprite(ioPart), modelState, -1, 0, true, true)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java deleted file mode 100644 index 624d094dc3a..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlaySteamMachineRenderer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -@SuppressWarnings("removal") -public class OverlaySteamMachineRenderer extends SteamHullMachineRenderer implements IPartRenderer { - - protected IModelRenderer overlayModel; - - public OverlaySteamMachineRenderer(ResourceLocation overlayModel) { - super(ConfigHolder.INSTANCE.machines.steelSteamMultiblocks ? "steel" : "bronze", - GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - quads.addAll(overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java deleted file mode 100644 index 434a8828dfd..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredActiveMachineRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; - -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -@SuppressWarnings("removal") -public class OverlayTieredActiveMachineRenderer extends TieredHullMachineRenderer { - - protected IModelRenderer activeOverlayModel; - protected IModelRenderer overlayModel; - - public OverlayTieredActiveMachineRenderer(int tier, ResourceLocation overlayModel, - ResourceLocation activeOverlayModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - this.activeOverlayModel = new IModelRenderer(activeOverlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IRecipeLogicMachine rlm) { - if (rlm.isActive()) { - quads.addAll(activeOverlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), - side, rand)); - return; - } - } else if (machine instanceof IMultiPart part) { - if (part.getControllers().stream() - .anyMatch(controller -> controller instanceof IRecipeLogicMachine rlm && rlm.isActive())) { - quads.addAll(activeOverlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), - side, rand)); - return; - } - } - quads.addAll(overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java deleted file mode 100644 index 6ef3fb3b37a..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/OverlayTieredMachineRenderer.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; -import com.lowdragmc.lowdraglib.client.renderer.impl.IModelRenderer; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -@SuppressWarnings("removal") -public class OverlayTieredMachineRenderer extends TieredHullMachineRenderer implements IPartRenderer { - - protected IModelRenderer overlayModel; - - public OverlayTieredMachineRenderer(int tier, ResourceLocation overlayModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new IModelRenderer(overlayModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - // expand the overlay quads ever so slightly to combat z-fighting. - overlayModel.getRotatedModel(frontFacing).getQuads(definition.defaultBlockState(), side, rand) - .forEach(quad -> { - // skip the color overlay on unpainted hatches - if (quad.getTintIndex() == 9 && (machine == null || machine.getPaintingColor() == -1)) { - return; - } - quads.add(Quad.from(quad, overlayQuadsOffset()).rebake()); - }); - } - - public float overlayQuadsOffset() { - return 0.004f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java deleted file mode 100644 index b2eb5faa7a3..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PrimitiveBlastFurnaceRenderer.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveBlastFurnaceMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class PrimitiveBlastFurnaceRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - - public PrimitiveBlastFurnaceRenderer(ResourceLocation base, ResourceLocation overlay) { - super(base, overlay); - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof PrimitiveBlastFurnaceMachine pbf && pbf.isFormed()) { - Direction opposite = pbf.getFrontFacing().getOpposite(); - RenderType lavaRenderType = ItemBlockRenderTypes.getRenderLayer(Fluids.LAVA.defaultFluidState()); - - stack.pushPose(); - var pose = stack.last().pose(); - pose.translate(opposite.getStepX(), opposite.getStepY(), opposite.getStepZ()); - - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(lavaRenderType, true)); - var up = RelativeDirection.UP.getRelative(pbf.getFrontFacing(), pbf.getUpwardsFacing(), - pbf.isFlipped()); - if (up.getAxis() != Direction.Axis.Y) up = up.getOpposite(); - - fluidBlockRenderer.drawFace(up, pose, consumer, Fluids.LAVA.getSource(), - RenderUtil.FluidTextureType.STILL, combinedOverlay, combinedLight); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java deleted file mode 100644 index 4ee7adc27a8..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/PumpHatchPartRenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.client.renderer.block.CTMModelRenderer; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -public class PumpHatchPartRenderer extends CTMModelRenderer { - - public static final ResourceLocation PIPE_OUT = GTCEu.id("block/overlay/machine/overlay_pipe_out"); - public static final ResourceLocation FLUID_HATCH = GTCEu.id("block/overlay/machine/overlay_fluid_hatch"); - - public PumpHatchPartRenderer() { - super(GTCEu.id("block/machine/part/pump_hatch")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public List renderModel(BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, - RandomSource rand) { - if (state.getBlock() instanceof MetaMachineBlock machineBlock && side == machineBlock.getFrontFacing(state)) { - var quads = new ArrayList<>(super.renderModel(level, pos, state, side, rand)); - quads.add(StaticFaceBakery.bakeFace(side, ModelFactory.getBlockSprite(PIPE_OUT))); - quads.add(StaticFaceBakery.bakeFace( - side, ModelFactory.getBlockSprite(FLUID_HATCH), - BlockModelRotation.X0_Y0, -101, 15)); - return quads; - } - return super.renderModel(level, pos, state, side, rand); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(PIPE_OUT); - register.accept(FLUID_HATCH); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java deleted file mode 100644 index aef8bce2bd1..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumChestRenderer.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.common.machine.storage.CreativeChestMachine; -import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.gregtechceu.gtceu.utils.FormattingUtil; - -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import org.jetbrains.annotations.Nullable; -import org.joml.Quaternionf; - -import java.util.List; - -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -public class QuantumChestRenderer extends TieredHullMachineRenderer { - - private static Item CREATIVE_CHEST_ITEM = null; - - public QuantumChestRenderer(int tier) { - super(tier, GTCEu.id("block/machine/quantum_chest")); - } - - public QuantumChestRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(modelState).getQuads(definition.defaultBlockState(), side, rand)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack poseStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (CREATIVE_CHEST_ITEM == null) CREATIVE_CHEST_ITEM = GTMachines.CREATIVE_ITEM.getItem(); - model = getItemBakedModel(); - if (model != null && stack.hasTag()) { - poseStack.pushPose(); - model.getTransforms().getTransform(transformType).apply(leftHand, poseStack); - poseStack.translate(-0.5D, -0.5D, -0.5D); - - ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - float tick = Minecraft.getInstance().level.getGameTime() + Minecraft.getInstance().getFrameTime(); - // Don't need to handle locked items here since they don't get saved to the item - renderChest(poseStack, buffer, Direction.NORTH, itemStack, storedAmount, tick, - ItemStack.EMPTY, - stack.is(CREATIVE_CHEST_ITEM)); - - poseStack.popPose(); - } - super.renderItem(stack, transformType, leftHand, poseStack, buffer, combinedLight, combinedOverlay, model); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof QuantumChestMachine machine) { - poseStack.pushPose(); - var level = machine.getLevel(); - var frontFacing = machine.getFrontFacing(); - var upwardFacing = machine.getUpwardsFacing(); - var tick = level.getGameTime() + partialTicks; - poseStack.translate(.5, .5, .5); - rotateMatrix(poseStack.last().pose(), - upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), - frontFacing.getStepX(), frontFacing.getStepY(), frontFacing.getStepZ()); - poseStack.translate(-.5, -.5, -.5); - renderChest(poseStack, buffer, frontFacing, machine.getStored(), machine.getStoredAmount(), - tick, machine.getLockedItem(), machine instanceof CreativeChestMachine); - poseStack.popPose(); - } - } - - @OnlyIn(Dist.CLIENT) - public void renderChest(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, ItemStack stored, - long storedAmount, float tick, ItemStack locked, boolean isCreative) { - ItemStack itemStack = !stored.isEmpty() ? stored : locked; - if (itemStack.isEmpty()) return; - - var itemRenderer = Minecraft.getInstance().getItemRenderer(); - poseStack.pushPose(); - poseStack.translate(0.5D, 0.5d, 0.5D); - if (frontFacing.getAxis() == Direction.Axis.Y) { - var north = Direction.NORTH.step(); - var front = frontFacing.step(); - var rotationAngle = getRotationAngle(north, front); - poseStack.mulPose(new Quaternionf().fromAxisAngleRad(getRotationAxis(north, front), rotationAngle)); - } - poseStack.mulPose(new Quaternionf().rotateAxis(tick * Mth.TWO_PI / 80, 0, 1, 0)); - poseStack.scale(0.6f, 0.6f, 0.6f); - itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, 0xf000f0, OverlayTexture.NO_OVERLAY, - poseStack, buffer, Minecraft.getInstance().level, - Item.getId(itemStack.getItem()) + itemStack.getDamageValue()); - poseStack.popPose(); - - poseStack.pushPose(); - RenderSystem.disableDepthTest(); - poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, - frontFacing.getStepZ() * -1 / 16f); - RenderUtils.moveToFace(poseStack, 0, 0, 0, frontFacing); - if (frontFacing.getAxis() == Direction.Axis.Y) { - RenderUtils.rotateToFace(poseStack, frontFacing, - frontFacing == Direction.UP ? Direction.SOUTH : Direction.NORTH); - } else { - RenderUtils.rotateToFace(poseStack, frontFacing, null); - } - poseStack.scale(1f / 64, 1f / 64, 0); - poseStack.translate(-32, -32, 0); - - TransformTexture text; - if (isCreative) { - text = new TextTexture("∞").setDropShadow(false).scale(3.0f); - } else { - var amount = stored.isEmpty() ? "*" : FormattingUtil.formatNumberReadable(storedAmount, false); - text = new TextTexture(amount).setDropShadow(false); - } - text.draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), - 0, 0, 0, 24, 64, 28); - RenderSystem.enableDepthTest(); - poseStack.popPose(); - } - - @OnlyIn(Dist.CLIENT) - public float reBakeCustomQuadsOffset() { - return 0f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java deleted file mode 100644 index a7db7ed1f28..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/QuantumTankRenderer.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.item.QuantumTankMachineItem; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.data.GTMachines; -import com.gregtechceu.gtceu.common.machine.storage.CreativeTankMachine; -import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; -import com.gregtechceu.gtceu.utils.FormattingUtil; - -import com.lowdragmc.lowdraglib.client.utils.RenderBufferUtils; -import com.lowdragmc.lowdraglib.client.utils.RenderUtils; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.texture.TransformTexture; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; -import net.minecraftforge.fluids.FluidStack; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; -import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; - -public class QuantumTankRenderer extends TieredHullMachineRenderer { - - private static final float MIN = 0.16f; - private static final float MAX = 0.84f; - - private static Item CREATIVE_FLUID_ITEM = null; - - public QuantumTankRenderer(int tier) { - super(tier, GTCEu.id("block/machine/quantum_tank")); - } - - public QuantumTankRenderer(int tier, ResourceLocation modelLocation) { - super(tier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderBaseModel(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - ModelState modelState, @Nullable Direction side, RandomSource rand) { - quads.addAll(getRotatedModel(modelState).getQuads(definition.defaultBlockState(), side, rand)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void renderItem(ItemStack stack, ItemDisplayContext transformType, boolean leftHand, PoseStack poseStack, - MultiBufferSource buffer, int combinedLight, int combinedOverlay, BakedModel model) { - if (CREATIVE_FLUID_ITEM == null) CREATIVE_FLUID_ITEM = GTMachines.CREATIVE_FLUID.getItem(); - model = getItemBakedModel(); - if (model != null && stack.hasTag()) { - poseStack.pushPose(); - model.getTransforms().getTransform(transformType).apply(leftHand, poseStack); - poseStack.translate(-0.5D, -0.5D, -0.5D); - - FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); - long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); - if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); - long maxAmount = 0; - if (stack.getItem() instanceof QuantumTankMachineItem tankItem) { - maxAmount = TANK_CAPACITY.getLong(tankItem.getDefinition()); - } - // Don't need to handle locked fluids here since they don't get saved to the item - renderTank(poseStack, buffer, Direction.NORTH, stored, storedAmount, maxAmount, FluidStack.EMPTY, - stack.is(CREATIVE_FLUID_ITEM)); - - poseStack.popPose(); - } - super.renderItem(stack, transformType, leftHand, poseStack, buffer, combinedLight, combinedOverlay, model); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack poseStack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof QuantumTankMachine machine) { - poseStack.pushPose(); - var frontFacing = machine.getFrontFacing(); - var upwardFacing = machine.getUpwardsFacing(); - poseStack.translate(.5, .5, .5); - rotateMatrix(poseStack.last().pose(), - upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), - frontFacing.getStepX(), frontFacing.getStepY(), frontFacing.getStepZ()); - poseStack.translate(-.5, -.5, -.5); - renderTank(poseStack, buffer, frontFacing, machine.getStored(), machine.getStoredAmount(), - machine.getMaxAmount(), machine.getLockedFluid(), machine instanceof CreativeTankMachine); - poseStack.popPose(); - } - } - - @OnlyIn(Dist.CLIENT) - public void renderTank(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, FluidStack stored, - long storedAmount, long maxAmount, FluidStack locked, boolean isCreative) { - FluidStack fluid = !stored.isEmpty() ? stored : locked; - if (fluid.isEmpty()) return; - - var ext = IClientFluidTypeExtensions.of(fluid.getFluid()); - var texture = ext.getStillTexture(); - var fluidTexture = Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(texture); - - poseStack.pushPose(); - VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); - var gas = fluid.getFluid().getFluidType().isLighterThanAir(); - var percentFull = isCreative || maxAmount <= storedAmount ? 1f : (float) storedAmount / maxAmount; - var facingYAxis = frontFacing.getAxis() == Direction.Axis.Y; - var maxTop = gas ? MAX : MIN + percentFull * (MAX - MIN); - var minBot = gas ? MIN + (1 - percentFull) * (MAX - MIN) : MIN; - float minY, maxY, minZ, maxZ; - if (facingYAxis) { - minY = MIN; - maxY = MAX; - if (frontFacing == Direction.UP) { - minZ = minBot; - maxZ = maxTop; - } else { - // -z is top - minZ = 1 - maxTop; - maxZ = 1 - minBot; - } - } else { - minY = minBot; - maxY = maxTop; - minZ = MIN; - maxZ = MAX; - } - RenderBufferUtils.renderCubeFace(poseStack, builder, MIN, minY, minZ, MAX, maxY, maxZ, - ext.getTintColor() | 0xff000000, 0xf000f0, fluidTexture); - poseStack.popPose(); - - poseStack.pushPose(); - RenderSystem.disableDepthTest(); - poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, - frontFacing.getStepZ() * -1 / 16f); - RenderUtils.moveToFace(poseStack, 0, 0, 0, frontFacing); - if (facingYAxis) { - RenderUtils.rotateToFace(poseStack, frontFacing, - frontFacing == Direction.UP ? Direction.SOUTH : Direction.NORTH); - } else { - RenderUtils.rotateToFace(poseStack, frontFacing, null); - } - poseStack.scale(1f / 64, 1f / 64, 0); - poseStack.translate(-32, -32, 0); - TransformTexture text; - if (isCreative) { - text = new TextTexture("∞").setDropShadow(false).scale(3.0f); - } else { - var amount = stored.isEmpty() ? "*" : FormattingUtil.formatNumberReadable(storedAmount, true); - text = new TextTexture(amount).setDropShadow(false); - } - text.draw(GuiGraphicsAccessor.create(Minecraft.getInstance(), poseStack, - MultiBufferSource.immediate(Tesselator.getInstance().getBuilder())), - 0, 0, 0, 24, 64, 28); - RenderSystem.enableDepthTest(); - poseStack.popPose(); - } - - @OnlyIn(Dist.CLIENT) - public float reBakeCustomQuadsOffset() { - return 0f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java deleted file mode 100644 index 9234dd99a0e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/RotorHolderMachineRenderer.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class RotorHolderMachineRenderer extends TieredHullMachineRenderer { - - public static final AABB ROTOR_TEXTURE_SHAPE = new AABB(-1, -1, -0.01, 2, 2, 1.01); - public static final ResourceLocation ROTOR_HOLDER_OVERLAY = GTCEu.id("block/overlay/machine/overlay_rotor_holder"); - public static final ResourceLocation BASE_RING = GTCEu.id("block/multiblock/large_turbine/base_ring"); - public static final ResourceLocation BASE_BG = GTCEu.id("block/multiblock/large_turbine/base_bg"); - public static final ResourceLocation IDLE = GTCEu.id("block/multiblock/large_turbine/rotor_idle"); - public static final ResourceLocation SPINNING = GTCEu.id("block/multiblock/large_turbine/rotor_spinning"); - - public RotorHolderMachineRenderer(int tier) { - super(tier, GTCEu.id("block/machine/hull_machine")); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side != frontFacing || modelFacing == null) { - return; - } - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(ROTOR_HOLDER_OVERLAY), modelState)); - if (machine instanceof IRotorHolderMachine rotorHolderMachine && rotorHolderMachine.isFormed()) { - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, - ModelFactory.getBlockSprite(BASE_RING), modelState, -101, 0, true, false)); - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, ModelFactory.getBlockSprite(BASE_BG), - modelState, -101, 0, true, false)); - var material = rotorHolderMachine.getRotorMaterial(); - if (material.isNull()) { - return; - } - quads.add(StaticFaceBakery.bakeFace(ROTOR_TEXTURE_SHAPE, modelFacing, - ModelFactory.getBlockSprite(rotorHolderMachine.isRotorSpinning() ? SPINNING : IDLE), - modelState, 2, - material.hasProperty(PropertyKey.ORE) && material.getProperty(PropertyKey.ORE).isEmissive() ? 12 : - 5, - true, true)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - register.accept(ROTOR_HOLDER_OVERLAY); - register.accept(BASE_RING); - register.accept(BASE_BG); - register.accept(IDLE); - register.accept(SPINNING); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java deleted file mode 100644 index 3a3d471b7da..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SimpleGeneratorMachineRenderer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.ENERGY_OUT_1A; - -public class SimpleGeneratorMachineRenderer extends WorkableTieredHullMachineRenderer { - - public SimpleGeneratorMachineRenderer(int tier, ResourceLocation workableModel) { - super(tier, workableModel); - } - - @Override - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == frontFacing && modelFacing != null) { - ENERGY_OUT_1A.renderOverlay(quads, modelFacing, modelState, 2); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java deleted file mode 100644 index 79d7a683f69..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamHullMachineRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -public class SteamHullMachineRenderer extends MachineRenderer { - - public SteamHullMachineRenderer(boolean isHighTier, ResourceLocation modelLocation) { - this(isHighTier ? "bricked_steel" : "bricked_bronze", modelLocation); - } - - public SteamHullMachineRenderer(String name, ResourceLocation modelLocation) { - super(modelLocation); - setTextureOverride(Map.of( - "bottom", GTCEu.id("block/casings/steam/%s/bottom".formatted(name)), - "top", GTCEu.id("block/casings/steam/%s/top".formatted(name)), - "side", GTCEu.id("block/casings/steam/%s/side".formatted(name)))); - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java deleted file mode 100644 index e92a7977df6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/SteamMinerRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class SteamMinerRenderer extends WorkableSteamMachineRenderer { - - public SteamMinerRenderer(boolean isHighTier, ResourceLocation modelLocation) { - super(isHighTier, modelLocation); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, - @Nullable Direction modelFacing, ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (side == Direction.DOWN) quads.add(StaticFaceBakery.bakeFace(modelFacing, - ModelFactory.getBlockSprite(MinerRenderer.PIPE_IN_OVERLAY), modelState)); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java deleted file mode 100644 index aa07f08004e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TieredHullMachineRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; - -import java.util.Locale; -import java.util.Map; - -public class TieredHullMachineRenderer extends MachineRenderer { - - public TieredHullMachineRenderer(int tier, ResourceLocation modelLocation) { - super(modelLocation); - setTextureOverride(Map.of( - "bottom", - GTCEu.id("block/casings/voltage/%s/bottom".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))), - "top", GTCEu.id("block/casings/voltage/%s/top".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))), - "side", - GTCEu.id("block/casings/voltage/%s/side".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))))); - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java deleted file mode 100644 index 54de382f695..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/TransformerRenderer.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.common.machine.electric.TransformerMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -import static com.gregtechceu.gtceu.client.renderer.machine.OverlayEnergyIORenderer.*; - -public class TransformerRenderer extends TieredHullMachineRenderer { - - private final int baseAmp; - - public TransformerRenderer(int tier, int baseAmp) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.baseAmp = baseAmp; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - OverlayEnergyIORenderer otherFaceTexture = ENERGY_OUT_4A; - OverlayEnergyIORenderer frontFaceTexture = ENERGY_IN_1A; - var isTransformUp = false; - if (machine instanceof TransformerMachine transformer) { - isTransformUp = transformer.isTransformUp(); - } - - switch (baseAmp) { - case 1 -> { // 1A <-> 4A - otherFaceTexture = isTransformUp ? ENERGY_IN_4A : otherFaceTexture; - frontFaceTexture = isTransformUp ? ENERGY_OUT_1A : frontFaceTexture; - } - case 2 -> { // 2A <-> 8A - otherFaceTexture = isTransformUp ? ENERGY_IN_8A : ENERGY_OUT_8A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_2A : ENERGY_IN_2A; - } - case 4 -> { // 4A <-> 16A - otherFaceTexture = isTransformUp ? ENERGY_IN_16A : ENERGY_OUT_16A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_4A : ENERGY_IN_4A; - } - default -> { // 16A <-> 64A or more - otherFaceTexture = isTransformUp ? ENERGY_IN_64A : ENERGY_OUT_64A; - frontFaceTexture = isTransformUp ? ENERGY_OUT_16A : ENERGY_IN_16A; - - } - } - - if (side == frontFacing && modelFacing != null) { - frontFaceTexture.renderOverlay(quads, modelFacing, modelState, 2); - } else if (side != null && modelFacing != null) { - otherFaceTexture.renderOverlay(quads, modelFacing, modelState, 3); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java deleted file mode 100644 index 7daa4db4d4b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableCasingMachineRenderer.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -public class WorkableCasingMachineRenderer extends MachineRenderer { - - protected final WorkableOverlayModel overlayModel; - protected final ResourceLocation baseCasing; - - public WorkableCasingMachineRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - this(baseCasing, workableModel, true); - } - - public WorkableCasingMachineRenderer(ResourceLocation baseCasing, ResourceLocation workableModel, boolean tint) { - super(tint ? GTCEu.id("block/cube/tinted/all") : GTCEu.id("block/cube/all")); - this.overlayModel = new WorkableOverlayModel(workableModel); - this.baseCasing = baseCasing; - setTextureOverride(Map.of("all", baseCasing)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled()) - .forEach(quad -> quads.add(Quad.from(quad, reBakeOverlayQuadsOffset()).rebake())); - } else { - overlayModel.bakeQuads(side, modelState, false, false) - .forEach(quad -> quads.add(Quad.from(quad, reBakeOverlayQuadsOffset()).rebake())); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - public float reBakeOverlayQuadsOffset() { - return 0.004f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java deleted file mode 100644 index c37de7fe2d7..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSidedCasingMachineRenderer.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -public class WorkableSidedCasingMachineRenderer extends MachineRenderer { - - protected final WorkableOverlayModel overlayModel; - - public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel) { - this(basePath, workableModel, true); - } - - public WorkableSidedCasingMachineRenderer(String basePath, ResourceLocation workableModel, boolean tint) { - super(tint ? GTCEu.id("block/cube/tinted/bottom_top") : new ResourceLocation("block/cube_bottom_top")); - setTextureOverride(Map.of( - "bottom", GTCEu.id(basePath + "/bottom"), - "top", GTCEu.id(basePath + "/top"), - "side", GTCEu.id(basePath + "/side"))); - this.overlayModel = new WorkableOverlayModel(workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - quads.addAll(overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled())); - } else { - quads.addAll(overlayModel.bakeQuads(side, modelState, false, false)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - @NotNull - @Override - @OnlyIn(Dist.CLIENT) - public TextureAtlasSprite getParticleTexture() { - return Minecraft.getInstance().getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(override.get("side")); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java deleted file mode 100644 index 672e8f9357f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableSteamMachineRenderer.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; -import com.gregtechceu.gtceu.client.util.StaticFaceBakery; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class WorkableSteamMachineRenderer extends SteamHullMachineRenderer { - - public static final ResourceLocation VENT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_steam_vent"); - protected final WorkableOverlayModel overlayModel; - - public WorkableSteamMachineRenderer(boolean isHighTier, ResourceLocation overlay) { - super(isHighTier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new WorkableOverlayModel(overlay); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - quads.addAll(overlayModel.bakeQuads(side, modelState, workable.isActive(), - workable.isWorkingEnabled())); - } else { - quads.addAll(overlayModel.bakeQuads(side, modelState, false, false)); - } - if (machine instanceof IExhaustVentMachine exhaustVentMachine) { - if (side != null && exhaustVentMachine.getVentingDirection() == side && modelFacing != null) { - quads.add( - StaticFaceBakery.bakeFace(modelFacing, ModelFactory.getBlockSprite(VENT_OVERLAY), modelState)); - } - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - register.accept(VENT_OVERLAY); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java deleted file mode 100644 index 53a6baa0129..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorkableTieredHullMachineRenderer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.capability.IWorkable; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; - -import com.lowdragmc.lowdraglib.client.bakedpipeline.Quad; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class WorkableTieredHullMachineRenderer extends TieredHullMachineRenderer { - - protected final WorkableOverlayModel overlayModel; - - public WorkableTieredHullMachineRenderer(int tier, ResourceLocation workableModel) { - super(tier, GTCEu.id("block/machine/hull_machine")); - this.overlayModel = new WorkableOverlayModel(workableModel); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof IWorkable workable) { - overlayModel.bakeQuads(side, modelState, workable.isActive(), workable.isWorkingEnabled()) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); - } else { - overlayModel.bakeQuads(side, modelState, false, false) - .forEach(quad -> quads.add(Quad.from(quad, overlayQuadsOffset()).rebake())); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - overlayModel.registerTextureAtlas(register); - } - } - - public float overlayQuadsOffset() { - return 0.002f; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java deleted file mode 100644 index 5d95fd92e90..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/WorldAcceleratorRenderer.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.client.model.WorkableOverlayModel; -import com.gregtechceu.gtceu.common.machine.electric.WorldAcceleratorMachine; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.RandomSource; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.function.Consumer; - -public class WorldAcceleratorRenderer extends TieredHullMachineRenderer { - - private final WorkableOverlayModel blockEntityModeModel, randomTickModeModel; - - public WorldAcceleratorRenderer(int tier, ResourceLocation beModeModelPath, ResourceLocation rtModeModelPath) { - super(tier, GTCEu.id("block/machine/hull_machine")); - blockEntityModeModel = new WorkableOverlayModel(beModeModelPath); - randomTickModeModel = new WorkableOverlayModel(rtModeModelPath); - } - - private WorkableOverlayModel getModeModel(boolean isRandomTickMode) { - if (isRandomTickMode) { - return randomTickModeModel; - } - return blockEntityModeModel; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderMachine(List quads, MachineDefinition definition, @Nullable MetaMachine machine, - Direction frontFacing, @Nullable Direction side, RandomSource rand, Direction modelFacing, - ModelState modelState) { - super.renderMachine(quads, definition, machine, frontFacing, side, rand, modelFacing, modelState); - if (machine instanceof WorldAcceleratorMachine worldAcceleratorMachine) { - WorkableOverlayModel model = getModeModel(worldAcceleratorMachine.isRandomTickMode()); - quads.addAll(model.bakeQuads(side, modelState, worldAcceleratorMachine.isActive(), - worldAcceleratorMachine.isWorkingEnabled())); - } else { - quads.addAll(getModeModel(true).bakeQuads(side, modelState, false, false)); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - public void onPrepareTextureAtlas(ResourceLocation atlasName, Consumer register) { - super.onPrepareTextureAtlas(atlasName, register); - if (atlasName.equals(TextureAtlas.LOCATION_BLOCKS)) { - randomTickModeModel.registerTextureAtlas(register); - blockEntityModeModel.registerTextureAtlas(register); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java deleted file mode 100644 index 52297846c51..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeChemicalBathRenderer.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine.gcym; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableCasingMachineRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeChemicalBathMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class LargeChemicalBathRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - private Fluid cachedFluid; - private ResourceLocation cachedRecipe; - - public LargeChemicalBathRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-0.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public int getViewDistance() { - return 32; - } - - @Override - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof LargeChemicalBathMachine lcb) { - var lastRecipe = lcb.recipeLogic.getLastRecipe(); - if (lastRecipe == null) { - cachedRecipe = null; - cachedFluid = null; - } else if (lcb.getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { - cachedRecipe = lastRecipe.id; - if (lcb.isActive()) { - cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); - } else { - cachedFluid = null; - } - } - - if (cachedFluid == null) { - return; - } - - stack.pushPose(); - var pose = stack.last().pose(); - - var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - - var up = RelativeDirection.UP.getRelative(lcb.getFrontFacing(), lcb.getUpwardsFacing(), - lcb.isFlipped()); - if (up.getAxis() != Direction.Axis.Y) up = up.getOpposite(); - fluidBlockRenderer.drawPlane(up, lcb.getFluidBlockOffsets(), pose, consumer, cachedFluid, - RenderUtil.FluidTextureType.STILL, combinedOverlay, lcb.getPos()); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java deleted file mode 100644 index d4619bef38f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/gcym/LargeMixerRenderer.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.gregtechceu.gtceu.client.renderer.machine.gcym; - -import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; -import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; -import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableCasingMachineRenderer; -import com.gregtechceu.gtceu.client.util.RenderUtil; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMixerMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; - -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.RenderTypeHelper; - -import com.mojang.blaze3d.vertex.PoseStack; - -public class LargeMixerRenderer extends WorkableCasingMachineRenderer { - - private final FluidBlockRenderer fluidBlockRenderer; - private Fluid cachedFluid; - private ResourceLocation cachedRecipe; - - public LargeMixerRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); - - fluidBlockRenderer = FluidBlockRenderer.Builder.create() - .setFaceOffset(-0.125f) - .setForcedLight(LightTexture.FULL_BRIGHT) - .getRenderer(); - } - - @Override - public int getViewDistance() { - return 32; - } - - @Override - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; - } - - @Override - public boolean hasTESR(BlockEntity blockEntity) { - return true; - } - - @Override - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - super.render(blockEntity, partialTicks, stack, buffer, combinedLight, combinedOverlay); - - if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; - if (blockEntity instanceof MetaMachineBlockEntity mm) { - if (mm.metaMachine instanceof LargeMixerMachine lm) { - var lastRecipe = lm.recipeLogic.getLastRecipe(); - if (lastRecipe == null) { - cachedRecipe = null; - cachedFluid = null; - } else if (lm.getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { - cachedRecipe = lastRecipe.id; - if (lm.isActive()) { - cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); - } else { - cachedFluid = null; - } - } - - if (cachedFluid == null) { - return; - } - - stack.pushPose(); - var pose = stack.last().pose(); - - var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); - var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); - - var up = RelativeDirection.UP.getRelative(lm.getFrontFacing(), lm.getUpwardsFacing(), - lm.isFlipped()); - if (up != Direction.UP && up != Direction.DOWN) up = up.getOpposite(); - fluidBlockRenderer.drawPlane(up, lm.getFluidBlockOffsets(), pose, consumer, cachedFluid, - RenderUtil.FluidTextureType.STILL, combinedOverlay, lm.getPos()); - - stack.popPose(); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java new file mode 100644 index 00000000000..e837f9b6635 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -0,0 +1,144 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.model.machine.IControllerModelRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.ModelUtils; +import com.gregtechceu.gtceu.common.block.BoilerFireboxType; +import com.gregtechceu.gtceu.common.data.GTBlocks; +import com.gregtechceu.gtceu.common.machine.multiblock.steam.LargeBoilerMachine; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.BlockModelShaper; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelData; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.Supplier; + +public class BoilerMultiPartRender extends DynamicRender + implements IControllerModelRenderer { + + // spotless:off + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BlockState.CODEC.fieldOf("firebox_idle").forGetter(BoilerMultiPartRender::getFireboxIdle), + BlockState.CODEC.fieldOf("firebox_active").forGetter(BoilerMultiPartRender::getFireboxActive), + BlockState.CODEC.fieldOf("casing_block").forGetter(BoilerMultiPartRender::getCasing) + ).apply(instance, BoilerMultiPartRender::new)); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(BoilerMultiPartRender.CODEC); + // spotless:on + + @Getter + private final BlockState fireboxIdle, fireboxActive; + @Getter + private final BlockState casing; + + private BakedModel fireboxIdleModel, fireboxActiveModel; + private BakedModel casingModel; + + public BoilerMultiPartRender(BoilerFireboxType fireboxType, Supplier casingBlock) { + this(GTBlocks.ALL_FIREBOXES.get(fireboxType).getDefaultState(), + GTBlocks.ALL_FIREBOXES.get(fireboxType).getDefaultState().setValue(GTBlockStateProperties.ACTIVE, true), + casingBlock.get().defaultBlockState()); + } + + public BoilerMultiPartRender(BlockState fireboxIdle, BlockState fireboxActive, BlockState casing) { + this.fireboxIdle = fireboxIdle; + this.fireboxActive = fireboxActive; + + this.casing = casing; + ModelUtils.registerBakeEventListener(event -> { + this.fireboxIdleModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxIdle)); + this.fireboxActiveModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxActive)); + this.casingModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.casing)); + }); + } + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void render(LargeBoilerMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) {} + + @Override + public boolean shouldRender(LargeBoilerMachine machine, Vec3 cameraPos) { + return false; + } + + @Override + public boolean isCustomRenderer() { + return false; + } + + @SuppressWarnings("DataFlowIssue") + @Override + @OnlyIn(Dist.CLIENT) + public void renderPartModel(List quads, IMultiController controller, IMultiPart part, + Direction frontFacing, @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + BlockPos partPos = part.self().getPos(); + + MultiblockControllerMachine machine = controller.self(); + BlockPos controllerPos = machine.getPos(); + Direction multiFront = machine.getFrontFacing(); + Direction multiUpward = machine.getUpwardsFacing(); + boolean flipped = machine.isFlipped(); + Direction relativeDown = RelativeDirection.DOWN.getRelative(multiFront, multiUpward, flipped); + + int belowControllerY = controllerPos.relative(relativeDown).get(relativeDown.getAxis()); + int partY = partPos.get(relativeDown.getAxis()); + if (belowControllerY == partY) { + // IDK why but the field isn't synced properly, so I have to check it manually + RecipeLogic.Status status = controller.self().getRenderState() + .getOptionalValue(RecipeLogic.STATUS_PROPERTY).orElse(RecipeLogic.Status.IDLE); + // firebox + if (status == RecipeLogic.Status.WORKING) { + emitQuads(quads, fireboxActiveModel, machine.getLevel(), partPos, fireboxActive, + side, rand, modelData, renderType); + } else { + emitQuads(quads, fireboxIdleModel, machine.getLevel(), partPos, fireboxIdle, + side, rand, modelData, renderType); + } + } else { + // Not exactly one below the controller, so not a firebox + emitQuads(quads, casingModel, machine.getLevel(), partPos, casing, + side, rand, modelData, renderType); + } + } + + private static void emitQuads(List quads, @Nullable BakedModel model, + BlockAndTintGetter level, BlockPos pos, BlockState state, + @Nullable Direction side, RandomSource rand, + ModelData modelData, @Nullable RenderType renderType) { + if (model == null) return; + modelData = model.getModelData(level, pos, state, modelData); + quads.addAll(model.getQuads(state, side, rand, modelData, renderType)); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java new file mode 100644 index 00000000000..49bae40901f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java @@ -0,0 +1,120 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.client.renderer.block.FluidBlockRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.config.ConfigHolder; + +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.client.RenderTypeHelper; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +public class FluidAreaRender extends DynamicRender { + + public static final List DEFAULT_FACES = Collections.singletonList(RelativeDirection.UP); + + // spotless:off + @SuppressWarnings("deprecation") + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + FluidBlockRenderer.CODEC.forGetter(FluidAreaRender::getFluidBlockRenderer), + BuiltInRegistries.FLUID.byNameCodec().optionalFieldOf("fixed_fluid").forGetter(FluidAreaRender::getFixedFluid), + RelativeDirection.CODEC.listOf().optionalFieldOf("drawn_faces", DEFAULT_FACES).forGetter(FluidAreaRender::getDrawFaces) + ).apply(instance, FluidAreaRender::new)); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(FluidAreaRender.CODEC); + // spotless:on + + @Getter + private final FluidBlockRenderer fluidBlockRenderer; + private final boolean fixedFluid; + @Getter + private final List drawFaces; + + private @Nullable Fluid cachedFluid; + private @Nullable ResourceLocation cachedRecipe; + + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public FluidAreaRender(FluidBlockRenderer fluidBlockRenderer, + Optional fixedFluid, List drawFaces) { + this.fluidBlockRenderer = fluidBlockRenderer; + if (fixedFluid.isPresent()) { + this.fixedFluid = true; + this.cachedFluid = fixedFluid.get(); + } else { + this.fixedFluid = false; + } + this.drawFaces = drawFaces.isEmpty() ? DEFAULT_FACES : drawFaces; + } + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public int getViewDistance() { + return 32; + } + + @Override + public void render(IFluidRenderMulti machine, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; + if (!fixedFluid) { + var lastRecipe = machine.getRecipeLogic().getLastRecipe(); + if (lastRecipe == null) { + cachedRecipe = null; + cachedFluid = null; + } else if (machine.self().getOffsetTimer() % 20 == 0 || lastRecipe.id != cachedRecipe) { + cachedRecipe = lastRecipe.id; + if (machine.isActive()) { + cachedFluid = RenderUtil.getRecipeFluidToRender(lastRecipe); + } else { + cachedFluid = null; + } + } + } + if (cachedFluid == null) { + return; + } + + poseStack.pushPose(); + var pose = poseStack.last().pose(); + + var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(cachedFluid.defaultFluidState()); + var consumer = buffer.getBuffer(RenderTypeHelper.getEntityRenderType(fluidRenderType, false)); + + for (RelativeDirection face : this.drawFaces) { + var dir = face.getRelative(machine.self().getFrontFacing(), machine.self().getUpwardsFacing(), + machine.self().isFlipped()); + if (dir.getAxis() != Direction.Axis.Y) dir = dir.getOpposite(); + + fluidBlockRenderer.drawPlane(dir, machine.getFluidBlockOffsets(), pose, consumer, cachedFluid, + RenderUtil.FluidTextureType.STILL, packedOverlay, machine.self().getPos()); + } + + poseStack.popPose(); + } + + private Optional getFixedFluid() { + if (fixedFluid) return Optional.ofNullable(cachedFluid); + else return Optional.empty(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java similarity index 51% rename from src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java rename to src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java index 90d77ca8dc2..cb0bbcab46a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/FusionReactorRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java @@ -1,9 +1,10 @@ -package com.gregtechceu.gtceu.client.renderer.machine; +package com.gregtechceu.gtceu.client.renderer.machine.impl; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.client.renderer.GTRenderTypes; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; import com.gregtechceu.gtceu.client.util.BloomUtils; import com.gregtechceu.gtceu.client.util.RenderBufferHelper; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; @@ -12,48 +13,61 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; -import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; import static net.minecraft.util.FastColor.ARGB32.*; -public class FusionReactorRenderer extends WorkableCasingMachineRenderer { +public class FusionRingRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(FusionRingRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(FusionRingRender.CODEC); + // spotless:on public static final float FADEOUT = 60; protected float delta = 0; protected int lastColor = -1; - public FusionReactorRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { - super(baseCasing, workableModel); + public FusionRingRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; } @Override - @OnlyIn(Dist.CLIENT) - public void render(BlockEntity blockEntity, float partialTicks, PoseStack stack, MultiBufferSource buffer, - int combinedLight, int combinedOverlay) { - if (blockEntity instanceof IMachineBlockEntity machineBlockEntity && - machineBlockEntity.getMetaMachine() instanceof FusionReactorMachine machine) { - if (!machine.recipeLogic.isWorking() && delta <= 0) { - return; - } - if (GTCEu.Mods.isShimmerLoaded()) { - PoseStack finalStack = RenderUtils.copyPoseStack(stack); - BloomUtils.entityBloom(source -> renderLightRing(machine, partialTicks, finalStack, source)); - } else { - renderLightRing(machine, partialTicks, stack, buffer); - } + public boolean shouldRender(FusionReactorMachine machine, Vec3 cameraPos) { + return machine.recipeLogic.isWorking() || delta > 0; + } + + @Override + public void render(FusionReactorMachine machine, float partialTick, + PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!machine.recipeLogic.isWorking() && delta <= 0) { + return; + } + if (GTCEu.Mods.isShimmerLoaded()) { + PoseStack finalStack = RenderUtils.copyPoseStack(poseStack); + BloomUtils.entityBloom(source -> renderLightRing(machine, partialTick, finalStack, + source.getBuffer(GTRenderTypes.getLightRing()))); + } else { + renderLightRing(machine, partialTick, poseStack, buffer.getBuffer(GTRenderTypes.getLightRing())); } } @OnlyIn(Dist.CLIENT) private void renderLightRing(FusionReactorMachine machine, float partialTicks, PoseStack stack, - MultiBufferSource buffer) { + VertexConsumer buffer) { var color = machine.getColor(); var alpha = 1f; if (machine.recipeLogic.isWorking()) { @@ -74,7 +88,7 @@ private void renderLightRing(FusionReactorMachine machine, float partialTicks, P var r = Mth.lerp(lerpFactor, red(lastColor), 255) / 255f; var g = Mth.lerp(lerpFactor, green(lastColor), 255) / 255f; var b = Mth.lerp(lerpFactor, blue(lastColor), 255) / 255f; - RenderBufferHelper.renderRing(stack, buffer.getBuffer(GTRenderTypes.getLightRing()), + RenderBufferHelper.renderRing(stack, buffer, back.getStepX() * 7 + 0.5F, back.getStepY() * 7 + 0.5F, back.getStepZ() * 7 + 0.5F, @@ -83,20 +97,24 @@ private void renderLightRing(FusionReactorMachine machine, float partialTicks, P } @Override - @OnlyIn(Dist.CLIENT) - public boolean hasTESR(BlockEntity blockEntity) { - return true; + public boolean useAmbientOcclusion() { + return false; } @Override - @OnlyIn(Dist.CLIENT) - public boolean isGlobalRenderer(BlockEntity blockEntity) { - return true; + public boolean shouldRenderOffScreen(FusionReactorMachine machine) { + return machine.recipeLogic.isWorking() || delta > 0; } @Override - @OnlyIn(Dist.CLIENT) public int getViewDistance() { return 32; } + + @Override + public AABB getRenderBoundingBox(FusionReactorMachine machine) { + return new AABB(machine.getPos()).inflate(getViewDistance() / 2.0D); + } + + public static void initType() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java new file mode 100644 index 00000000000..479c073e9ad --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java @@ -0,0 +1,159 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.PoseStackExtensions; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.machine.storage.CreativeChestMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumChestMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; +import lombok.experimental.ExtensionMethod; +import org.jetbrains.annotations.Nullable; +import org.joml.Quaternionf; + +import static com.gregtechceu.gtceu.utils.GTMatrixUtils.*; + +@ExtensionMethod(PoseStackExtensions.class) +public class QuantumChestItemRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(QuantumChestItemRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(QuantumChestItemRender.CODEC); + // spotless:on + + private static @Nullable Item CREATIVE_CHEST_ITEM = null; + + public QuantumChestItemRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + if (CREATIVE_CHEST_ITEM == null) CREATIVE_CHEST_ITEM = GTMachines.CREATIVE_ITEM.getItem(); + if (stack.hasTag()) { + poseStack.pushPose(); + poseStack.translate(-0.5f, -0.5f, -0.5f); + + ItemStack itemStack = ItemStack.of(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + float totalTick = Minecraft.getInstance().level.getGameTime() + Minecraft.getInstance().getFrameTime(); + // Don't need to handle locked items here since they don't get saved to the item + renderChestItem(poseStack, buffer, totalTick, Direction.NORTH, + itemStack, storedAmount, ItemStack.EMPTY, stack.is(CREATIVE_CHEST_ITEM)); + + poseStack.popPose(); + } + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + + @Override + public void render(QuantumChestMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + setupModelRotation(machine, poseStack); + + var totalTick = machine.getLevel().getGameTime() + partialTick; + renderChestItem(poseStack, buffer, totalTick, machine.getFrontFacing(), + machine.getStored(), machine.getStoredAmount(), machine.getLockedItem(), + machine instanceof CreativeChestMachine); + poseStack.popPose(); + } + + @OnlyIn(Dist.CLIENT) + public void renderChestItem(PoseStack poseStack, MultiBufferSource buffer, float totalTick, Direction frontFacing, + ItemStack stored, long storedAmount, ItemStack locked, boolean isCreative) { + ItemStack itemStack = !stored.isEmpty() ? stored : locked; + if (itemStack.isEmpty()) return; + var itemRenderer = Minecraft.getInstance().getItemRenderer(); + + poseStack.pushPose(); + poseStack.translate(0.5f, 0.5f, 0.5f); + if (frontFacing.getAxis() == Direction.Axis.Y) { + var north = Direction.NORTH.step(); + var front = frontFacing.step(); + var rotationAngle = getRotationAngle(north, front); + poseStack.mulPose(new Quaternionf().fromAxisAngleRad(getRotationAxis(north, front), rotationAngle)); + } + poseStack.mulPose(new Quaternionf().rotateAxis(totalTick * Mth.TWO_PI / 80, 0, 1, 0)); + poseStack.scale(0.6f, 0.6f, 0.6f); + + itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, + LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY, + poseStack, buffer, Minecraft.getInstance().level, + Item.getId(itemStack.getItem()) + itemStack.getDamageValue()); + poseStack.popPose(); + + drawAmountText(poseStack, buffer, frontFacing, storedAmount, isCreative); + } + + public static void setupModelRotation(MetaMachine machine, PoseStack poseStack) { + var frontFacing = machine.getFrontFacing(); + var upwardFacing = machine.getUpwardsFacing(); + + poseStack.translate(0.5f, 0.5f, 0.5f); + rotateMatrix(poseStack.last().pose(), + upwardFacingAngle(upwardFacing) + (upwardFacing.getAxis() == Direction.Axis.X ? Mth.PI : 0), + getDirectionAxis(frontFacing)); + poseStack.translate(-0.5f, -0.5f, -0.5f); + } + + public static void drawAmountText(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, + long storedAmount, boolean isCreative) { + poseStack.pushPose(); + RenderSystem.disableDepthTest(); + poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, + frontFacing.getStepZ() * -1 / 16f); + + RenderUtil.moveToFace(poseStack, 0, 0, 0, frontFacing); + RenderUtil.rotateToFace(poseStack, frontFacing, Direction.NORTH); + poseStack.scale(1f / 64, 1f / 64, 0); + poseStack.translate(-32, -32, 0); + + String text; + int x = 0, y = 24; + int w = 64, h = 28; + float textX = x + w / 2.0f; + float textY = y + h / 2.0f; + + poseStack.pushPose(); + if (isCreative) { + text = "∞"; + poseStack.translate(textX, textY, 0); + poseStack.scale(3.0f, 3.0f, 1.0f); + poseStack.translate(-textX, -textY, 0); + } else { + text = storedAmount <= 0 ? "*" : FormattingUtil.formatNumberReadable(storedAmount, false); + } + + Font font = Minecraft.getInstance().font; + font.drawInBatch(text, textX - font.getSplitter().stringWidth(text) / 2.0f, textY - font.lineHeight / 2.0f, + 0xffffffff, false, + poseStack.last().pose(), buffer, Font.DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); + poseStack.popPose(); + RenderSystem.enableDepthTest(); + poseStack.popPose(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java new file mode 100644 index 00000000000..f74b4668620 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java @@ -0,0 +1,140 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderBufferHelper; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.machine.storage.CreativeTankMachine; +import com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.core.Direction; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; +import net.minecraftforge.fluids.FluidStack; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.serialization.Codec; + +import java.util.EnumSet; + +import javax.annotation.Nullable; + +import static com.gregtechceu.gtceu.client.renderer.machine.impl.QuantumChestItemRender.*; +import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; + +public class QuantumTankFluidRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(QuantumTankFluidRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(QuantumTankFluidRender.CODEC); + // spotless:on + + private static final float MIN = 0.16f; + private static final float MAX = 0.84f; + + private static @Nullable Item CREATIVE_FLUID_ITEM = null; + + public QuantumTankFluidRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, + PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { + if (CREATIVE_FLUID_ITEM == null) CREATIVE_FLUID_ITEM = GTMachines.CREATIVE_FLUID.getItem(); + if (stack.hasTag()) { + poseStack.pushPose(); + poseStack.translate(-0.5D, -0.5D, -0.5D); + + FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); + long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); + if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); + long maxAmount = 0; + if (stack.getItem() instanceof MetaMachineItem machineItem) { + maxAmount = TANK_CAPACITY.getLong(machineItem.getDefinition()); + } + // Don't need to handle locked fluids here since they don't get saved to the item + renderTank(poseStack, buffer, Direction.NORTH, + stored, storedAmount, maxAmount, FluidStack.EMPTY, + stack.is(CREATIVE_FLUID_ITEM)); + + poseStack.popPose(); + } + super.renderByItem(stack, displayContext, poseStack, buffer, packedLight, packedOverlay); + } + + @Override + public void render(QuantumTankMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + setupModelRotation(machine, poseStack); + + renderTank(poseStack, buffer, machine.getFrontFacing(), + machine.getStored(), machine.getStoredAmount(), machine.getMaxAmount(), machine.getLockedFluid(), + machine instanceof CreativeTankMachine); + + poseStack.popPose(); + } + + @OnlyIn(Dist.CLIENT) + public void renderTank(PoseStack poseStack, MultiBufferSource buffer, Direction frontFacing, + FluidStack stored, long storedAmount, long maxAmount, FluidStack locked, + boolean isCreative) { + FluidStack fluid = !stored.isEmpty() ? stored : locked; + if (fluid.isEmpty()) return; + + var ext = IClientFluidTypeExtensions.of(fluid.getFluid()); + var fluidSprite = RenderUtil.FluidTextureType.STILL.map(ext, fluid); + + EnumSet sidesToRender = EnumSet.of(frontFacing); + VertexConsumer builder = buffer.getBuffer(Sheets.translucentCullBlockSheet()); + + var gas = fluid.getFluid().getFluidType().isLighterThanAir(); + var percentFull = isCreative || maxAmount <= storedAmount ? 1f : (float) storedAmount / maxAmount; + + var maxTop = gas ? MAX : MIN + percentFull * (MAX - MIN); + var minBot = gas ? MIN + (1 - percentFull) * (MAX - MIN) : MIN; + float minY, maxY, minZ, maxZ; + if (frontFacing.getAxis() == Direction.Axis.Y) { + minY = MIN; + maxY = MAX; + if (frontFacing == Direction.UP) { + minZ = minBot; + maxZ = maxTop; + // the output is already rotated in the pose stack, so we don't need to rotate it again here + sidesToRender.add(gas ? Direction.SOUTH : Direction.NORTH); + } else { + // -z is top + minZ = 1 - maxTop; + maxZ = 1 - minBot; + // the output is already rotated in the pose stack, so we don't need to rotate it again here + sidesToRender.add(gas ? Direction.NORTH : Direction.SOUTH); + } + } else { + minY = minBot; + maxY = maxTop; + minZ = MIN; + maxZ = MAX; + + sidesToRender.add(gas ? Direction.DOWN : Direction.UP); + } + RenderBufferHelper.renderCube(builder, poseStack.last(), sidesToRender, + ext.getTintColor(fluid) | 0xff000000, LightTexture.FULL_BRIGHT, fluidSprite, + MIN, minY, minZ, MAX, maxY, maxZ); + + drawAmountText(poseStack, buffer, frontFacing, storedAmount, isCreative); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java new file mode 100644 index 00000000000..faae3ffe958 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java new file mode 100644 index 00000000000..4eb06edb14d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.client.renderer.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java new file mode 100644 index 00000000000..eb035bf4ed0 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/AssetEventListener.java @@ -0,0 +1,44 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.eventbus.api.Event; + +import org.jetbrains.annotations.Nullable; + +@FunctionalInterface +public interface AssetEventListener { + + void accept(T event); + + default @Nullable Class eventClass() { + return null; + } + + interface AtlasStitched extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return TextureStitchEvent.Post.class; + } + } + + interface ModifyBakingResult extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return ModelEvent.ModifyBakingResult.class; + } + } + + interface RegisterAdditional extends AssetEventListener { + + @Override + @Nullable + default Class eventClass() { + return ModelEvent.RegisterAdditional.class; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java new file mode 100644 index 00000000000..ed5e26fac7f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java @@ -0,0 +1,70 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.core.Direction; + +import lombok.Getter; + +/** + * All possible rotations for a fully orientable block. + *

+ * This code is from + * Applied + * Energistics 2, + * licensed as LGPL 3.0. + */ +public enum ExtendedBlockModelRotation { + + // DUNSWE -> SWNE + DOWN_SOUTH(90, 0, 180), + DOWN_WEST(90, 0, 270), + DOWN_NORTH(90, 0, 0), + DOWN_EAST(90, 0, 90), + + UP_SOUTH(270, 0, 0), + UP_WEST(270, 0, 90), + UP_NORTH(270, 0, 180), + UP_EAST(270, 0, 270), + + NORTH_SOUTH(0, 0, 180), + NORTH_WEST(0, 0, 270), + NORTH_NORTH(0, 0, 0), // Default + NORTH_EAST(0, 0, 90), + + SOUTH_SOUTH(0, 180, 180), + SOUTH_WEST(0, 180, 270), + SOUTH_NORTH(0, 180, 0), + SOUTH_EAST(0, 180, 90), + + WEST_SOUTH(0, 270, 180), + WEST_WEST(0, 270, 270), + WEST_NORTH(0, 270, 0), + WEST_EAST(0, 270, 90), + + EAST_SOUTH(0, 90, 180), + EAST_WEST(0, 90, 270), + EAST_NORTH(0, 90, 0), + EAST_EAST(0, 90, 90); + + public static final ExtendedBlockModelRotation[] VALUES = values(); + + @Getter + private final int angleX; + @Getter + private final int angleY; + @Getter + private final int angleZ; + + ExtendedBlockModelRotation(int angleX, int angleY, int angleZ) { + this.angleX = angleX; + this.angleY = angleY; + this.angleZ = angleZ; + } + + /** + * Gets the block orientation in which the block's front and top are facing the specified directions. + */ + public static ExtendedBlockModelRotation get(Direction frontFacing, Direction upwardsFacing) { + return VALUES[frontFacing.get3DDataValue() * 4 + upwardsFacing.get2DDataValue()]; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java b/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java new file mode 100644 index 00000000000..d1ebf6387fc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/FacadeBlockAndTintGetter.java @@ -0,0 +1,73 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.ColorResolver; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.lighting.LevelLightEngine; +import net.minecraft.world.level.material.FluidState; + +import org.jetbrains.annotations.Nullable; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class FacadeBlockAndTintGetter implements BlockAndTintGetter { + + public final BlockAndTintGetter parent; + public final BlockPos pos; + public final BlockState blockState; + public final BlockEntity blockEntity; + + public FacadeBlockAndTintGetter(BlockAndTintGetter parent, + BlockPos pos, BlockState blockState, @Nullable BlockEntity blockEntity) { + this.parent = parent; + this.pos = pos; + this.blockState = blockState; + this.blockEntity = blockEntity; + } + + @Override + public float getShade(Direction direction, boolean shade) { + return parent.getShade(direction, shade); + } + + @Override + public LevelLightEngine getLightEngine() { + return parent.getLightEngine(); + } + + @Override + public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { + return parent.getBlockTint(blockPos, colorResolver); + } + + @Override + public @Nullable BlockEntity getBlockEntity(BlockPos pos) { + return pos.equals(this.pos) ? blockEntity : parent.getBlockEntity(pos); + } + + @Override + public BlockState getBlockState(BlockPos pos) { + return pos.equals(this.pos) ? blockState : parent.getBlockState(pos); + } + + @Override + public FluidState getFluidState(BlockPos pos) { + return pos.equals(this.pos) ? blockState.getFluidState() : parent.getFluidState(pos); + } + + @Override + public int getHeight() { + return parent.getHeight(); + } + + @Override + public int getMinBuildHeight() { + return parent.getMinBuildHeight(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java new file mode 100644 index 00000000000..5f1d387c0ed --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java @@ -0,0 +1,61 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; +import net.minecraftforge.client.model.IQuadTransformer; +import net.minecraftforge.client.model.QuadTransformers; + +public final class GTQuadTransformers { + + public static IQuadTransformer offset(float by) { + if (by == 0.0f) return QuadTransformers.empty(); + + return quad -> { + int[] vertices = quad.getVertices(); + Direction direction = quad.getDirection(); + + for (int i = 0; i < 4; i++) { + int offset = i * IQuadTransformer.STRIDE + IQuadTransformer.POSITION; + float x = Float.intBitsToFloat(vertices[offset]); + float y = Float.intBitsToFloat(vertices[offset + 1]); + float z = Float.intBitsToFloat(vertices[offset + 2]); + x += by * direction.getStepX(); + y += by * direction.getStepY(); + z += by * direction.getStepZ(); + + vertices[offset] = Float.floatToRawIntBits(x); + vertices[offset + 1] = Float.floatToRawIntBits(y); + vertices[offset + 2] = Float.floatToRawIntBits(z); + } + }; + } + + public static BakedQuad setSprite(BakedQuad quad, TextureAtlasSprite sprite) { + TextureAtlasSprite oldSprite = quad.getSprite(); + int[] vertices = quad.getVertices().clone(); + + for (int i = 0; i < 4; i++) { + int offset = i * IQuadTransformer.STRIDE + IQuadTransformer.UV0; + float u = Float.intBitsToFloat(vertices[offset]); + float v = Float.intBitsToFloat(vertices[offset + 1]); + + // same as sprite.getX(oldSprite.getXOffset(x)), but we don't multiply and divide in between + u = Mth.map(u, oldSprite.getU0(), oldSprite.getU1(), sprite.getU0(), sprite.getU1()); + v = Mth.map(v, oldSprite.getV0(), oldSprite.getV1(), sprite.getV0(), sprite.getV1()); + + vertices[offset] = Float.floatToRawIntBits(u); + vertices[offset + 1] = Float.floatToRawIntBits(v); + } + return new BakedQuad(vertices, quad.getTintIndex(), quad.getDirection(), + sprite, quad.isShade(), quad.hasAmbientOcclusion()); + } + + public static BakedQuad copy(BakedQuad quad) { + return new BakedQuad(quad.getVertices().clone(), quad.getTintIndex(), quad.getDirection(), + quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); + } + + private GTQuadTransformers() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java new file mode 100644 index 00000000000..4be8759eb7b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -0,0 +1,91 @@ +package com.gregtechceu.gtceu.client.util; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.resources.model.*; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; + +import java.util.List; +import java.util.Set; + +@Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) +public class ModelUtils { + + private ModelUtils() {} + + private static final Set> EVENT_LISTENERS = new ReferenceOpenHashSet<>(); + + public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, + BlockState state, Direction side, RandomSource rand) { + return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); + } + + public static void registerAtlasStitchedEventListener(AssetEventListener.AtlasStitched listener) { + EVENT_LISTENERS.add(listener); + } + + public static void registerAtlasStitchedEventListener(final ResourceLocation atlasLocation, + final AssetEventListener.AtlasStitched listener) { + EVENT_LISTENERS.add((AssetEventListener.AtlasStitched) event -> { + if (event.getAtlas().location().equals(atlasLocation)) { + listener.accept(event); + } + }); + } + + public static void registerBakeEventListener(AssetEventListener.ModifyBakingResult listener) { + EVENT_LISTENERS.add(listener); + } + + public static void registerAddModelsEventListener(AssetEventListener.RegisterAdditional listener) { + EVENT_LISTENERS.add(listener); + } + + @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onAtlasStitched(TextureStitchEvent.Post event) { + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener).accept(event); + } + } + } + + @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener).accept(event); + } + } + } + + @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void onRegisterAdditional(ModelEvent.RegisterAdditional event) { + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener).accept(event); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java b/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java new file mode 100644 index 00000000000..ac411d26ada --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/PoseStackExtensions.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.client.util; + +import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Matrix4fc; + +public class PoseStackExtensions { + + public static void mulPoseMatrix(PoseStack self, Matrix4fc matrix) { + self.last().pose().mul(matrix); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java index 5acfe490fb3..68de7d2aa94 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java @@ -1,13 +1,18 @@ package com.gregtechceu.gtceu.client.util; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.*; import org.joml.Matrix4f; +import org.joml.Vector3f; + +import java.util.EnumSet; +import java.util.Set; @OnlyIn(Dist.CLIENT) public class RenderBufferHelper { @@ -88,4 +93,96 @@ public static void renderRing(PoseStack poseStack, VertexConsumer buffer, float } } + + public static void renderCube(VertexConsumer buffer, PoseStack.Pose pose, + int color, int combinedLight, TextureAtlasSprite sprite, + float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { + renderCube(buffer, pose, EnumSet.allOf(Direction.class), + color, combinedLight, sprite, + minX, minY, minZ, maxX, maxY, maxZ); + } + + public static void renderCube(VertexConsumer buffer, PoseStack.Pose pose, Set sidesToRender, + int color, int combinedLight, TextureAtlasSprite sprite, + float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { + float uMin = sprite.getU0(), uMax = sprite.getU1(), vMin = sprite.getV0(), vMax = sprite.getV1(); + + if (sidesToRender.contains(Direction.UP)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.UP, + minX, maxY, minZ, uMin, vMax, + minX, maxY, maxZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + maxX, maxY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.DOWN)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.DOWN, + minX, minY, minZ, uMin, vMax, + maxX, minY, minZ, uMax, vMax, + maxX, minY, maxZ, uMax, vMin, + minX, minY, maxZ, uMin, vMin); + + if (sidesToRender.contains(Direction.NORTH)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.NORTH, + minX, minY, minZ, uMin, vMax, + minX, maxY, minZ, uMax, vMax, + maxX, maxY, minZ, uMax, vMin, + maxX, minY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.SOUTH)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.SOUTH, + minX, minY, maxZ, uMin, vMax, + maxX, minY, maxZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + minX, maxY, maxZ, uMin, vMin); + + if (sidesToRender.contains(Direction.WEST)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.WEST, + minX, minY, minZ, uMin, vMax, + minX, minY, maxZ, uMax, vMax, + minX, maxY, maxZ, uMax, vMin, + minX, maxY, minZ, uMin, vMin); + + if (sidesToRender.contains(Direction.EAST)) + renderCubeFace(buffer, pose, color, combinedLight, Direction.EAST, + maxX, minY, minZ, uMin, vMax, + maxX, maxY, minZ, uMax, vMax, + maxX, maxY, maxZ, uMax, vMin, + maxX, minY, maxZ, uMin, vMin); + } + + public static void renderCubeFace(VertexConsumer buffer, PoseStack.Pose pose, + int color, int combinedLight, Direction normalDir, + float x1, float y1, float z1, float u1, float v1, + float x2, float y2, float z2, float u2, float v2, + float x3, float y3, float z3, float u3, float v3, + float x4, float y4, float z4, float u4, float v4) { + Vector3f normal = normalDir.step(); + + vertex(buffer, pose, x1, y1, z1, color, u1, v1, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x2, y2, z2, color, u2, v2, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x3, y3, z3, color, u3, v3, combinedLight, normal.x(), normal.y(), normal.z()); + vertex(buffer, pose, x4, y4, z4, color, u4, v4, combinedLight, normal.x(), normal.y(), normal.z()); + } + + public static void vertex(VertexConsumer buffer, PoseStack.Pose pose, + float x, float y, float z, + int color, float texU, float texV, int lightmapUV, + float normalX, float normalY, float normalZ) { + vertex(buffer, pose, x, y, z, color, + texU, texV, OverlayTexture.NO_OVERLAY, lightmapUV, + normalX, normalY, normalZ); + } + + public static void vertex(VertexConsumer buffer, PoseStack.Pose pose, + float x, float y, float z, int color, + float texU, float texV, int overlayUV, int lightmapUV, + float normalX, float normalY, float normalZ) { + buffer.vertex(pose.pose(), x, y, z); + buffer.color(color); + buffer.uv(texU, texV); + buffer.overlayCoords(overlayUV); + buffer.uv2(lightmapUV); + buffer.normal(pose.normal(), normalX, normalY, normalZ); + buffer.endVertex(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java index 41d425451bc..78c3c918b91 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java @@ -5,10 +5,12 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.utils.GTMatrixUtils; import com.gregtechceu.gtceu.utils.ResearchManager; import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import net.minecraft.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; @@ -17,6 +19,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemStack; @@ -29,11 +32,14 @@ import net.minecraftforge.fluids.FluidStack; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; +import org.joml.Quaternionf; import org.joml.Vector3f; +import org.joml.Vector3fc; import java.util.*; import java.util.function.BiFunction; @@ -85,35 +91,33 @@ public static Vector3f vec3f(float x, float y, float z) { return new Vector3f(x, y, z); } - private static final Map DIRECTION_POSITION_MAP = new HashMap<>() { - - { - put(Direction.UP, new Vector3f[] { vec3f(0, 1, 1), vec3f(1, 1, 1), vec3f(1, 1, 0), vec3f(0, 1, 0) }); - put(Direction.DOWN, new Vector3f[] { vec3f(1, 0, 1), vec3f(0, 0, 1), vec3f(0, 0, 0), vec3f(1, 0, 0) }); - put(Direction.SOUTH, new Vector3f[] { vec3f(1, 1, 0), vec3f(1, 0, 0), vec3f(0, 0, 0), vec3f(0, 1, 0) }); - put(Direction.NORTH, new Vector3f[] { vec3f(0, 1, 1), vec3f(0, 0, 1), vec3f(1, 0, 1), vec3f(1, 1, 1) }); - put(Direction.EAST, new Vector3f[] { vec3f(0, 1, 0), vec3f(0, 0, 0), vec3f(0, 0, 1), vec3f(0, 1, 1) }); - put(Direction.WEST, new Vector3f[] { vec3f(1, 1, 1), vec3f(1, 0, 1), vec3f(1, 0, 0), vec3f(1, 1, 0) }); - } - }; - - public static Vector3f[] getVertices(Direction direction) { + // spotless:off + private static final Map DIRECTION_POSITION_MAP = Util.make(new EnumMap<>(Direction.class), map -> { + map.put(Direction.UP, new Vector3fc[] { vec3f(0, 1, 1), vec3f(1, 1, 1), vec3f(1, 1, 0), vec3f(0, 1, 0) }); + map.put(Direction.DOWN, new Vector3fc[] { vec3f(1, 0, 1), vec3f(0, 0, 1), vec3f(0, 0, 0), vec3f(1, 0, 0) }); + map.put(Direction.SOUTH, new Vector3fc[] { vec3f(1, 1, 0), vec3f(1, 0, 0), vec3f(0, 0, 0), vec3f(0, 1, 0) }); + map.put(Direction.NORTH, new Vector3fc[] { vec3f(0, 1, 1), vec3f(0, 0, 1), vec3f(1, 0, 1), vec3f(1, 1, 1) }); + map.put(Direction.EAST, new Vector3fc[] { vec3f(0, 1, 0), vec3f(0, 0, 0), vec3f(0, 0, 1), vec3f(0, 1, 1) }); + map.put(Direction.WEST, new Vector3fc[] { vec3f(1, 1, 1), vec3f(1, 0, 1), vec3f(1, 0, 0), vec3f(1, 1, 0) }); + }); + // spotless:on + + public static Vector3fc[] getVertices(Direction direction) { return DIRECTION_POSITION_MAP.get(direction); } - private static final Map DIRECTION_NORMAL_MAP = new HashMap<>() { - - { - put(Direction.UP, vec3f(0, 1, 0)); - put(Direction.DOWN, vec3f(0, 1, 0)); - put(Direction.SOUTH, vec3f(0, 0, 1)); - put(Direction.NORTH, vec3f(0, 0, 1)); - put(Direction.EAST, vec3f(1, 0, 0)); - put(Direction.WEST, vec3f(1, 0, 0)); - } - }; - - public static Vector3f getNormal(Direction direction) { + // spotless:off + private static final Map DIRECTION_NORMAL_MAP = Util.make(new EnumMap<>(Direction.class), map -> { + map.put(Direction.UP, vec3f(0, 1, 0)); + map.put(Direction.DOWN, vec3f(0, 1, 0)); + map.put(Direction.SOUTH, vec3f(0, 0, 1)); + map.put(Direction.NORTH, vec3f(0, 0, 1)); + map.put(Direction.EAST, vec3f(1, 0, 0)); + map.put(Direction.WEST, vec3f(1, 0, 0)); + }); + // spotless:on + + public static Vector3fc getNormal(Direction direction) { return DIRECTION_NORMAL_MAP.get(direction); } @@ -123,9 +127,9 @@ public static int getFluidLight(Fluid fluid, BlockPos pos) { pos); } - public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, float y, float z, int r, int g, - int b, int a, float u, float v, int overlayCoords, int lightOverlay, float v0, float v1, - float v2) { + public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, float y, float z, + int r, int g, int b, int a, float u, float v, int overlayCoords, int lightOverlay, + float v0, float v1, float v2) { /* * For future reference: * The order of the vertex calls is important. @@ -141,8 +145,8 @@ public static void vertex(Matrix4f pose, VertexConsumer vertexConsumer, float x, .endVertex(); } - public static Vector3f transformVertex(Vector3f vertex, Direction direction, float offsetX, float offsetY, - float offsetZ) { + public static Vector3f transformVertex(Vector3fc vertex, Direction direction, + float offsetX, float offsetY, float offsetZ) { float addX = offsetX, addY = offsetY, addZ = offsetZ; switch (direction) { case DOWN -> addY = -addY; @@ -150,10 +154,10 @@ public static Vector3f transformVertex(Vector3f vertex, Direction direction, flo case EAST -> addX = -addX; } - return vec3f(vertex.x + addX, vertex.y + addY, vertex.z + addZ); + return new Vector3f(vertex).add(addX, addY, addZ); } - public static Fluid getRecipeFluidToRender(GTRecipe recipe) { + public static @Nullable Fluid getRecipeFluidToRender(GTRecipe recipe) { if (recipe == null) { return null; } @@ -188,6 +192,44 @@ public static Fluid getRecipeFluidToRender(GTRecipe recipe) { return fluid; } + public static void moveToFace(PoseStack poseStack, double x, double y, double z, Direction face) { + poseStack.translate(x + 0.5d + face.getStepX() * 0.5d, + y + 0.5d + face.getStepY() * 0.5d, + z + 0.5d + face.getStepZ() * 0.5d); + } + + /** + * Rotate the current coordinate system, so it is on the face of the given block side. + * This can be used to render on the given face as if it was a 2D canvas, + * where x+ is facing right and y+ is facing up. + */ + public static void rotateToFace(PoseStack poseStack, Direction face, Direction spin) { + float rotationAngle = Mth.HALF_PI * switch (face) { + case UP, WEST -> 1; + case DOWN, EAST -> -1; + case SOUTH -> 2; + case NORTH -> 0; + }; + Quaternionf rotation = new Quaternionf(); + if (face.getAxis() == Direction.Axis.Y) { + poseStack.scale(1.0f, -1.0f, 1.0f); + rotation.rotateAxis(rotationAngle, new Vector3f(1, 0, 0)); + } else { + poseStack.scale(-1.0f, -1.0f, -1.0f); + rotation.rotateAxis(rotationAngle, new Vector3f(0, 1, 0)); + } + rotation.rotateAxis(getSpinAngle(spin, face), new Vector3f(0, 0, 1)); + + poseStack.mulPose(rotation); + } + + private static float getSpinAngle(Direction spin, Direction face) { + if (spin.getAxis() == Direction.Axis.Z && face == Direction.DOWN) { + spin = spin.getOpposite(); + } + return GTMatrixUtils.upwardFacingAngle(spin); + } + public static boolean renderResearchItemContent(GuiGraphics graphics, Operation originalMethod, @Nullable LivingEntity entity, @Nullable Level level, ItemStack stack, int x, int y, int z, int seed) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index 906baa5e6ac..4e349b503cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -19,6 +19,7 @@ import net.minecraftforge.client.model.QuadTransformers; import com.mojang.math.Transformation; +import org.jetbrains.annotations.Nullable; import org.joml.*; import java.lang.Math; @@ -60,7 +61,7 @@ public static BakedQuad bakeFace(AABB cube, Direction face, TextureAtlasSprite s return bakeQuad( new Vector3f((float) cube.minX * 16f, (float) cube.minY * 16f, (float) cube.minZ * 16f), new Vector3f((float) cube.maxX * 16f, (float) cube.maxY * 16f, (float) cube.maxZ * 16f), - new BlockElementFace(cull ? face : null, tintIndex, "", + new BlockElementFace(cull ? face : null, tintIndex, sprite.contents().name().toString(), new BlockFaceUV(new float[] { 0.0F, 0.0F, 16.0F, 16.0F }, 0)), sprite, face, @@ -92,191 +93,173 @@ public static BakedQuad bakeFace(Direction face, TextureAtlasSprite sprite) { return bakeFace(face, sprite, BlockModelRotation.X0_Y0); } - public static BakedQuad bakeQuad( - Vector3f posFrom, + public static BakedQuad bakeQuad(Vector3f posFrom, Vector3f posTo, BlockElementFace face, TextureAtlasSprite sprite, Direction facing, ModelState transform, - @javax.annotation.Nullable BlockElementRotation partRotation, + @Nullable BlockElementRotation partRotation, boolean shade, int emissivity) { - BlockFaceUV blockfaceuv = face.uv; + BlockFaceUV uvs = face.uv; if (transform.isUvLocked()) { - blockfaceuv = recomputeUVs(face.uv, facing, transform.getRotation()); + uvs = recomputeUVs(face.uv, facing, transform.getRotation()); } - float[] afloat = new float[blockfaceuv.uvs.length]; - System.arraycopy(blockfaceuv.uvs, 0, afloat, 0, afloat.length); - float f = sprite.uvShrinkRatio(); - float f1 = (blockfaceuv.uvs[0] + blockfaceuv.uvs[0] + blockfaceuv.uvs[2] + blockfaceuv.uvs[2]) / VERTEX_COUNT; - float f2 = (blockfaceuv.uvs[1] + blockfaceuv.uvs[1] + blockfaceuv.uvs[3] + blockfaceuv.uvs[3]) / VERTEX_COUNT; - blockfaceuv.uvs[0] = Mth.lerp(f, blockfaceuv.uvs[0], f1); - blockfaceuv.uvs[2] = Mth.lerp(f, blockfaceuv.uvs[2], f1); - blockfaceuv.uvs[1] = Mth.lerp(f, blockfaceuv.uvs[1], f2); - blockfaceuv.uvs[3] = Mth.lerp(f, blockfaceuv.uvs[3], f2); - int[] aint = makeVertices(blockfaceuv, sprite, facing, setupShape(posFrom, posTo), transform.getRotation(), - partRotation, shade); - Direction direction = calculateFacing(aint); - System.arraycopy(afloat, 0, blockfaceuv.uvs, 0, afloat.length); + float[] originalUVs = new float[uvs.uvs.length]; + System.arraycopy(uvs.uvs, 0, originalUVs, 0, originalUVs.length); + + float shrinkRatio = sprite.uvShrinkRatio(); + float uMiddle = (uvs.uvs[0] * 2 + uvs.uvs[2] * 2) / VERTEX_COUNT; + float vMiddle = (uvs.uvs[1] * 2 + uvs.uvs[3] * 2) / VERTEX_COUNT; + uvs.uvs[0] = Mth.lerp(shrinkRatio, uvs.uvs[0], uMiddle); + uvs.uvs[2] = Mth.lerp(shrinkRatio, uvs.uvs[2], uMiddle); + uvs.uvs[1] = Mth.lerp(shrinkRatio, uvs.uvs[1], vMiddle); + uvs.uvs[3] = Mth.lerp(shrinkRatio, uvs.uvs[3], vMiddle); + + int[] vertices = makeVertices(uvs, sprite, facing, + setupShape(posFrom, posTo), transform.getRotation(), partRotation, shade); + Direction direction = calculateFacing(vertices); + System.arraycopy(originalUVs, 0, uvs.uvs, 0, originalUVs.length); if (partRotation == null) { - recalculateWinding(aint, direction); + recalculateWinding(vertices, direction); } - ForgeHooksClient.fillNormal(aint, direction); + ForgeHooksClient.fillNormal(vertices, direction); ForgeFaceData data = face.getFaceData(); - BakedQuad quad = new BakedQuad(aint, face.tintIndex, direction, sprite, shade, data.ambientOcclusion()); + BakedQuad quad = new BakedQuad(vertices, face.tintIndex, direction, sprite, shade, data.ambientOcclusion()); if (!ForgeFaceData.DEFAULT.equals(data)) { QuadTransformers.applyingLightmap(data.blockLight(), data.skyLight()).processInPlace(quad); QuadTransformers.applyingColor(data.color()).processInPlace(quad); } - com.lowdragmc.lowdraglib.client.bakedpipeline.QuadTransformers.settingEmissivity(emissivity) - .processInPlace(quad); + QuadTransformers.settingEmissivity(emissivity).processInPlace(quad); return quad; } public static BlockFaceUV recomputeUVs(BlockFaceUV uv, Direction facing, Transformation modelRotation) { - Matrix4f matrix4f = BlockMath + Matrix4f uvLock = BlockMath .getUVLockTransform(modelRotation, facing, () -> "Unable to resolve UVLock for model").getMatrix(); - float f = uv.getU(uv.getReverseIndex(0)); - float f1 = uv.getV(uv.getReverseIndex(0)); - Vector4f vector4f = matrix4f.transform(new Vector4f(f / 16.0F, f1 / 16.0F, 0.0F, 1.0F)); - float f2 = 16.0F * vector4f.x(); - float f3 = 16.0F * vector4f.y(); - float f4 = uv.getU(uv.getReverseIndex(2)); - float f5 = uv.getV(uv.getReverseIndex(2)); - Vector4f vector4f1 = matrix4f.transform(new Vector4f(f4 / 16.0F, f5 / 16.0F, 0.0F, 1.0F)); - float f6 = 16.0F * vector4f1.x(); - float f7 = 16.0F * vector4f1.y(); - float f8; - float f9; - if (Math.signum(f4 - f) == Math.signum(f6 - f2)) { - f8 = f2; - f9 = f6; + float maybeUMin = uv.getU(uv.getReverseIndex(0)); + float maybeVMin = uv.getV(uv.getReverseIndex(0)); + Vector4f lockedUVMin = uvLock.transform(new Vector4f(maybeUMin / 16.0F, maybeVMin / 16.0F, 0.0F, 1.0F)); + float uMinScaled = 16.0F * lockedUVMin.x(); + float vMinScaled = 16.0F * lockedUVMin.y(); + float maybeUMax = uv.getU(uv.getReverseIndex(2)); + float maybeVMax = uv.getV(uv.getReverseIndex(2)); + Vector4f lockedUVMax = uvLock.transform(new Vector4f(maybeUMax / 16.0F, maybeVMax / 16.0F, 0.0F, 1.0F)); + float uMaxScaled = 16.0F * lockedUVMax.x(); + float vMaxScaled = 16.0F * lockedUVMax.y(); + float uMin; + float uMax; + if (Math.signum(maybeUMax - maybeUMin) == Math.signum(uMaxScaled - uMinScaled)) { + uMin = uMinScaled; + uMax = uMaxScaled; } else { - f8 = f6; - f9 = f2; + uMin = uMaxScaled; + uMax = uMinScaled; } - float f10; - float f11; - if (Math.signum(f5 - f1) == Math.signum(f7 - f3)) { - f10 = f3; - f11 = f7; + float vMin; + float vMax; + if (Math.signum(maybeVMax - maybeVMin) == Math.signum(vMaxScaled - vMinScaled)) { + vMin = vMinScaled; + vMax = vMaxScaled; } else { - f10 = f7; - f11 = f3; + vMin = vMaxScaled; + vMax = vMinScaled; } - float f12 = (float) Math.toRadians(uv.rotation); - Matrix3f matrix3f = new Matrix3f(matrix4f); - Vector3f vector3f = matrix3f.transform(new Vector3f(Mth.cos(f12), Mth.sin(f12), 0.0F)); - int i = Math.floorMod( - -((int) Math.round(Math.toDegrees(Math.atan2((double) vector3f.y(), (double) vector3f.x())) / 90.0)) * - 90, + float rotation = (float) Math.toRadians(uv.rotation); + Matrix3f uvMat3 = new Matrix3f(uvLock); + Vector3f rotVector = uvMat3.transform(new Vector3f(Mth.cos(rotation), Mth.sin(rotation), 0.0F)); + int rotationDegrees = Math.floorMod( + -((int) Math.round(Math.toDegrees(Math.atan2(rotVector.y(), rotVector.x())) / 90.0)) * 90, 360); - return new BlockFaceUV(new float[] { f8, f10, f9, f11 }, i); + return new BlockFaceUV(new float[] { uMin, vMin, uMax, vMax }, rotationDegrees); } - private static int[] makeVertices( - BlockFaceUV uvs, - TextureAtlasSprite sprite, - Direction orientation, - float[] posDiv16, - Transformation rotation, - @javax.annotation.Nullable BlockElementRotation partRotation, + private static int[] makeVertices(BlockFaceUV uvs, TextureAtlasSprite sprite, + Direction orientation, float[] shape, + Transformation rotation, @Nullable BlockElementRotation partRotation, boolean shade) { - int[] aint = new int[32]; - + int[] vert = new int[32]; for (int i = 0; i < 4; ++i) { - bakeVertex(aint, i, orientation, uvs, posDiv16, sprite, rotation, partRotation, shade); + bakeVertex(vert, i, orientation, uvs, sprite, shape, rotation, partRotation, shade); } - - return aint; + return vert; } - private static void bakeVertex( - int[] vertexData, - int vertexIndex, - Direction facing, - BlockFaceUV blockFaceUV, - float[] posDiv16, - TextureAtlasSprite sprite, - Transformation rotation, - @javax.annotation.Nullable BlockElementRotation partRotation, + private static void bakeVertex(int[] vertexData, int vertexIndex, Direction facing, + BlockFaceUV blockFaceUV, TextureAtlasSprite sprite, float[] shape, + Transformation rotation, @Nullable BlockElementRotation partRotation, boolean shade) { - FaceInfo.VertexInfo faceinfo$vertexinfo = FaceInfo.fromFacing(facing).getVertexInfo(vertexIndex); - Vector3f vector3f = new Vector3f(posDiv16[faceinfo$vertexinfo.xFace], posDiv16[faceinfo$vertexinfo.yFace], - posDiv16[faceinfo$vertexinfo.zFace]); - applyElementRotation(vector3f, partRotation); - applyModelRotation(vector3f, rotation); - fillVertex(vertexData, vertexIndex, vector3f, sprite, blockFaceUV); + FaceInfo.VertexInfo vertexInfo = FaceInfo.fromFacing(facing).getVertexInfo(vertexIndex); + Vector3f face = new Vector3f(shape[vertexInfo.xFace], shape[vertexInfo.yFace], shape[vertexInfo.zFace]); + applyElementRotation(face, partRotation); + applyModelRotation(face, rotation); + fillVertex(vertexData, vertexIndex, face, sprite, blockFaceUV); } - private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f vector, TextureAtlasSprite sprite, - BlockFaceUV blockFaceUV) { + private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f face, + TextureAtlasSprite sprite, BlockFaceUV blockFaceUV) { int i = vertexIndex * VERTEX_INT_SIZE; - vertexData[i] = Float.floatToRawIntBits(vector.x()); - vertexData[i + 1] = Float.floatToRawIntBits(vector.y()); - vertexData[i + 2] = Float.floatToRawIntBits(vector.z()); - vertexData[i + COLOR_INDEX] = -1; + vertexData[i] = Float.floatToRawIntBits(face.x()); + vertexData[i + 1] = Float.floatToRawIntBits(face.y()); + vertexData[i + 2] = Float.floatToRawIntBits(face.z()); + vertexData[i + COLOR_INDEX] = 0xffffffff; vertexData[i + UV_INDEX] = Float.floatToRawIntBits( - sprite.getU((double) blockFaceUV.getU(vertexIndex) * 0.999 + - (double) blockFaceUV.getU((vertexIndex + 2) % 4) * 0.001)); - vertexData[i + 4 + 1] = Float.floatToRawIntBits( - sprite.getV((double) blockFaceUV.getV(vertexIndex) * 0.999 + - (double) blockFaceUV.getV((vertexIndex + 2) % 4) * 0.001)); + sprite.getU(blockFaceUV.getU(vertexIndex) * 0.999 + blockFaceUV.getU((vertexIndex + 2) % 4) * 0.001)); + vertexData[i + UV_INDEX + 1] = Float.floatToRawIntBits( + sprite.getV(blockFaceUV.getV(vertexIndex) * 0.999 + blockFaceUV.getV((vertexIndex + 2) % 4) * 0.001)); } private static float[] setupShape(Vector3f min, Vector3f max) { - float[] afloat = new float[Direction.values().length]; - afloat[FaceInfo.Constants.MIN_X] = min.x() / 16.0F; - afloat[FaceInfo.Constants.MIN_Y] = min.y() / 16.0F; - afloat[FaceInfo.Constants.MIN_Z] = min.z() / 16.0F; - afloat[FaceInfo.Constants.MAX_X] = max.x() / 16.0F; - afloat[FaceInfo.Constants.MAX_Y] = max.y() / 16.0F; - afloat[FaceInfo.Constants.MAX_Z] = max.z() / 16.0F; - return afloat; + float[] shape = new float[Direction.values().length]; + shape[FaceInfo.Constants.MIN_X] = min.x() / 16.0F; + shape[FaceInfo.Constants.MIN_Y] = min.y() / 16.0F; + shape[FaceInfo.Constants.MIN_Z] = min.z() / 16.0F; + shape[FaceInfo.Constants.MAX_X] = max.x() / 16.0F; + shape[FaceInfo.Constants.MAX_Y] = max.y() / 16.0F; + shape[FaceInfo.Constants.MAX_Z] = max.z() / 16.0F; + return shape; } - private static void applyElementRotation(Vector3f vec, - @javax.annotation.Nullable BlockElementRotation partRotation) { + private static void applyElementRotation(Vector3f vec, @Nullable BlockElementRotation partRotation) { if (partRotation != null) { - Vector3f vector3f; - Vector3f vector3f1; + Vector3f axis; + Vector3f scale; switch (partRotation.axis()) { case X -> { - vector3f = new Vector3f(1.0F, 0.0F, 0.0F); - vector3f1 = new Vector3f(0.0F, 1.0F, 1.0F); + axis = new Vector3f(1.0F, 0.0F, 0.0F); + scale = new Vector3f(0.0F, 1.0F, 1.0F); } case Y -> { - vector3f = new Vector3f(0.0F, 1.0F, 0.0F); - vector3f1 = new Vector3f(1.0F, 0.0F, 1.0F); + axis = new Vector3f(0.0F, 1.0F, 0.0F); + scale = new Vector3f(1.0F, 0.0F, 1.0F); } case Z -> { - vector3f = new Vector3f(0.0F, 0.0F, 1.0F); - vector3f1 = new Vector3f(1.0F, 1.0F, 0.0F); + axis = new Vector3f(0.0F, 0.0F, 1.0F); + scale = new Vector3f(1.0F, 1.0F, 0.0F); } default -> throw new IllegalArgumentException("There are only 3 axes"); } - Quaternionf quaternionf = new Quaternionf().rotationAxis(partRotation.angle() * (float) (Math.PI / 180.0), - vector3f); + Quaternionf rotation = new Quaternionf() + .rotationAxis(partRotation.angle() * (float) (Math.PI / 180.0), axis); if (partRotation.rescale()) { if (Math.abs(partRotation.angle()) == 22.5F) { - vector3f1.mul(RESCALE_22_5); + scale.mul(RESCALE_22_5); } else { - vector3f1.mul(RESCALE_45); + scale.mul(RESCALE_45); } - - vector3f1.add(1.0F, 1.0F, 1.0F); + scale.add(1.0F, 1.0F, 1.0F); } else { - vector3f1.set(1.0F, 1.0F, 1.0F); + scale.set(1.0F, 1.0F, 1.0F); } - rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(quaternionf), vector3f1); + rotateVertexBy(vec, new Vector3f(partRotation.origin()), new Matrix4f().rotation(rotation), scale); } } @@ -287,73 +270,68 @@ public static void applyModelRotation(Vector3f pos, Transformation transform) { } private static void rotateVertexBy(Vector3f pos, Vector3f origin, Matrix4f transform, Vector3f scale) { - Vector4f vector4f = transform - .transform(new Vector4f(pos.x() - origin.x(), pos.y() - origin.y(), pos.z() - origin.z(), 1.0F)); - vector4f.mul(new Vector4f(scale, 1.0F)); - pos.set(vector4f.x() + origin.x(), vector4f.y() + origin.y(), vector4f.z() + origin.z()); + Vector4f transformed = new Vector4f(pos.x() - origin.x(), pos.y() - origin.y(), pos.z() - origin.z(), 1.0F) + .mul(transform); + transformed.mul(new Vector4f(scale, 1.0F)); + pos.set(transformed.x() + origin.x(), transformed.y() + origin.y(), transformed.z() + origin.z()); } private static void recalculateWinding(int[] vertices, Direction direction) { - int[] aint = new int[vertices.length]; - System.arraycopy(vertices, 0, aint, 0, vertices.length); - float[] afloat = new float[Direction.values().length]; - afloat[FaceInfo.Constants.MIN_X] = 999.0F; - afloat[FaceInfo.Constants.MIN_Y] = 999.0F; - afloat[FaceInfo.Constants.MIN_Z] = 999.0F; - afloat[FaceInfo.Constants.MAX_X] = -999.0F; - afloat[FaceInfo.Constants.MAX_Y] = -999.0F; - afloat[FaceInfo.Constants.MAX_Z] = -999.0F; + int[] verticesCopy = new int[vertices.length]; + System.arraycopy(vertices, 0, verticesCopy, 0, vertices.length); + float[] shape = new float[Direction.values().length]; + shape[FaceInfo.Constants.MIN_X] = 999.0F; + shape[FaceInfo.Constants.MIN_Y] = 999.0F; + shape[FaceInfo.Constants.MIN_Z] = 999.0F; + shape[FaceInfo.Constants.MAX_X] = -999.0F; + shape[FaceInfo.Constants.MAX_Y] = -999.0F; + shape[FaceInfo.Constants.MAX_Z] = -999.0F; for (int i = 0; i < 4; ++i) { - int j = 8 * i; - float f = Float.intBitsToFloat(aint[j]); - float f1 = Float.intBitsToFloat(aint[j + 1]); - float f2 = Float.intBitsToFloat(aint[j + 2]); - if (f < afloat[FaceInfo.Constants.MIN_X]) { - afloat[FaceInfo.Constants.MIN_X] = f; + int element = 8 * i; + float x = Float.intBitsToFloat(verticesCopy[element]); + float y = Float.intBitsToFloat(verticesCopy[element + 1]); + float z = Float.intBitsToFloat(verticesCopy[element + 2]); + if (x < shape[FaceInfo.Constants.MIN_X]) { + shape[FaceInfo.Constants.MIN_X] = x; } - - if (f1 < afloat[FaceInfo.Constants.MIN_Y]) { - afloat[FaceInfo.Constants.MIN_Y] = f1; + if (y < shape[FaceInfo.Constants.MIN_Y]) { + shape[FaceInfo.Constants.MIN_Y] = y; } - - if (f2 < afloat[FaceInfo.Constants.MIN_Z]) { - afloat[FaceInfo.Constants.MIN_Z] = f2; + if (z < shape[FaceInfo.Constants.MIN_Z]) { + shape[FaceInfo.Constants.MIN_Z] = z; } - - if (f > afloat[FaceInfo.Constants.MAX_X]) { - afloat[FaceInfo.Constants.MAX_X] = f; + if (x > shape[FaceInfo.Constants.MAX_X]) { + shape[FaceInfo.Constants.MAX_X] = x; } - - if (f1 > afloat[FaceInfo.Constants.MAX_Y]) { - afloat[FaceInfo.Constants.MAX_Y] = f1; + if (y > shape[FaceInfo.Constants.MAX_Y]) { + shape[FaceInfo.Constants.MAX_Y] = y; } - - if (f2 > afloat[FaceInfo.Constants.MAX_Z]) { - afloat[FaceInfo.Constants.MAX_Z] = f2; + if (z > shape[FaceInfo.Constants.MAX_Z]) { + shape[FaceInfo.Constants.MAX_Z] = z; } } - FaceInfo faceinfo = FaceInfo.fromFacing(direction); - - for (int i1 = 0; i1 < 4; ++i1) { - int j1 = 8 * i1; - FaceInfo.VertexInfo faceinfo$vertexinfo = faceinfo.getVertexInfo(i1); - float f8 = afloat[faceinfo$vertexinfo.xFace]; - float f3 = afloat[faceinfo$vertexinfo.yFace]; - float f4 = afloat[faceinfo$vertexinfo.zFace]; - vertices[j1] = Float.floatToRawIntBits(f8); - vertices[j1 + 1] = Float.floatToRawIntBits(f3); - vertices[j1 + 2] = Float.floatToRawIntBits(f4); - - for (int k = 0; k < 4; ++k) { - int l = 8 * k; - float f5 = Float.intBitsToFloat(aint[l]); - float f6 = Float.intBitsToFloat(aint[l + 1]); - float f7 = Float.intBitsToFloat(aint[l + 2]); - if (Mth.equal(f8, f5) && Mth.equal(f3, f6) && Mth.equal(f4, f7)) { - vertices[j1 + 4] = aint[l + 4]; - vertices[j1 + 4 + 1] = aint[l + 4 + 1]; + FaceInfo faceInfo = FaceInfo.fromFacing(direction); + + for (int vert1 = 0; vert1 < 4; ++vert1) { + int e1 = 8 * vert1; + FaceInfo.VertexInfo vertexInfo = faceInfo.getVertexInfo(vert1); + float x1 = shape[vertexInfo.xFace]; + float y1 = shape[vertexInfo.yFace]; + float z1 = shape[vertexInfo.zFace]; + vertices[e1] = Float.floatToRawIntBits(x1); + vertices[e1 + 1] = Float.floatToRawIntBits(y1); + vertices[e1 + 2] = Float.floatToRawIntBits(z1); + + for (int vert2 = 0; vert2 < 4; ++vert2) { + int e2 = 8 * vert2; + float x2 = Float.intBitsToFloat(verticesCopy[e2]); + float y2 = Float.intBitsToFloat(verticesCopy[e2 + 1]); + float z2 = Float.intBitsToFloat(verticesCopy[e2 + 2]); + if (Mth.equal(x1, x2) && Mth.equal(y1, y2) && Mth.equal(z1, z2)) { + vertices[e1 + 4] = verticesCopy[e2 + 4]; + vertices[e1 + 4 + 1] = verticesCopy[e2 + 4 + 1]; } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java b/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java new file mode 100644 index 00000000000..dbced90bc09 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/VariantRotationHelpers.java @@ -0,0 +1,67 @@ +package com.gregtechceu.gtceu.client.util; + +import net.minecraft.client.renderer.block.model.Variant; +import net.minecraft.client.resources.model.BlockModelRotation; +import net.minecraft.util.Mth; + +import com.google.common.base.Preconditions; +import com.mojang.math.Transformation; +import org.joml.Quaternionf; + +/** + * This code is from + * Applied + * Energistics 2, + * licensed as LGPL 3.0. + */ +public class VariantRotationHelpers { + + private static final Transformation[] TRANSFORMS = createTransformations(); + + private static Transformation[] createTransformations() { + var result = new Transformation[4 * 4 * 4]; + + for (var xRot = 0; xRot < 360; xRot += 90) { + for (var yRot = 0; yRot < 360; yRot += 90) { + // Reuse existing transform from Vanilla + result[indexFromAngles(xRot, yRot, 0)] = BlockModelRotation.by(xRot, yRot).getRotation(); + + for (var zRot = 90; zRot < 360; zRot += 90) { + var idx = indexFromAngles(xRot, yRot, zRot); + + // NOTE: Mojang's block model rotation rotates in the opposite direction + var quaternion = new Quaternionf().rotateYXZ( + -yRot * Mth.DEG_TO_RAD, + -xRot * Mth.DEG_TO_RAD, + -zRot * Mth.DEG_TO_RAD); + + result[idx] = new Transformation(null, quaternion, null, null); + } + } + } + + return result; + } + + private VariantRotationHelpers() {} + + public static Variant rotateVariant(Variant variant, int xRot, int yRot, int zRot) { + return new Variant( + variant.getModelLocation(), + getRotationTransform(xRot, yRot, zRot), + variant.isUvLocked(), + variant.getWeight()); + } + + public static Transformation getRotationTransform(int xRot, int yRot, int zRot) { + return TRANSFORMS[indexFromAngles(xRot, yRot, zRot)]; + } + + private static int indexFromAngles(int xRot, int yRot, int zRot) { + Preconditions.checkArgument(xRot >= 0 && xRot < 360 && xRot % 90 == 0); + Preconditions.checkArgument(yRot >= 0 && yRot < 360 && yRot % 90 == 0); + Preconditions.checkArgument(zRot >= 0 && zRot < 360 && zRot % 90 == 0); + return xRot / 90 * 16 + yRot / 90 * 4 + zRot / 90; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 996a0f0de59..e7e579039c6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -117,6 +117,10 @@ public static void init() { UIFactory.register(MachineUIFactory.INSTANCE); UIFactory.register(CoverUIFactory.INSTANCE); UIFactory.register(GTUIEditorFactory.INSTANCE); + + // Initialize the model generator before any content is loaded so machine models can use the generated data + GregTechDatagen.initPre(); + GTPlacerTypes.init(); GTRecipeCapabilities.init(); GTRecipeConditions.init(); @@ -149,7 +153,7 @@ public static void init() { // fabric exclusive, squeeze this in here to register before stuff is used GTRegistration.REGISTRATE.registerRegistrate(); - GregTechDatagen.init(); + GregTechDatagen.initPost(); // Register all material manager registries, for materials with mod ids. GTCEuAPI.materialManager.getRegistries().forEach(registry -> { // Force the material lang generator to be at index 0, so that addons' lang generators can override it. diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java index 404fe9a3a94..b6ec41f6d2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/BoilerFireboxType.java @@ -4,10 +4,29 @@ import net.minecraft.resources.ResourceLocation; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; import org.jetbrains.annotations.NotNull; +import java.util.HashMap; +import java.util.Map; + public record BoilerFireboxType(String name, ResourceLocation bottom, ResourceLocation top, ResourceLocation side) { + public static final Map FIREBOX_TYPES = new HashMap<>(); + public static final Codec CODEC = Codec.STRING.comapFlatMap(name -> { + BoilerFireboxType type = FIREBOX_TYPES.get(name); + if (type != null) { + return DataResult.success(type); + } else { + return DataResult.error(() -> "A firebox type named " + name + " does not exist"); + } + }, BoilerFireboxType::name); + + public BoilerFireboxType { + FIREBOX_TYPES.put(name, this); + } + public static BoilerFireboxType BRONZE_FIREBOX = new BoilerFireboxType("bronze_firebox", GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java index bb6e2c2d40d..03ecdfdd965 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/LampBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.client.renderer.block.LampRenderer; import com.lowdragmc.lowdraglib.client.renderer.IBlockRendererProvider; @@ -37,9 +38,9 @@ @MethodsReturnNonnullByDefault public class LampBlock extends Block implements IBlockRendererProvider { - public static final BooleanProperty BLOOM = BooleanProperty.create("bloom"); + public static final BooleanProperty BLOOM = GTBlockStateProperties.BLOOM; public static final BooleanProperty LIGHT = BlockStateProperties.LIT; - public static final BooleanProperty INVERTED = BooleanProperty.create("inverted"); + public static final BooleanProperty INVERTED = GTBlockStateProperties.INVERTED; public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final String TAG_INVERTED = "inverted"; @@ -60,7 +61,7 @@ public LampBlock(Properties properties, DyeColor color, boolean bordered) { this.color = color; this.bordered = bordered; registerDefaultState(defaultBlockState() - .setValue(BLOOM, true) + .setValue(GTBlockStateProperties.BLOOM, true) .setValue(LIGHT, true) .setValue(INVERTED, false) .setValue(POWERED, false)); @@ -82,7 +83,7 @@ public static boolean isLightEnabled(BlockState state) { } public static boolean isBloomEnabled(BlockState state) { - return state.getValue(BLOOM); + return state.getValue(GTBlockStateProperties.BLOOM); } public static boolean isInverted(CompoundTag tag) { @@ -99,7 +100,7 @@ public static boolean isBloomEnabled(CompoundTag tag) { public CompoundTag getTagFromState(BlockState state) { CompoundTag tag = new CompoundTag(); - tag.putBoolean(TAG_BLOOM, state.getValue(BLOOM)); + tag.putBoolean(TAG_BLOOM, state.getValue(GTBlockStateProperties.BLOOM)); tag.putBoolean(TAG_LIT, state.getValue(LIGHT)); tag.putBoolean(TAG_INVERTED, state.getValue(INVERTED)); return tag; @@ -117,7 +118,7 @@ public ItemStack getStackFromIndex(int i) { @Override protected void createBlockStateDefinition(StateDefinition.Builder builder) { - super.createBlockStateDefinition(builder.add(INVERTED, BLOOM, LIGHT, POWERED)); + super.createBlockStateDefinition(builder.add(INVERTED, GTBlockStateProperties.BLOOM, LIGHT, POWERED)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java index 57c4ccbc1d6..5a6970fa742 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/RubberLogBlock.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.block; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.common.data.GTBlocks; import net.minecraft.MethodsReturnNonnullByDefault; @@ -20,7 +21,7 @@ @MethodsReturnNonnullByDefault public class RubberLogBlock extends RotatedPillarBlock { - public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); + public static final BooleanProperty NATURAL = GTBlockStateProperties.NATURAL; public RubberLogBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index 7137054ee82..40965eb8aad 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -43,6 +43,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.JsonOps; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.*; @@ -294,7 +295,7 @@ private static int dumpDataRegistry(CommandContext conte for (ResourceLocation id : registry.keys()) { T entry = registry.get(id); JsonElement json = codec.encodeStart(ops, entry).getOrThrow(false, GTCEu.LOGGER::error); - GTDynamicDataPack.writeJson(id, folder, parent, json); + GTDynamicDataPack.writeJson(id, folder, parent, json.toString().getBytes(StandardCharsets.UTF_8)); dumpedCount++; } final int result = dumpedCount; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java index 2c7ff6f7259..fe13338548f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ConveyorCover.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IIOCover; import com.gregtechceu.gtceu.api.cover.IUICover; import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; @@ -58,7 +59,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class ConveyorCover extends CoverBehavior implements IUICover, IControllable { +public class ConveyorCover extends CoverBehavior implements IIOCover, IUICover, IControllable { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ConveyorCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java index db5a45e0fb6..8ffc6882457 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FacadeCover.java @@ -14,7 +14,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; @@ -50,10 +49,7 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onAttached(ItemStack itemStack, ServerPlayer player) { super.onAttached(itemStack, player); - var facadeStack = FacadeItemBehaviour.getFacadeStack(itemStack); - if (facadeStack.getItem() instanceof BlockItem blockItem) { - facadeState = blockItem.getBlock().defaultBlockState(); - } + this.facadeState = FacadeItemBehaviour.getFacadeState(itemStack); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java index d9fd379d5df..f0ed3536ce0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/PumpCover.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IIOCover; import com.gregtechceu.gtceu.api.cover.IUICover; import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; @@ -52,7 +53,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class PumpCover extends CoverBehavior implements IUICover, IControllable { +public class PumpCover extends CoverBehavior implements IIOCover, IUICover, IControllable { public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(PumpCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java index eae589d72a5..e6580e6ed78 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/FluidVoidingCover.java @@ -31,6 +31,7 @@ import it.unimi.dsi.fastutil.objects.Object2LongMap; import it.unimi.dsi.fastutil.objects.Object2LongMaps; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Set; @@ -129,8 +130,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return isWorkingEnabled() ? GuiTextures.TOOL_START : GuiTextures.TOOL_PAUSE; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java index 9015aea95cf..a1ec57e81f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/voiding/ItemVoidingCover.java @@ -29,6 +29,7 @@ import net.minecraftforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Set; @@ -125,8 +126,8 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { var superTips = super.sideTips(player, pos, state, toolTypes, side); if (superTips != null) return superTips; if (toolTypes.contains(GTToolType.SOFT_MALLET)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index b16edf4d173..920cd5e28e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.common.block.explosive.IndustrialTNTBlock; import com.gregtechceu.gtceu.common.block.explosive.PowderbarrelBlock; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.pipelike.duct.DuctPipeType; import com.gregtechceu.gtceu.common.pipelike.fluidpipe.longdistance.LDFluidPipeType; import com.gregtechceu.gtceu.common.pipelike.item.longdistance.LDItemPipeType; @@ -80,7 +81,6 @@ import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.common.data.GCYMBlocks.*; -import static com.gregtechceu.gtceu.common.data.GTModels.createModelBlockState; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @SuppressWarnings("removal") @@ -186,7 +186,7 @@ private static void registerDuctPipeBlock(int index) { .block("long_distance_item_pipeline", properties -> new LongDistancePipeBlock(properties, LDItemPipeType.INSTANCE)) .initialProperties(() -> Blocks.IRON_BLOCK) - .blockstate(GTModels::longDistanceItemPipeModel) + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/pipe/ld_item_pipe/block"))) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, BlockTags.NEEDS_STONE_TOOL) .simpleItem() .register(); @@ -196,7 +196,7 @@ private static void registerDuctPipeBlock(int index) { .block("long_distance_fluid_pipeline", properties -> new LongDistancePipeBlock(properties, LDFluidPipeType.INSTANCE)) .initialProperties(() -> Blocks.IRON_BLOCK) - .blockstate(GTModels::longDistanceFluidPipeModel) + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/pipe/ld_fluid_pipe/block"))) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, BlockTags.NEEDS_STONE_TOOL) .simpleItem() .register(); @@ -235,7 +235,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); public static final BlockEntry CASING_PALLADIUM_SUBSTATION = createCasingBlock("palladium_substation", GTCEu.id("block/casings/solid/machine_casing_palladium_substation")); - public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", + public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", GTCEu.id("block/casings/transparent/tempered_glass"), () -> RenderType::translucent); public static final ImmutableMap> MATERIALS_TO_CASINGS; @@ -271,7 +271,7 @@ private static void registerDuctPipeBlock(int index) { GTCEu.id("block/casings/pipe/machine_casing_grate")); public static final BlockEntry CASING_ASSEMBLY_CONTROL = createCasingBlock("assembly_line_casing", GTCEu.id("block/casings/mechanic/machine_casing_assembly_control")); - public static final BlockEntry CASING_LAMINATED_GLASS = createGlassCasingBlock("laminated_glass", + public static final BlockEntry CASING_LAMINATED_GLASS = createGlassCasingBlock("laminated_glass", GTCEu.id("block/casings/transparent/laminated_glass"), () -> RenderType::cutoutMipped); public static final BlockEntry CASING_ASSEMBLY_LINE = createActiveCasing("assembly_line_unit", "block/variant/assembly_line"); @@ -313,7 +313,7 @@ private static void registerDuctPipeBlock(int index) { .initialProperties(() -> Blocks.BEDROCK) .properties(BlockBehaviour.Properties::noOcclusion) .addLayer(() -> RenderType::cutoutMipped) - .blockstate((ctx, prov) -> createModelBlockState(ctx, prov, GTCEu.id("block/miner_pipe"))) + .exBlockstate(GTModels.createModelBlockState(GTCEu.id("block/miner_pipe"))) .tag(BlockTags.DRAGON_IMMUNE, BlockTags.WITHER_IMMUNE, BlockTags.INFINIBURN_END, BlockTags.FEATURES_CANNOT_REPLACE, BlockTags.GEODE_INVALID_BLOCKS) .register(); @@ -324,12 +324,14 @@ private static void registerDuctPipeBlock(int index) { .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.sound(SoundType.WOOD).mapColor(MapColor.WOOD)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSidedCasingModel("pump_deck", GTCEu.id("block/casings/pump_deck"))) + .blockstate(GTModels.createSidedCasingModel(GTCEu.id("block/casings/pump_deck"))) .tag(CustomTags.MINEABLE_WITH_WRENCH, BlockTags.MINEABLE_WITH_AXE) .item(BlockItem::new) .build() .register(); + // spotless:off + // Machine Casings public static final BlockEntry MACHINE_CASING_ULV = createMachineCasingBlock(ULV); public static final BlockEntry MACHINE_CASING_LV = createMachineCasingBlock(LV); @@ -359,8 +361,7 @@ private static void registerDuctPipeBlock(int index) { public static final BlockEntry HERMETIC_CASING_UHV = createHermeticCasing(UHV); public static final BlockEntry BRONZE_HULL = createSteamCasing("bronze_machine_casing", "bronze"); - public static final BlockEntry BRONZE_BRICKS_HULL = createSteamCasing("bronze_brick_casing", - "bricked_bronze"); + public static final BlockEntry BRONZE_BRICKS_HULL = createSteamCasing("bronze_brick_casing", "bricked_bronze"); public static final BlockEntry STEEL_HULL = createSteamCasing("steel_machine_casing", "steel"); public static final BlockEntry STEEL_BRICKS_HULL = createSteamCasing("steel_brick_casing", "bricked_steel"); @@ -375,63 +376,44 @@ private static void registerDuctPipeBlock(int index) { public static final BlockEntry COIL_TRITANIUM = createCoilBlock(CoilBlock.CoilType.TRITANIUM); // PSS batteries - public static final BlockEntry BATTERY_EMPTY_TIER_I = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_I); - public static final BlockEntry BATTERY_LAPOTRONIC_EV = createBatteryBlock( - BatteryBlock.BatteryPartType.EV_LAPOTRONIC); - public static final BlockEntry BATTERY_LAPOTRONIC_IV = createBatteryBlock( - BatteryBlock.BatteryPartType.IV_LAPOTRONIC); - public static final BlockEntry BATTERY_EMPTY_TIER_II = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_II); - public static final BlockEntry BATTERY_LAPOTRONIC_LuV = createBatteryBlock( - BatteryBlock.BatteryPartType.LuV_LAPOTRONIC); - public static final BlockEntry BATTERY_LAPOTRONIC_ZPM = createBatteryBlock( - BatteryBlock.BatteryPartType.ZPM_LAPOTRONIC); - public static final BlockEntry BATTERY_EMPTY_TIER_III = createBatteryBlock( - BatteryBlock.BatteryPartType.EMPTY_TIER_III); - public static final BlockEntry BATTERY_LAPOTRONIC_UV = createBatteryBlock( - BatteryBlock.BatteryPartType.UV_LAPOTRONIC); - public static final BlockEntry BATTERY_ULTIMATE_UHV = createBatteryBlock( - BatteryBlock.BatteryPartType.UHV_ULTIMATE); + public static final BlockEntry BATTERY_EMPTY_TIER_I = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_I); + public static final BlockEntry BATTERY_LAPOTRONIC_EV = createBatteryBlock(BatteryBlock.BatteryPartType.EV_LAPOTRONIC); + public static final BlockEntry BATTERY_LAPOTRONIC_IV = createBatteryBlock(BatteryBlock.BatteryPartType.IV_LAPOTRONIC); + public static final BlockEntry BATTERY_EMPTY_TIER_II = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_II); + public static final BlockEntry BATTERY_LAPOTRONIC_LuV = createBatteryBlock(BatteryBlock.BatteryPartType.LuV_LAPOTRONIC); + public static final BlockEntry BATTERY_LAPOTRONIC_ZPM = createBatteryBlock(BatteryBlock.BatteryPartType.ZPM_LAPOTRONIC); + public static final BlockEntry BATTERY_EMPTY_TIER_III = createBatteryBlock(BatteryBlock.BatteryPartType.EMPTY_TIER_III); + public static final BlockEntry BATTERY_LAPOTRONIC_UV = createBatteryBlock(BatteryBlock.BatteryPartType.UV_LAPOTRONIC); + public static final BlockEntry BATTERY_ULTIMATE_UHV = createBatteryBlock(BatteryBlock.BatteryPartType.UHV_ULTIMATE); // Intake casing - public static final BlockEntry CASING_ENGINE_INTAKE = createActiveCasing("engine_intake_casing", - "block/variant/engine_intake"); - public static final BlockEntry CASING_EXTREME_ENGINE_INTAKE = createActiveCasing( - "extreme_engine_intake_casing", "block/variant/extreme_engine_intake"); + public static final BlockEntry CASING_ENGINE_INTAKE = createActiveCasing("engine_intake_casing", "block/variant/engine_intake"); + public static final BlockEntry CASING_EXTREME_ENGINE_INTAKE = createActiveCasing("extreme_engine_intake_casing", "block/variant/extreme_engine_intake"); // Fusion public static final Map> ALL_FUSION_CASINGS = new HashMap<>(); - public static final BlockEntry SUPERCONDUCTING_COIL = createFusionCasing( - FusionCasingBlock.CasingType.SUPERCONDUCTING_COIL); - public static final BlockEntry FUSION_COIL = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_COIL); - public static final BlockEntry FUSION_CASING = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING); - public static final BlockEntry FUSION_CASING_MK2 = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING_MK2); - public static final BlockEntry FUSION_CASING_MK3 = createFusionCasing( - FusionCasingBlock.CasingType.FUSION_CASING_MK3); - public static final BlockEntry FUSION_GLASS = createGlassCasingBlock("fusion_glass", + public static final BlockEntry SUPERCONDUCTING_COIL = createFusionCasing(FusionCasingBlock.CasingType.SUPERCONDUCTING_COIL); + public static final BlockEntry FUSION_COIL = createFusionCasing(FusionCasingBlock.CasingType.FUSION_COIL); + public static final BlockEntry FUSION_CASING = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING); + public static final BlockEntry FUSION_CASING_MK2 = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING_MK2); + public static final BlockEntry FUSION_CASING_MK3 = createFusionCasing(FusionCasingBlock.CasingType.FUSION_CASING_MK3); + public static final BlockEntry FUSION_GLASS = createGlassCasingBlock("fusion_glass", GTCEu.id("block/casings/transparent/fusion_glass"), () -> RenderType::cutoutMipped); // Cleanroom - public static final BlockEntry PLASTCRETE = createCasingBlock("plascrete", - GTCEu.id("block/casings/cleanroom/plascrete")); + public static final BlockEntry PLASTCRETE = createCasingBlock("plascrete", GTCEu.id("block/casings/cleanroom/plascrete")); public static final BlockEntry FILTER_CASING = createCleanroomFilter(CleanroomFilterType.FILTER_CASING); - public static final BlockEntry FILTER_CASING_STERILE = createCleanroomFilter( - CleanroomFilterType.FILTER_CASING_STERILE); - public static final BlockEntry CLEANROOM_GLASS = createGlassCasingBlock("cleanroom_glass", - GTCEu.id("block/casings/transparent/cleanroom_glass"), () -> RenderType::cutoutMipped); + public static final BlockEntry FILTER_CASING_STERILE = createCleanroomFilter(CleanroomFilterType.FILTER_CASING_STERILE); + public static final BlockEntry CLEANROOM_GLASS = createGlassCasingBlock("cleanroom_glass", GTCEu.id("block/casings/transparent/cleanroom_glass"), () -> RenderType::cutoutMipped); // Fireboxes public static final Map> ALL_FIREBOXES = new HashMap<>(); public static final BlockEntry FIREBOX_BRONZE = createFireboxCasing(BoilerFireboxType.BRONZE_FIREBOX); public static final BlockEntry FIREBOX_STEEL = createFireboxCasing(BoilerFireboxType.STEEL_FIREBOX); - public static final BlockEntry FIREBOX_TITANIUM = createFireboxCasing( - BoilerFireboxType.TITANIUM_FIREBOX); - public static final BlockEntry FIREBOX_TUNGSTENSTEEL = createFireboxCasing( - BoilerFireboxType.TUNGSTENSTEEL_FIREBOX); + public static final BlockEntry FIREBOX_TITANIUM = createFireboxCasing(BoilerFireboxType.TITANIUM_FIREBOX); + public static final BlockEntry FIREBOX_TUNGSTENSTEEL = createFireboxCasing(BoilerFireboxType.TUNGSTENSTEEL_FIREBOX); + + // spotless:on // HPCA, AT public static final BlockEntry COMPUTER_CASING = REGISTRATE @@ -480,7 +462,7 @@ private static BlockEntry createSidedCasingBlock(String name, ResourceLoc .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSidedCasingModel(name, texture)) + .blockstate(GTModels.createSidedCasingModel(texture)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -489,26 +471,24 @@ private static BlockEntry createSidedCasingBlock(String name, ResourceLoc private static BlockEntry createBrickCasingBlock(String name, ResourceLocation texture) { // return createCasingBlock(name, GlassBlock::new, texture, () -> Blocks.GLASS, type); - NonNullFunction supplier = Block::new; - return REGISTRATE.block(name, supplier) + return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .item(BlockItem::new) .build() .register(); } - private static BlockEntry createGlassCasingBlock(String name, ResourceLocation texture, - Supplier> type) { - NonNullFunction supplier = GlassBlock::new; - return REGISTRATE.block(name, supplier) + private static BlockEntry createGlassCasingBlock(String name, ResourceLocation texture, + Supplier> type) { + return REGISTRATE.block(name, GlassBlock::new) .initialProperties(() -> Blocks.GLASS) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(type) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .item(BlockItem::new) .build() @@ -529,7 +509,7 @@ public static BlockEntry createCasingBlock(String name, .initialProperties(properties) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(type) - .blockstate(GTModels.cubeAllModel(name, texture)) + .exBlockstate(GTModels.cubeAllModel(texture)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -578,7 +558,7 @@ private static BlockEntry createSteamCasing(String name, String material) return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createSteamCasingModel(name, material)) + .blockstate(GTModels.createSteamCasingModel(material)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -591,7 +571,7 @@ private static BlockEntry createCoilBlock(ICoilType coilType) { .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createCoilModel("%s_coil_block".formatted(coilType.getName()), coilType)) + .blockstate(GTModels.createCoilModel(coilType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -606,8 +586,7 @@ private static BlockEntry createBatteryBlock(IBatteryData batteryD .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, entityType) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createBatteryBlockModel("%s_battery".formatted(batteryData.getBatteryName()), - batteryData)) + .blockstate(GTModels.createBatteryBlockModel(batteryData)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -623,7 +602,7 @@ private static BlockEntry createFusionCasing(IFusionCasingTyp .initialProperties(() -> Blocks.IRON_BLOCK) .properties(properties -> properties.strength(5.0f, 10.0f).sound(SoundType.METAL)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createFusionCasingModel(casingType.getSerializedName(), casingType)) + .blockstate(GTModels.createFusionCasingModel(casingType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, CustomTags.TOOL_TIERS[casingType.getHarvestLevel()]) .item(BlockItem::new) @@ -639,7 +618,7 @@ private static BlockEntry createCleanroomFilter(IFilterType filterType) { .properties(properties -> properties.strength(2.0f, 8.0f).sound(SoundType.METAL) .isValidSpawn((blockState, blockGetter, blockPos, entityType) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createCleanroomFilterModel(filterType.getSerializedName(), filterType)) + .blockstate(GTModels.createCleanroomFilterModel(filterType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, CustomTags.TOOL_TIERS[1]) .item(BlockItem::new) .build() @@ -666,7 +645,7 @@ private static BlockEntry createFireboxCasing(BoilerFireboxType typ .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) .addLayer(() -> RenderType::cutoutMipped) - .blockstate(GTModels.createFireboxModel("%s_casing".formatted(type.name()), type)) + .blockstate(GTModels.createFireboxModel(type)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) .build() @@ -763,7 +742,7 @@ public static ItemColor leavesItemColor() { .block("rubber_leaves", LeavesBlock::new) .initialProperties(() -> Blocks.OAK_LEAVES) .lang("Rubber Leaves") - .blockstate((ctx, prov) -> createModelBlockState(ctx, prov, GTCEu.id("block/rubber_leaves"))) + .exBlockstate(GTModels.createModelBlockState(GTCEu.id("block/rubber_leaves"))) .loot((table, block) -> table.add(block, table.createLeavesDrops(block, GTBlocks.RUBBER_SAPLING.get(), RUBBER_LEAVES_DROPPING_CHANCE))) .tag(BlockTags.LEAVES, BlockTags.MINEABLE_WITH_HOE) @@ -1200,8 +1179,8 @@ public static ItemColor leavesItemColor() { .loot((table, block) -> table.add(block, table.createSingleItemTable(Items.CHARCOAL, UniformGenerator.between(1.0F, 3.0F)))) .lang("Brittle Charcoal") + .exBlockstate(GTModels.cubeAllModel(GTCEu.id("block/misc/brittle_charcoal"))) .tag(BlockTags.MINEABLE_WITH_SHOVEL) - .blockstate(GTModels.cubeAllModel("brittle_charcoal", GTCEu.id("block/misc/brittle_charcoal"))) .item((b, p) -> new BlockItem(b, p) { @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index de16ee5b3e1..f59a1717e15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -16,12 +16,14 @@ import com.gregtechceu.gtceu.common.cover.voiding.FluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.ItemVoidingCover; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.ModLoader; import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; import java.util.Arrays; import java.util.Locale; +import java.util.function.Supplier; public class GTCovers { @@ -34,136 +36,107 @@ public class GTCovers { GTRegistries.COVERS.unfreeze(); } - public final static CoverDefinition FACADE = register( - "facade", FacadeCover::new, - FacadeCoverRenderer.INSTANCE); + public final static CoverDefinition FACADE = register("facade", FacadeCover::new, + () -> () -> FacadeCoverRenderer.INSTANCE); - public final static CoverDefinition ITEM_FILTER = register( - "item_filter", ItemFilterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_filter"))); + public final static CoverDefinition ITEM_FILTER = register("item_filter", ItemFilterCover::new); + public final static CoverDefinition FLUID_FILTER = register("fluid_filter", FluidFilterCover::new); - public final static CoverDefinition FLUID_FILTER = register( - "fluid_filter", FluidFilterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_filter"))); + public final static CoverDefinition INFINITE_WATER = register("infinite_water", InfiniteWaterCover::new); + public final static CoverDefinition ENDER_FLUID_LINK = register("ender_fluid_link", EnderFluidLinkCover::new); + public final static CoverDefinition SHUTTER = register("shutter", ShutterCover::new); + public final static CoverDefinition COVER_STORAGE = register("storage", StorageCover::new); - public final static CoverDefinition INFINITE_WATER = register( - "infinite_water", InfiniteWaterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_infinite_water"))); + public final static CoverDefinition[] CONVEYORS = registerTiered("conveyor", ConveyorCover::new, + () -> tier -> new IOCoverRenderer( + GTCEu.id("block/cover/conveyor"), + null, + GTCEu.id("block/cover/conveyor_emissive"), + GTCEu.id("block/cover/conveyor_inverted_emissive")), + ALL_TIERS); - public final static CoverDefinition ENDER_FLUID_LINK = register( - "ender_fluid_link", EnderFluidLinkCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_ender_fluid_link"))); + public final static CoverDefinition[] ROBOT_ARMS = registerTiered("robot_arm", RobotArmCover::new, + () -> tier -> new IOCoverRenderer( + GTCEu.id("block/cover/arm"), + null, + GTCEu.id("block/cover/arm_emissive"), + GTCEu.id("block/cover/arm_inverted_emissive")), + ALL_TIERS); - public final static CoverDefinition SHUTTER = register( - "shutter", ShutterCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_shutter"))); - public final static CoverDefinition COVER_STORAGE = register( - "storage", StorageCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/storage_cover"))); + public final static CoverDefinition[] PUMPS = registerTiered("pump", PumpCover::new, + () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] CONVEYORS = registerTiered( - "conveyor", ConveyorCover::new, - tier -> ConveyorCoverRenderer.INSTANCE, ALL_TIERS); + public final static CoverDefinition[] FLUID_REGULATORS = registerTiered("fluid_regulator", FluidRegulatorCover::new, + () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] ROBOT_ARMS = registerTiered( - "robot_arm", RobotArmCover::new, - tier -> RobotArmCoverRenderer.INSTANCE, ALL_TIERS); + public final static CoverDefinition COMPUTER_MONITOR = register("computer_monitor", ComputerMonitorCover::new); - public final static CoverDefinition[] PUMPS = registerTiered( - "pump", PumpCover::new, - tier -> PumpCoverRenderer.INSTANCE, ALL_TIERS); - - public final static CoverDefinition[] FLUID_REGULATORS = registerTiered( - "fluid_regulator", FluidRegulatorCover::new, - tier -> FluidRegulatorCoverRenderer.INSTANCE, ALL_TIERS); - - public final static CoverDefinition COMPUTER_MONITOR = register( - "computer_monitor", ComputerMonitorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_display"))); - - public final static CoverDefinition MACHINE_CONTROLLER = register( - "machine_controller", MachineControllerCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_controller"))); + public final static CoverDefinition MACHINE_CONTROLLER = register("machine_controller", + MachineControllerCover::new); // Voiding - public final static CoverDefinition ITEM_VOIDING = register( - "item_voiding", ItemVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_voiding"))); - public final static CoverDefinition ITEM_VOIDING_ADVANCED = register( - "item_voiding_advanced", AdvancedItemVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_voiding_advanced"))); - public final static CoverDefinition FLUID_VOIDING = register( - "fluid_voiding", FluidVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_voiding"))); - public final static CoverDefinition FLUID_VOIDING_ADVANCED = register( - "fluid_voiding_advanced", AdvancedFluidVoidingCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_voiding_advanced"))); + public final static CoverDefinition ITEM_VOIDING = register("item_voiding", ItemVoidingCover::new); + public final static CoverDefinition ITEM_VOIDING_ADVANCED = register("item_voiding_advanced", + AdvancedItemVoidingCover::new); + public final static CoverDefinition FLUID_VOIDING = register("fluid_voiding", FluidVoidingCover::new); + public final static CoverDefinition FLUID_VOIDING_ADVANCED = register("fluid_voiding_advanced", + AdvancedFluidVoidingCover::new); // Detectors - public final static CoverDefinition ACTIVITY_DETECTOR = register( - "activity_detector", ActivityDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_activity_detector"))); - public final static CoverDefinition ACTIVITY_DETECTOR_ADVANCED = register( - "activity_detector_advanced", AdvancedActivityDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_activity_detector_advanced"))); - public final static CoverDefinition FLUID_DETECTOR = register( - "fluid_detector", FluidDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_detector"))); - public final static CoverDefinition FLUID_DETECTOR_ADVANCED = register( - "fluid_detector_advanced", AdvancedFluidDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_fluid_detector_advanced"))); - public final static CoverDefinition ITEM_DETECTOR = register( - "item_detector", ItemDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_detector"))); - public final static CoverDefinition ITEM_DETECTOR_ADVANCED = register( - "item_detector_advanced", AdvancedItemDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_item_detector_advanced"))); - public final static CoverDefinition ENERGY_DETECTOR = register( - "energy_detector", EnergyDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_energy_detector"))); - public final static CoverDefinition ENERGY_DETECTOR_ADVANCED = register( - "energy_detector_advanced", AdvancedEnergyDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_energy_detector_advanced"))); - public final static CoverDefinition MAINTENANCE_DETECTOR = register( - "maintenance_detector", MaintenanceDetectorCover::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_maintenance_detector"))); + public final static CoverDefinition ACTIVITY_DETECTOR = register("activity_detector", ActivityDetectorCover::new); + public final static CoverDefinition ACTIVITY_DETECTOR_ADVANCED = register("activity_detector_advanced", + AdvancedActivityDetectorCover::new); + public final static CoverDefinition FLUID_DETECTOR = register("fluid_detector", FluidDetectorCover::new); + public final static CoverDefinition FLUID_DETECTOR_ADVANCED = register("fluid_detector_advanced", + AdvancedFluidDetectorCover::new); + public final static CoverDefinition ITEM_DETECTOR = register("item_detector", ItemDetectorCover::new); + public final static CoverDefinition ITEM_DETECTOR_ADVANCED = register("item_detector_advanced", + AdvancedItemDetectorCover::new); + public final static CoverDefinition ENERGY_DETECTOR = register("energy_detector", EnergyDetectorCover::new); + public final static CoverDefinition ENERGY_DETECTOR_ADVANCED = register("energy_detector_advanced", + AdvancedEnergyDetectorCover::new); + public final static CoverDefinition MAINTENANCE_DETECTOR = register("maintenance_detector", + MaintenanceDetectorCover::new); // Solar Panels - public final static CoverDefinition SOLAR_PANEL_BASIC = register( - "solar_panel", CoverSolarPanel::new, - new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_solar_panel"))); - public final static CoverDefinition[] SOLAR_PANEL = registerTiered( - "solar_panel", CoverSolarPanel::new, - tier -> new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_solar_panel")), ALL_TIERS_WITH_ULV); + public final static CoverDefinition SOLAR_PANEL_BASIC = register("solar_panel", CoverSolarPanel::new); + public final static CoverDefinition[] SOLAR_PANEL = registerTiered("solar_panel", CoverSolarPanel::new, + () -> tier -> new SimpleCoverRenderer(GTCEu.id("block/cover/solar_panel")), ALL_TIERS_WITH_ULV); /////////////////////////////////////////////// // *********** UTIL METHODS ***********// /////////////////////////////////////////////// - public static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator) { - return register(id, behaviorCreator, new SimpleCoverRenderer(GTCEu.id("block/cover/" + id))); + private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator) { + return register(id, behaviorCreator, () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/" + id))); + } + + private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + return register(GTCEu.id(id), behaviorCreator, coverRenderer); } - public static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator, - ICoverRenderer coverRenderer) { - var definition = new CoverDefinition(GTCEu.id(id), behaviorCreator, coverRenderer); - GTRegistries.COVERS.register(GTCEu.id(id), definition); + public static CoverDefinition register(ResourceLocation id, CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + var definition = new CoverDefinition(id, behaviorCreator, coverRenderer); + GTRegistries.COVERS.register(definition.getId(), definition); return definition; } - public static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - Int2ObjectFunction coverRenderer, int... tiers) { + private static CoverDefinition[] registerTiered(String id, + CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer, + int... tiers) { return Arrays.stream(tiers).mapToObj(tier -> { var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier), - coverRenderer.apply(tier)); + () -> () -> coverRenderer.get().apply(tier)); }).toArray(CoverDefinition[]::new); } - public static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - int... tiers) { + private static CoverDefinition[] registerTiered(String id, + CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, + int... tiers) { return Arrays.stream(tiers).mapToObj(tier -> { var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index def2ddd8337..75ee73c50a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -76,10 +76,8 @@ import java.util.function.Supplier; import java.util.stream.Collectors; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.ITEM; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.TOOL; -import static com.gregtechceu.gtceu.common.data.GTModels.createTextureModel; -import static com.gregtechceu.gtceu.common.data.GTModels.overrideModel; +import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.*; +import static com.gregtechceu.gtceu.common.data.models.GTModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 580db3e5077..48d47000a8e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -4,19 +4,24 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.IMiner; +import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.machines.*; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.machine.electric.*; import com.gregtechceu.gtceu.common.machine.multiblock.part.*; import com.gregtechceu.gtceu.common.machine.steam.SteamLiquidBoilerMachine; @@ -52,6 +57,7 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.STEAM_BOILER_RECIPES; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.ALL_TIERS; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GTMachines { @@ -70,7 +76,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.ALL) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/coal")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/coal")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpSolidBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.solidBoilerBaseOutput) * @@ -83,7 +89,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.ALL) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/lava")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/lava")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpLiquidBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.liquidBoilerBaseOutput) * @@ -96,7 +102,7 @@ public class GTMachines { (pressure, builder) -> builder.rotationState(RotationState.NON_Y_AXIS) .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) - .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/solar")) + .workableSteamHullModel(pressure, GTCEu.id("block/generators/boiler/solar")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? ConfigHolder.INSTANCE.machines.smallBoilers.hpSolarBoilerBaseOutput : ConfigHolder.INSTANCE.machines.smallBoilers.solarBoilerBaseOutput) * @@ -111,7 +117,8 @@ public class GTMachines { .recipeType(GTRecipeTypes.MACERATOR_RECIPES) .recipeModifier(SimpleSteamMachine::recipeModifier) .addOutputLimit(ItemRecipeCapability.CAP, 1) - .renderer(() -> new WorkableSteamMachineRenderer(pressure, GTCEu.id("block/machines/macerator"))) + .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .workableSteamHullModel(pressure, GTCEu.id("block/machines/macerator")) .register()); public static final Pair STEAM_COMPRESSOR = registerSimpleSteamMachines( "compressor", GTRecipeTypes.COMPRESSOR_RECIPES); @@ -138,9 +145,10 @@ public class GTMachines { int maxArea = IMiner.getWorkingArea(isHP ? 6 : 4); tooltip.add(Component.translatable("gtceu.universal.tooltip.working_area", maxArea, maxArea)); }) - .renderer(() -> new SteamMinerRenderer(isHP, - isHP ? GTCEu.id("block/machines/high_pressure_steam_miner") : - GTCEu.id("block/machines/steam_miner"))) + .modelProperty(SteamMinerMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.UP) + .workableSteamHullModel(isHP, isHP ? + GTCEu.id("block/machines/high_pressure_steam_miner") : + GTCEu.id("block/machines/steam_miner")) .register()); ////////////////////////////////////// @@ -150,7 +158,7 @@ public class GTMachines { HullMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("hull") + .overlayTieredHullModel("hull") .abilities(PartAbility.PASSTHROUGH_HATCH) .langValue("%s §fMachine Hull".formatted(VNF[tier])) .tooltips(Component.translatable("gtceu.machine.hull.tooltip")) @@ -231,7 +239,7 @@ public class GTMachines { default -> 4; }) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/macerator")) + .workableTieredHullModel(GTCEu.id("block/machines/macerator")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .register(), @@ -246,7 +254,7 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.ROCK_BREAKER_RECIPES) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/rock_crusher")) + .workableTieredHullModel(GTCEu.id("block/machines/rock_crusher")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, GTRecipeTypes.ROCK_BREAKER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) @@ -260,7 +268,7 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.AIR_SCRUBBER_RECIPES) .recipeModifier(GTRecipeModifiers.OC_NON_PERFECT) - .workableTieredHullRenderer(GTCEu.id("block/machines/air_scrubber")) + .workableTieredHullModel(GTCEu.id("block/machines/air_scrubber")) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, GTRecipeTypes.AIR_SCRUBBER_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .tooltips(explosion()) @@ -284,9 +292,9 @@ public class GTMachines { // ******** Electric ********// ////////////////////////////////////// public static final MachineDefinition[] TRANSFORMER = registerTransformerMachines("", 1); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines("Hi-Amp (2x) ", 2); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines("Hi-Amp (4x) ", 4); - public static final MachineDefinition[] POWER_TRANSFORMER = registerTransformerMachines("Power ", 16); + public static final MachineDefinition[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines("Hi-Amp (2x)", 2); + public static final MachineDefinition[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines("Hi-Amp (4x)", 4); + public static final MachineDefinition[] POWER_TRANSFORMER = registerTransformerMachines("Power", 16); public static final MachineDefinition[] ENERGY_CONVERTER_1A = registerConverter(1); public static final MachineDefinition[] ENERGY_CONVERTER_4A = registerConverter(4); @@ -298,8 +306,8 @@ public class GTMachines { .langValue("Long Distance Item Pipeline Endpoint") .rotationState(RotationState.ALL) .tier(LV) - .tieredHullRenderer(GTCEu.id("block/machine/ld_item_endpoint_machine")) - .tooltips(LangHandler.getMultiLang("gtceu.machine.endpoint.tooltip").toArray(Component[]::new)) + .blockModel(GTModels.createModelBlockState(GTCEu.id("block/machine/long_distance_item_pipeline_endpoint"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.endpoint.tooltip")) .tooltipBuilder((stack, tooltip) -> { if (ConfigHolder.INSTANCE.machines.ldItemPipeMinDistance > 0) { tooltip.add(Component.translatable("gtceu.machine.endpoint.tooltip.min_length", @@ -313,7 +321,7 @@ public class GTMachines { .langValue("Long Distance Fluid Pipeline Endpoint") .rotationState(RotationState.ALL) .tier(LV) - .tieredHullRenderer(GTCEu.id("block/machine/ld_fluid_endpoint_machine")) + .blockModel(GTModels.createModelBlockState(GTCEu.id("block/machine/long_distance_fluid_pipeline_endpoint"))) .tooltips(Component.translatable("gtceu.machine.endpoint.tooltip.0"), Component.translatable("gtceu.machine.endpoint.tooltip.1"), Component.translatable("gtceu.machine.endpoint.tooltip.2")) @@ -336,7 +344,7 @@ public class GTMachines { public static final MachineDefinition[] PUMP = registerTieredMachines("pump", PumpMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) - .tieredHullRenderer(GTCEu.id("block/machine/pump_machine")) + .tieredHullModel(GTCEu.id("block/machine/template/pump_machine")) .langValue("%s Pump %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.pump.tooltip"), Component.translatable("gtceu.universal.tooltip.voltage_in", @@ -356,7 +364,7 @@ public class GTMachines { (tier, builder) -> builder .rotationState(RotationState.ALL) .editableUI(FisherMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("fisher"), (tier + 1) * (tier + 1))) - .tieredHullRenderer(GTCEu.id("block/machine/fisher_machine")) + .model(createFisherModel()) .langValue("%s Fisher %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.fisher.tooltip"), Component.translatable("gtceu.machine.fisher.speed", FisherMachine.calcMaxProgress(tier)), @@ -376,7 +384,7 @@ public class GTMachines { .rotationState(RotationState.NON_Y_AXIS) .editableUI(BlockBreakerMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("block_breaker"), (tier + 1) * (tier + 1))) - .tieredHullRenderer(GTCEu.id("block/machine/block_breaker_machine")) + .workableTieredHullModel(GTCEu.id("block/machines/block_breaker")) .langValue("%s Block Breaker %s".formatted(VLVH[tier], VLVT[tier])) .tooltips(Component.translatable("gtceu.machine.block_breaker.tooltip"), Component.translatable("gtceu.machine.block_breaker.speed_bonus", @@ -397,7 +405,7 @@ public class GTMachines { .langValue("%s Miner %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) .editableUI(MinerMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("miner"), (tier + 1) * (tier + 1))) - .renderer(() -> new MinerRenderer(tier, GTCEu.id("block/machines/miner"))) + .workableTieredHullModel(GTCEu.id("block/machines/miner")) .tooltipBuilder((stack, tooltip) -> { int maxArea = IMiner.getWorkingArea(tier * 8); long energyPerTick = GTValues.V[tier - 1]; @@ -424,7 +432,10 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s World Accelerator %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) - .renderer(() -> new WorldAcceleratorRenderer(tier, GTCEu.id("block/machines/world_accelerator_te"), + .modelProperty(WorldAcceleratorMachine.RANDOM_TICK_PROPERTY, true) + .modelProperty(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY, true) + .modelProperty(IWorkable.ACTIVE_PROPERTY, false) + .model(createWorldAcceleratorModel(GTCEu.id("block/machines/world_accelerator_te"), GTCEu.id("block/machines/world_accelerator"))) .tooltipBuilder((stack, tooltip) -> { int randTickWorkingArea = 3 + (tier - 1) * 2; @@ -450,10 +461,11 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s Item Collector %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) + .modelProperty(IWorkable.ACTIVE_PROPERTY, false) + .modelProperty(IWorkable.WORKING_ENABLED_PROPERTY, false) .editableUI(ItemCollectorMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("item_collector"), ItemCollectorMachine.getINVENTORY_SIZES()[tier])) - .renderer(() -> new WorkableTieredHullMachineRenderer(tier, - GTCEu.id("block/machines/item_collector"))) + .model(createItemCollectorModel(GTCEu.id("block/machines/item_collector"))) .tooltips( Component.translatable("gtceu.machine.item_collector.tooltip"), Component.translatable("gtceu.machine.item_collector.gui.collect_range", @@ -475,7 +487,8 @@ public class GTMachines { (tier, builder) -> builder .langValue("%s Buffer %s".formatted(VLVH[tier], VLVT[tier])) .rotationState(RotationState.NONE) - .tieredHullRenderer(GTCEu.id("block/machine/buffer")) + .model(createSingleOverlayTieredHullMachineModel(GTCEu.id("block/overlay/machine/overlay_buffer"), + GTCEu.id("block/overlay/machine/overlay_buffer_emissive"))) .tooltips( Component.translatable("gtceu.machine.buffer.tooltip"), Component.translatable( @@ -496,13 +509,20 @@ public class GTMachines { public static final MachineDefinition CREATIVE_ENERGY = REGISTRATE .machine("creative_energy", CreativeEnergyContainerMachine::new) .rotationState(RotationState.NONE) + .model(createSingleOverlayTieredHullMachineModel(GTModels.BLANK_TEXTURE, + GTCEu.id("block/overlay/machine/overlay_energy_emitter"))) .tooltipBuilder(CREATIVE_TOOLTIPS) + .tier(MAX) .register(); public static final MachineDefinition CREATIVE_COMPUTATION_PROVIDER = REGISTRATE .machine("creative_computation_provider", CreativeComputationProviderMachine::new) .rotationState(RotationState.NONE) + .model(createSingleOverlayTieredHullMachineModel( + GTCEu.id("block/overlay/machine/overlay_data_hatch_optical"), + GTCEu.id("block/overlay/machine/overlay_data_hatch_optical_emissive"))) .tooltipBuilder(CREATIVE_TOOLTIPS) + .tier(MAX) .register(); public static final MachineDefinition CREATIVE_FLUID = REGISTRATE @@ -518,8 +538,9 @@ public class GTMachines { FormattingUtil.formatNumbers(perCycle))); } }) - .renderer(() -> new QuantumTankRenderer(MAX, GTCEu.id("block/machine/creative_tank"))) - .hasTESR(true) + .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumTankRender))) + .hasBER(true) .register(); public static final MachineDefinition CREATIVE_ITEM = REGISTRATE @@ -535,15 +556,16 @@ public class GTMachines { FormattingUtil.formatNumbers(perCycle))); } }) - .renderer(() -> new QuantumChestRenderer(MAX, GTCEu.id("block/machine/creative_chest"))) - .hasTESR(true) + .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumChestRender))) + .hasBER(true) .register(); - public static final MachineDefinition[] SUPER_CHEST = registerSuperChests("super_chest", LOW_TIERS); - public static final MachineDefinition[] QUANTUM_CHEST = registerSuperChests("quantum_chest", HIGH_TIERS); + public static final MachineDefinition[] SUPER_CHEST = registerQuantumChests("super_chest", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_CHEST = registerQuantumChests("quantum_chest", HIGH_TIERS); - public static final MachineDefinition[] SUPER_TANK = registerSuperTanks("super_tank", LOW_TIERS); - public static final MachineDefinition[] QUANTUM_TANK = registerSuperTanks("quantum_tank", HIGH_TIERS); + public static final MachineDefinition[] SUPER_TANK = registerQuantumTanks("super_tank", LOW_TIERS); + public static final MachineDefinition[] QUANTUM_TANK = registerQuantumTanks("quantum_tank", HIGH_TIERS); public static MachineDefinition WOODEN_CRATE = registerCrate(GTMaterials.Wood, 27, "Wooden Crate"); public static MachineDefinition BRONZE_CRATE = registerCrate(GTMaterials.Bronze, 54, "Bronze Crate"); @@ -581,7 +603,7 @@ public class GTMachines { .langValue(VNF[tier] + " Input Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("item_bus.import") + .colorOverlayTieredHullModel("overlay_pipe_in", OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) @@ -595,7 +617,7 @@ public class GTMachines { .langValue(VNF[tier] + " Output Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_ITEMS) - .overlayTieredHullRenderer("item_bus.export") + .colorOverlayTieredHullModel("overlay_pipe_out", OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) @@ -604,37 +626,37 @@ public class GTMachines { ALL_TIERS); public final static MachineDefinition[] FLUID_IMPORT_HATCH = registerFluidHatches( - "input_hatch", "Input Hatch", "fluid_hatch.import", "fluid_hatch.import", + "input_hatch", "Input Hatch", "overlay_pipe_in", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_4X = registerFluidHatches( - "input_hatch_4x", "Quadruple Input Hatch", "fluid_hatch.import_4x", "fluid_hatch.import", + "input_hatch_4x", "Quadruple Input Hatch", "overlay_pipe_in_4x", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_9X = registerFluidHatches( - "input_hatch_9x", "Nonuple Input Hatch", "fluid_hatch.import_9x", "fluid_hatch.import", + "input_hatch_9x", "Nonuple Input Hatch", "overlay_pipe_in_9x", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_9X); public final static MachineDefinition[] FLUID_EXPORT_HATCH = registerFluidHatches( - "output_hatch", "Output Hatch", "fluid_hatch.export", "fluid_hatch.export", + "output_hatch", "Output Hatch", "overlay_pipe_out", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_4X = registerFluidHatches( - "output_hatch_4x", "Quadruple Output Hatch", "fluid_hatch.export_4x", "fluid_hatch.export", + "output_hatch_4x", "Quadruple Output Hatch", "overlay_pipe_out_4x", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_9X = registerFluidHatches( - "output_hatch_9x", "Nonuple Output Hatch", "fluid_hatch.export_9x", "fluid_hatch.export", + "output_hatch_9x", "Nonuple Output Hatch", "overlay_pipe_out_9x", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_9X); @@ -652,7 +674,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 2))), Component.translatable("gtceu.machine.energy_hatch.input.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input") + .overlayTieredHullModel("energy_input_hatch") .register(), ALL_TIERS); @@ -669,7 +691,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 2))), Component.translatable("gtceu.machine.energy_hatch.output.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output") + .overlayTieredHullModel("energy_output_hatch") .register(), ALL_TIERS); @@ -686,7 +708,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 4))), Component.translatable("gtceu.machine.energy_hatch.input_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_4a") + .overlayTieredHullModel("energy_input_hatch_4a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -703,7 +725,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 4))), Component.translatable("gtceu.machine.energy_hatch.output_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_4a") + .overlayTieredHullModel("energy_output_hatch_4a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -720,7 +742,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 16))), Component.translatable("gtceu.machine.energy_hatch.input_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_16a") + .overlayTieredHullModel("energy_input_hatch_16a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -737,7 +759,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 16))), Component.translatable("gtceu.machine.energy_hatch.output_hi_amp.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_16a") + .overlayTieredHullModel("energy_output_hatch_16a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -755,7 +777,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 64))), Component.translatable("gtceu.machine.substation_hatch.input.tooltip")) - .overlayTieredHullRenderer("energy_hatch.input_64a") + .overlayTieredHullModel("energy_input_hatch_64a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -773,7 +795,7 @@ public class GTMachines { FormattingUtil .formatNumbers(EnergyHatchPartMachine.getHatchEnergyCapacity(tier, 64))), Component.translatable("gtceu.machine.substation_hatch.output.tooltip")) - .overlayTieredHullRenderer("energy_hatch.output_64a") + .overlayTieredHullModel("energy_output_hatch_64a") .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); @@ -783,7 +805,7 @@ public class GTMachines { .langValue("Muffler Hatch " + VNF[tier]) .rotationState(RotationState.ALL) .abilities(PartAbility.MUFFLER) - .overlayTieredHullRenderer("muffler_hatch") + .overlayTieredHullModel("muffler_hatch") .tooltips(LangHandler.getFromMultiLang("gtceu.machine.muffler_hatch.tooltip", 0), Component.translatable("gtceu.muffler.recovery_tooltip", Math.max(1, tier * 10)), Component.translatable("gtceu.part_sharing.enabled"), @@ -796,7 +818,7 @@ public class GTMachines { .machine("steam_input_bus", holder -> new SteamItemBusPartMachine(holder, IN)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_IMPORT_ITEMS) - .overlaySteamHullRenderer("item_bus.import") + .colorOverlaySteamHullModel("overlay_pipe_in", OVERLAY_ITEM_HATCH) .langValue("Steam Input Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), @@ -808,7 +830,7 @@ public class GTMachines { .machine("steam_output_bus", holder -> new SteamItemBusPartMachine(holder, OUT)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_EXPORT_ITEMS) - .overlaySteamHullRenderer("item_bus.export") + .colorOverlaySteamHullModel("overlay_pipe_out", OVERLAY_ITEM_HATCH) .langValue("Steam Output Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), @@ -820,7 +842,7 @@ public class GTMachines { .machine("steam_input_hatch", SteamHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM) - .overlaySteamHullRenderer("steam_hatch") + .overlaySteamHullModel("steam_hatch") .tooltips(Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", SteamHatchPartMachine.INITIAL_TANK_CAPACITY), Component.translatable("gtceu.machine.steam.steam_hatch.tooltip")) @@ -829,14 +851,14 @@ public class GTMachines { public static final MachineDefinition COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) .rotationState(RotationState.ALL) - .modelRenderer(() -> GTCEu.id("block/machine/part/coke_oven_hatch")) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .simpleModel(GTCEu.id("block/machine/part/coke_oven_hatch")) .register(); public static final MachineDefinition PUMP_HATCH = REGISTRATE.machine("pump_hatch", PumpHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.PUMP_FLUID_HATCH) - .renderer(PumpHatchPartRenderer::new) + .model(createBasicReplaceableTextureMachineModel(GTCEu.id("block/machine/part/pump_hatch"))) .register(); public static final MachineDefinition MAINTENANCE_HATCH = REGISTRATE @@ -844,7 +866,9 @@ public class GTMachines { .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) - .renderer(() -> new MaintenanceHatchPartRenderer(1, GTCEu.id("block/machine/part/maintenance"))) + .modelProperty(MaintenanceHatchPartMachine.MAINTENANCE_TAPED_PROPERTY, false) + .model(createMaintenanceModel(GTCEu.id("block/machine/part/maintenance_hatch"))) + .tier(LV) .register(); public static final MachineDefinition CONFIGURABLE_MAINTENANCE_HATCH = REGISTRATE @@ -853,8 +877,9 @@ public class GTMachines { .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) - .renderer( - () -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.configurable"))) + .modelProperty(MaintenanceHatchPartMachine.MAINTENANCE_TAPED_PROPERTY, false) + .model(createMaintenanceModel(GTCEu.id("block/machine/part/configurable_maintenance_hatch"))) + .tier(HV) .register(); public static final MachineDefinition CLEANING_MAINTENANCE_HATCH = REGISTRATE @@ -869,7 +894,8 @@ public class GTMachines { tooltips.add(Component.literal(" ").append(Component .translatable(CleanroomType.CLEANROOM.getTranslationKey()).withStyle(ChatFormatting.GREEN))); }) - .renderer(() -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.cleaning"))) + .overlayTieredHullModel(GTCEu.id("block/machine/part/cleaning_maintenance_hatch")) + .tier(HV) .register(); public static final MachineDefinition AUTO_MAINTENANCE_HATCH = REGISTRATE @@ -877,7 +903,8 @@ public class GTMachines { .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) - .renderer(() -> new MaintenanceHatchPartRenderer(3, GTCEu.id("block/machine/part/maintenance.full_auto"))) + .overlayTieredHullModel(GTCEu.id("block/machine/part/auto_maintenance_hatch")) + .tier(HV) .register(); public static final MachineDefinition[] ITEM_PASSTHROUGH_HATCH = registerTieredMachines("item_passthrough_hatch", @@ -886,7 +913,7 @@ public class GTMachines { .langValue("%s Item Passthrough Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .overlayTieredHullRenderer("item_passthrough_hatch") + .overlayTieredHullModel("item_passthrough_hatch") .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier))), @@ -901,7 +928,7 @@ public class GTMachines { .langValue("%s Fluid Passthrough Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .overlayTieredHullRenderer("fluid_passthrough_hatch") + .overlayTieredHullModel("fluid_passthrough_hatch") .tooltips( Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity_mult", tier + 1, 16 * FluidType.BUCKET_VOLUME), @@ -919,7 +946,7 @@ public class GTMachines { Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", FormattingUtil.formatNumbers(ReservoirHatchPartMachine.FLUID_AMOUNT)), Component.translatable("gtceu.part_sharing.enabled")) - .overlayTieredHullRenderer("reservoir_hatch") + .overlayTieredHullModel("reservoir_hatch") .register(); public static final MachineDefinition[] DUAL_IMPORT_HATCH = registerTieredMachines( @@ -929,7 +956,7 @@ public class GTMachines { .langValue("%s Dual Input Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(DUAL_INPUT_HATCH_ABILITIES) - .overlayTieredHullRenderer("dual_hatch.import") + .overlayTieredHullModel("dual_input_hatch") .tooltips( Component.translatable("gtceu.machine.dual_hatch.import.tooltip"), Component.translatable( @@ -951,7 +978,7 @@ public class GTMachines { .langValue("%s Dual Output Hatch".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(DUAL_OUTPUT_HATCH_ABILITIES) - .overlayTieredHullRenderer("dual_hatch.export") + .overlayTieredHullModel("dual_output_hatch") .tooltips( Component.translatable("gtceu.machine.dual_hatch.export.tooltip"), Component.translatable( @@ -972,7 +999,8 @@ public class GTMachines { .langValue("%s Diode".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .renderer(() -> new DiodeRenderer(tier)) + .modelProperty(DiodePartMachine.AMP_MODE_PROPERTY, DiodePartMachine.AmpMode.MODE_1A) + .model(createDiodeModel()) .tooltips(Component.translatable("gtceu.machine.diode.tooltip_general"), Component.translatable("gtceu.machine.diode.tooltip_starts_at"), Component.translatable("gtceu.universal.tooltip.voltage_in_out", @@ -989,10 +1017,13 @@ public class GTMachines { .langValue("%s Rotor Holder".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.ROTOR_HOLDER) - .renderer(() -> new RotorHolderMachineRenderer(tier)) - .tooltips(LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 0), - LangHandler.getFromMultiLang("gtceu.machine.rotor_holder.tooltip", 1), - Component.translatable("gtceu.part_sharing.disabled")) + .modelProperty(IMultiController.IS_FORMED_PROPERTY, false) + .modelProperty(RotorHolderPartMachine.HAS_ROTOR_PROPERTY, false) + .modelProperty(RotorHolderPartMachine.ROTOR_SPINNING_PROPERTY, false) + .modelProperty(RotorHolderPartMachine.EMISSIVE_ROTOR_PROPERTY, false) + .model(createRotorHolderModel()) + .tooltips(LangHandler.getMultiLang("gtceu.machine.rotor_holder.tooltip")) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); @@ -1022,7 +1053,14 @@ public static void init() { GTRegistryInfo.registerFor(GTRegistries.MACHINES.getRegistryName()); } ModLoader.get().postEvent(new GTCEuAPI.RegisterEvent<>(GTRegistries.MACHINES, MachineDefinition.class)); + GTRegistries.MACHINES.freeze(); + + for (MachineDefinition machine : GTRegistries.MACHINES) { + for (MachineRenderState renderState : machine.getStateDefinition().getPossibleStates()) { + MachineDefinition.RENDER_STATE_REGISTRY.add(renderState); + } + } } public static MachineDefinition get(String name) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index ab1d7bce4a4..afdd68f8a89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.syncdata.*; import com.lowdragmc.lowdraglib.syncdata.IAccessor; @@ -20,6 +21,7 @@ public static void init() { register(FriendlyBufPayload.class, FriendlyBufPayload::new, GT_RECIPE_TYPE_ACCESSOR, 1000); register(NbtTagPayload.class, NbtTagPayload::new, VirtualTankAccessor.INSTANCE, 2); + registerSimple(MachineRenderStatePayload.class, MachineRenderStatePayload::new, MachineRenderState.class, 1); registerSimple(MaterialPayload.class, MaterialPayload::new, Material.class, 1); registerSimple(GTRecipePayload.class, GTRecipePayload::new, GTRecipe.class, 100); registerSimple(FluidStackPayload.class, FluidStackPayload::new, FluidStack.class, -1); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index b40c79c306c..f71c0f993d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -11,19 +11,17 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; -import com.gregtechceu.gtceu.client.renderer.machine.gcym.LargeChemicalBathRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.gcym.LargeMixerRenderer; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.electric.DistillationTowerMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeChemicalBathMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMacerationTowerMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.LargeMixerMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym.*; import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -50,6 +48,7 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.registerTieredMachines; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GCYMMachines { @@ -68,7 +67,12 @@ public static void init() {} } + " Parallel Control Hatch") .rotationState(RotationState.ALL) .abilities(PartAbility.PARALLEL_HATCH) - .workableTieredHullRenderer(GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableTieredHullMachineModel( + GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) + .andThen((ctx, prov, model) -> { + model.addReplaceableTextures("bottom", "top", "side"); + })) .tooltips(Component.translatable("gtceu.machine.parallel_hatch_mk" + tier + ".tooltip"), Component.translatable("gtceu.part_sharing.disabled")) .register(), @@ -97,7 +101,7 @@ public static void init() {} .where('G', Predicates.blocks(CRUSHING_WHEELS.get())) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/secure_maceration_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/secure_maceration_casing"), GTCEu.id("block/multiblock/gcym/large_maceration_tower")) .register(); @@ -109,9 +113,6 @@ public static void init() {} Component.translatable("gtceu.ore_washer"), Component.translatable("gtceu.chemical_bath"))) .rotationState(RotationState.ALL) .recipeTypes(CHEMICAL_BATH_RECIPES, ORE_WASHER_RECIPES) - .renderer(() -> new LargeChemicalBathRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), - GTCEu.id("block/multiblock/gcym/large_chemical_bath"))) - .hasTESR(true) .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_WATERTIGHT) .pattern(definition -> FactoryBlockPattern.start() @@ -129,6 +130,11 @@ public static void init() {} .where(' ', Predicates.air()) .where('T', Predicates.blocks(CASING_TITANIUM_PIPE.get())) .build()) + .hasBER(true) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_chemical_bath")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_CENTRIFUGE = REGISTRATE @@ -155,7 +161,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/vibration_safe_casing"), GTCEu.id("block/multiblock/gcym/large_centrifuge")) .register(); @@ -167,9 +173,6 @@ public static void init() {} Component.translatable("gtceu.mixer"))) .rotationState(RotationState.ALL) .recipeType(MIXER_RECIPES) - .renderer(() -> new LargeMixerRenderer(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), - GTCEu.id("block/multiblock/gcym/large_mixer"))) - .hasTESR(true) .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_REACTION_SAFE) .pattern(definition -> FactoryBlockPattern.start() @@ -188,6 +191,11 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) + .hasBER(true) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), + GTCEu.id("block/multiblock/gcym/large_mixer")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_ELECTROLYZER = REGISTRATE @@ -211,7 +219,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/nonconducting_casing"), GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); @@ -237,7 +245,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('C', blocks(ELECTROLYTIC_CELL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/nonconducting_casing"), GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); @@ -264,7 +272,7 @@ public static void init() {} .or(Predicates.autoAbilities(true, false, true))) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), GTCEu.id("block/multiblock/gcym/large_packer")) .register(); @@ -279,8 +287,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(ASSEMBLER_RECIPES) - .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - OC_NON_PERFECT_SUBTICK, BATCH_MODE) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXXXX", "XXXXXXXXX", "XXXXXXXXX") @@ -296,7 +304,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), GTCEu.id("block/multiblock/gcym/large_assembler")) .register(); @@ -311,8 +319,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(CIRCUIT_ASSEMBLER_RECIPES) - .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - OC_NON_PERFECT_SUBTICK, BATCH_MODE) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") @@ -332,7 +340,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), GTCEu.id("block/multiblock/gcym/large_circuit_assembler")) .register(); @@ -361,7 +369,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/large_arc_smelter")) .register(); @@ -375,8 +383,8 @@ public static void init() {} ConfigHolder.INSTANCE.gameplay.environmentalHazards) .rotationState(RotationState.ALL) .recipeType(LASER_ENGRAVER_RECIPES) - .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, - OC_NON_PERFECT_SUBTICK, BATCH_MODE) + .recipeModifiers(DEFAULT_ENVIRONMENT_REQUIREMENT, GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, + BATCH_MODE) .appearanceBlock(CASING_LASER_SAFE_ENGRAVING) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXXXX", "XXGXX", "XXGXX", "XXXXX") @@ -393,7 +401,7 @@ public static void init() {} .where('K', blocks(CASING_GRATE.get())) .where('A', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), GTCEu.id("block/multiblock/gcym/large_engraving_laser")) .register(); @@ -421,7 +429,7 @@ public static void init() {} .where('A', Predicates.air()) .where('#', Predicates.any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/vibration_safe_casing"), GTCEu.id("block/multiblock/gcym/large_sifting_funnel")) .register(); @@ -477,7 +485,7 @@ public static void init() {} coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/blast_alloy_smelter")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { @@ -516,7 +524,7 @@ public static void init() {} .where('T', blocks(CASING_STEEL_PIPE.get())) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_autoclave")) .register(); @@ -543,7 +551,7 @@ public static void init() {} .where('C', blocks(CASING_TEMPERED_GLASS.get())) .where('A', air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_material_press")) .register(); @@ -573,7 +581,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/corrosion_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/corrosion_proof_casing"), GTCEu.id("block/multiblock/gcym/large_brewer")) .register(); @@ -601,7 +609,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), GTCEu.id("block/multiblock/gcym/large_cutter")) .register(); @@ -692,7 +700,7 @@ public static void init() {} }) .allowExtendedFacing(false) .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_distillery")) .register(); @@ -717,7 +725,7 @@ public static void init() {} .where('C', blocks(CASING_STEEL_PIPE.get())) .where('A', air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_extractor")) .register(); @@ -746,7 +754,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_extruder")) .register(); @@ -774,7 +782,7 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_solidifier")) .register(); @@ -799,10 +807,11 @@ public static void init() {} .where('C', blocks(CASING_TITANIUM_GEARBOX.get())) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/stress_proof_casing"), GTCEu.id("block/multiblock/gcym/large_wiremill")) .register(); + // spotless:off public final static MultiblockMachineDefinition MEGA_BLAST_FURNACE = REGISTRATE .multiblock("mega_blast_furnace", CoilWorkableElectricMultiblockMachine::new) .langValue("Rotary Hearth Furnace") @@ -814,64 +823,24 @@ public static void init() {} Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.2")) .rotationState(RotationState.ALL) .recipeType(BLAST_RECIPES) - .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, - GTRecipeModifiers::ebfOverclock, BATCH_MODE) + .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, GTRecipeModifiers::ebfOverclock, BATCH_MODE) .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) .pattern(definition -> { TraceabilityPredicate casing = blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360); return FactoryBlockPattern.start() - .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFHHHFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", - "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", - "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", - "###PTAAATP###", "##TPPPMPPPT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFHHHFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FHPHAAAHPHF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPMPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FHHHAAAHHHF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") .where('S', controller(blocks(definition.get()))) .where('X', casing.or(autoAbilities(definition.getRecipeTypes())) .or(Predicates.autoAbilities(true, false, true))) @@ -891,58 +860,19 @@ public static void init() {} .shapeInfos(definition -> { List shapeInfo = new ArrayList<>(); var builder = MultiblockShapeInfo.builder() - .aisle("##XODXXXQLX##", "##XXXXSXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFXXXFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FXPXAAAXPXF#", - "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", - "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", - "###PTAAATP###", "##TPPPHPPPT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", - "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", - "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", - "####IAAAI####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", - "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", - "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", - "####BITIB####", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", - "######P######", "######P######", "######P######", "######P######", "######P######", - "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", - "######P######", "##TTTTPTTTT##") - .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", - "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", - "##FFFXXXFFF##", "#############", "#############", "#############", "#############", - "#############", "###TTTTTTT###") - .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", - "#############", "#############", "#############", "#############", "#############", - "####FFFFF####", "#############", "#############", "#############", "#############", - "#############", "#############") - .aisle("##XXXEMEXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############", "#############", "#############", "#############", - "#############", "#############") + .aisle("##XODXXXQLX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PPAAAPP###", "###PTAAATP###", "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "#FXPXAAAXPXF#", "###PTAAATP###", "###PCAAACP###", "###PCAAACP###", "###PCAAACP###", "###PTAAATP###", "##TPPPHPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BAAAB####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "#FXXXAAAXXXF#", "####IAAAI####", "####CAAAC####", "####CAAAC####", "####CAAAC####", "####IAAAI####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFXXXXXXXFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFXXXPXXXFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FXXXPXXXF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFXXXFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXEMEXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") .where('X', CASING_HIGH_TEMPERATURE_SMELTING.getDefaultState()) .where('S', definition, Direction.NORTH) .where('A', Blocks.AIR.defaultBlockState()) @@ -961,21 +891,17 @@ public static void init() {} .where('M', MAINTENANCE_HATCH, Direction.SOUTH); GTCEuAPI.HEATING_COILS.entrySet().stream() .sorted(Comparator.comparingInt(entry -> entry.getKey().getTier())) - .forEach( - coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); + .forEach(coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + .workableCasingModel(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), GTCEu.id("block/multiblock/gcym/mega_blast_furnace")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { components.add(Component.translatable("gtceu.multiblock.blast_furnace.max_temperature", - Component - .translatable( - FormattingUtil - .formatNumbers(coilMachine.getCoilType().getCoilTemperature() + - 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + - "K") + Component.translatable( + FormattingUtil.formatNumbers(coilMachine.getCoilType().getCoilTemperature() + + 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + "K") .setStyle(Style.EMPTY.withColor(ChatFormatting.RED)))); } }) @@ -992,18 +918,12 @@ public static void init() {} .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) .pattern(definition -> FactoryBlockPattern.start() - .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPPPPPPPPPV", "XPAPAPX#VPV", "XPPPPPPPPPV", "XPAPAPX#KVK", "XPPPPPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPAPAPXAVPV", "XAAAAAX#VPV", "XPAAAPX#VPV", "XAAAAAX#KVK", "XPAPAPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KVK", "XPAPAPPPPPV", "XAAAAAX#VPV", "XPAAAPPPPPV", "XAAAAAX#KVK", "XPAPAPX####", - "XXXXXXX####") - .aisle("XXXXXXX#KKK", "XPPPPPX#KVK", "XPA#APX#KVK", "XPAAAPX#KVK", "XPAAAPX#KKK", "XPPPPPX####", - "XXXXXXX####") - .aisle("#XXXXX#####", "#XXSXX#####", "#XGGGX#####", "#XGGGX#####", "#XGGGX#####", "#XXXXX#####", - "###########") + .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPPPPPPPPPV", "XPAPAPX#VPV", "XPPPPPPPPPV", "XPAPAPX#KVK", "XPPPPPX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPAPAPXAVPV", "XAAAAAX#VPV", "XPAAAPX#VPV", "XAAAAAX#KVK", "XPAPAPX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPAPAPPPPPV", "XAAAAAX#VPV", "XPAAAPPPPPV", "XAAAAAX#KVK", "XPAPAPX####", "XXXXXXX####") + .aisle("XXXXXXX#KKK", "XPPPPPX#KVK", "XPA#APX#KVK", "XPAAAPX#KVK", "XPAAAPX#KKK", "XPPPPPX####", "XXXXXXX####") + .aisle("#XXXXX#####", "#XXSXX#####", "#XGGGX#####", "#XGGGX#####", "#XGGGX#####", "#XXXXX#####", "###########") .where('S', controller(blocks(definition.get()))) .where('X', blocks(CASING_ALUMINIUM_FROSTPROOF.get()).setMinGlobalLimited(140) .or(autoAbilities(definition.getRecipeTypes())) @@ -1015,7 +935,8 @@ public static void init() {} .where('A', air()) .where('#', any()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer")) .register(); + // spotless:on } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java index 33430802919..72abe4159a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.data.machines; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; @@ -20,7 +21,7 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_bus")) .tooltips( Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.me.item_import.tooltip"), @@ -34,7 +35,7 @@ public class GTAEMachines { .tier(LuV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_bus")) .tooltips( Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.me.stocking_item.tooltip.0"), @@ -50,8 +51,9 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_ITEMS) - .overlayTieredHullRenderer("me_item_bus.export") - .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_output_bus")) + .tooltips( + Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.me.item_export.tooltip"), Component.translatable("gtceu.machine.me.export.tooltip"), Component.translatable("gtceu.part_sharing.enabled")) @@ -63,7 +65,7 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.import.tooltip"), Component.translatable("gtceu.machine.me.fluid_import.tooltip"), @@ -77,7 +79,7 @@ public class GTAEMachines { .tier(LuV) .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.import") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_input_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.import.tooltip"), Component.translatable("gtceu.machine.me.stocking_fluid.tooltip.0"), @@ -93,7 +95,7 @@ public class GTAEMachines { .tier(EV) .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_FLUIDS) - .overlayTieredHullRenderer("me_fluid_hatch.export") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_output_hatch")) .tooltips( Component.translatable("gtceu.machine.fluid_hatch.export.tooltip"), Component.translatable("gtceu.machine.me.fluid_export.tooltip"), @@ -107,7 +109,7 @@ public class GTAEMachines { .abilities(PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_ITEMS) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("me_pattern_buffer") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_buffer_hatch")) .langValue("ME Pattern Buffer") .tooltips( Component.translatable("block.gtceu.pattern_buffer.desc.0"), @@ -122,7 +124,7 @@ public class GTAEMachines { .abilities(PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_ITEMS) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer("me_pattern_buffer_proxy") + .colorOverlayTieredHullModel(GTCEu.id("block/overlay/appeng/me_buffer_hatch_proxy")) .langValue("ME Pattern Buffer Proxy") .tooltips( Component.translatable("block.gtceu.pattern_buffer_proxy.desc.0"), diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 91ab4e32a44..d967ebc8bf6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -23,16 +23,19 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; import com.gregtechceu.gtceu.api.pattern.predicates.SimplePredicate; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.*; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine; import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; @@ -79,16 +82,15 @@ import java.util.stream.IntStream; import static com.gregtechceu.gtceu.api.GTValues.*; -import static com.gregtechceu.gtceu.api.GTValues.UV; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.IN; +import static com.gregtechceu.gtceu.api.capability.recipe.IO.*; import static com.gregtechceu.gtceu.api.pattern.Predicates.*; -import static com.gregtechceu.gtceu.api.pattern.Predicates.autoAbilities; -import static com.gregtechceu.gtceu.common.data.GTBlocks.ALL_FIREBOXES; +import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; -import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; +import static com.gregtechceu.gtceu.utils.FormattingUtil.*; public class GTMachineUtils { @@ -157,7 +159,7 @@ public static MachineDefinition[] registerSimpleMachines(String name, .editableUI(SimpleTieredMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id(name), recipeType)) .rotationState(RotationState.NON_Y_AXIS) .recipeType(recipeType) - .workableTieredHullRenderer(GTCEu.id("block/machines/" + name)) + .workableTieredHullModel(GTCEu.id("block/machines/" + name)) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, tankScalingFunction.applyAsInt(tier), true)) .register(); @@ -194,15 +196,16 @@ public static Pair registerSteamMachines(S return Pair.of(lowTier, highTier); } - public static MachineDefinition[] registerFluidHatches(String name, String displayname, String model, + public static MachineDefinition[] registerFluidHatches(String name, String displayname, String overlayTexture, String tooltip, IO io, int initialCapacity, int slots, int[] tiers, PartAbility... abilities) { + final String emissiveOverlay = slots > 4 ? OVERLAY_FLUID_HATCH_HALF_PX_TEX : OVERLAY_FLUID_HATCH_TEX; return registerTieredMachines(name, (holder, tier) -> new FluidHatchPartMachine(holder, tier, io, initialCapacity, slots), (tier, builder) -> { builder.langValue(VNF[tier] + ' ' + displayname) .rotationState(RotationState.ALL) - .overlayTieredHullRenderer(model) + .colorOverlayTieredHullModel(overlayTexture, emissiveOverlay) .abilities(abilities) .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")) .allowCoverOnFront(true); @@ -230,9 +233,10 @@ public static MachineDefinition[] registerTransformerMachines(String langName, i index == 3 ? GTValues.VC[tier] : index == 1 ? Long.decode(ConfigHolder.INSTANCE.client.defaultPaintingColor) .intValue() : -1) - .renderer(() -> new TransformerRenderer(tier, baseAmp)) + .modelProperty(TransformerMachine.TRANSFORM_UP_PROPERTY, false) + .model(createTransformerModel(baseAmp)) .langValue("%s %sTransformer".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - langName)) + langName.isEmpty() ? "" : langName + " ")) .tooltips(Component.translatable("gtceu.machine.transformer.description"), Component.translatable("gtceu.machine.transformer.tooltip_tool_usage"), Component.translatable("gtceu.machine.transformer.tooltip_transform_down", @@ -265,7 +269,7 @@ public static MachineDefinition[] registerSimpleGenerator(String name, .recipeModifier(SimpleGeneratorMachine::recipeModifier, true) .addOutputLimit(ItemRecipeCapability.CAP, 0) .addOutputLimit(FluidRecipeCapability.CAP, 0) - .renderer(() -> new SimpleGeneratorMachineRenderer(tier, GTCEu.id("block/generators/" + name))) + .simpleGeneratorModel(GTCEu.id("block/generators/" + name)) .tooltips(workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, tankScalingFunction.applyAsInt(tier), false)) .register(), @@ -278,7 +282,8 @@ public static Pair registerSimpleSteamMach .rotationState(RotationState.ALL) .recipeType(recipeType) .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(pressure, GTCEu.id("block/machines/" + name))) + .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name)) .register()); } @@ -287,9 +292,10 @@ public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { (holder, tier) -> new BatteryBufferMachine(holder, tier, batterySlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) - .renderer(() -> new BatteryBufferRenderer(tier, batterySlotSize)) - .langValue("%s %s%s".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - batterySlotSize, "x Battery Buffer")) + .model(GTMachineModels.createBatteryBufferModel(batterySlotSize)) + .langValue("%s %sx Battery Buffer".formatted( + VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, + batterySlotSize)) .tooltips( Component.translatable("gtceu.universal.tooltip.item_storage_capacity", batterySlotSize), @@ -308,9 +314,11 @@ public static MachineDefinition[] registerCharger(int itemSlotSize) { (holder, tier) -> new ChargerMachine(holder, tier, itemSlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) - .renderer(() -> new ChargerRenderer(tier)) - .langValue("%s %s%s".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, - itemSlotSize, "x Turbo Charger")) + .modelProperty(ChargerMachine.STATE_PROPERTY, ChargerMachine.State.IDLE) + .model(GTMachineModels.createChargerModel()) + .langValue("%s %sx Turbo Charger".formatted( + VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, + itemSlotSize)) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", itemSlotSize), Component.translatable("gtceu.universal.tooltip.voltage_in_out", FormattingUtil.formatNumbers(GTValues.V[tier]), @@ -332,7 +340,8 @@ public static MachineDefinition[] registerConverter(int amperage) { .rotationState(RotationState.ALL) .langValue("%s %s§eA§r Energy Converter".formatted(VCF[tier] + VN[tier] + ChatFormatting.RESET, amperage)) - .renderer(() -> new ConverterRenderer(tier, amperage)) + .modelProperty(ConverterMachine.FE_TO_EU_PROPERTY, false) + .model(GTMachineModels.createConverterModel(amperage)) .tooltips(Component.translatable("gtceu.machine.energy_converter.description"), Component.translatable("gtceu.machine.energy_converter.tooltip_tool_usage"), Component.translatable("gtceu.machine.energy_converter.tooltip_conversion_native", @@ -370,20 +379,20 @@ public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAb EnergyHatchPartMachine.getHatchEnergyCapacity(tier, amperage))), Component.translatable("gtceu.part_sharing.disabled")) .abilities(ability) - .overlayTieredHullRenderer("laser_hatch." + name) + .overlayTieredHullModel("laser_" + name + "_hatch") .register(), HIGH_TIERS); } public static MachineDefinition registerCrate(Material material, int capacity, String lang) { - boolean wooden = material.hasProperty(PropertyKey.WOOD); + final boolean wooden = material.hasProperty(PropertyKey.WOOD); return REGISTRATE.machine(material.getName() + "_crate", holder -> new CrateMachine(holder, material, capacity)) .langValue(lang) .rotationState(RotationState.NONE) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", capacity)) - .renderer(() -> new CrateRenderer( - GTCEu.id("block/machine/crate/" + (wooden ? "wooden" : "metal") + "_crate"))) + .modelProperty(CrateMachine.TAPED_PROPERTY, false) + .model(GTMachineModels.createCrateModel(wooden)) .paintingColor(wooden ? 0xFFFFFF : material.getMaterialRGB()) .itemColor((s, t) -> wooden ? 0xFFFFFF : material.getMaterialRGB()) .register(); @@ -392,14 +401,13 @@ public static MachineDefinition registerCrate(Material material, int capacity, S public static MachineDefinition registerDrum(Material material, int capacity, String lang) { boolean wooden = material.hasProperty(PropertyKey.WOOD); var definition = REGISTRATE - .machine(material.getName() + "_drum", MachineDefinition::createDefinition, + .machine(material.getName() + "_drum", MachineDefinition::new, holder -> new DrumMachine(holder, material, capacity), MetaMachineBlock::new, (holder, prop) -> DrumMachineItem.create(holder, prop, material), - MetaMachineBlockEntity::createBlockEntity) + MetaMachineBlockEntity::new) .langValue(lang) .rotationState(RotationState.NONE) - .renderer( - () -> new MachineRenderer(GTCEu.id("block/machine/" + (wooden ? "wooden" : "metal") + "_drum"))) + .simpleModel(GTCEu.id("block/machine/template/drum/" + (wooden ? "wooden" : "metal") + "_drum")) .tooltipBuilder((stack, list) -> { TANK_TOOLTIPS.accept(stack, list); if (material.hasProperty(PropertyKey.FLUID_PIPE)) { @@ -417,27 +425,27 @@ public static MachineDefinition registerDrum(Material material, int capacity, St return definition; } - public static MachineDefinition[] registerSuperTanks(String tank_type, int... tiers) { + public static MachineDefinition[] registerQuantumTanks(String tank_type, int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); var register = REGISTRATE.machine( GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + tank_type, - MachineDefinition::createDefinition, - (holder) -> new QuantumTankMachine(holder, tier, maxAmount), - MetaMachineBlock::new, - QuantumTankMachineItem::create, - MetaMachineBlockEntity::createBlockEntity) + MachineDefinition::new, (holder) -> new QuantumTankMachine(holder, tier, maxAmount), + MetaMachineBlock::new, QuantumTankMachineItem::new, + MetaMachineBlockEntity::new) .langValue(toEnglishName(tank_type) + " " + LVT[tier]) .blockProp(BlockBehaviour.Properties::dynamicShape) .rotationState(RotationState.ALL) .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) + .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_tank")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumTankRender))) + .hasBER(true) .tooltipBuilder(TANK_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", FormattingUtil.formatNumbers(maxAmount))) + .tier(tier) .register(); TANK_CAPACITY.put(register, maxAmount); definitions[tier] = register; @@ -445,7 +453,7 @@ public static MachineDefinition[] registerSuperTanks(String tank_type, int... ti return definitions; } - public static MachineDefinition[] registerSuperChests(String chest_type, int... tiers) { + public static MachineDefinition[] registerQuantumChests(String chest_type, int... tiers) { return registerTieredMachines(chest_type, (holder, tier) -> new QuantumChestMachine(holder, tier, tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), @@ -453,8 +461,10 @@ public static MachineDefinition[] registerSuperChests(String chest_type, int... .blockProp(BlockBehaviour.Properties::dynamicShape) .rotationState(RotationState.ALL) .allowExtendedFacing(true) - .renderer(() -> new QuantumTankRenderer(tier)) - .hasTESR(true) + .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_chest")) + .andThen( + b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumChestRender))) + .hasBER(true) .tooltipBuilder(CHEST_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_total", @@ -568,8 +578,10 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .renderer(() -> new LargeBoilerRenderer(texture, firebox, - GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name)))) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(texture, + GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name))) + .andThen(b -> b.addDynamicRenderer(() -> () -> DynamicRenderHelper.makeBoilerPartRender(firebox, casing)))) .tooltips( Component.translatable("gtceu.multiblock.large_boiler.max_temperature", maxTemperature + 274, maxTemperature), @@ -618,7 +630,7 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel) + .workableCasingModel(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier]), Component.translatable("gtceu.universal.tooltip.uses_per_hour_lubricant", @@ -681,7 +693,7 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(casingTexture, overlayModel) + .workableCasingModel(casingTexture, overlayModel) .tooltips( Component.translatable("gtceu.universal.tooltip.base_production_eut", V[tier] * 2), Component.translatable("gtceu.multiblock.turbine.efficiency_tooltip", VNF[tier])) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index a996ddb7d68..2357438b721 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -12,11 +12,12 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; import com.gregtechceu.gtceu.api.pattern.TraceabilityPredicate; -import com.gregtechceu.gtceu.client.renderer.machine.*; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.*; @@ -39,6 +40,8 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DoorBlock; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; +import net.minecraftforge.client.model.generators.BlockModelBuilder; +import net.minecraftforge.client.model.generators.ConfiguredModel; import appeng.api.networking.pathing.ChannelMode; import appeng.core.AEConfig; @@ -57,6 +60,7 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeModifiers.*; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; import static com.gregtechceu.gtceu.common.data.machines.GTMachineUtils.*; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; import static com.gregtechceu.gtceu.utils.FormattingUtil.toRomanNumeral; @@ -100,7 +104,7 @@ public class GTMultiMachines { .where('#', Predicates.air()) .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_coke_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_coke_bricks"), GTCEu.id("block/multiblock/coke_oven")) .register(); @@ -108,9 +112,10 @@ public class GTMultiMachines { .multiblock("primitive_blast_furnace", PrimitiveBlastFurnaceMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PRIMITIVE_BLAST_FURNACE_RECIPES) - .renderer(() -> new PrimitiveBlastFurnaceRenderer(GTCEu.id("block/casings/solid/machine_primitive_bricks"), - GTCEu.id("block/multiblock/primitive_blast_furnace"))) - .hasTESR(true) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_primitive_bricks"), + GTCEu.id("block/multiblock/primitive_blast_furnace")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createPBFLavaRender))) + .hasBER(true) .appearanceBlock(CASING_PRIMITIVE_BRICKS) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX", "XXX") @@ -165,22 +170,21 @@ public class GTMultiMachines { .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_heatproof"), GTCEu.id("block/multiblock/electric_blast_furnace")) .tooltips(Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.0"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.1"), Component.translatable("gtceu.machine.electric_blast_furnace.tooltip.2")) .additionalDisplay((controller, components) -> { + // spotless:off if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { components.add(Component.translatable("gtceu.multiblock.blast_furnace.max_temperature", - Component - .translatable( - FormattingUtil - .formatNumbers(coilMachine.getCoilType().getCoilTemperature() + - 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + - "K") + Component.translatable( + FormattingUtil.formatNumbers(coilMachine.getCoilType().getCoilTemperature() + + 100L * Math.max(0, coilMachine.getTier() - GTValues.MV)) + "K") .setStyle(Style.EMPTY.withColor(ChatFormatting.RED)))); } + // spotless:on }) .register(); @@ -248,7 +252,7 @@ public class GTMultiMachines { .build()); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_inert_ptfe"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_inert_ptfe"), GTCEu.id("block/multiblock/large_chemical_reactor")) .register(); @@ -268,7 +272,7 @@ public class GTMultiMachines { .or(Predicates.autoAbilities(true, true, false))) .where('#', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), GTCEu.id("block/multiblock/implosion_compressor")) .register(); @@ -314,7 +318,7 @@ public class GTMultiMachines { coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/voltage/ulv/side"), + .workableCasingModel(GTCEu.id("block/casings/voltage/ulv/side"), GTCEu.id("block/multiblock/pyrolyse_oven")) .tooltips(Component.translatable("gtceu.machine.pyrolyse_oven.tooltip.1")) .additionalDisplay((controller, components) -> { @@ -368,7 +372,7 @@ public class GTMultiMachines { .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_heatproof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_heatproof"), GTCEu.id("block/multiblock/multi_furnace")) .additionalDisplay((controller, components) -> { if (controller instanceof CoilWorkableElectricMultiblockMachine coilMachine && controller.isFormed()) { @@ -418,7 +422,7 @@ public class GTMultiMachines { coil -> shapeInfo.add(builder.shallowCopy().where('C', coil.getValue().get()).build())); return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/cracking_unit")) .tooltips(Component.translatable("gtceu.machine.cracker.tooltip.1")) .additionalDisplay((controller, components) -> { @@ -496,7 +500,7 @@ public class GTMultiMachines { }) .allowExtendedFacing(false) .partSorter(Comparator.comparingInt(p -> p.self().getPos().getY())) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), GTCEu.id("block/multiblock/distillation_tower")) .register(); @@ -516,7 +520,7 @@ public class GTMultiMachines { .or(Predicates.autoAbilities(true, false, false))) .where('#', Predicates.air()) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), GTCEu.id("block/multiblock/vacuum_freezer")) .register(); @@ -552,7 +556,7 @@ public class GTMultiMachines { .where('#', Predicates.any()) .build()) .partSorter(AssemblyLineMachine::partSorter) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), GTCEu.id("block/multiblock/assembly_line")) .register(); @@ -573,7 +577,8 @@ public class GTMultiMachines { .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) - .sidedWorkableCasingRenderer("block/casings/pump_deck", GTCEu.id("block/multiblock/primitive_pump")) + .sidedWorkableCasingModel(GTCEu.id("block/casings/pump_deck"), + GTCEu.id("block/multiblock/primitive_pump")) .register(); public static final MultiblockMachineDefinition STEAM_GRINDER = REGISTRATE @@ -594,7 +599,7 @@ public class GTMultiMachines { .or(Predicates.abilities(PartAbility.STEAM_EXPORT_ITEMS).setPreviewCount(1)) .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/steam_grinder")) .register(); @@ -618,9 +623,12 @@ public class GTMultiMachines { .where('F', blocks(FIREBOX_BRONZE.get()) .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) - .renderer(() -> new LargeBoilerRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), - BoilerFireboxType.BRONZE_FIREBOX, - GTCEu.id("block/multiblock/steam_oven"))) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + GTCEu.id("block/multiblock/steam_oven")) + .andThen(b -> b.addDynamicRenderer( + () -> () -> DynamicRenderHelper.makeBoilerPartRender( + BoilerFireboxType.BRONZE_FIREBOX, CASING_BRONZE_BRICKS)))) .register(); public static final MultiblockMachineDefinition[] FUSION_REACTOR = registerTieredMultis("fusion_reactor", @@ -709,9 +717,11 @@ public class GTMultiMachines { shapeInfos.add(baseBuilder.build()); return shapeInfos; }) - .renderer(() -> new FusionReactorRenderer(FusionReactorMachine.getCasingType(tier).getTexture(), - GTCEu.id("block/multiblock/fusion_reactor"))) - .hasTESR(true) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel(FusionReactorMachine.getCasingType(tier).getTexture(), + GTCEu.id("block/multiblock/fusion_reactor")) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createFusionRingRender))) + .hasBER(true) .register(), LuV, ZPM, UV); @@ -743,7 +753,7 @@ public class GTMultiMachines { .where('F', blocks(FluidDrillMachine.getFrameState(tier))) .where('#', any()) .build()) - .workableCasingRenderer(FluidDrillMachine.getBaseTexture(tier), + .workableCasingModel(FluidDrillMachine.getBaseTexture(tier), GTCEu.id("block/multiblock/fluid_drilling_rig")) .register(), MV, HV, EV); @@ -770,9 +780,25 @@ public class GTMultiMachines { .where('#', any()) .build()) .allowExtendedFacing(true) - .renderer(() -> new LargeMinerRenderer( - MinerRenderer.MATERIALS_TO_CASING_MODELS.get(LargeMinerMachine.getMaterial(tier)), - GTCEu.id("block/multiblock/large_miner"))) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel( + MATERIALS_TO_CASING_TEXTURES.get(LargeMinerMachine.getMaterial(tier)), + GTCEu.id("block/multiblock/large_miner")) + .andThen((ctx, prov, modelBuilder) -> { + // replace the parent model for the formed large miner + modelBuilder.replaceForAllStates((state, models) -> { + if (!state.getValue(LargeMinerMachine.IS_FORMED_PROPERTY)) { + return models; + } + + var parentModel = prov.models() + .getExistingFile(GTCEu.id("block/machine/large_miner_active")); + for (ConfiguredModel model : models) { + ((BlockModelBuilder) model.model).parent(parentModel); + } + return models; + }); + })) .tooltips( Component.translatable("gtceu.machine.large_miner.%s.tooltip" .formatted(VN[tier].toLowerCase(Locale.ROOT))), @@ -871,7 +897,7 @@ public class GTMultiMachines { }) .allowExtendedFacing(false) .allowFlip(false) - .workableCasingRenderer(GTCEu.id("block/casings/cleanroom/plascrete"), + .workableCasingModel(GTCEu.id("block/casings/cleanroom/plascrete"), GTCEu.id("block/multiblock/cleanroom")) .register(); @@ -931,7 +957,7 @@ public class GTMultiMachines { .or(ActiveTransformerMachine.getHatchPredicates())) .where('C', blocks(GTBlocks.SUPERCONDUCTING_COIL.get())) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), + .workableCasingModel(GTCEu.id("block/casings/hpca/high_power_casing"), GTCEu.id("block/multiblock/data_bank")) .register(); @@ -1002,7 +1028,7 @@ public class GTMultiMachines { return shapeInfo; }) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_palladium_substation"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_palladium_substation"), GTCEu.id("block/multiblock/power_substation")) .register(); @@ -1025,7 +1051,7 @@ public class GTMultiMachines { .build()) .allowFlip(false) .allowExtendedFacing(false) - .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), + .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/charcoal_pile_igniter")) .register(); @@ -1060,7 +1086,7 @@ public class GTMultiMachines { .where('F', blocks(BedrockOreMinerMachine.getFrameState(tier))) .where('#', any()) .build()) - .workableCasingRenderer(BedrockOreMinerMachine.getBaseTexture(tier), + .workableCasingModel(BedrockOreMinerMachine.getBaseTexture(tier), GTCEu.id("block/multiblock/bedrock_ore_miner")) .register(), MV, HV, EV); @@ -1068,22 +1094,22 @@ public class GTMultiMachines { // Multiblock Tanks public static final MachineDefinition WOODEN_TANK_VALVE = GTMachineUtils.registerTankValve( "wooden_tank_valve", "Wooden Tank Valve", false, - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); + (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); public static final MultiblockMachineDefinition WOODEN_MULTIBLOCK_TANK = registerMultiblockTank( "wooden_multiblock_tank", "Wooden Multiblock Tank", 250 * 1000, CASING_WOOD_WALL, WOODEN_TANK_VALVE::getBlock, new PropertyFluidFilter(340, false, false, false, false), - (builder, overlay) -> builder.sidedWorkableCasingRenderer("block/casings/wood_wall", overlay)); + (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); public static final MachineDefinition STEEL_TANK_VALVE = GTMachineUtils.registerTankValve( "steel_tank_valve", "Steel Tank Valve", true, - (builder, overlay) -> builder.workableCasingRenderer( + (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); public static final MultiblockMachineDefinition STEEL_MULTIBLOCK_TANK = registerMultiblockTank( "steel_multiblock_tank", "Steel Multiblock Tank", 1000 * 1000, CASING_STEEL_SOLID, STEEL_TANK_VALVE::getBlock, null, - (builder, overlay) -> builder.workableCasingRenderer( + (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index 8992ee9db38..f32da306aca 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -2,17 +2,18 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; +import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.HPCAPartRenderer; -import com.gregtechceu.gtceu.client.renderer.machine.OverlayTieredActiveMachineRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -25,36 +26,36 @@ import com.gregtechceu.gtceu.common.machine.multiblock.part.ObjectHolderMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.OpticalComputationHatchMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.OpticalDataHatchMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCABridgePartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAComputationPartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCACoolerPartMachine; -import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.HPCAEmptyPartMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.hpca.*; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; +import javax.annotation.ParametersAreNonnullByDefault; + import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.pattern.Predicates.*; import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTMachines.CREATIVE_TOOLTIPS; +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @SuppressWarnings("unused") -@net.minecraft.MethodsReturnNonnullByDefault -@javax.annotation.ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault public class GTResearchMachines { public static final MultiblockMachineDefinition RESEARCH_STATION = REGISTRATE @@ -62,7 +63,7 @@ public class GTResearchMachines { .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.RESEARCH_STATION_RECIPES) .appearanceBlock(ADVANCED_COMPUTER_CASING) - .tooltipBuilder((s, l) -> l.addAll(LangHandler.getMultiLang("gtceu.machine.research_station.tooltip"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.research_station.tooltip")) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "VVV", "PPP", "PPP", "PPP", "VVV", "XXX") .aisle("XXX", "VAV", "AAA", "AAA", "AAA", "VAV", "XXX") @@ -105,7 +106,7 @@ public class GTResearchMachines { COMPUTER_CASING.getDefaultState()) .where('H', GTResearchMachines.OBJECT_HOLDER, Direction.SOUTH) .build()) - .sidedWorkableCasingRenderer("block/casings/hpca/advanced_computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/advanced_computer_casing"), GTCEu.id("block/multiblock/research_station")) .register(); @@ -114,8 +115,11 @@ public class GTResearchMachines { .tier(ZPM) .rotationState(RotationState.ALL) .abilities(PartAbility.OBJECT_HOLDER) - .renderer(() -> new OverlayTieredActiveMachineRenderer(ZPM, GTCEu.id("block/machine/part/object_holder"), - GTCEu.id("block/machine/part/object_holder_active"))) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableTieredHullMachineModel(GTCEu.id("block/machines/object_holder")) + .andThen((ctx, prov, model) -> { + model.addReplaceableTextures("bottom", "top", "side"); + })) .register(); public static final MachineDefinition DATA_BANK = REGISTRATE.multiblock("data_bank", DataBankMachine::new) @@ -145,7 +149,7 @@ public class GTResearchMachines { .or(abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1).setMaxGlobalLimited(2, 1)) .or(autoAbilities(true, false, false))) .build()) - .workableCasingRenderer(GTCEu.id("block/casings/hpca/high_power_casing"), + .workableCasingModel(GTCEu.id("block/casings/hpca/high_power_casing"), GTCEu.id("block/multiblock/data_bank")) .register(); @@ -184,7 +188,7 @@ public class GTResearchMachines { .where('M', GTMachines.MAINTENANCE_HATCH, Direction.NORTH) .where('E', GTMachines.ENERGY_INPUT_HATCH[LuV], Direction.NORTH) .build()) - .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/computer_casing"), GTCEu.id("block/multiblock/network_switch")) .register(); @@ -196,8 +200,7 @@ public class GTResearchMachines { // good API addition for packdevs .appearanceBlock(COMPUTER_CASING) .recipeType(GTRecipeTypes.DUMMY_RECIPES) - .tooltipBuilder((s, l) -> l - .addAll(LangHandler.getMultiLang("gtceu.machine.high_performance_computation_array.tooltip"))) + .tooltips(LangHandler.getMultiLang("gtceu.machine.high_performance_computation_array.tooltip")) .pattern(definition -> FactoryBlockPattern.start() .aisle("AA", "CC", "CC", "CC", "AA") .aisle("VA", "XV", "XV", "XV", "VA") @@ -286,7 +289,7 @@ public class GTResearchMachines { return shapeInfo; }) - .sidedWorkableCasingRenderer("block/casings/hpca/computer_casing", + .sidedWorkableCasingModel(GTCEu.id("block/casings/hpca/computer_casing"), GTCEu.id("block/multiblock/hpca")) .register(); @@ -331,7 +334,7 @@ public class GTResearchMachines { .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 9), Component.translatable("gtceu.part_sharing.disabled")) - .overlayTieredHullRenderer("data_access_hatch") + .overlayTieredHullModel("data_access_hatch") .register(); public static final MachineDefinition ADVANCED_DATA_ACCESS_HATCH = REGISTRATE @@ -343,7 +346,7 @@ public class GTResearchMachines { .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 16), Component.translatable("gtceu.part_sharing.disabled")) - .overlayTieredHullRenderer("data_access_hatch") + .overlayTieredHullModel("data_access_hatch") .register(); public static final MachineDefinition CREATIVE_DATA_ACCESS_HATCH = REGISTRATE @@ -357,7 +360,7 @@ public class GTResearchMachines { CREATIVE_TOOLTIPS.accept(s, list); list.add(Component.translatable("gtceu.part_sharing.enabled")); }) - .overlayTieredHullRenderer("data_access_hatch_creative") + .overlayTieredHullModel("data_access_hatch_creative") .register(); ////////////////////////////////////// @@ -370,8 +373,9 @@ public class GTResearchMachines { public static final MachineDefinition HPCA_EMPTY_COMPONENT = registerHPCAPart( "hpca_empty_component", "Empty HPCA Component", - HPCAEmptyPartMachine::new, "empty", null, null, false) - .tooltips(Component.translatable("gtceu.part_sharing.disabled")).register(); + HPCAEmptyPartMachine::new, "empty", false) + .tooltips(Component.translatable("gtceu.part_sharing.disabled")) + .register(); public static final MachineDefinition HPCA_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_computation_component", "HPCA Computation Component", holder -> new HPCAComputationPartMachine(holder, false), "computation", false) @@ -396,7 +400,7 @@ public class GTResearchMachines { .register(); public static final MachineDefinition HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( "hpca_heat_sink_component", "HPCA Heat Sink Component", - holder -> new HPCACoolerPartMachine(holder, false), "heat_sink", null, null, false) + holder -> new HPCACoolerPartMachine(holder, false), "heat_sink", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.cooler_passive"), Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1), Component.translatable("gtceu.part_sharing.disabled")) @@ -428,7 +432,7 @@ private static MachineBuilder registerDataHatch(String name, .tier(tier) .rotationState(RotationState.ALL) .abilities(abilities) - .overlayTieredHullRenderer(model); + .overlayTieredHullModel(model); } private static MachineBuilder registerHPCAPart(String name, String displayName, @@ -438,35 +442,11 @@ private static MachineBuilder registerHPCAPart(String name, S .langValue(displayName) .rotationState(RotationState.ALL) .abilities(PartAbility.HPCA_COMPONENT) - .renderer(() -> new HPCAPartRenderer( - isAdvanced, - GTCEu.id("block/overlay/machine/hpca/" + texture), - GTCEu.id("block/overlay/machine/hpca/" + (isAdvanced ? "damaged_advanced" : "damaged")))); - } - - @SuppressWarnings("SameParameterValue") - private static MachineBuilder registerHPCAPart(String name, - String displayName, - Function constructor, - String texture, - @Nullable String activeTexture, - @Nullable String damagedTexture, - boolean isAdvanced) { - return REGISTRATE.machine(name, constructor) - .langValue(displayName) - .rotationState(RotationState.ALL) - .abilities(PartAbility.HPCA_COMPONENT) - .renderer(() -> new HPCAPartRenderer( - isAdvanced, + .modelProperty(IHPCAComponentHatch.HPCA_PART_DAMAGED_PROPERTY, false) + .modelProperty(IWorkable.ACTIVE_PROPERTY, false) + .model(createHPCAPartModel(isAdvanced, GTCEu.id("block/overlay/machine/hpca/" + texture), - activeTexture == null ? null : GTCEu.id("block/overlay/machine/hpca/" + activeTexture), - activeTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + activeTexture + "_emissive"), - damagedTexture == null ? null : GTCEu.id("block/overlay/machine/hpca/" + damagedTexture), - damagedTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + damagedTexture + "_active"), - damagedTexture == null ? null : - GTCEu.id("block/overlay/machine/hpca/" + damagedTexture + "_emissive"))); + GTCEu.id("block/overlay/machine/hpca/damaged" + (isAdvanced ? "_advanced" : "")))); } public static void init() {} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java new file mode 100644 index 00000000000..af76bc8291f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -0,0 +1,770 @@ +package com.gregtechceu.gtceu.common.data.models; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; +import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; +import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay; +import com.gregtechceu.gtceu.client.model.machine.overlays.HPCAOverlay; +import com.gregtechceu.gtceu.client.model.machine.overlays.WorkableOverlays; +import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; +import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; +import com.gregtechceu.gtceu.common.machine.electric.TransformerMachine; +import com.gregtechceu.gtceu.common.machine.electric.WorldAcceleratorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; +import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; +import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelListAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.ModelBuilderAccessor; +import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; + +import net.minecraft.Util; +import net.minecraft.core.Direction; +import net.minecraft.data.models.blockstates.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.*; +import net.minecraftforge.common.data.ExistingFileHelper; + +import com.google.common.collect.ImmutableMap; +import com.google.gson.JsonObject; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jetbrains.annotations.Nullable; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.Locale; + +import static com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController.IS_FORMED_PROPERTY; +import static com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine.*; +import static com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay.*; +import static com.gregtechceu.gtceu.common.data.models.GTModels.*; + +public class GTMachineModels { + + public static final String OVERLAY_PREFIX = "overlay_"; + public static final String EMISSIVE_SUFFIX = "_emissive"; + + // spotless:off + public static final ResourceLocation SIDED_SIDED_OVERLAY_MODEL = GTCEu.id("block/machine/template/sided/sided"); + public static final ResourceLocation SIDED_SINGLE_OVERLAY_MODEL = GTCEu.id("block/machine/template/sided/single"); + public static final ResourceLocation CUBE_ALL_SIDED_OVERLAY_MODEL = GTCEu.id("block/machine/template/cube_all/sided"); + public static final ResourceLocation CUBE_ALL_SINGLE_OVERLAY_MODEL = GTCEu.id("block/machine/template/cube_all/single"); + + public static final Int2ObjectMap TIERED_HULL_MODELS = Util.make(new Int2ObjectOpenHashMap<>(), map -> { + for (int tier : GTValues.ALL_TIERS) { + String vn = GTValues.VN[tier].toLowerCase(Locale.ROOT); + map.put(tier, GTCEu.id("block/casings/voltage/" + vn)); + } + map.defaultReturnValue(GTCEu.id("block/casings/voltage/lv")); + }); + public static final ResourceLocation LP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_bronze"); + public static final ResourceLocation HP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_steel"); + + public static final ResourceLocation OVERLAY_MODEL = GTCEu.id("block/overlay/front"); + public static final ResourceLocation OVERLAY_COLOR_RING_MODEL = GTCEu.id("block/overlay/front_color_ring"); + public static final ResourceLocation OVERLAY_EMISSIVE_MODEL = GTCEu.id("block/overlay/2_layer/front_emissive"); + public static final ResourceLocation OVERLAY_EMISSIVE_COLOR_RING_MODEL = GTCEu.id("block/overlay/2_layer/front_emissive_color_ring"); + // spotless:on + + // region generic models + + public static MachineBuilder.ModelInitializer createBasicMachineModel(ResourceLocation baseModel) { + return (ctx, prov, builder) -> { + var model = prov.models().getExistingFile(baseModel); + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createBasicReplaceableTextureMachineModel(ResourceLocation baseModel) { + return (ctx, prov, builder) -> { + var model = prov.models().getExistingFile(baseModel); + builder.forAllStatesModels(state -> model); + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createTieredHullMachineModel(ResourceLocation parentModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(parentModel)); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createOverlayTieredHullMachineModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + tieredHullTextures(model, builder.getOwner().getTier()); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createColorOverlayTieredHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + BlockModelBuilder model = colorOverlayHullModel(overlay, emissiveOverlay, state, prov.models()); + tieredHullTextures(model, builder.getOwner().getTier()); + return tieredHullTextures(model, builder.getOwner().getTier()); + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createSingleOverlayTieredHullMachineModel(ResourceLocation overlayTexture, + ResourceLocation emissiveOverlayTexture) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SINGLE_OVERLAY_MODEL)) + .texture("overlay", overlayTexture) + .texture("overlay_emissive", emissiveOverlayTexture); + tieredHullTextures(model, builder.getOwner().getTier()); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createWorkableTieredHullMachineModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + + BlockModelBuilder model = prov.models().nested().parent(tieredHullModel(prov.models(), builder)); + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + public static MachineBuilder.ModelInitializer createOverlaySteamHullMachineModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + boolean steel = state.getOptionalValue(SteamMachine.STEEL_PROPERTY).orElse(false); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + steamCasingTextures(model, steel); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createColorOverlaySteamHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation emissiveOverlay) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + BlockModelBuilder model = colorOverlayHullModel(overlay, emissiveOverlay, state, prov.models()); + steamCasingTextures(model, state.getOptionalValue(SteamMachine.STEEL_PROPERTY).orElse(false)); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static final ResourceLocation VENT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_steam_vent"); + + // spotless:off + public static MachineBuilder.ModelInitializer createWorkableSteamHullMachineModel(boolean highPressure, ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + ModelFile parent = steamHullModel(prov.models(), highPressure); + + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.IDLE); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.WORKING); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.WAITING); + makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.SUSPEND); + + if (!builder.getOwner().defaultRenderState().hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + return; + } + + ModelFile ventModel = prov.models().getBuilder(VENT_OVERLAY.toString()) + .texture("steam_vent", VENT_OVERLAY) + .element() + .from(-0.002f, -0.002f, -0.002f).to(16.002f, 16.002f, 16.002f) + .face(Direction.NORTH).uvs(0, 0, 16, 16).texture("#steam_vent").cullface(Direction.NORTH).end() + .end(); + for (RelativeDirection relative : RelativeDirection.VALUES) { + Direction dir = relative.global; + builder.part().modelFile(ventModel) + .rotationX(dir == Direction.DOWN ? 90 : dir == Direction.UP ? 270 : 0) + .rotationY(dir.getAxis().isVertical() ? 0 : ((int) dir.toYRot() + 180) % 360) + .addModel() + .condition(IExhaustVentMachine.VENT_DIRECTION_PROPERTY, relative); + } + }; + } + // spotless:on + + private static void makeWorkableOverlayPart(BlockModelProvider models, + MachineModelBuilder builder, ModelFile parentModel, + WorkableOverlays overlays, RecipeLogic.Status status) { + BlockModelBuilder model = models.nested().parent(parentModel); + addWorkableOverlays(overlays, status, model); + builder.part(model).condition(RecipeLogic.STATUS_PROPERTY, status); + } + + public static MachineBuilder.ModelInitializer createWorkableCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(CUBE_ALL_SIDED_OVERLAY_MODEL)) + .texture("all", baseCasingTexture); + return addWorkableOverlays(overlays, status, model); + }); + builder.addTextureOverride("all", baseCasingTexture); + }; + } + + // spotless:off + public static MachineBuilder.ModelInitializer createSidedOverlayCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + casingTextures(model, baseCasingTexture); + builder.forAllStatesModels(state -> model); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createSidedWorkableCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + casingTextures(model, baseCasingTexture); + return addWorkableOverlays(overlays, status, model); + }); + + var texturePath = baseCasingTexture; + if (!texturePath.getPath().endsWith("/")) { + texturePath = texturePath.withSuffix("/"); + } + builder.addTextureOverride("bottom", texturePath.withSuffix("bottom")); + builder.addTextureOverride("top", texturePath.withSuffix("top")); + builder.addTextureOverride("side", texturePath.withSuffix("side")); + }; + } + + // endregion + + // region per-machine models + + // spotless:off + public static final String OVERLAY_FLUID_HATCH_TEX = "overlay_fluid_hatch"; + public static final String OVERLAY_FLUID_HATCH_HALF_PX_TEX = "overlay_fluid_hatch_half_px_out"; + public static final String OVERLAY_ITEM_HATCH = "overlay_item_hatch"; + // spotless:on + + public static MachineBuilder.ModelInitializer createSimpleGeneratorModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStatesModels(state -> { + RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(GTCEu.id("block/overlay/2_layer/tinted/front"))) + .texture("overlay", ENERGY_OUT_1A.getIoPart()) + .texture("overlay_tinted", ENERGY_OUT_1A.getTintedPart()); + tieredHullTextures(model, builder.getOwner().getTier()); + addWorkableOverlays(overlays, status, model); + + return model; + }); + }; + } + + public static MachineBuilder.ModelInitializer createBatteryBufferModel(int inventorySize) { + return (ctx, prov, builder) -> { + var overlay = OUT_OVERLAYS_FOR_AMP.get(inventorySize); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", overlay.getIoPart()) + .texture("overlay_in_tinted", overlay.getTintedPart()) + .texture("overlay_out_io", BLANK_TEXTURE); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + // spotless:off + public static final ResourceLocation CHARGER_IDLE = GTCEu.id("block/machines/charger/overlay_charger_idle"); + public static final ResourceLocation CHARGER_RUNNING = GTCEu.id("block/machines/charger/overlay_charger_running"); + public static final ResourceLocation CHARGER_RUNNING_EMISSIVE = GTCEu.id("block/machines/charger/overlay_charger_running_emissive"); + public static final ResourceLocation CHARGER_FINISHED = GTCEu.id("block/machines/charger/overlay_charger_finished"); + public static final ResourceLocation CHARGER_FINISHED_EMISSIVE = GTCEu.id("block/machines/charger/overlay_charger_finished_emissive"); + + public static MachineBuilder.ModelInitializer createChargerModel() { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + ChargerMachine.State state = renderState.getValue(ChargerMachine.STATE_PROPERTY); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + switch (state) { + case IDLE -> { + model.texture("overlay_front", CHARGER_IDLE); + } + case RUNNING -> { + model.texture("overlay_front", CHARGER_RUNNING); + model.texture("overlay_front_emissive", CHARGER_RUNNING_EMISSIVE); + } + case FINISHED -> { + model.texture("overlay_front", CHARGER_FINISHED); + model.texture("overlay_front_emissive", CHARGER_FINISHED_EMISSIVE); + } + } + return model; + }); + }; + } + // spotless:on + + public static final ResourceLocation TRANSFORMER_LIKE = GTCEu.id("block/machine/template/transformer_like_machine"); + + public static final ResourceLocation CONVERTER_FE_IN = GTCEu.id("block/overlay/converter/converter_native_in"); + public static final ResourceLocation CONVERTER_FE_OUT = GTCEu.id("block/overlay/converter/converter_native_out"); + + public static MachineBuilder.ModelInitializer createConverterModel(int amperage) { + return (ctx, prov, builder) -> { + final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(amperage); + final EnergyIOOverlay energyOut = OUT_OVERLAYS_FOR_AMP.get(amperage); + + BlockModelBuilder euToFeModel = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", energyIn.getIoPart()) + .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_out_io", CONVERTER_FE_OUT); + tieredHullTextures(euToFeModel, builder.getOwner().getTier()); + BlockModelBuilder feToEuModel = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", energyOut.getIoPart()) + .texture("overlay_in_tinted", energyOut.getTintedPart()) + .texture("overlay_out_io", CONVERTER_FE_IN); + tieredHullTextures(feToEuModel, builder.getOwner().getTier()); + + builder.partialState() + .with(ConverterMachine.FE_TO_EU_PROPERTY, false) + .setModel(euToFeModel) + .partialState() + .with(ConverterMachine.FE_TO_EU_PROPERTY, true) + .setModel(feToEuModel) + .end(); + }; + } + + public static MachineBuilder.ModelInitializer createCrateModel(boolean wooden) { + return (ctx, prov, builder) -> { + String modelPath = "block/machine/template/crate/" + (wooden ? "wooden" : "metal") + "_crate"; + ModelFile baseModel = prov.models().getExistingFile(GTCEu.id(modelPath)); + ModelFile tapedModel = prov.models().getExistingFile(GTCEu.id(modelPath + "_taped")); + + builder.forAllStatesModels(state -> { + if (state.getOptionalValue(CrateMachine.TAPED_PROPERTY).orElse(false)) { + return tapedModel; + } else { + return baseModel; + } + }); + }; + } + + public static MachineBuilder.ModelInitializer createDiodeModel() { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + DiodePartMachine.AmpMode mode = renderState.getValue(DiodePartMachine.AMP_MODE_PROPERTY); + final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); + final EnergyIOOverlay energyOut = OUT_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", energyIn.getIoPart()) + .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_out_io", energyOut.getIoPart()) + .texture("overlay_out_tinted", energyOut.getTintedPart()); + tieredHullTextures(model, builder.getOwner().getTier()); + return model; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + public static MachineBuilder.ModelInitializer createTransformerModel(int baseAmp) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(renderState -> { + boolean transformUp = renderState.getValue(TransformerMachine.TRANSFORM_UP_PROPERTY); + EnergyIOOverlay frontFace = (transformUp ? OUT_OVERLAYS_FOR_AMP : IN_OVERLAYS_FOR_AMP) + .get(baseAmp); + EnergyIOOverlay otherFace = (transformUp ? IN_OVERLAYS_FOR_AMP : OUT_OVERLAYS_FOR_AMP) + .get(baseAmp * 4); + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io", frontFace.getIoPart()) + .texture("overlay_in_tinted", frontFace.getTintedPart()) + .texture("overlay_out_io", otherFace.getIoPart()) + .texture("overlay_out_tinted", otherFace.getTintedPart()); + tieredHullTextures(model, builder.getOwner().getTier()); + return model; + }); + }; + } + + // spotless:off + public static final ResourceLocation ROTOR_HOLDER_BLOCK = GTCEu.id("block/machine/template/rotor_holder/block"); + public static final ResourceLocation ROTOR_HOLDER_OVERLAY = GTCEu.id("block/machine/template/rotor_holder/overlay"); + public static final ResourceLocation ROTOR_HOLDER_ROTOR_IDLE = GTCEu.id("block/machine/template/rotor_holder/rotor_idle"); + public static final ResourceLocation ROTOR_HOLDER_ROTOR_SPINNING = GTCEu.id("block/machine/template/rotor_holder/rotor_spinning"); + // spotless:on + + public static MachineBuilder.ModelInitializer createRotorHolderModel() { + return (ctx, prov, builder) -> { + var blockModel = prov.models().nested() + .parent(prov.models().getExistingFile(ROTOR_HOLDER_BLOCK)); + tieredHullTextures(blockModel, builder.getOwner().getTier()); + + builder.part(blockModel).end(); + builder.part(ROTOR_HOLDER_OVERLAY).condition(IS_FORMED_PROPERTY, true).end(); + makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_IDLE, false, false); + makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_IDLE.withSuffix(EMISSIVE_SUFFIX), false, true); + makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_SPINNING, true, false); + makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_SPINNING.withSuffix(EMISSIVE_SUFFIX), true, true); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + private static void makeRotorHolderPart(MachineModelBuilder builder, ResourceLocation model, + boolean spinning, boolean emissive) { + builder.part(model) + .condition(IS_FORMED_PROPERTY, true) + .condition(HAS_ROTOR_PROPERTY, true) + .condition(ROTOR_SPINNING_PROPERTY, spinning) + .condition(EMISSIVE_ROTOR_PROPERTY, emissive); + } + + public static final ImmutableMap MATERIALS_TO_CASING_TEXTURES = Util.make(() -> { + ImmutableMap.Builder builder = ImmutableMap.builder(); + builder.put(GTMaterials.Bronze, GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks")); + builder.put(GTMaterials.Invar, GTCEu.id("block/casings/solid/machine_casing_heatproof")); + builder.put(GTMaterials.Aluminium, GTCEu.id("block/casings/solid/machine_casing_frost_proof")); + builder.put(GTMaterials.Steel, GTCEu.id("block/casings/solid/machine_casing_solid_steel")); + builder.put(GTMaterials.StainlessSteel, GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel")); + builder.put(GTMaterials.Titanium, GTCEu.id("block/casings/solid/machine_casing_stable_titanium")); + builder.put(GTMaterials.TungstenSteel, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel")); + builder.put(GTMaterials.Polytetrafluoroethylene, GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); + builder.put(GTMaterials.HSSE, GTCEu.id("block/casings/solid/machine_casing_sturdy_hsse")); + + return builder.build(); + }); + + // spotless:off + public static MachineBuilder.ModelInitializer createWorldAcceleratorModel(ResourceLocation beModeModelPath, ResourceLocation rtModeModelPath) { + return (ctx, prov, builder) -> { + WorkableOverlays rtOverlays = WorkableOverlays.get(rtModeModelPath, prov.getExistingFileHelper()); + WorkableOverlays beOverlays = WorkableOverlays.get(beModeModelPath, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + boolean rtMode = state.getValue(WorldAcceleratorMachine.RANDOM_TICK_PROPERTY); + WorkableOverlays overlays = rtMode ? rtOverlays : beOverlays; + + boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); + boolean workingEnabled = state.getValue(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY); + RecipeLogic.Status status = active ? + workingEnabled ? + RecipeLogic.Status.WORKING : + RecipeLogic.Status.SUSPEND : + RecipeLogic.Status.IDLE; + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + public static final ResourceLocation MAINTENANCE_TAPED_OVERLAY = GTCEu.id("block/overlay/machine/overlay_maintenance_taped"); + // spotless:on + + public static MachineBuilder.ModelInitializer createMaintenanceModel(ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + builder.forAllStatesModels(state -> { + var baseModel = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + tieredHullTextures(baseModel, builder.getOwner().getTier()); + + if (!state.getValue(IMaintenanceMachine.MAINTENANCE_TAPED_PROPERTY)) { + baseModel.texture("overlay_2", MAINTENANCE_TAPED_OVERLAY); + } + return baseModel; + }); + + builder.addReplaceableTextures("bottom", "top", "side"); + }; + } + + // spotless:off + public static final ResourceLocation HPCA_PART_MODEL = GTCEu.id("block/machine/template/hpca_part_machine"); + public static final ResourceLocation COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/computer_casing/"); + public static final ResourceLocation ADVANCED_COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/advanced_computer_casing/"); + + public static MachineBuilder.ModelInitializer createHPCAPartModel(boolean advanced, + ResourceLocation normalTexture, + ResourceLocation damagedTexture) { + return (ctx, prov, builder) -> { + ResourceLocation textures = advanced ? ADVANCED_COMPUTER_CASING_TEXTURE : COMPUTER_CASING_TEXTURE; + HPCAOverlay overlay = HPCAOverlay.get(normalTexture, damagedTexture, prov.getExistingFileHelper()); + + var baseModel = prov.models().withExistingParent(ctx.getName() + "_base", HPCA_PART_MODEL); + casingTexture(baseModel, "bottom", textures); + casingTexture(baseModel, "top", textures); + casingTexture(baseModel, "front", textures); + casingTexture(baseModel, "back", textures); + casingTexture(baseModel, "side", textures); + + builder.forAllStatesModels(state -> { + boolean damaged = state.getValue(IHPCAComponentHatch.HPCA_PART_DAMAGED_PROPERTY); + boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); + + return prov.models().nested().parent(baseModel) + .texture("overlay", overlay.getTexture(active, damaged)) + .texture("overlay_emissive", overlay.getEmissiveTexture(active, damaged)); + }); + }; + } + + public static final ResourceLocation OVERLAY_SCREEN_TEXTURE = GTCEu.id("block/overlay/machine/overlay_screen"); + public static final ResourceLocation OVERLAY_QTANK_EMISSIVE_TEXTURE = GTCEu.id("block/overlay/machine/overlay_qtank_emissive"); + + public static MachineBuilder.ModelInitializer createFisherModel() { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(GTCEu.id("block/overlay/2_layer/top_emissive"))) + .texture("overlay", OVERLAY_SCREEN_TEXTURE) + .texture("overlay_emissive", OVERLAY_QTANK_EMISSIVE_TEXTURE); + tieredHullTextures(model, builder.getOwner().getTier()); + + builder.forAllStatesModels(state -> model); + }; + } + + public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceLocation overlayDir) { + return (ctx, prov, builder) -> { + WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); + + builder.forAllStates(state -> { + boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); + boolean workingEnabled = state.getValue(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY); + RecipeLogic.Status status = active ? + workingEnabled ? + RecipeLogic.Status.WORKING : + RecipeLogic.Status.SUSPEND : + RecipeLogic.Status.IDLE; + + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); + tieredHullTextures(model, builder.getOwner().getTier()); + + return addWorkableOverlays(overlays, status, model); + }); + }; + } + + // endregion + + // region helper functions + + public static NonNullBiConsumer, GTBlockstateProvider> createMachineModel(MachineBuilder.ModelInitializer modelInitializer) { + return (ctx, prov) -> { + Block block = ctx.getEntry(); + if (!(block instanceof IMachineBlock machineBlock)) { + throw new IllegalArgumentException( + "passed block must be a machine block, is " + block.getClass().getName()); + } + MachineDefinition definition = machineBlock.getDefinition(); + + MachineModelBuilder builder = prov.models().getBuilder("block/machine/" + ctx.getName()) + .customLoader(MachineModelBuilder.begin(definition)); + modelInitializer.configureModel(ctx, prov, builder); + final BlockModelBuilder model = builder.end(); + model.parent(prov.models().getExistingFile(prov.mcLoc("block/block"))); + + BlockStateProvider.ConfiguredModelList modelList = null; + if (!builder.getModels().isEmpty()) { + modelList = builder.getModels().get(builder.partialState()); + } else if (!builder.getParts().isEmpty()) { + modelList = builder.getParts().get(0).models; + } + if (modelList != null) { + var models = ((ConfiguredModelListAccessor) modelList).gtceu$getModels(); + if (!models.isEmpty()) { + String texture = findParticleTexture(models.get(0).model, prov.getExistingFileHelper()); + if (texture != null) { + model.texture("particle", texture); + } + } + } + + var generator = prov.multiVariantGenerator(block, + Variant.variant().with(VariantProperties.MODEL, model.getLocation())); + PropertyDispatch dispatch = GTBlockstateProvider.createFacingDispatch(definition); + if (dispatch != null) { + generator.with(dispatch); + } + }; + } + // spotless:on + + private static @Nullable String findParticleTexture(ModelFile modelFile, ExistingFileHelper existingFileHelper) { + if (modelFile instanceof ModelBuilderAccessor b) { + return b.gtceu$getTextures().get("particle"); + } else { + try { + Resource res = existingFileHelper.getResource(modelFile.getLocation(), + GTBlockstateProvider.MODEL.getPackType(), + GTBlockstateProvider.MODEL.getSuffix(), GTBlockstateProvider.MODEL.getPrefix()); + + try (BufferedReader reader = res.openAsReader()) { + JsonObject json = GsonHelper.parse(reader, true); + if (json.has("textures")) { + return GsonHelper.getAsString(json.getAsJsonObject("textures"), "particle", null); + } + } + } catch (IOException e) { + GTCEu.LOGGER.error("guh? couldn't find model at {} for particle textures", + modelFile.getUncheckedLocation(), e); + } + } + return null; + } + + public static ConfiguredModel[] addWorkableOverlays(WorkableOverlays overlays, RecipeLogic.Status status, + BlockModelBuilder model) { + for (var entry : overlays.getTextures().entrySet()) { + var face = entry.getKey(); + var textures = entry.getValue(); + + ResourceLocation overlay = textures.getTexture(status); + ResourceLocation overlayEmissive = textures.getEmissiveTexture(status); + + if (overlay != BLANK_TEXTURE) { + model.texture(OVERLAY_PREFIX + face.getName(), overlay); + } + if (overlayEmissive != BLANK_TEXTURE) { + model.texture(OVERLAY_PREFIX + face.getName() + EMISSIVE_SUFFIX, overlayEmissive); + } + } + return ConfiguredModel.builder().modelFile(model).build(); + } + + public static BlockModelBuilder colorOverlayHullModel(ResourceLocation overlayTexture, + @Nullable ResourceLocation emissiveOverlayTexture, + MachineRenderState state, BlockModelProvider models) { + ResourceLocation parent; + if (state.getOptionalValue(IPaintable.IS_PAINTED_PROPERTY).orElse(false)) { + parent = emissiveOverlayTexture != null ? OVERLAY_EMISSIVE_COLOR_RING_MODEL : OVERLAY_COLOR_RING_MODEL; + } else { + parent = emissiveOverlayTexture != null ? OVERLAY_EMISSIVE_MODEL : OVERLAY_MODEL; + } + BlockModelBuilder model = models.nested().parent(models.getExistingFile(parent)) + .texture("overlay", overlayTexture); + if (emissiveOverlayTexture != null) { + model.texture("overlay_emissive", emissiveOverlayTexture); + } + return model; + } + + public static ModelFile tieredHullModel(BlockModelProvider models, + MachineModelBuilder builder) { + return tieredHullModel(models, builder.getOwner().getTier()); + } + + public static ModelFile tieredHullModel(BlockModelProvider models, int tier) { + return models.getExistingFile(TIERED_HULL_MODELS.get(tier)); + } + + public static ModelFile steamHullModel(BlockModelProvider models, boolean highPressure) { + return models.getExistingFile(highPressure ? HP_STEAM_HULL_MODEL : LP_STEAM_HULL_MODEL); + } + + public static ResourceLocation getTieredHullTexture(int tier) { + return GTCEu.id("block/casings/voltage/%s/".formatted(GTValues.VN[tier].toLowerCase(Locale.ROOT))); + } + + public static BlockModelBuilder tieredHullTextures(BlockModelBuilder model, int tier) { + return casingTextures(model, getTieredHullTexture(tier)); + } + + public static ResourceLocation getSteamCasingTexture(boolean steel) { + return GTCEu.id("block/casings/steam/%s/".formatted(steel ? "steel" : "bronze")); + } + + public static BlockModelBuilder steamCasingTextures(BlockModelBuilder model, boolean steel) { + return casingTextures(model, getSteamCasingTexture(steel)); + } + + public static void casingTexture(BlockModelBuilder model, String key, ResourceLocation texturePath) { + model.texture(key, texturePath.withSuffix(key)); + } + + public static BlockModelBuilder casingTextures(BlockModelBuilder model, ResourceLocation texturePath) { + if (!texturePath.getPath().endsWith("/")) { + texturePath = texturePath.withSuffix("/"); + } + casingTexture(model, "bottom", texturePath); + casingTexture(model, "top", texturePath); + casingTexture(model, "side", texturePath); + return model; + } + + // endregion +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java similarity index 70% rename from src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java rename to src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java index 0c88c92222c..c33890e76d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java @@ -1,17 +1,16 @@ -package com.gregtechceu.gtceu.common.data; +package com.gregtechceu.gtceu.common.data.models; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; -import com.gregtechceu.gtceu.api.block.ICoilType; -import com.gregtechceu.gtceu.api.block.IFilterType; -import com.gregtechceu.gtceu.api.block.IFusionCasingType; +import com.gregtechceu.gtceu.api.block.*; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.fluids.GTFluid; import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.core.MixinHelpers; import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; @@ -25,11 +24,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelBuilder; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.client.model.generators.ModelProvider; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.client.model.generators.*; import com.google.gson.JsonObject; import com.tterrag.registrate.providers.DataGenContext; @@ -42,37 +37,19 @@ public class GTModels { - public static void createModelBlockState(DataGenContext ctx, - RegistrateBlockstateProvider prov, ResourceLocation modelLocation) { - prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(modelLocation)); + public static final ResourceLocation BLANK_TEXTURE = GTCEu.id("block/void"); + + // region BLOCK MODELS + + public static NonNullBiConsumer, GTBlockstateProvider> createModelBlockState(ResourceLocation modelLocation) { + return (ctx, prov) -> { + prov.simpleBlock(ctx.getEntry(), prov.models().getExistingFile(modelLocation)); + }; } public static void createCrossBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), prov.models().cross(ForgeRegistries.BLOCKS.getKey(ctx.getEntry()).getPath(), - prov.blockTexture(ctx.getEntry()))); - } - - public static void cellModel(DataGenContext ctx, RegistrateItemModelProvider prov) { - // empty model - prov.getBuilder("item/" + prov.name(ctx::getEntry) + "_empty") - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", prov.modLoc("item/%s/base".formatted(prov.name(ctx)))); - - // filled model - prov.getBuilder("item/" + prov.name(ctx::getEntry) + "_filled") - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", prov.modLoc("item/%s/base".formatted(prov.name(ctx)))) - .texture("layer1", prov.modLoc("item/%s/overlay".formatted(prov.name(ctx)))); - - // root model - prov.generated(ctx::getEntry, prov.modLoc("item/%s/base".formatted(prov.name(ctx)))) - .override().predicate(GTCEu.id("fluid_cell"), 0) - .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s_empty".formatted(prov.name(ctx))))) - .end() - .override().predicate(GTCEu.id("fluid_cell"), 1) - .model(new ModelFile.UncheckedModelFile(prov.modLoc("item/%s_filled".formatted(prov.name(ctx))))) - .end(); + prov.simpleBlock(ctx.getEntry(), prov.models().cross(ctx.getName(), prov.blockTexture(ctx.getEntry()))); } public static < @@ -103,18 +80,6 @@ public static void rubberTreeSaplingModel(DataGenContext contex provider.generated(context, provider.modLoc("block/" + provider.name(context))); } - public static void longDistanceItemPipeModel(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), - prov.models().cubeAll("long_distance_item_pipeline", prov.modLoc("block/pipe/ld_item_pipe/block"))); - } - - public static void longDistanceFluidPipeModel(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - prov.simpleBlock(ctx.getEntry(), - prov.models().cubeAll("long_distance_fluid_pipeline", prov.modLoc("block/pipe/ld_fluid_pipe/block"))); - } - public static NonNullBiConsumer, RegistrateBlockstateProvider> lampModel(DyeColor color, boolean border) { return (ctx, prov) -> { @@ -126,17 +91,18 @@ public static NonNullBiConsumer, RegistrateBloc .forAllStates(state -> { if (state.getValue(LampBlock.LIGHT)) { ModelBuilder model = prov.models() - .getBuilder(ctx.getName() + (state.getValue(LampBlock.BLOOM) ? "_bloom" : "")) + .getBuilder(ctx.getName() + + (state.getValue(GTBlockStateProperties.BLOOM) ? "_bloom" : "")) .parent(parentOn); if (border) { model.texture("active", "block/lamps/" + color.getName()); - if (state.getValue(LampBlock.BLOOM)) { + if (state.getValue(GTBlockStateProperties.BLOOM)) { model.texture("active_overlay", "block/lamps/" + color.getName() + "_emissive"); } else { model.texture("active_overlay", "block/lamps/" + color.getName()); } } else { - if (state.getValue(LampBlock.BLOOM)) { + if (state.getValue(GTBlockStateProperties.BLOOM)) { model.texture("active", "block/lamps/" + color.getName() + "_borderless_emissive"); } else { @@ -183,20 +149,18 @@ public static NonNullBiConsumer, RegistrateBlocksta }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createSidedCasingModel(String name, - ResourceLocation texture) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createSidedCasingModel(ResourceLocation texture) { return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), texture.withSuffix("/side"), texture.withSuffix("/bottom"), texture.withSuffix("/top"))); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> cubeAllModel(String name, - ResourceLocation texture) { + public static NonNullBiConsumer, GTBlockstateProvider> cubeAllModel(ResourceLocation texture) { return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(name, texture)); + prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(ctx.getName(), texture)); }; } @@ -218,63 +182,64 @@ public static NonNullBiConsumer, RegistrateBlocksta .withExistingParent("%s_hermetic_casing".formatted(tierName), GTCEu.id("block/hermetic_casing")) .texture("bot_bottom", GTCEu.id("block/casings/voltage/%s/bottom".formatted(tierName))) .texture("bot_top", GTCEu.id("block/casings/voltage/%s/top".formatted(tierName))) - .texture("bot_side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName))) - .texture("top_side", GTCEu.id("block/casings/hermetic_casing/hermetic_casing_overlay"))); + .texture("bot_side", GTCEu.id("block/casings/voltage/%s/side".formatted(tierName)))); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createSteamCasingModel(String name, - String material) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createSteamCasingModel(String material) { return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), GTCEu.id("block/casings/steam/%s/side".formatted(material)), GTCEu.id("block/casings/steam/%s/bottom".formatted(material)), GTCEu.id("block/casings/steam/%s/top".formatted(material)))); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createCoilModel(String name, - ICoilType coilType) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createCoilModel(ICoilType coilType) { return (ctx, prov) -> { + String name = ctx.getName(); ActiveBlock block = ctx.getEntry(); ModelFile inactive = prov.models().cubeAll(name, coilType.getTexture()); ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) .texture("bot_all", coilType.getTexture()) .texture("top_all", coilType.getTexture().withSuffix("_bloom")); prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createBatteryBlockModel(String name, - IBatteryData batteryData) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createBatteryBlockModel(IBatteryData batteryData) { return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(name, + prov.simpleBlock(ctx.getEntry(), prov.models().cubeBottomTop(ctx.getName(), GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/side"), GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"), GTCEu.id("block/casings/battery/" + batteryData.getBatteryName() + "/top"))); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createFusionCasingModel(String name, - IFusionCasingType casingType) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createFusionCasingModel(IFusionCasingType casingType) { return (ctx, prov) -> { + String name = ctx.getName(); ActiveBlock block = ctx.getEntry(); ModelFile inactive = prov.models().cubeAll(name, casingType.getTexture()); ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/cube_2_layer/all")) .texture("bot_all", casingType.getTexture()) .texture("top_all", new ResourceLocation(casingType.getTexture() + "_bloom")); prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createCleanroomFilterModel(String name, - IFilterType type) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createCleanroomFilterModel(IFilterType type) { return (ctx, prov) -> { - prov.simpleBlock(ctx.getEntry(), prov.models().cubeAll(name, GTCEu.id("block/casings/cleanroom/" + type))); + prov.simpleBlock(ctx.getEntry(), prov.models() + .cubeAll(ctx.getName(), GTCEu.id("block/casings/cleanroom/" + type.getSerializedName()))); }; } @@ -284,14 +249,16 @@ public static NonNullBiConsumer, RegistrateBl ModelFile inactive = prov.models().getExistingFile(modelPath); ModelFile active = prov.models().getExistingFile(modelPath.withSuffix("_active")); prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); + .partialState().with(GTBlockStateProperties.ACTIVE, false).modelForState().modelFile(inactive) + .addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true).modelForState().modelFile(active) + .addModel(); }; } - public static NonNullBiConsumer, RegistrateBlockstateProvider> createFireboxModel(String name, - BoilerFireboxType type) { + public static NonNullBiConsumer, RegistrateBlockstateProvider> createFireboxModel(BoilerFireboxType type) { return (ctx, prov) -> { + String name = ctx.getName(); ActiveBlock block = ctx.getEntry(); ModelFile inactive = prov.models().cubeBottomTop(name, type.side(), type.bottom(), type.top()); ModelFile active = prov.models().withExistingParent(name + "_active", GTCEu.id("block/fire_box_active")) @@ -299,11 +266,17 @@ public static NonNullBiConsumer, RegistrateBl .texture("bottom", type.bottom()) .texture("top", type.top()); prov.getVariantBuilder(block) - .partialState().with(ActiveBlock.ACTIVE, false).modelForState().modelFile(inactive).addModel() - .partialState().with(ActiveBlock.ACTIVE, true).modelForState().modelFile(active).addModel(); + .partialState().with(GTBlockStateProperties.ACTIVE, false) + .modelForState().modelFile(inactive).addModel() + .partialState().with(GTBlockStateProperties.ACTIVE, true) + .modelForState().modelFile(active).addModel(); }; } + // endregion + + // region RUNTIME GEN + /** * register fluid models for materials */ @@ -354,4 +327,6 @@ public static void registerMaterialFluidModels() { } } } + + // endregion } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java index 667d87326ac..c4c27d6380c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/FacadeItemBehaviour.java @@ -1,15 +1,13 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.api.item.component.ICustomDescriptionId; -import com.gregtechceu.gtceu.api.item.component.ICustomRenderer; import com.gregtechceu.gtceu.api.item.component.ISubItemHandler; -import com.gregtechceu.gtceu.client.renderer.cover.FacadeCoverRenderer; import com.gregtechceu.gtceu.common.data.GTBlocks; - -import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; @@ -18,77 +16,109 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; -import com.google.common.collect.ImmutableList; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; -import java.util.Objects; +import java.util.function.Supplier; -public class FacadeItemBehaviour implements ISubItemHandler, ICustomDescriptionId, ICustomRenderer { - - @NotNull - @Override - public IRenderer getRenderer() { - return FacadeCoverRenderer.INSTANCE; - } +public class FacadeItemBehaviour implements ISubItemHandler, ICustomDescriptionId { @Override public @Nullable Component getItemName(ItemStack stack) { - ItemStack facadeStack = getFacadeStack(stack); - return Component.translatable(stack.getDescriptionId(), facadeStack.getHoverName()); + BlockState facadeState = getFacadeState(stack); + return Component.translatable(stack.getDescriptionId(), facadeState.getBlock().getName()); } + public static final Supplier> DEFAULT_FACADES = GTMemoizer.memoize(() -> { + List states = new ArrayList<>(); + states.add(Blocks.STONE.defaultBlockState()); + states.add(GTBlocks.COIL_CUPRONICKEL.getDefaultState()); + states.add(Blocks.GLASS.defaultBlockState()); + + return states; + }); + @Override public void fillItemCategory(Item item, CreativeModeTab category, NonNullList items) { - List validFacades = ImmutableList.of(new ItemStack(Blocks.STONE), - GTBlocks.COIL_CUPRONICKEL.asStack(), new ItemStack(Blocks.GLASS)); - for (ItemStack facadeStack : validFacades) { + for (BlockState facadeState : DEFAULT_FACADES.get()) { ItemStack resultStack = item.getDefaultInstance(); - setFacadeStack(resultStack, facadeStack); + setFacadeState(resultStack, facadeState); items.add(resultStack); } } - public static void setFacadeStack(ItemStack itemStack, ItemStack facadeStack) { - facadeStack = facadeStack.copy(); - facadeStack.setCount(1); - if (!isValidFacade(facadeStack)) { - facadeStack = new ItemStack(Blocks.STONE); + public static void setFacadeState(ItemStack itemStack, BlockState facadeState) { + if (!isValidFacade(facadeState)) { + facadeState = Blocks.STONE.defaultBlockState(); } - if (!itemStack.hasTag()) { - itemStack.setTag(new CompoundTag()); - } - var tagCompound = Objects.requireNonNull(itemStack.getTag()); - tagCompound.put("Facade", facadeStack.save(new CompoundTag())); + var tagCompound = itemStack.getOrCreateTag(); + Tag stateTag = BlockState.CODEC.encodeStart(NbtOps.INSTANCE, facadeState) + .result().orElse(new CompoundTag()); + tagCompound.put("Facade", stateTag); } public static boolean isValidFacade(ItemStack itemStack) { if (!(itemStack.getItem() instanceof BlockItem blockItem)) { return false; } - var rawBlockState = blockItem.getBlock().defaultBlockState(); - return !rawBlockState.hasBlockEntity() && rawBlockState.getRenderShape() == RenderShape.MODEL; + return isValidFacade(blockItem.getBlock().defaultBlockState()); + } + + public static boolean isValidFacade(BlockState state) { + return !state.hasBlockEntity() && state.getRenderShape() == RenderShape.MODEL; + } + + public static BlockState getFacadeState(ItemStack itemStack) { + BlockState nullableState = getFacadeStateNullable(itemStack); + if (nullableState == null) { + return Blocks.STONE.defaultBlockState(); + } + return nullableState; } - public static ItemStack getFacadeStack(ItemStack itemStack) { - ItemStack unsafeStack = getFacadeStackUnsafe(itemStack); - if (unsafeStack == null) { - return new ItemStack(Blocks.STONE); + public static BlockState getFacadeStateNullable(ItemStack itemStack) { + if (itemStack.getItem() instanceof BlockItem blockItem) { + return blockItem.getBlock().defaultBlockState(); } - return unsafeStack; + + BlockState unsafeState = getFacadeStateUnsafe(itemStack); + if (unsafeState == null) { + // backwards support + ItemStack unsafeStack = getFacadeStackUnsafe(itemStack); + if (unsafeStack.getItem() instanceof BlockItem blockItem) { + return blockItem.getBlock().defaultBlockState(); + } + + return null; + } + return unsafeState; } @Nullable - private static ItemStack getFacadeStackUnsafe(ItemStack itemStack) { + private static BlockState getFacadeStateUnsafe(ItemStack itemStack) { var tagCompound = itemStack.getTag(); if (tagCompound == null || !tagCompound.contains("Facade", Tag.TAG_COMPOUND)) { return null; } + return BlockState.CODEC.parse(NbtOps.INSTANCE, tagCompound.getCompound("Facade")) + .result().orElse(null); + } + + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + @NotNull + private static ItemStack getFacadeStackUnsafe(ItemStack itemStack) { + var tagCompound = itemStack.getTag(); + if (tagCompound == null || !tagCompound.contains("Facade", Tag.TAG_COMPOUND)) { + return ItemStack.EMPTY; + } ItemStack facadeStack = ItemStack.of(tagCompound.getCompound("Facade")); if (facadeStack.isEmpty() || !isValidFacade(facadeStack)) { - return null; + return ItemStack.EMPTY; } return facadeStack; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java index 593b28b213e..e74f2978267 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/PortableScannerBehavior.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.block.IMachineBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IElectricItem; @@ -213,7 +213,7 @@ public int addScannerInfo(Player player, Level level, BlockPos pos, DisplayMode list.add(Component.translatable("behavior.portable_scanner.machine_front_facing", machine.getFrontFacing().getSerializedName())); list.add(Component.translatable("behavior.portable_scanner.machine_upwards_facing", - machineBlockEntity.self().getBlockState().getValue(IMachineBlock.UPWARDS_FACING_PROPERTY) + machineBlockEntity.self().getBlockState().getValue(GTBlockStateProperties.UPWARDS_FACING) .getSerializedName())); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java index d1ef73b5df4..d04b1099b89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BlockBreakerMachine.java @@ -432,8 +432,8 @@ protected static EditableUI createTemplate(int // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 6d1c9ef0a4c..9511986713c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -25,6 +25,8 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraftforge.energy.IEnergyStorage; import lombok.Getter; @@ -33,6 +35,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; import javax.annotation.ParametersAreNonnullByDefault; @@ -45,12 +48,21 @@ public class ChargerMachine extends TieredEnergyMachine implements IControllable protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ChargerMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); - public enum State { + public enum State implements StringRepresentable { + IDLE, RUNNING, - FINISHED + FINISHED; + + @Override + public String getSerializedName() { + return name().toLowerCase(Locale.ROOT); + } } + public static final EnumProperty STATE_PROPERTY = EnumProperty.create("charger_state", + ChargerMachine.State.class); + @Persisted @Getter @Setter @@ -176,6 +188,7 @@ private List getNonFullElectricItem() { private void changeState(State newState) { if (state != newState) { state = newState; + setRenderState(getRenderState().setValue(STATE_PROPERTY, newState)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 9f62034eb6b..50dd09f0ef6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -20,8 +20,11 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.Nullable; + import java.util.Set; import javax.annotation.ParametersAreNonnullByDefault; @@ -33,6 +36,8 @@ public class ConverterMachine extends TieredEnergyMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ConverterMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty FE_TO_EU_PROPERTY = BooleanProperty.create("fe_to_eu"); + public ConverterMachine(IMachineBlockEntity holder, int tier, int amps, Object... args) { super(holder, tier, args, amps); } @@ -107,8 +112,8 @@ public boolean isFacingValid(Direction facing) { } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return this.isFeToEu() ? GuiTextures.TOOL_SWITCH_CONVERTER_NATIVE : GuiTextures.TOOL_SWITCH_CONVERTER_EU; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java index 270ae10eb4f..234bf29d9d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/FisherMachine.java @@ -492,8 +492,8 @@ protected static EditableUI createTemplate(int inven // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 0296184879d..400d6d3198f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -78,6 +78,7 @@ public class ItemCollectorMachine extends TieredEnergyMachine private static final double MOTION_MULTIPLIER = 0.04; private static final int BASE_EU_CONSUMPTION = 6; + @Nullable @Getter @Persisted @DescSynced @@ -220,6 +221,7 @@ public void onMachineRemoved() { public void updateCollectionSubscription() { if (drainEnergy(true) && isWorkingEnabled) { collectionSubs = subscribeServerTick(collectionSubs, this::update); + setActive(true); active = true; } else if (collectionSubs != null) { collectionSubs.unsubscribe(); @@ -228,13 +230,17 @@ public void updateCollectionSubscription() { } } + public void setActive(boolean active) { + this.active = active; + setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, active)); + } + public void update() { if (drainEnergy(false)) { if (aabb == null || rangeDirty) { rangeDirty = false; - BlockPos pos1, pos2; - pos1 = getPos().offset(-range, 0, -range); - pos2 = getPos().offset(range, 2, range); + BlockPos pos1 = getPos().offset(-range, 0, -range); + BlockPos pos2 = getPos().offset(range, 2, range); this.aabb = AABB.of(BoundingBox.fromCorners(pos1, pos2)); } moveItemsInRange(); @@ -355,8 +361,9 @@ protected void autoOutput() { } protected void chargeBattery() { - if (!energyContainer.dischargeOrRechargeEnergyContainers(chargerInventory, 0, false)) + if (!energyContainer.dischargeOrRechargeEnergyContainers(chargerInventory, 0, false)) { updateBatterySubscription(); + } } @Override @@ -498,8 +505,8 @@ protected static EditableUI createTemplate(in // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java index 792f0b5d771..3e3d14f65bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/PumpMachine.java @@ -47,6 +47,7 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import lombok.Setter; +import org.jetbrains.annotations.Nullable; import java.util.ArrayDeque; import java.util.ArrayList; @@ -55,7 +56,6 @@ import java.util.Queue; import java.util.Set; -import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @@ -589,8 +589,8 @@ public ModularUI createUI(Player entityPlayer) { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (player.isShiftKeyDown()) { if (hasFrontFacing() && side != this.getFrontFacing() && isFacingValid(side)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 236581da258..51151d45924 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -17,6 +17,7 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -30,6 +31,9 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(TransformerMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); + + public static final BooleanProperty TRANSFORM_UP_PROPERTY = BooleanProperty.create("transform_up"); + @Persisted @DescSynced @Getter @@ -58,7 +62,6 @@ public ManagedFieldHolder getFieldHolder() { @SuppressWarnings("unused") private void onTransformUpdated(boolean newValue, boolean oldValue) { - scheduleRenderUpdate(); updateEnergyContainer(newValue); } @@ -117,6 +120,7 @@ public void setTransformUp(boolean isTransformUp) { if (this.isTransformUp != isTransformUp && !isRemote()) { this.isTransformUp = isTransformUp; updateEnergyContainer(isTransformUp); + setRenderState(getRenderState().setValue(TRANSFORM_UP_PROPERTY, isTransformUp)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 9b09d62bf1a..18b6b741345 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; +import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -32,6 +33,7 @@ import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import it.unimi.dsi.fastutil.objects.Object2BooleanFunction; @@ -39,6 +41,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -54,6 +57,8 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon // Hard-coded blacklist for blockentities private static final List blockEntityClassNamesBlackList = new ArrayList<>(); + public static final BooleanProperty RANDOM_TICK_PROPERTY = BooleanProperty.create("random_tick_mode"); + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( WorldAcceleratorMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); private static final long blockEntityAmperage = 6; @@ -102,10 +107,12 @@ public void updateSubscription() { if (isWorkingEnabled && drainEnergy(true)) { tickSubs = subscribeServerTick(tickSubs, this::update); active = true; + setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, true)); } else if (tickSubs != null) { tickSubs.unsubscribe(); tickSubs = null; active = false; + setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, false)); } } @@ -210,12 +217,13 @@ public void onUnload() { public void setWorkingEnabled(boolean workingEnabled) { isWorkingEnabled = workingEnabled; + setRenderState(getRenderState().setValue(WORKING_ENABLED_PROPERTY, isWorkingEnabled)); updateSubscription(); } @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SOFT_MALLET)) { return isWorkingEnabled ? GuiTextures.TOOL_PAUSE : GuiTextures.TOOL_START; } @@ -241,6 +249,7 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h BlockHitResult hitResult) { if (!isRemote()) { isRandomTickMode = !isRandomTickMode; + setRenderState(getRenderState().setValue(RANDOM_TICK_PROPERTY, isRandomTickMode)); playerIn.sendSystemMessage(Component.translatable(isRandomTickMode ? "gtceu.machine.world_accelerator.mode_entity" : "gtceu.machine.world_accelerator.mode_tile")); scheduleRenderUpdate(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 6f34110bb49..8d4f54058f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -21,7 +22,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine { +public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine implements IFluidRenderMulti { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( LargeChemicalBathMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @@ -35,24 +36,20 @@ public LargeChemicalBathMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } - @Override - public ManagedFieldHolder getFieldHolder() { - return MANAGED_FIELD_HOLDER; - } - @Override public void onStructureFormed() { super.onStructureFormed(); - saveOffsets(); + IFluidRenderMulti.super.onStructureInvalid(); } @Override public void onStructureInvalid() { super.onStructureInvalid(); - fluidBlockOffsets.clear(); + IFluidRenderMulti.super.onStructureInvalid(); } - protected void saveOffsets() { + @Override + public void saveOffsets() { Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); Direction clockWise; @@ -66,11 +63,12 @@ protected void saveOffsets() { } BlockPos pos = getPos(); - BlockPos center = pos.relative(up); + BlockPos center = pos.relative(up, 3); - for (int i = 0; i < 5; i++) { + for (int i = 0; i < 3; i++) { center = center.relative(back); - fluidBlockOffsets.add(center.subtract(pos)); + if (i % 2 == 0) + fluidBlockOffsets.add(center.subtract(pos)); fluidBlockOffsets.add(center.relative(clockWise).subtract(pos)); fluidBlockOffsets.add(center.relative(counterClockWise).subtract(pos)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index 14256da3673..f9c4ae4359d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.electric.gcym; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -21,7 +22,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeMixerMachine extends WorkableElectricMultiblockMachine { +public class LargeMixerMachine extends WorkableElectricMultiblockMachine implements IFluidRenderMulti { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( LargeMixerMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @@ -43,16 +44,17 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onStructureFormed() { super.onStructureFormed(); - saveOffsets(); + IFluidRenderMulti.super.onStructureInvalid(); } @Override public void onStructureInvalid() { super.onStructureInvalid(); - fluidBlockOffsets.clear(); + IFluidRenderMulti.super.onStructureInvalid(); } - protected void saveOffsets() { + @Override + public void saveOffsets() { Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); Direction clockWise; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java index 08e29908131..f505bc85c35 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/AutoMaintenanceHatchPartMachine.java @@ -1,13 +1,14 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; public class AutoMaintenanceHatchPartMachine extends TieredPartMachine implements IMaintenanceMachine { - public AutoMaintenanceHatchPartMachine(IMachineBlockEntity blockEntity) { - super(blockEntity, 3); + public AutoMaintenanceHatchPartMachine(IMachineBlockEntity holder) { + super(holder, GTValues.HV); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java index 5af6892bc56..56a22189527 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/CleaningMaintenanceHatchPartMachine.java @@ -28,8 +28,8 @@ public class CleaningMaintenanceHatchPartMachine extends AutoMaintenanceHatchPar @Getter private final CleanroomType cleanroomType; - public CleaningMaintenanceHatchPartMachine(IMachineBlockEntity metaTileEntityId, CleanroomType cleanroomType) { - super(metaTileEntityId); + public CleaningMaintenanceHatchPartMachine(IMachineBlockEntity holder, CleanroomType cleanroomType) { + super(holder); this.cleanroomType = cleanroomType; DUMMY_CLEANROOM = DummyCleanroom.createForTypes(Collections.singletonList(cleanroomType)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index bd89057d41d..3d416a1b80a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -14,9 +14,11 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -30,6 +32,44 @@ public class DiodePartMachine extends TieredIOPartMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(DiodePartMachine.class, TieredIOPartMachine.MANAGED_FIELD_HOLDER); + // spotless:off + public enum AmpMode implements StringRepresentable { + MODE_1A("1a", 1), + MODE_2A("2a", 2), + MODE_4A("4a", 4), + MODE_8A("8a", 8), + MODE_16A("16a", 16); + + public static final AmpMode[] VALUES = values(); + + @Getter + private final String serializedName; + @Getter + private final int ampValue; + + AmpMode(String serializedName, int ampValue) { + this.serializedName = serializedName; + this.ampValue = ampValue; + } + + public AmpMode cycle() { + return VALUES[(this.ordinal() + 1) % VALUES.length]; + } + + public static AmpMode getByValue(int amps) { + return switch (amps) { + case 2 -> MODE_2A; + case 4 -> MODE_4A; + case 8 -> MODE_8A; + case 16 -> MODE_16A; + default -> MODE_1A; + }; + } + } + + public static final EnumProperty AMP_MODE_PROPERTY = EnumProperty.create("amp_mode", AmpMode.class); + // spotless:on + public static int MAX_AMPS = 16; @Persisted @@ -83,7 +123,7 @@ protected void reinitializeEnergyContainer() { @Override public int tintColor(int index) { - if (index == 2) { + if (index == 2 || index == 3) { return GTValues.VC[getTier()]; } return super.tintColor(index); @@ -99,10 +139,13 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h BlockHitResult hitResult) { cycleAmpMode(); if (getLevel().isClientSide) { + setRenderState(getRenderState() + .setValue(AMP_MODE_PROPERTY, AmpMode.getByValue(this.amps))); + scheduleRenderUpdate(); - return InteractionResult.CONSUME; + playerIn.sendSystemMessage(Component.translatable("gtceu.machine.diode.message", amps)); + return InteractionResult.SUCCESS; } - playerIn.sendSystemMessage(Component.translatable("gtceu.machine.diode.message", amps)); return InteractionResult.CONSUME; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index 5956e121ca2..d2d70b318bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -20,7 +21,6 @@ import com.lowdragmc.lowdraglib.gui.widget.*; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; @@ -60,6 +60,7 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( MaintenanceHatchPartMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); + private static final float MAX_DURATION_MULTIPLIER = 1.1f; private static final float MIN_DURATION_MULTIPLIER = 0.9f; private static final float DURATION_ACTION_AMOUNT = 0.01f; @@ -69,10 +70,8 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine @Persisted private final NotifiableItemStackHandler itemStackHandler; @Getter - @Setter @Persisted @DescSynced - @RequireRerender private boolean isTaped; @Getter @Setter @@ -88,8 +87,8 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine @Nullable protected TickableSubscription maintenanceSubs; - public MaintenanceHatchPartMachine(IMachineBlockEntity metaTileEntityId, boolean isConfigurable) { - super(metaTileEntityId, isConfigurable ? 3 : 1); + public MaintenanceHatchPartMachine(IMachineBlockEntity holder, boolean isConfigurable) { + super(holder, isConfigurable ? GTValues.HV : GTValues.LV); this.isConfigurable = isConfigurable; this.itemStackHandler = createInventory(); this.itemStackHandler.setFilter(itemStack -> itemStack.is(GTItems.DUCT_TAPE.get())); @@ -298,6 +297,14 @@ public boolean isFullAuto() { return false; } + @Override + public void setTaped(boolean isTaped) { + if (this.isTaped != isTaped) { + this.isTaped = isTaped; + setRenderState(getRenderState().setValue(MAINTENANCE_TAPED_PROPERTY, isTaped)); + } + } + @Override public float getTimeMultiplier() { var result = 1f; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index d7491f29dbf..aa69804a2c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.BlockableSlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -21,7 +22,6 @@ import com.lowdragmc.lowdraglib.syncdata.ISubscription; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; -import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; @@ -60,7 +60,6 @@ public class RotorHolderPartMachine extends TieredPartMachine @Setter @Persisted @DescSynced - @RequireRerender @NotNull public Material rotorMaterial = GTMaterials.NULL; // 0 - no rotor @Nullable @@ -89,8 +88,10 @@ public void onMachineRemoved() { @Override public int tintColor(int index) { - if (index == 2) { - return getRotorMaterial().getMaterialARGB(); + if (index >= 2) { + return getRotorMaterial().getLayerARGB(index - 2); + } else if (index <= -103) { + return getRotorMaterial().getLayerARGB(index + 2); } return super.tintColor(index); } @@ -100,8 +101,8 @@ public void onLoad() { super.onLoad(); if (!isRemote()) { updateRotorSubscription(); - rotorInvSubs = this.inventory.addChangedListener(this::onRotorInventoryChanged); } + rotorInvSubs = this.inventory.addChangedListener(this::onRotorInventoryChanged); } @Override @@ -136,8 +137,17 @@ private void onRotorInventoryChanged() { var rotorBehaviour = TurbineRotorBehaviour.getBehaviour(stack); if (rotorBehaviour != null) { this.rotorMaterial = rotorBehaviour.getPartMaterial(stack); + + boolean emissive = this.rotorMaterial.hasProperty(PropertyKey.ORE) && + this.rotorMaterial.getProperty(PropertyKey.ORE).isEmissive(); + setRenderState(getRenderState() + .setValue(HAS_ROTOR_PROPERTY, true) + .setValue(EMISSIVE_ROTOR_PROPERTY, emissive)); } else { this.rotorMaterial = GTMaterials.NULL; + setRenderState(getRenderState() + .setValue(HAS_ROTOR_PROPERTY, false) + .setValue(EMISSIVE_ROTOR_PROPERTY, false)); } } @@ -170,6 +180,7 @@ private void updateRotorSpeed() { public void setRotorSpeed(int rotorSpeed) { if ((this.rotorSpeed > 0 && rotorSpeed <= 0) || (this.rotorSpeed <= 0 && rotorSpeed > 0)) { scheduleRenderUpdate(); + setRenderState(getRenderState().setValue(ROTOR_SPINNING_PROPERTY, rotorSpeed > 0)); } this.rotorSpeed = rotorSpeed; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 845709c1ba3..76f62ee643c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -1,9 +1,12 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; +import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -82,7 +85,30 @@ public void setDamaged(boolean damaged) { if (this.damaged != damaged) { this.damaged = damaged; markDirty(); + + MachineRenderState state = getRenderState(); + if (state.hasProperty(HPCA_PART_DAMAGED_PROPERTY)) { + setRenderState(state.setValue(HPCA_PART_DAMAGED_PROPERTY, damaged)); + } + } + } + + @Override + public boolean beforeWorking(IWorkableMultiController controller) { + MachineRenderState state = getRenderState(); + if (state.hasProperty(IWorkable.ACTIVE_PROPERTY)) { + setRenderState(state.setValue(IWorkable.ACTIVE_PROPERTY, true)); + } + return super.beforeWorking(controller); + } + + @Override + public boolean afterWorking(IWorkableMultiController controller) { + MachineRenderState state = getRenderState(); + if (state.hasProperty(IWorkable.ACTIVE_PROPERTY)) { + setRenderState(state.setValue(IWorkable.ACTIVE_PROPERTY, false)); } + return super.afterWorking(controller); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 8e5fd17cc21..d0f7013ad76 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -17,6 +18,9 @@ import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; import com.lowdragmc.lowdraglib.gui.widget.ProgressWidget; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; @@ -30,18 +34,36 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import lombok.Getter; + +import java.util.HashSet; +import java.util.Set; + import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine implements IUIMachine { +public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine implements IUIMachine, IFluidRenderMulti { + + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + PrimitiveBlastFurnaceMachine.class, PrimitiveWorkableMachine.MANAGED_FIELD_HOLDER); private TickableSubscription hurtSubscription; + @Getter + @DescSynced + @RequireRerender + private final Set fluidBlockOffsets = new HashSet<>(); + public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + @Override protected NotifiableItemStackHandler createImportItemHandler(Object... args) { return new NotifiableItemStackHandler(this, getRecipeType().getMaxInputs(ItemRecipeCapability.CAP), IO.IN, @@ -63,15 +85,22 @@ public void onUnload() { @Override public void onStructureFormed() { super.onStructureFormed(); + IFluidRenderMulti.super.onStructureFormed(); this.hurtSubscription = subscribeServerTick(this::hurtEntities); } @Override public void onStructureInvalid() { super.onStructureInvalid(); + IFluidRenderMulti.super.onStructureInvalid(); unsubscribe(hurtSubscription); } + @Override + public void saveOffsets() { + fluidBlockOffsets.add(getPos().relative(getFrontFacing().getOpposite())); + } + @Override @OnlyIn(Dist.CLIENT) public void clientTick() { @@ -130,8 +159,8 @@ public ModularUI createUI(Player entityPlayer) { .widget(new SlotWidget(exportItems.storage, 2, 140, 38, true, false) .setBackgroundTexture( new GuiTextureGroup(GuiTextures.PRIMITIVE_SLOT, GuiTextures.PRIMITIVE_DUST_OVERLAY))) - .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), GuiTextures.PRIMITIVE_SLOT, 7, 84, - true)); + .widget(UITemplate.bindPlayerInventory(entityPlayer.getInventory(), + GuiTextures.PRIMITIVE_SLOT, 7, 84, true)); } @Override @@ -155,8 +184,8 @@ public void animateTick(RandomSource random) { x += horizontalOffset; } if (ConfigHolder.INSTANCE.machines.machineSounds && GTValues.RNG.nextDouble() < 0.1) { - getLevel().playLocalSound(x, y, z, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, - false); + getLevel().playLocalSound(x, y, z, SoundEvents.FURNACE_FIRE_CRACKLE, + SoundSource.BLOCKS, 1.0F, 1.0F, false); } getLevel().addParticle(ParticleTypes.LARGE_SMOKE, x, y, z, 0, 0, 0); getLevel().addParticle(ParticleTypes.FLAME, x, y, z, 0, 0, 0); @@ -165,7 +194,6 @@ public void animateTick(RandomSource random) { private void hurtEntities() { BlockPos middlePos = self().getPos().offset(getFrontFacing().getOpposite().getNormal()); - getLevel().getEntities(null, - new AABB(middlePos)).forEach(e -> e.hurt(e.damageSources().lava(), 3.0f)); + getLevel().getEntities(null, new AABB(middlePos)).forEach(e -> e.hurt(e.damageSources().lava(), 3.0f)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java deleted file mode 100644 index 3fd7c2f9e79..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/BoilerType.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.gregtechceu.gtceu.common.machine.multiblock.steam; - -import net.minecraft.world.level.block.state.BlockState; - -import static com.gregtechceu.gtceu.common.data.GTBlocks.*; - -public enum BoilerType { - - BRONZE(800, 1200, - CASING_BRONZE_BRICKS.getDefaultState(), - FIREBOX_BRONZE.getDefaultState(), - CASING_BRONZE_PIPE.getDefaultState()), - - STEEL(1800, 1800, - CASING_STEEL_SOLID.getDefaultState(), - FIREBOX_STEEL.getDefaultState(), - CASING_STEEL_PIPE.getDefaultState()), - - TITANIUM(3200, 2400, - CASING_TITANIUM_STABLE.getDefaultState(), - FIREBOX_TITANIUM.getDefaultState(), - CASING_TITANIUM_PIPE.getDefaultState()), - - TUNGSTENSTEEL(6400, 3000, - CASING_TUNGSTENSTEEL_ROBUST.getDefaultState(), - FIREBOX_TUNGSTENSTEEL.getDefaultState(), - CASING_TUNGSTENSTEEL_PIPE.getDefaultState()); - - // Workable Data - private final int steamPerTick; - private final int ticksToBoiling; - - // Structure Data - public final BlockState casingState; - public final BlockState fireboxState; - public final BlockState pipeState; - - BoilerType(int steamPerTick, int ticksToBoiling, - BlockState casingState, - BlockState fireboxState, - BlockState pipeState) { - this.steamPerTick = steamPerTick; - this.ticksToBoiling = ticksToBoiling; - - this.casingState = casingState; - this.fireboxState = fireboxState; - this.pipeState = pipeState; - } - - public int steamPerTick() { - return steamPerTick; - } - - public int getTicksToBoiling() { - return ticksToBoiling; - } - - public int runtimeBoost(int ticks) { - return switch (this) { - case BRONZE -> ticks * 2; - case STEEL -> ticks * 150 / 100; - case TITANIUM -> ticks * 120 / 100; - case TUNGSTENSTEEL -> ticks; - }; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java index 4f968b21a8e..6cfd39650b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/steam/SteamSolarBoiler.java @@ -14,6 +14,8 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; +import org.jetbrains.annotations.NotNull; + public class SteamSolarBoiler extends SteamBoilerMachine { public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { @@ -21,7 +23,7 @@ public SteamSolarBoiler(IMachineBlockEntity holder, boolean isHighPressure, Obje } @Override - public Direction getFrontFacing() { + public @NotNull Direction getFrontFacing() { return Direction.UP; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java index 3bd451f8e15..19398d8d360 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/BufferMachine.java @@ -244,8 +244,8 @@ public Widget createUIWidget() { // ******* Rendering ********// /////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SCREWDRIVER)) { if (side == getOutputFacingItems() || side == getOutputFacingFluids()) { return GuiTextures.TOOL_ALLOW_INPUT; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index 2a196ff6dfd..dce0c7067ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -28,6 +28,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.phys.BlockHitResult; import lombok.Getter; @@ -43,6 +44,8 @@ public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLif public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CrateMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); + public static final BooleanProperty TAPED_PROPERTY = BooleanProperty.create("taped"); + @Override public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; @@ -103,7 +106,8 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play stack.shrink(1); } isTaped = true; - return InteractionResult.SUCCESS; + setRenderState(getRenderState().setValue(TAPED_PROPERTY, isTaped)); + return InteractionResult.sidedSuccess(world.isClientSide); } } return IInteractedMachine.super.onUse(state, world, pos, player, hand, hit); @@ -121,6 +125,7 @@ public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { tag.remove("taped"); this.isTaped = false; + setRenderState(getRenderState().setValue(TAPED_PROPERTY, isTaped)); } stack.setTag(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java index ca3df71a46c..538afb0d9ba 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java @@ -195,7 +195,6 @@ protected void checkAutoOutput() { } } - @SuppressWarnings("resource") @Override public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { @@ -230,8 +229,8 @@ protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.SCREWDRIVER)) { if (side == getOutputFacingFluids()) { return isAutoOutputFluids() ? GuiTextures.TOOL_DISABLE_AUTO_OUTPUT : GuiTextures.TOOL_AUTO_OUTPUT; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java index 1b1c49116ba..266c2e3c0e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumChestMachine.java @@ -425,8 +425,8 @@ public Widget createUIWidget() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 2ec78a4b2b7..0b389279b38 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -365,8 +365,8 @@ public Widget createUIWidget() { // ******* Rendering ********// ////////////////////////////////////// @Override - public ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, - Direction side) { + public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set toolTypes, + Direction side) { if (toolTypes.contains(GTToolType.WRENCH)) { if (!player.isShiftKeyDown()) { if (!hasFrontFacing() || side != getFrontFacing()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java index 1ba7ee98235..ce43089f7ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java @@ -58,6 +58,7 @@ public ManagedFieldHolder getFieldHolder() { public void setFeToEu(boolean feToEu) { this.feToEu = feToEu; + setRenderState(getRenderState().setValue(ConverterMachine.FE_TO_EU_PROPERTY, feToEu)); machine.notifyBlockUpdate(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java index 8b2af39e036..b149d5df98c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java +++ b/src/main/java/com/gregtechceu/gtceu/common/pipelike/cable/Insulation.java @@ -85,9 +85,9 @@ public ResourceLocation type() { public PipeModel createPipeModel(Material material) { Supplier wireSideTexturePath = () -> MaterialIconType.wire - .getBlockTexturePath(material.getMaterialIconSet(), true).withSuffix("_side"); + .getBlockTexturePath(material.getMaterialIconSet(), "side", true); Supplier wireEndTexturePath = () -> MaterialIconType.wire - .getBlockTexturePath(material.getMaterialIconSet(), true).withSuffix("_end"); + .getBlockTexturePath(material.getMaterialIconSet(), "end", true); Supplier<@Nullable ResourceLocation> wireSideOverlayTexturePath = () -> MaterialIconType.wire .getBlockTexturePath(material.getMaterialIconSet(), "side_overlay", true); Supplier<@Nullable ResourceLocation> wireEndOverlayTexturePath = () -> MaterialIconType.wire diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java index 61ebfacba4e..fe5531463cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java @@ -1,17 +1,16 @@ package com.gregtechceu.gtceu.core.mixins; -import com.gregtechceu.gtceu.client.model.SpriteOverrider; - -import com.lowdragmc.lowdraglib.client.model.ModelFactory; +import com.gregtechceu.gtceu.client.model.SpriteCapturer; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.*; import net.minecraft.resources.ResourceLocation; -import com.mojang.datafixers.util.Either; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -23,38 +22,40 @@ public class BlockModelMixin { @Shadow public String name; - ThreadLocal spriteOverriderThreadLocal = new ThreadLocal<>(); + @Unique + private final ThreadLocal gtceu$spriteCapturer = new ThreadLocal<>(); - // We want to remap our materials @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", at = @At(value = "HEAD")) - private void beforeBake(ModelBaker baker, BlockModel model, Function spriteGetter, - ModelState state, ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteOverrider spriteOverrider) { - spriteOverriderThreadLocal.set(spriteOverrider); + private void gtceu$beforeBake(ModelBaker baker, BlockModel model, + Function spriteGetter, ModelState state, + ResourceLocation location, boolean guiLight3d, + CallbackInfoReturnable cir) { + if (spriteGetter instanceof SpriteCapturer spriteCapturer) { + gtceu$spriteCapturer.set(spriteCapturer); } } @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", at = @At(value = "RETURN")) - private void afterBake(ModelBaker baker, BlockModel model, Function spriteGetter, - ModelState state, ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteOverrider) { - spriteOverriderThreadLocal.remove(); + private void gtceu$afterBake(ModelBaker baker, BlockModel model, + Function spriteGetter, ModelState state, + ResourceLocation location, boolean guiLight3d, + CallbackInfoReturnable cir) { + if (spriteGetter instanceof SpriteCapturer) { + gtceu$spriteCapturer.remove(); } } - // We want to remap our materials - @Inject(method = "findTextureEntry", at = @At(value = "HEAD"), cancellable = true) - private void remapTextureEntry(String name, CallbackInfoReturnable> cir) { - SpriteOverrider overrider = spriteOverriderThreadLocal.get(); - if (overrider != null && overrider.override().containsKey(name)) { - var mat = overrider.override().get(name); - if (mat != null) { - cir.setReturnValue(ModelFactory.parseBlockTextureLocationOrReference(mat.toString())); - } + @Inject(method = "getMaterial", at = @At(value = "RETURN")) + private void gtceu$captureMaterialNames(String name, CallbackInfoReturnable cir) { + Material material = cir.getReturnValue(); + if (material.texture().equals(MissingTextureAtlasSprite.getLocation())) { + return; + } + SpriteCapturer capturer = gtceu$spriteCapturer.get(); + if (capturer != null) { + capturer.captureMaterialName(material, name); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java index 01feb5aad89..cb2353cc615 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java @@ -1,22 +1,13 @@ package com.gregtechceu.gtceu.core.mixins; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.MultiBufferSource; -import com.mojang.blaze3d.vertex.PoseStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(GuiGraphics.class) public interface GuiGraphicsAccessor { - @Invoker("") - static GuiGraphics create(Minecraft client, PoseStack matrices, - MultiBufferSource.BufferSource vertexConsumerProvider) { - return null; - } - @Invoker void callFlushIfUnmanaged(); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java index 3f955ad6765..07729f60ba4 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.client.renderer.item.ArmorItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; -import com.gregtechceu.gtceu.common.data.GTModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.server.packs.resources.PreparableReloadListener; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java new file mode 100644 index 00000000000..14c204b3b8d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.core.mixins; + +import com.google.common.collect.BiMap; +import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.providers.RegistrateDataProvider; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = RegistrateDataProvider.class, remap = false) +public interface RegistrateDataProviderAccessor { + + @Accessor("TYPES") + static BiMap> gtceu$getTypes() { + throw new AssertionError(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java new file mode 100644 index 00000000000..b1ee89299c3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.core.mixins; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.util.VariantRotationHelpers; + +import net.minecraft.client.renderer.block.model.Variant; +import net.minecraft.util.GsonHelper; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(Variant.Deserializer.class) +public class VariantDeserializerMixin { + + @ModifyReturnValue(method = "deserialize(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/renderer/block/model/Variant;", + at = @At("RETURN")) + public Variant gtceu$addZRotation(Variant variant, JsonElement json) { + JsonObject jsonObject = json.getAsJsonObject(); + if (jsonObject.has(GTBlockstateProvider.Z_ROT_PROPERTY_NAME)) { + var xRot = GsonHelper.getAsInt(jsonObject, "x", 0); + var yRot = GsonHelper.getAsInt(jsonObject, "y", 0); + var zRot = GsonHelper.getAsInt(jsonObject, GTBlockstateProvider.Z_ROT_PROPERTY_NAME, 0); + return VariantRotationHelpers.rotateVariant(variant, xRot, yRot, zRot); + } + return variant; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java new file mode 100644 index 00000000000..cfac5126cd6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelBuilderAccessor.java @@ -0,0 +1,20 @@ +package com.gregtechceu.gtceu.core.mixins.forge; + +import net.minecraftforge.client.model.generators.ConfiguredModel; + +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.List; +import java.util.function.Function; + +@Mixin(value = ConfiguredModel.Builder.class, remap = false) +public interface ConfiguredModelBuilderAccessor { + + @Invoker("") + static ConfiguredModel.Builder builder(@Nullable Function callback, + List otherModels) { + throw new AssertionError(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java new file mode 100644 index 00000000000..73b9445fdaf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ConfiguredModelListAccessor.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.core.mixins.forge; + +import net.minecraftforge.client.model.generators.BlockStateProvider; +import net.minecraftforge.client.model.generators.ConfiguredModel; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(value = BlockStateProvider.ConfiguredModelList.class, remap = false) +public interface ConfiguredModelListAccessor { + + @Accessor("models") + List gtceu$getModels(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java new file mode 100644 index 00000000000..b7c856a4ce4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.core.mixins.forge; + +import net.minecraftforge.client.model.generators.ModelBuilder; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(value = ModelBuilder.class, remap = false) +public interface ModelBuilderAccessor { + + @Accessor("textures") + Map gtceu$getTextures(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java new file mode 100644 index 00000000000..774f0c5af31 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.core.mixins.ldlib; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.client.resources.model.BakedModel; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(value = CustomBakedModel.class, remap = false) +public interface CustomBakedModelAccessor { + + @Accessor("parent") + BakedModel gtceu$getParent(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java index 59136571878..605385aa27a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java @@ -1,14 +1,29 @@ package com.gregtechceu.gtceu.data; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.core.mixins.RegistrateDataProviderAccessor; import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.data.model.BlockstateModelLoader; import com.gregtechceu.gtceu.data.tags.*; import com.tterrag.registrate.providers.ProviderType; public class GregTechDatagen { - public static void init() { + // we only register this so the class gets loaded. the key gets overwritten in #initPre. + private static final ProviderType BLOCKSTATE_PROVIDER = ProviderType.register("ex_blockstate", + GTBlockstateProvider::new); + + public static void initPre() { + // replace some default providers with ours + RegistrateDataProviderAccessor.gtceu$getTypes().forcePut("blockstate", BLOCKSTATE_PROVIDER); + + GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCKSTATE, + p -> BlockstateModelLoader.init((GTBlockstateProvider) p)); + } + + public static void initPost() { GTRegistration.REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, BlockTagLoader::init); GTRegistration.REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, ItemTagLoader::init); GTRegistration.REGISTRATE.addDataGenerator(ProviderType.FLUID_TAGS, FluidTagLoader::init); diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java new file mode 100644 index 00000000000..d17d3767801 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.data.model; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; + +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.model.generators.BlockModelProvider; + +import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; + +public class BlockstateModelLoader { + + public static void init(GTBlockstateProvider provider) { + BlockModelProvider models = provider.models(); + + // tiered hulls + for (int tier : GTValues.ALL_TIERS) { + ResourceLocation modelName = TIERED_HULL_MODELS.get(tier); + + var model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + } + // steam hulls + { + ResourceLocation modelName = LP_STEAM_HULL_MODEL; + var model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + + modelName = HP_STEAM_HULL_MODEL; + model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); + GTMachineModels.casingTextures(model, modelName); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java new file mode 100644 index 00000000000..66e819a53f7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java @@ -0,0 +1,763 @@ +package com.gregtechceu.gtceu.data.model.builder; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; +import com.gregtechceu.gtceu.client.model.machine.MachineModelLoader; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelBuilderAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelListAccessor; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraftforge.client.model.generators.*; +import net.minecraftforge.client.model.generators.BlockStateProvider.ConfiguredModelList; +import net.minecraftforge.client.model.generators.ConfiguredModel; +import net.minecraftforge.common.data.ExistingFileHelper; + +import com.google.common.base.Preconditions; +import com.google.common.collect.*; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import com.mojang.serialization.JsonOps; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; + +public class MachineModelBuilder> extends CustomLoaderBuilder { + + // spotless:off + public static > BiFunction> begin(MachineDefinition owner) { + return (parent, existingFileHelper) -> new MachineModelBuilder<>(parent, existingFileHelper, owner); + } + // spotless:on + + @Getter + private final MachineDefinition owner; + private final List> dynamicRenders = new ArrayList<>(); + @Getter + private final Map, ConfiguredModelList> models = new LinkedHashMap<>(); + @Getter + private final List parts = new ArrayList<>(); + private final Set coveredStates = new HashSet<>(); + private final List replaceableTextures = new ArrayList<>(); + private final SortedMap textureOverrides = new TreeMap<>(); + + protected MachineModelBuilder(T parent, ExistingFileHelper existingFileHelper, MachineDefinition owner) { + super(MachineModelLoader.ID, parent, existingFileHelper); + this.owner = owner; + } + + @Override + public JsonObject toJson(JsonObject json) { + json = super.toJson(json); + + json.addProperty("machine", owner.getId().toString()); + StateDefinition stateDefinition = owner.getStateDefinition(); + if (getModels().isEmpty() && getParts().isEmpty()) { + throw new IllegalStateException("A machine model must have either a variant or multipart model!"); + } + + if (!getModels().isEmpty()) { + List missingStates = Lists.newArrayList(stateDefinition.getPossibleStates()); + missingStates.removeAll(coveredStates); + Preconditions.checkState(missingStates.isEmpty(), + "Render state for machine %s does not cover all states. Missing: %s", owner, missingStates); + final JsonObject variants = new JsonObject(); + getModels().entrySet().stream() + .sorted(Map.Entry.comparingByKey(PartialState.comparingByProperties())) + .forEach(entry -> { + variants.add(entry.getKey().toString(), configuredModelListToJSON(entry.getValue())); + }); + + json.add("variants", variants); + } + if (!getParts().isEmpty()) { + JsonArray parts = new JsonArray(); + for (PartBuilder part : getParts()) { + parts.add(part.toJson()); + } + json.add("multipart", parts); + } + + if (!this.dynamicRenders.isEmpty()) { + JsonArray dynamicRenders = new JsonArray(); + for (DynamicRender render : this.dynamicRenders) { + JsonElement serialized = DynamicRender.CODEC.encodeStart(JsonOps.INSTANCE, render) + .getOrThrow(false, GTCEu.LOGGER::error); + dynamicRenders.add(serialized); + } + json.add("dynamic_renders", dynamicRenders); + } + + if (!this.replaceableTextures.isEmpty()) { + JsonArray replaceableTextures = new JsonArray(); + for (String material : this.replaceableTextures) { + replaceableTextures.add(material); + } + json.add("replaceable_textures", replaceableTextures); + } + + if (!this.textureOverrides.isEmpty()) { + JsonObject overrides = new JsonObject(); + for (var entry : this.textureOverrides.entrySet()) { + overrides.addProperty(entry.getKey(), entry.getValue().toString()); + } + json.add("texture_overrides", overrides); + } + + return json; + } + + public static JsonElement modelToJson(ModelFile model) { + // serialize nested models as objects instead of `"model": "dummy:dummy"` + if (model instanceof ModelBuilder builder) { + var currentProvider = GTBlockstateProvider.getCurrentProvider(); + // check if it's a nested model, and if not, only save the model name + if (currentProvider != null && + currentProvider.models().generatedModels.containsKey(builder.getLocation())) { + return new JsonPrimitive(builder.getLocation().toString()); + } else { + return builder.toJson(); + } + } else { + return new JsonPrimitive(model.getLocation().toString()); + } + } + + public static JsonElement configuredModelListToJSON(ConfiguredModelList list) { + List models = ((ConfiguredModelListAccessor) list).gtceu$getModels(); + + if (models.size() == 1) { + return configuredModelToJSON(models.get(0), false); + } else { + JsonArray ret = new JsonArray(); + for (ConfiguredModel m : models) { + ret.add(configuredModelToJSON(m, true)); + } + return ret; + } + } + + public static JsonObject configuredModelToJSON(ConfiguredModel model, boolean includeWeight) { + JsonObject modelJson = new JsonObject(); + modelJson.add("model", modelToJson(model.model)); + + if (model.rotationX != 0) modelJson.addProperty("x", model.rotationX); + if (model.rotationY != 0) modelJson.addProperty("y", model.rotationY); + if (model.uvLock) modelJson.addProperty("uvlock", true); + if (includeWeight && model.weight != ConfiguredModel.DEFAULT_WEIGHT) { + modelJson.addProperty("weight", model.weight); + } + return modelJson; + } + + /** + * Add a {@link DynamicRender dynamic render} to this model. + * + * @param render The {@link DynamicRender dynamic render} to add + */ + public MachineModelBuilder addDynamicRenderer(Supplier>> render) { + this.dynamicRenders.add(render.get().get()); + return this; + } + + /** + * Marks the provided texture names as replaceable by multiblocks' casing textures. + * + * @param textureNames The texture names + */ + public MachineModelBuilder addReplaceableTextures(String... textureNames) { + this.replaceableTextures.addAll(Arrays.asList(textureNames)); + return this; + } + + /** + * Adds a texture of this model as one that will replace multiblock parts in formed multiblocks. + * + * @param texture The name of the texture in this model + * @param material The texture to replace + */ + public MachineModelBuilder addTextureOverride(String material, ResourceLocation texture) { + this.textureOverrides.put(material, texture); + return this; + } + + /** + * Assign some models to a given {@link PartialState partial state}. + * + * @param state The {@link PartialState partial state} for which to set the models + * @param models A set of models to assign to this state + * @return this builder + * @throws NullPointerException if {@code state} is {@code null} + * @throws IllegalArgumentException if {@code models} is empty + * @throws IllegalArgumentException if {@code state}'s owning block differs from the builder's + */ + public MachineModelBuilder replaceModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkNotNull(state, "state must not be null"); + Preconditions.checkArgument(models.length > 0, "Cannot set models to empty array"); + Preconditions.checkArgument(state.getOwner() == owner, + "Cannot set models for a different block. Found: %s, Current: %s", state.getOwner(), owner); + this.models.put(state, new ConfiguredModelList(models)); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + if (state.test(fullState)) { + coveredStates.add(fullState); + } + } + return this; + } + + /** + * Assign a models to a given {@link PartialState partial state}. + * + * @param state The {@link PartialState partial state} for which to add the models + * @param models A set of models to add to this state + * @return this builder + * @throws IllegalArgumentException if {@code state} partially matches another + * state which has already been configured + * @see #replaceModels(PartialState, ConfiguredModel...) + */ + public MachineModelBuilder addModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkArgument(disjointToAll(state), + "Cannot set models for a state for which a partial match has already been configured"); + replaceModels(state, models); + return this; + } + + /** + * Assign a models to a given {@link PartialState partial state}, + * throwing an exception if the state has already been configured. Otherwise, + * simply calls {@link #addModels(PartialState, ConfiguredModel...)}. + * + * @param state The {@link PartialState partial state} for which to set the models + * @param models A set of models to assign to this state + * @return this builder + * @throws IllegalArgumentException if {@code state} has already been configured + * @see #addModels(PartialState, ConfiguredModel...) + */ + public MachineModelBuilder setModels(PartialState state, ConfiguredModel... models) { + Preconditions.checkArgument(!this.models.containsKey(state), + "Cannot set models for a state that has already been configured: %s", state); + addModels(state, models); + return this; + } + + private boolean disjointToAll(PartialState newState) { + return coveredStates.stream().noneMatch(newState); + } + + public PartialState partialState() { + return new PartialState<>(owner, this); + } + + /** + * Creates a builder for models to assign to a {@link PartBuilder}, which when + * completed via {@link ConfiguredModel.Builder#addModel()} will assign the + * resultant set of models to the part and return it for further processing. + * + * @return the model builder + * @see ConfiguredModel.Builder + */ + public ConfiguredModel.Builder part() { + return ConfiguredModelBuilderAccessor.builder(models -> { + PartBuilder part = new PartBuilder(new ConfiguredModelList(models)); + this.parts.add(part); + return part; + }, ImmutableList.of()); + } + + /** + * Creates a {@link PartBuilder} with the passed model and returns it for further processing. + * + * @param model the model to use + * @return the model builder + * @see MachineModelBuilder#part(ResourceLocation) + */ + public PartBuilder part(ModelFile model) { + PartBuilder part = new PartBuilder(new ConfiguredModelList(new ConfiguredModel(model))); + this.parts.add(part); + return part; + } + + /** + * Creates a {@link PartBuilder} with an existing model and returns it for further processing. + * + * @param model an existing model's name + * @return the model builder + * @see MachineModelBuilder#part(ModelFile) + */ + public PartBuilder part(ResourceLocation model) { + return part(new ModelFile.ExistingModelFile(model, existingFileHelper)); + } + + public MachineModelBuilder forAllStatesModels(Function mapper) { + return forAllStates(mapper.andThen(m -> ConfiguredModel.builder().modelFile(m).build())); + } + + public MachineModelBuilder forAllStates(Function mapper) { + return forAllStatesExcept(mapper); + } + + public MachineModelBuilder forAllStatesExcept(Function mapper, + Property... ignored) { + Set> seen = new HashSet<>(); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + Map, Comparable> propertyValues = Maps.newLinkedHashMap(fullState.getValues()); + for (Property p : ignored) { + propertyValues.remove(p); + } + PartialState partialState = new PartialState<>(owner, propertyValues, this); + if (seen.add(partialState)) { + setModels(partialState, mapper.apply(fullState)); + } + } + return this; + } + + // spotless:off + public MachineModelBuilder replaceForAllStates(BiFunction mapper) { + return replaceForAllStatesExcept(mapper); + } + + public MachineModelBuilder replaceForAllStatesExcept(BiFunction mapper, + Property... ignored) { + Set> seen = new HashSet<>(); + for (MachineRenderState fullState : owner.getStateDefinition().getPossibleStates()) { + Map, Comparable> propertyValues = Maps.newLinkedHashMap(fullState.getValues()); + for (Property p : ignored) { + propertyValues.remove(p); + } + PartialState partialState = new PartialState<>(owner, propertyValues, this); + if (seen.add(partialState)) { + ConfiguredModelListAccessor old = (ConfiguredModelListAccessor) getModels().get(partialState); + if (old == null) continue; + ConfiguredModel[] oldModels = old.gtceu$getModels().toArray(ConfiguredModel[]::new); + + replaceModels(partialState, mapper.apply(fullState, oldModels)); + } + } + return this; + } + // spotless:on + + public static class PartialState> implements Predicate { + + @Getter + private final MachineDefinition owner; + @Getter + private final SortedMap, Comparable> setStates; + @Nullable + private final MachineModelBuilder outerBuilder; + + private PartialState(MachineDefinition owner, @Nullable MachineModelBuilder outerBuilder) { + this(owner, ImmutableMap.of(), outerBuilder); + } + + private PartialState(MachineDefinition owner, Map, Comparable> setStates, + @Nullable MachineModelBuilder outerBuilder) { + this.owner = owner; + this.outerBuilder = outerBuilder; + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + Property prop = entry.getKey(); + Comparable value = entry.getValue(); + Preconditions.checkArgument(owner.getStateDefinition().getProperties().contains(prop), + "Property %s not found on machine %s", entry, this.owner); + Preconditions.checkArgument(prop.getPossibleValues().contains(value), + "%s is not a valid value for %s", value, prop); + } + this.setStates = Maps.newTreeMap(Comparator.comparing(Property::getName)); + this.setStates.putAll(setStates); + } + + public > PartialState with(Property prop, T value) { + Preconditions.checkArgument(!setStates.containsKey(prop), "Property %s has already been set", prop); + Map, Comparable> newState = new HashMap<>(setStates); + newState.put(prop, value); + return new PartialState<>(owner, newState, outerBuilder); + } + + private void checkValidOwner() { + Preconditions.checkNotNull(outerBuilder, + "Partial MachineRenderState must have a valid owner to perform this action"); + } + + /** + * Add models to the current state's variant. For use when it's more convenient + * to add multiple sets of models, as a replacement for + * {@link #setModels(ConfiguredModel...)}. + * + * @param models The models to add. + * @return {@code this} + * @throws NullPointerException If the parent builder is {@code null} + * @see #setModels(ConfiguredModel...) + */ + public PartialState addModels(ConfiguredModel... models) { + checkValidOwner(); + outerBuilder.addModels(this, models); + return this; + } + + /** + * Set this variant's models and returns the parent builder. + * + * @param models The models to set + * @return The parent builder instance + * @throws NullPointerException If the parent builder is {@code null} + */ + public MachineModelBuilder setModels(ConfiguredModel... models) { + checkValidOwner(); + return outerBuilder.setModels(this, models); + } + + /** + * Set this variant's model and return the parent builder. + * + * @param model The model to set + * @return The parent builder instance + * @throws NullPointerException If the parent builder is {@code null} + * @see #setModels(ConfiguredModel...) + */ + public MachineModelBuilder setModel(ModelFile model) { + return setModels(ConfiguredModel.builder().modelFile(model).build()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + PartialState that = (PartialState) o; + return owner.equals(that.owner) && + setStates.equals(that.setStates); + } + + @Override + public int hashCode() { + return Objects.hash(owner, setStates); + } + + @Override + public boolean test(MachineRenderState state) { + if (state.getDefinition() != getOwner()) { + return false; + } + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + if (state.getValue(entry.getKey()) != entry.getValue()) { + return false; + } + } + return true; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public String toString() { + StringBuilder ret = new StringBuilder(); + for (Map.Entry, Comparable> entry : setStates.entrySet()) { + if (!ret.isEmpty()) { + ret.append(','); + } + ret.append(entry.getKey().getName()) + .append('=') + .append(((Property) entry.getKey()).getName(entry.getValue())); + } + return ret.toString(); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static Comparator> comparingByProperties() { + // Sort variants inversely by property values, to approximate vanilla style + return (s1, s2) -> { + SortedSet> propUniverse = new TreeSet<>(s1.getSetStates().comparator().reversed()); + propUniverse.addAll(s1.getSetStates().keySet()); + propUniverse.addAll(s2.getSetStates().keySet()); + + int total = 0; + for (Property prop : propUniverse) { + Comparable val1 = s1.getSetStates().get(prop); + Comparable val2 = s2.getSetStates().get(prop); + if (val1 == val2) { + continue; + } + if (val1 == null) { + total -= 1; + } else if (val2 == null) { + total += 1; + } else { + total += val1.compareTo(val2); + } + } + return total; + }; + } + } + + public class PartBuilder { + + public ConfiguredModelList models; + public boolean useOr; + public final Multimap, Comparable> conditions = MultimapBuilder.linkedHashKeys() + .arrayListValues().build(); + public final List nestedConditionGroups = new ArrayList<>(); + + private PartBuilder(ConfiguredModelList models) { + this.models = models; + } + + /** + * Makes this part get applied if any of the conditions/condition groups are true, + * instead of all of them needing to be true. + */ + public PartBuilder useOr() { + this.useOr = true; + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws NullPointerException if {@code prop} is {@code null} + * @throws NullPointerException if {@code values} is {@code null} + * @throws IllegalArgumentException if {@code values} is empty + * @throws IllegalArgumentException if {@code prop} is not applicable to the current machine's state + */ + @SafeVarargs + private final > PartBuilder replaceWithCondition(Property prop, T... values) { + Preconditions.checkNotNull(prop, "Property must not be null"); + Preconditions.checkNotNull(values, "Value list must not be null"); + Preconditions.checkArgument(values.length > 0, "Value list must not be empty"); + Preconditions.checkArgument(canApplyTo(owner), "Property %s is not valid for machine %s", prop, owner); + this.nestedConditionGroups.clear(); + this.conditions.putAll(prop, Arrays.asList(values)); + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws IllegalArgumentException if {@code prop} has already been configured + * @throws IllegalStateException if {@code !nestedConditionGroups.isEmpty()} + * @see PartBuilder#replaceWithCondition(Property, Comparable[]) + */ + @SafeVarargs + public final > PartBuilder condition(Property prop, T... values) { + Preconditions.checkArgument(!conditions.containsKey(prop), + "Cannot set condition for property \"%s\" more than once", prop.getName()); + Preconditions.checkState(nestedConditionGroups.isEmpty(), + "Can't have normal conditions if there are already nested condition groups"); + return this.replaceWithCondition(prop, values); + } + + /** + * Allows having nested groups of conditions. + */ + private final ConditionGroup replaceWithNestedGroup() { + this.conditions.clear(); + ConditionGroup group = new ConditionGroup(); + this.nestedConditionGroups.add(group); + return group; + } + + /** + * Allows having nested groups of conditions if there are not any normal conditions. + * + * @throws IllegalStateException if {@code !conditions.isEmpty()} + * @see PartBuilder#replaceWithNestedGroup() + */ + public final ConditionGroup nestedGroup() { + Preconditions.checkState(conditions.isEmpty(), + "Can't have nested condition groups if there are already normal conditions"); + return replaceWithNestedGroup(); + } + + public MachineModelBuilder end() { + return MachineModelBuilder.this; + } + + public JsonObject toJson() { + JsonObject out = new JsonObject(); + if (!conditions.isEmpty()) { + out.add("when", conditionsToJson(this.conditions, this.useOr)); + } else if (!nestedConditionGroups.isEmpty()) { + out.add("when", groupsToJson(this.nestedConditionGroups, this.useOr)); + } + out.add("apply", configuredModelListToJSON(this.models)); + return out; + } + + public boolean canApplyTo(MachineDefinition b) { + return b.getStateDefinition().getProperties().containsAll(this.conditions.keySet()); + } + + private JsonObject groupsToJson(List conditions, boolean useOr) { + JsonObject groupJson = new JsonObject(); + JsonArray innerGroupJson = new JsonArray(); + groupJson.add(useOr ? "OR" : "AND", innerGroupJson); + for (ConditionGroup group : conditions) { + innerGroupJson.add(group.toJson()); + } + return groupJson; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private JsonObject conditionsToJson(Multimap, Comparable> conditions, boolean useOr) { + JsonObject groupJson = new JsonObject(); + for (var entry : conditions.asMap().entrySet()) { + StringBuilder activeString = new StringBuilder(); + for (Comparable val : entry.getValue()) { + if (!activeString.isEmpty()) activeString.append("|"); + activeString.append(((Property) entry.getKey()).getName(val)); + } + groupJson.addProperty(entry.getKey().getName(), activeString.toString()); + } + if (useOr) { + JsonArray innerWhen = new JsonArray(); + for (var entry : groupJson.entrySet()) { + JsonObject obj = new JsonObject(); + obj.add(entry.getKey(), entry.getValue()); + innerWhen.add(obj); + } + groupJson = new JsonObject(); + groupJson.add("OR", innerWhen); + } + return groupJson; + } + + public class ConditionGroup { + + public final Multimap, Comparable> conditions = MultimapBuilder.linkedHashKeys() + .arrayListValues() + .build(); + public final List nestedConditionGroups = new ArrayList<>(); + private ConditionGroup parent = null; + public boolean useOr; + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws NullPointerException if {@code prop} is {@code null} + * @throws NullPointerException if {@code values} is {@code null} + * @throws IllegalArgumentException if {@code values} is empty + * @throws IllegalArgumentException if {@code prop} is not applicable to the current machine's state + */ + @SafeVarargs + private final > ConditionGroup replaceWithCondition(Property prop, T... values) { + Preconditions.checkNotNull(prop, "Property must not be null"); + Preconditions.checkNotNull(values, "Value list must not be null"); + Preconditions.checkArgument(values.length > 0, "Value list must not be empty"); + Preconditions.checkArgument(canApplyTo(owner), + "Property %s is not valid for machine %s", prop, owner); + this.nestedConditionGroups.clear(); + this.conditions.putAll(prop, Arrays.asList(values)); + return this; + } + + /** + * Set a condition for this part, which consists of a property and a set of + * valid values. Can be called multiple times for multiple different properties. + * + * @param the type of the property value + * @param prop the property + * @param values a set of valid values + * @return this builder + * @throws IllegalArgumentException if {@code prop} has already been configured + * @throws IllegalStateException if {@code !nestedConditionGroups.isEmpty()} + * @see ConditionGroup#replaceWithCondition(Property, Comparable[]) + */ + @SafeVarargs + public final > ConditionGroup condition(Property prop, T... values) { + Preconditions.checkArgument(!conditions.containsKey(prop), + "Cannot set condition for property \"%s\" more than once", prop.getName()); + Preconditions.checkState(nestedConditionGroups.isEmpty(), + "Can't have normal conditions if there are already nested condition groups"); + return this.replaceWithCondition(prop, values); + } + + /** + * Allows having nested groups of conditions. + */ + private ConditionGroup replaceWithNestedGroup() { + this.conditions.clear(); + ConditionGroup group = new ConditionGroup(); + group.parent = this; + this.nestedConditionGroups.add(group); + return group; + } + + /** + * Allows having nested groups of conditions if there are not any normal conditions. + * + * @throws IllegalStateException if {@code !conditions.isEmpty()} + * @see ConditionGroup#replaceWithNestedGroup() + */ + public final ConditionGroup nestedGroup() { + Preconditions.checkState(conditions.isEmpty(), + "Can't have nested condition groups if there are already normal conditions"); + return replaceWithNestedGroup(); + } + + /** + * Ends this nested condition group and returns the parent condition group + * + * @throws IllegalStateException If this is not a nested condition group + */ + public ConditionGroup endNestedGroup() { + if (parent == null) + throw new IllegalStateException("This condition group is not nested, use end() instead"); + return parent; + } + + /** + * Ends this condition group and returns the part builder + * + * @throws IllegalStateException If this is a nested condition group + */ + public PartBuilder end() { + if (this.parent != null) + throw new IllegalStateException("This is a nested condition group, use endNestedGroup() instead"); + return PartBuilder.this; + } + + /** + * Makes this part get applied if any of the conditions/condition groups are true, instead of all of them + * needing to be true. + */ + public ConditionGroup useOr() { + this.useOr = true; + return this; + } + + public JsonObject toJson() { + if (!this.conditions.isEmpty()) { + return conditionsToJson(this.conditions, this.useOr); + } else if (!this.nestedConditionGroups.isEmpty()) { + return groupsToJson(this.nestedConditionGroups, this.useOr); + } + return new JsonObject(); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java new file mode 100644 index 00000000000..67cbea26f0d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java @@ -0,0 +1,128 @@ +package com.gregtechceu.gtceu.data.model.builder; + +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.Property; + +import com.google.common.collect.Maps; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public interface PartCondition extends Supplier { + + void validate(StateDefinition stateDefinition); + + static TerminalPartCondition condition() { + return new TerminalPartCondition(); + } + + static PartCondition and(PartCondition... conditions) { + return new CompositePartCondition(PartCondition.Operation.AND, Arrays.asList(conditions)); + } + + static PartCondition or(PartCondition... conditions) { + return new CompositePartCondition(PartCondition.Operation.OR, Arrays.asList(conditions)); + } + + public static class CompositePartCondition implements PartCondition { + + private final PartCondition.Operation operation; + private final List subConditions; + + CompositePartCondition(PartCondition.Operation operation, List subConditions) { + this.operation = operation; + this.subConditions = subConditions; + } + + public void validate(StateDefinition stateDefinition) { + this.subConditions.forEach((condition) -> condition.validate(stateDefinition)); + } + + public JsonElement get() { + JsonArray subConditionsList = new JsonArray(); + this.subConditions.stream().map(Supplier::get).forEach(subConditionsList::add); + JsonObject json = new JsonObject(); + json.add(this.operation.id, subConditionsList); + return json; + } + } + + public static enum Operation { + + AND("AND"), + OR("OR"); + + final String id; + + Operation(String id) { + this.id = id; + } + } + + public static class TerminalPartCondition implements PartCondition { + + private final Map, String> terms = Maps.newHashMap(); + + private static > String joinValues(Property property, Stream valueStream) { + return valueStream.map(property::getName).collect(Collectors.joining("|")); + } + + private static > String getTerm(Property property, + T firstValue, T[] additionalValues) { + return joinValues(property, Stream.concat(Stream.of(firstValue), Stream.of(additionalValues))); + } + + private > void putValue(Property property, String value) { + String s = this.terms.put(property, value); + if (s != null) { + throw new IllegalStateException("Tried to replace " + property + " value from " + s + " to " + value); + } + } + + public final > TerminalPartCondition term(Property property, T value) { + this.putValue(property, property.getName(value)); + return this; + } + + @SafeVarargs + public final > TerminalPartCondition term(Property property, + T firstValue, T... additionalValues) { + this.putValue(property, getTerm(property, firstValue, additionalValues)); + return this; + } + + public final > TerminalPartCondition negatedTerm(Property property, T value) { + this.putValue(property, "!" + property.getName(value)); + return this; + } + + @SafeVarargs + public final > TerminalPartCondition negatedTerm(Property property, + T firstValue, T... additionalValues) { + this.putValue(property, "!" + getTerm(property, firstValue, additionalValues)); + return this; + } + + public JsonElement get() { + JsonObject json = new JsonObject(); + this.terms.forEach((p, v) -> json.addProperty(p.getName(), v)); + return json; + } + + public void validate(StateDefinition definition) { + List> missing = this.terms.keySet().stream() + .filter((property) -> definition.getProperty(property.getName()) != property) + .toList(); + if (!missing.isEmpty()) { + throw new IllegalStateException("Properties " + missing + " are missing from " + definition); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index 08b085c8ff7..22201a1851e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -18,11 +18,11 @@ import com.google.common.collect.Sets; import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectSet; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; @@ -67,19 +67,22 @@ private static void addToData(ResourceLocation location, byte[] bytes) { public static void addRecipe(FinishedRecipe recipe) { JsonObject recipeJson = recipe.serializeRecipe(); + byte[] recipeBytes = recipeJson.toString().getBytes(StandardCharsets.UTF_8); Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/data"); ResourceLocation recipeId = recipe.getId(); if (ConfigHolder.INSTANCE.dev.dumpRecipes) { - writeJson(recipeId, "recipes", parent, recipeJson); + writeJson(recipeId, "recipes", parent, recipeBytes); } - addToData(getRecipeLocation(recipeId), recipeJson.toString().getBytes(StandardCharsets.UTF_8)); + addToData(getRecipeLocation(recipeId), recipeBytes); + if (recipe.serializeAdvancement() != null) { JsonObject advancement = recipe.serializeAdvancement(); + byte[] advancementBytes = advancement.toString().getBytes(StandardCharsets.UTF_8); if (ConfigHolder.INSTANCE.dev.dumpRecipes) { - writeJson(recipe.getAdvancementId(), "advancements", parent, advancement); + writeJson(recipe.getAdvancementId(), "advancements", parent, advancementBytes); } addToData(getAdvancementLocation(Objects.requireNonNull(recipe.getAdvancementId())), - advancement.toString().getBytes(StandardCharsets.UTF_8)); + advancementBytes); } } @@ -92,7 +95,7 @@ public static void addRecipe(FinishedRecipe recipe) { * @param json the json to write. */ @ApiStatus.Internal - public static void writeJson(ResourceLocation id, @Nullable String subdir, Path parent, JsonElement json) { + public static void writeJson(ResourceLocation id, @Nullable String subdir, Path parent, byte[] json) { try { Path file; if (subdir != null) { @@ -104,10 +107,10 @@ public static void writeJson(ResourceLocation id, @Nullable String subdir, Path } Files.createDirectories(file.getParent()); try (OutputStream output = Files.newOutputStream(file)) { - output.write(json.toString().getBytes()); + output.write(json); } } catch (IOException e) { - e.printStackTrace(); + GTCEu.LOGGER.error("Failed to write JSON export for file {}", id, e); } } @@ -169,10 +172,14 @@ public T getMetadataSection(MetadataSectionSerializer metaReader) { } @Override - public String packId() { + public @NotNull String packId() { return this.name; } + public boolean isBuiltin() { + return true; + } + @Override public void close() { // NOOP diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index dd6e1d11645..5c9d3856317 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -7,7 +7,10 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.SharedConstants; +import net.minecraft.client.renderer.texture.atlas.SpriteSource; +import net.minecraft.client.renderer.texture.atlas.SpriteSources; import net.minecraft.network.chat.Component; +import net.minecraft.resources.FileToIdConverter; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; @@ -17,6 +20,7 @@ import com.google.common.collect.Sets; import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectSet; import org.jetbrains.annotations.ApiStatus; @@ -29,6 +33,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -44,6 +50,12 @@ public class GTDynamicResourcePack implements PackResources { protected static final ObjectSet CLIENT_DOMAINS = new ObjectOpenHashSet<>(); protected static final GTDynamicPackContents CONTENTS = new GTDynamicPackContents(); + private static final FileToIdConverter ATLAS_ID_CONVERTER = FileToIdConverter.json("atlases"); + private static final FileToIdConverter TEXTURE_ID_CONVERTER = SpriteSource.TEXTURE_ID_CONVERTER; + private static final FileToIdConverter BLOCKSTATE_ID_CONVERTER = FileToIdConverter.json("blockstates"); + private static final FileToIdConverter BLOCK_MODEL_ID_CONVERTER = FileToIdConverter.json("models/block"); + private static final FileToIdConverter ITEM_MODEL_ID_CONVERTER = FileToIdConverter.json("models/item"); + private final String name; static { @@ -64,12 +76,14 @@ public static void clearClient() { } public static void addBlockModel(ResourceLocation loc, JsonElement obj) { - ResourceLocation l = getModelLocation(loc); + ResourceLocation l = getBlockModelLocation(loc); + byte[] modelBytes = obj.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, obj); + writeJson(l, null, parent, modelBytes); } - CONTENTS.addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, modelBytes); } public static void addBlockModel(ResourceLocation loc, Supplier obj) { @@ -78,11 +92,13 @@ public static void addBlockModel(ResourceLocation loc, Supplier obj public static void addItemModel(ResourceLocation loc, JsonElement obj) { ResourceLocation l = getItemModelLocation(loc); + byte[] modelBytes = obj.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, obj); + writeJson(l, null, parent, modelBytes); } - CONTENTS.addToData(l, obj.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, modelBytes); } public static void addItemModel(ResourceLocation loc, Supplier obj) { @@ -91,17 +107,47 @@ public static void addItemModel(ResourceLocation loc, Supplier obj) public static void addBlockState(ResourceLocation loc, JsonElement stateJson) { ResourceLocation l = getBlockStateLocation(loc); + byte[] stateBytes = stateJson.toString().getBytes(StandardCharsets.UTF_8); + if (ConfigHolder.INSTANCE.dev.dumpAssets) { Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); - writeJson(l, null, parent, stateJson); + writeJson(l, null, parent, stateBytes); } - CONTENTS.addToData(l, stateJson.toString().getBytes(StandardCharsets.UTF_8)); + CONTENTS.addToData(l, stateBytes); } public static void addBlockState(ResourceLocation loc, Supplier generator) { addBlockState(loc, generator.get()); } + public static void addAtlasSpriteSource(ResourceLocation atlasLoc, SpriteSource source) { + ResourceLocation l = getAtlasLocation(atlasLoc); + JsonElement sourceJson = SpriteSources.FILE_CODEC + .encodeStart(JsonOps.INSTANCE, Collections.singletonList(source)) + .getOrThrow(false, + error -> GTCEu.LOGGER.error("Failed to encode atlas sprite source. {}", error)); + byte[] sourceBytes = sourceJson.toString().getBytes(StandardCharsets.UTF_8); + + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(l, null, parent, sourceBytes); + } + CONTENTS.addToData(l, sourceBytes); + } + + public static void addAtlasSpriteSourceList(ResourceLocation atlasLoc, List sources) { + ResourceLocation l = getAtlasLocation(atlasLoc); + JsonElement sourceJson = SpriteSources.FILE_CODEC.encodeStart(JsonOps.INSTANCE, sources).getOrThrow(false, + error -> GTCEu.LOGGER.error("Failed to encode atlas sprite source. {}", error)); + byte[] sourceBytes = sourceJson.toString().getBytes(StandardCharsets.UTF_8); + + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(l, null, parent, sourceBytes); + } + CONTENTS.addToData(l, sourceBytes); + } + public static void addBlockTexture(ResourceLocation loc, byte[] data) { ResourceLocation l = getTextureLocation("block", loc); if (ConfigHolder.INSTANCE.dev.dumpAssets) { @@ -136,7 +182,7 @@ public static void writeByteArray(ResourceLocation id, @Nullable String subdir, output.write(data); } } catch (IOException e) { - e.printStackTrace(); + GTCEu.LOGGER.error("Failed to write JSON export for file {}", id, e); } } @@ -149,9 +195,8 @@ public IoSupplier getRootResource(String... elements) { return null; } - @Nullable @Override - public IoSupplier getResource(PackType type, ResourceLocation location) { + public @Nullable IoSupplier getResource(PackType type, ResourceLocation location) { if (type == PackType.CLIENT_RESOURCES) { return CONTENTS.getResource(location); } @@ -170,6 +215,7 @@ public Set getNamespaces(PackType type) { return type == PackType.CLIENT_RESOURCES ? CLIENT_DOMAINS : Set.of(); } + @SuppressWarnings("unchecked") @Nullable @Override public T getMetadataSection(MetadataSectionSerializer metaReader) { @@ -185,29 +231,35 @@ public String packId() { return this.name; } + public boolean isBuiltin() { + return true; + } + @Override public void close() { // NOOP } public static ResourceLocation getBlockStateLocation(ResourceLocation blockId) { - return new ResourceLocation(blockId.getNamespace(), - String.join("", "blockstates/", blockId.getPath(), ".json")); + return BLOCKSTATE_ID_CONVERTER.idToFile(blockId); } - public static ResourceLocation getModelLocation(ResourceLocation blockId) { - return new ResourceLocation(blockId.getNamespace(), String.join("", "models/", blockId.getPath(), ".json")); + public static ResourceLocation getBlockModelLocation(ResourceLocation blockId) { + return BLOCK_MODEL_ID_CONVERTER.idToFile(blockId); } public static ResourceLocation getItemModelLocation(ResourceLocation itemId) { - return new ResourceLocation(itemId.getNamespace(), String.join("", "models/item/", itemId.getPath(), ".json")); + return ITEM_MODEL_ID_CONVERTER.idToFile(itemId); } - public static ResourceLocation getTextureLocation(@Nullable String path, ResourceLocation tagId) { + public static ResourceLocation getTextureLocation(@Nullable String path, ResourceLocation textureId) { if (path == null) { - return new ResourceLocation(tagId.getNamespace(), String.join("", "textures/", tagId.getPath(), ".png")); + return TEXTURE_ID_CONVERTER.idToFile(textureId); } - return new ResourceLocation(tagId.getNamespace(), - String.join("", "textures/", path, "/", tagId.getPath(), ".png")); + return TEXTURE_ID_CONVERTER.idToFile(textureId.withPrefix(path + "/")); + } + + public static ResourceLocation getAtlasLocation(ResourceLocation atlasId) { + return ATLAS_ID_CONVERTER.idToFile(atlasId); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 1b9ba79501e..70d22de9b74 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -61,8 +61,11 @@ import com.gregtechceu.gtceu.common.data.machines.GCYMMachines; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.machines.GTMultiMachines; +import com.gregtechceu.gtceu.common.data.models.GTMachineModels; +import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.item.armor.PowerlessJetpack; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveFancyUIWorkableMachine; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; import com.gregtechceu.gtceu.data.recipe.CraftingComponent; @@ -84,8 +87,10 @@ import com.gregtechceu.gtceu.integration.kjs.recipe.WrappingRecipeSchemaType; import com.gregtechceu.gtceu.integration.kjs.recipe.components.ExtendedOutputItem; import com.gregtechceu.gtceu.integration.kjs.recipe.components.GTRecipeComponents; +import com.gregtechceu.gtceu.utils.data.RuntimeBlockStateProvider; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; @@ -99,6 +104,7 @@ import net.minecraftforge.items.ItemStackHandler; import com.mojang.serialization.DataResult; +import dev.latvian.mods.kubejs.KubeJSPaths; import dev.latvian.mods.kubejs.KubeJSPlugin; import dev.latvian.mods.kubejs.block.state.BlockStatePredicate; import dev.latvian.mods.kubejs.client.LangEventJS; @@ -200,9 +206,23 @@ public void generateDataJsons(DataJsonGenerator generator) { GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateDataJsons(generator)); } + public static RuntimeBlockStateProvider RUNTIME_BLOCKSTATE_PROVIDER = null; + @Override public void generateAssetJsons(AssetJsonGenerator generator) { + // Fake a data provider for the GT model builders so we don't need to handle this ourselves in any way :3 + RUNTIME_BLOCKSTATE_PROVIDER = new RuntimeBlockStateProvider(GTRegistration.REGISTRATE, + new PackOutput(KubeJSPaths.DIRECTORY), + (loc, json) -> { + if (loc.getPath().endsWith(".json")) { + loc = loc.withPath(p -> p.substring(0, p.length() - 5)); + } + generator.json(loc, json); + }); + GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateAssetJsons(generator)); + + RUNTIME_BLOCKSTATE_PROVIDER = null; } @Override @@ -215,6 +235,8 @@ public void registerClasses(ScriptType type, ClassFilter filter) { super.registerClasses(type, filter); // allow user to access all gtceu classes by importing them. filter.allow("com.gregtechceu.gtceu"); + filter.deny("com.gregtechceu.gtceu.core"); + filter.deny("com.gregtechceu.gtceu.common.network"); } @Override @@ -288,12 +310,19 @@ public void registerBindings(BindingsEvent event) { event.add("GTBlocks", GTBlocks.class); event.add("GTMaterialBlocks", GTMaterialBlocks.class); event.add("GCYMBlocks", GCYMBlocks.class); + event.add("GTItems", GTItems.class); + event.add("GTMaterialItems", GTMaterialItems.class); + // Machine related event.add("GTMachines", GTMachines.class); event.add("GTMultiMachines", GTMultiMachines.class); event.add("GTMachineUtils", GTMachineUtils.class); event.add("GCYMMachines", GCYMMachines.class); - event.add("GTItems", GTItems.class); - event.add("GTMaterialItems", GTMaterialItems.class); + // Multiblock related + event.add("RotationState", RotationState.class); + event.add("FactoryBlockPattern", FactoryBlockPattern.class); + event.add("MultiblockShapeInfo", MultiblockShapeInfo.class); + event.add("Predicates", Predicates.class); + event.add("PartAbility", PartAbility.class); // Recipe related event.add("GTRecipeTypes", GTRecipeTypes.class); event.add("GTRecipeCategories", GTRecipeCategories.class); @@ -315,12 +344,9 @@ public void registerBindings(BindingsEvent event) { event.add("SoundType", SoundType.class); // GUI related event.add("GuiTextures", GuiTextures.class); - // Multiblock related - event.add("RotationState", RotationState.class); - event.add("FactoryBlockPattern", FactoryBlockPattern.class); - event.add("MultiblockShapeInfo", MultiblockShapeInfo.class); - event.add("Predicates", Predicates.class); - event.add("PartAbility", PartAbility.class); + // Client/Server data related + event.add("GTModels", GTModels.class); + event.add("GTMachineModels", GTMachineModels.class); // Hazard Related event.add("HazardProperty", HazardProperty.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java index e5c0da75002..30ea178a773 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/ActiveBlockBuilder.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.builders.block; import com.gregtechceu.gtceu.api.block.ActiveBlock; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -23,7 +24,7 @@ private enum Type { public ActiveBlockBuilder(ResourceLocation id) { super(id); - property(ActiveBlock.ACTIVE); + property(GTBlockStateProperties.ACTIVE); renderType("cutout_mipped"); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java index acb7b292ef5..15d183a1a7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.integration.kjs.builders.block; import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.SimpleCoilType; +import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.common.block.CoilBlock; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -31,7 +31,7 @@ public class CoilBlockBuilder extends BlockBuilder { public CoilBlockBuilder(ResourceLocation i) { super(i); - property(ActiveBlock.ACTIVE); + property(GTBlockStateProperties.ACTIVE); renderType("cutout_mipped"); noValidSpawns(true); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 0544b690391..6b7eb98d8c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -5,9 +5,9 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.client.renderer.machine.WorkableSteamMachineRenderer; import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -40,7 +40,8 @@ public MachineDefinition register() { lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(0) .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(false, id.withPrefix("block/machines/"))); + .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .workableSteamHullModel(false, id.withPrefix("block/machines/")); definition.apply(false, lowPressureBuilder); var lowPressure = lowPressureBuilder.register(); @@ -51,7 +52,8 @@ public MachineDefinition register() { highPressureBuilder.langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(1) .recipeModifier(SimpleSteamMachine::recipeModifier) - .renderer(() -> new WorkableSteamMachineRenderer(true, id.withPrefix("block/machines/"))); + .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .workableSteamHullModel(true, id.withPrefix("block/machines/")); definition.apply(true, highPressureBuilder); hp = highPressureBuilder.register(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 0073e18f5cc..b772a74378c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -16,11 +15,13 @@ import com.google.common.base.Preconditions; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; -import java.util.Locale; +import java.util.*; import java.util.function.BiFunction; import static com.gregtechceu.gtceu.api.GTValues.*; @@ -29,6 +30,8 @@ @Accessors(fluent = true, chain = true) public class KJSTieredMachineBuilder extends BuilderBase { + private final MachineBuilder[] builders = new MachineBuilder[TIER_COUNT]; + @Setter public volatile int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter @@ -54,16 +57,29 @@ public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machi } @Override - public void generateLang(LangEventJS lang) { + public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + for (int tier : this.tiers) { + MachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateAssetJsons(generator); + } + } + } + + @Override + public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); - for (int tier : tiers) { - MachineDefinition def = value[tier]; - lang.add(GTCEu.MOD_ID, def.getDescriptionId(), def.getLangValue()); + for (int tier : this.tiers) { + MachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateLang(lang); + } } } @Override - public MachineDefinition[] register() { + public MachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + @@ -72,13 +88,13 @@ public MachineDefinition[] register() { "See GTMachines for examples"); MachineDefinition[] definitions = new MachineDefinition[TIER_COUNT]; for (final int tier : tiers) { - String tierName = GTValues.VN[tier].toLowerCase(Locale.ROOT); + String tierName = VN[tier].toLowerCase(Locale.ROOT); MachineBuilder builder = GTRegistration.REGISTRATE.machine( String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.create(holder, tier, tankScalingFunction)); builder.langValue("%s %s %s".formatted(VLVH[tier], toEnglishName(this.id.getPath()), VLVT[tier])) - .workableTieredHullRenderer(id.withPrefix("block/machines/")) + .workableTieredHullModel(id.withPrefix("block/machines/")) .tier(tier); this.definition.apply(tier, builder); if (builder.recipeTypes() != null && builder.recipeTypes().length > 0) { @@ -92,6 +108,7 @@ public MachineDefinition[] register() { tankScalingFunction.applyAsInt(tier), true)); } } + this.builders[tier] = builder; definitions[tier] = builder.register(); } return value = definitions; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index 1cee26dcf36..d0dbb6d9af2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -1,9 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; @@ -16,14 +13,20 @@ import com.google.common.base.Preconditions; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.NotNull; import java.util.Locale; +import static com.gregtechceu.gtceu.api.GTValues.*; + @Accessors(fluent = true, chain = true) public class KJSTieredMultiblockBuilder extends BuilderBase { + private final MultiblockMachineBuilder[] builders = new MultiblockMachineBuilder[TIER_COUNT]; + @Setter public volatile int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter @@ -41,34 +44,46 @@ public KJSTieredMultiblockBuilder(ResourceLocation id, TieredCreationFunction ma } @Override - public void generateLang(LangEventJS lang) { + public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + for (int tier : this.tiers) { + MultiblockMachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateAssetJsons(generator); + } + } + } + + @Override + public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); for (int tier : tiers) { - MachineDefinition def = value[tier]; - if (def.getLangValue() != null) { - lang.add(GTCEu.MOD_ID, def.getDescriptionId(), def.getLangValue()); + MultiblockMachineBuilder builder = this.builders[tier]; + if (builder != null) { + builder.generateLang(lang); } } } @Override - public MultiblockMachineDefinition[] register() { + public MultiblockMachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + "example: `builder.machine((holder, tier) => new SimpleTieredMachine(holder, tier, t => t * 3200)`"); Preconditions.checkNotNull(definition, "You must set a definition function! " + "See GTMachines for examples"); - MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; + MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[TIER_COUNT]; for (final int tier : tiers) { - String tierName = GTValues.VN[tier].toLowerCase(Locale.ROOT); + String tierName = VN[tier].toLowerCase(Locale.ROOT); MultiblockMachineBuilder builder = GTRegistration.REGISTRATE.multiblock( String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.create(holder, tier)); - builder.workableTieredHullRenderer(id.withPrefix("block/machines/")) + builder.workableTieredHullModel(id.withPrefix("block/machines/")) .tier(tier); this.definition.apply(tier, builder); + this.builders[tier] = builder; definitions[tier] = builder.register(); } return value = definitions; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java index e891f7f70d7..b01ff855356 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java @@ -6,16 +6,19 @@ import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import dev.latvian.mods.kubejs.generator.DataJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; public class KJSWrappingMachineBuilder extends BuilderBase { @HideFromJS - @Getter(onMethod_ = @HideFromJS) + @Getter private final KJSTieredMachineBuilder tieredBuilder; public KJSWrappingMachineBuilder(ResourceLocation id, KJSTieredMachineBuilder tieredBuilder) { @@ -49,13 +52,23 @@ public KJSWrappingMachineBuilder addDefaultTooltips(boolean addDefaultTooltips) } @Override - public void generateLang(LangEventJS lang) { + public void generateDataJsons(@NotNull DataJsonGenerator generator) { + tieredBuilder.generateDataJsons(generator); + } + + @Override + public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + tieredBuilder.generateAssetJsons(generator); + } + + @Override + public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); tieredBuilder.generateLang(lang); } @Override - public MachineDefinition register() { + public @NotNull MachineDefinition register() { tieredBuilder.register(); for (var def : tieredBuilder.get()) { if (def != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index c9b6c137cca..c6d2cf71db4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -15,13 +15,14 @@ import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.rhino.util.HideFromJS; import lombok.Getter; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; public class KJSWrappingMultiblockBuilder extends BuilderBase { @HideFromJS - @Getter(onMethod_ = @HideFromJS) + @Getter private final KJSTieredMultiblockBuilder tieredBuilder; public KJSWrappingMultiblockBuilder(ResourceLocation id, KJSTieredMultiblockBuilder tieredBuilder) { @@ -45,13 +46,13 @@ public KJSWrappingMultiblockBuilder definition(KJSTieredMultiblockBuilder.Defini } @Override - public void generateLang(LangEventJS lang) { + public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); tieredBuilder.generateLang(lang); } @Override - public MultiblockMachineDefinition register() { + public @NotNull MultiblockMachineDefinition register() { tieredBuilder.register(); for (var def : tieredBuilder.get()) { if (def != null) { @@ -64,19 +65,19 @@ public MultiblockMachineDefinition register() { } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id) { - return MultiblockMachineBuilder.createMulti(GTRegistration.REGISTRATE, id.getPath(), + return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), WorkableElectricMultiblockMachine::new, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::createBlockEntity); + MetaMachineBlockEntity::new); } public static MultiblockMachineBuilder createKJSMulti(ResourceLocation id, KJSTieredMachineBuilder.CreationFunction machine) { - return MultiblockMachineBuilder.createMulti(GTRegistration.REGISTRATE, id.getPath(), + return new MultiblockMachineBuilder(GTRegistration.REGISTRATE, id.getPath(), machine::create, MetaMachineBlock::new, MetaMachineItem::new, - MetaMachineBlockEntity::createBlockEntity); + MetaMachineBlockEntity::new); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java index 56b7e2405a7..489420b238e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -32,6 +32,7 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play } int paintingColor = paintable.getPaintingColor(); + if (paintingColor == -1) return; IProbeInfo horizontal = iProbeInfo.horizontal(iProbeInfo .defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java new file mode 100644 index 00000000000..01955cbbeda --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/MachineRenderStatePayload.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; + +import com.lowdragmc.lowdraglib.syncdata.payload.ObjectTypedPayload; + +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.network.FriendlyByteBuf; + +import lombok.NoArgsConstructor; +import org.jetbrains.annotations.Nullable; + +@NoArgsConstructor +public class MachineRenderStatePayload extends ObjectTypedPayload { + + @Override + public void writePayload(FriendlyByteBuf buf) { + buf.writeId(MachineDefinition.RENDER_STATE_REGISTRY, payload); + } + + @Override + public void readPayload(FriendlyByteBuf buf) { + payload = buf.readById(MachineDefinition.RENDER_STATE_REGISTRY); + } + + @Nullable + @Override + public Tag serializeNBT() { + return MachineRenderState.CODEC.encodeStart(NbtOps.INSTANCE, payload) + .getOrThrow(false, GTCEu.LOGGER::error); + } + + @Override + public void deserializeNBT(Tag tag) { + payload = MachineRenderState.CODEC.parse(NbtOps.INSTANCE, tag) + .getOrThrow(false, GTCEu.LOGGER::error); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java index 515325a67b7..f0988ca412e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/DummyMachineBlockEntity.java @@ -5,11 +5,20 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.lowdragmc.lowdraglib.syncdata.managed.MultiManagedStorage; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; + import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; @@ -22,15 +31,19 @@ public class DummyMachineBlockEntity implements IMachineBlockEntity { public final DummyRecipeLogicMachine metaMachine; @Getter private final MachineDefinition definition; + @Getter + @Setter + private MachineRenderState renderState; // TODO: Fix the proxy parameter public DummyMachineBlockEntity(int tier, GTRecipeType type, Int2IntFunction tankScalingFunction, Collection handlers, Object... args) { - this.definition = MachineDefinition.createDefinition(GTCEu.id("dummy")); + this.definition = new MachineDefinition(GTCEu.id("dummy")); this.definition.setRecipeTypes(new GTRecipeType[] { type }); this.definition.setTier(tier); + this.renderState = getDefinition().defaultRenderState(); this.metaMachine = new DummyRecipeLogicMachine(this, tier, tankScalingFunction, handlers, args); } @@ -43,4 +56,14 @@ public long getOffset() { public MultiManagedStorage getRootStorage() { return null; } + + @Override + public CompoundTag getPersistentData() { + return new CompoundTag(); + } + + @Override + public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { + return LazyOptional.empty(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java index 40e7f94d75e..2a3f91bccba 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java @@ -1,19 +1,22 @@ package com.gregtechceu.gtceu.utils; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.Util; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -import net.minecraftforge.client.model.SimpleModelState; import com.google.common.collect.HashBasedTable; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Table; import com.google.common.collect.Tables; -import com.mojang.math.Transformation; import org.jetbrains.annotations.Contract; import org.joml.Matrix4f; +import org.joml.Matrix4fc; import org.joml.Vector3f; +import org.joml.Vector3fc; import java.security.InvalidParameterException; +import java.util.Objects; import javax.annotation.ParametersAreNonnullByDefault; @@ -21,7 +24,15 @@ @MethodsReturnNonnullByDefault public class GTMatrixUtils { - protected static final Table rotations = Tables + @SuppressWarnings("UnstableApiUsage") + private static final ImmutableMap directionAxises = Util.make(() -> { + ImmutableMap.Builder map = ImmutableMap.builderWithExpectedSize(6); + for (Direction dir : GTUtil.DIRECTIONS) { + map.put(dir, dir.step()); + } + return map.build(); + }); + private static final Table rotations = Tables .synchronizedTable(HashBasedTable.create()); /** @@ -30,7 +41,7 @@ public class GTMatrixUtils { * @return the angle of rotation to make {@code from} point in the direction of {@code to} */ @Contract(pure = true) - public static float getRotationAngle(final Vector3f from, final Vector3f to) { + public static float getRotationAngle(final Vector3fc from, final Vector3fc to) { return (float) Math.acos(from.dot(to)); } @@ -41,7 +52,7 @@ public static float getRotationAngle(final Vector3f from, final Vector3f to) { * @param to the wanted vector * @return the axis of rotation to make {@code from} point in the direction of {@code to} */ - public static Vector3f getRotationAxis(Vector3f from, final Vector3f to) { + public static Vector3f getRotationAxis(Vector3f from, final Vector3fc to) { return getRotationAxis(from, to, from); } @@ -51,7 +62,7 @@ public static Vector3f getRotationAxis(Vector3f from, final Vector3f to) { * @param dest the vector to save the result to * @return {@code dest} */ - public static Vector3f getRotationAxis(Vector3f from, Vector3f to, Vector3f dest) { + public static Vector3f getRotationAxis(Vector3fc from, Vector3fc to, Vector3f dest) { return from.cross(to, dest).normalize(); } @@ -64,31 +75,29 @@ public static Vector3f getRotationAxis(Vector3f from, Vector3f to, Vector3f dest * @param to the destination vector * @param additional additional vectors to transform */ - public static void rotateMatrix(Matrix4f matrix, Vector3f from, Vector3f to, Vector3f... additional) { + public static void rotateMatrix(Matrix4f matrix, Vector3f from, Vector3fc to, Vector3f... additional) { if (from.equals(to)) { return; } - if (-from.x == to.x && -from.y == to.y && -from.z == to.z) { - rotateMatrix(matrix, Mth.PI, 0, 1, 0, additional); + if (-from.x() == to.x() && -from.y() == to.y() && -from.z() == to.z()) { + rotateMatrix(matrix, Mth.PI, getDirectionAxis(Direction.UP), additional); } else { var angle = getRotationAngle(from, to); getRotationAxis(from, to); - rotateMatrix(matrix, angle, from.x, from.y, from.z, additional); + rotateMatrix(matrix, angle, from, additional); } } /** * @param matrix the matrix to transform * @param angle the angle of rotation (radians) - * @param x axis of rotation x value - * @param y axis of rotation y value - * @param z axis of rotation z value + * @param axis axis of rotation * @param additional additional vectors to transform */ - public static void rotateMatrix(Matrix4f matrix, float angle, float x, float y, float z, Vector3f... additional) { - matrix.rotate(angle, x, y, z); + public static void rotateMatrix(Matrix4f matrix, float angle, Vector3fc axis, Vector3f... additional) { + matrix.rotate(angle, axis); for (var vec : additional) { - vec.rotateAxis(angle, x, y, z); + vec.rotateAxis(angle, axis.x(), axis.y(), axis.z()); } } @@ -109,16 +118,16 @@ public static float upwardFacingAngle(Direction upward) { public static Vector3f rotateMatrixToFront(Matrix4f matrix, Direction frontFace) { // rotate frontFacing to correct cardinal direction var front = frontFace.step(); - rotateMatrix(matrix, Direction.NORTH.step(), frontFace.step(), front); + rotateMatrix(matrix, Direction.NORTH.step(), getDirectionAxis(frontFace), front); return front; } public static void rotateMatrixToUp(Matrix4f matrix, Vector3f front, Direction upwardsFace) { // rotate upwards face to the correct orientation - rotateMatrix(matrix, upwardFacingAngle(upwardsFace), front.x, front.y, front.z); + rotateMatrix(matrix, upwardFacingAngle(upwardsFace), front); } - public static SimpleModelState createRotationState(Direction frontFace, Direction upwardFace) { + public static Matrix4fc createRotationState(Direction frontFace, Direction upwardFace) { if (rotations.contains(frontFace, upwardFace)) { var rotation = rotations.get(frontFace, upwardFace); assert rotation != null; @@ -128,8 +137,11 @@ public static SimpleModelState createRotationState(Direction frontFace, Directio var front = rotateMatrixToFront(matrix, frontFace); front.absolute(); rotateMatrixToUp(matrix, front, upwardFace); - var rotation = new SimpleModelState(new Transformation(matrix)); - rotations.put(frontFace, upwardFace, rotation); - return rotation; + rotations.put(frontFace, upwardFace, matrix); + return matrix; + } + + public static Vector3fc getDirectionAxis(Direction dir) { + return Objects.requireNonNull(directionAxises.get(dir)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java new file mode 100644 index 00000000000..b18f2bcd41d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeBlockStateProvider.java @@ -0,0 +1,51 @@ +package com.gregtechceu.gtceu.utils.data; + +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; + +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.client.model.generators.*; + +import com.google.gson.JsonElement; +import com.tterrag.registrate.AbstractRegistrate; + +import java.util.Map; +import java.util.function.BiConsumer; + +public class RuntimeBlockStateProvider extends GTBlockstateProvider { + + protected final BiConsumer consumer; + + public RuntimeBlockStateProvider(AbstractRegistrate parent, PackOutput packOutput, + BiConsumer consumer) { + super(parent, packOutput, RuntimeExistingFileHelper.INSTANCE); + this.consumer = consumer; + } + + @Override + protected void registerStatesAndModels() {} + + @SuppressWarnings("deprecation") + public void run() { + processModelProvider(models()); + processModelProvider(itemModels()); + + for (Map.Entry entry : registeredBlocks.entrySet()) { + ResourceLocation loc = BuiltInRegistries.BLOCK.getKey(entry.getKey()).withPrefix("blockstates/"); + this.consumer.accept(loc, entry.getValue().toJson()); + } + // only clear the data *after* saving so we can keep track of it during the KJS event + models().generatedModels.clear(); + itemModels().generatedModels.clear(); + registeredBlocks.clear(); + } + + public > void processModelProvider(ModelProvider provider) { + for (T model : provider.generatedModels.values()) { + ResourceLocation loc = model.getLocation().withPrefix("models/"); + this.consumer.accept(loc, model.toJson()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java new file mode 100644 index 00000000000..16f3625b183 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java @@ -0,0 +1,86 @@ +package com.gregtechceu.gtceu.utils.data; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraftforge.common.data.ExistingFileHelper; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import org.jetbrains.annotations.NotNull; + +import java.io.FileNotFoundException; +import java.util.Collections; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +/** + * Existing file helper that wraps the client/server resource manager instead of creating its own.
+ * Useful for using data generators outside datagen. + */ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class RuntimeExistingFileHelper extends ExistingFileHelper { + + public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper(); + + protected final Multimap generated = HashMultimap.create(); + + protected RuntimeExistingFileHelper() { + super(Collections.emptySet(), Collections.emptySet(), false, null, null); + } + + public static @NotNull ResourceManager getManager(PackType packType) { + if (packType == PackType.CLIENT_RESOURCES) { + return Minecraft.getInstance().getResourceManager(); + } else if (packType == PackType.SERVER_DATA) { + if (GTCEu.getMinecraftServer() == null) { + throw new IllegalStateException("Cannot get server resources without a server or on a remote client."); + } + return GTCEu.getMinecraftServer().getResourceManager(); + } else { + throw new IllegalStateException("Invalid pack type " + packType); + } + } + + protected ResourceLocation getLocation(ResourceLocation base, String prefix, String suffix) { + return base.withPath(path -> prefix + "/" + path + suffix); + } + + @Override + public boolean exists(ResourceLocation loc, PackType packType) { + return generated.get(packType).contains(loc) || getManager(packType).getResource(loc).isPresent(); + } + + @Override + public void trackGenerated(ResourceLocation loc, IResourceType type) { + trackGenerated(loc, type.getPackType(), type.getSuffix(), type.getPrefix()); + } + + @Override + public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) { + this.generated.put(packType, getLocation(loc, prefix, suffix)); + } + + @Override + public Resource getResource(ResourceLocation loc, PackType packType, String pathSuffix, String pathPrefix) + throws FileNotFoundException { + return getResource(getLocation(loc, pathPrefix, pathSuffix), packType); + } + + @Override + public Resource getResource(ResourceLocation loc, PackType packType) throws FileNotFoundException { + return getManager(packType).getResourceOrThrow(loc); + } + + @Override + public List getResourceStack(ResourceLocation loc, PackType packType) { + return getManager(packType).getResourceStack(loc); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java index 42b1a1ab3f6..9a93e5e7928 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/memoization/ConcurrentWeakIdentityHashMap.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.utils.memoization; -import org.jetbrains.annotations.NotNullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; + import org.jetbrains.annotations.Nullable; import java.io.Serial; @@ -11,7 +12,10 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -@NotNullByDefault +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class ConcurrentWeakIdentityHashMap extends AbstractMap implements ConcurrentMap { private final ConcurrentMap, V> map; diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index e416b85be76..4f4d6041e1c 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -11,6 +11,8 @@ public net.minecraft.world.level.storage.loot.entries.LootItem (Lnet/minec public net.minecraft.data.models.BlockModelGenerators m_124850_()Lnet/minecraft/data/models/blockstates/PropertyDispatch; # createFacingDispatch public net.minecraft.data.models.BlockModelGenerators m_124859_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/data/models/blockstates/MultiVariantGenerator; # createSimpleBlock +public net.minecraft.client.resources.model.ModelBakery f_119241_ # ITEM_MODEL_GENERATOR + public net.minecraft.world.item.Item f_41374_ # BASE_ATTACK_DAMAGE_UUID public net.minecraft.world.item.Item f_41375_ # BASE_ATTACK_SPEED_UUID public net.minecraft.world.entity.LivingEntity m_21278_(Lnet/minecraft/world/item/ItemStack;)V # breakItem diff --git a/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json b/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json index 5d35756bd3f..49bf95d3bf1 100644 --- a/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json +++ b/src/main/resources/assets/gtceu/models/block/advanced_computer_casing.json @@ -1,53 +1,10 @@ { - "parent": "block/block", - "render_type": "cutout_mipped", - "textures": { - "particle": "gtceu:block/casings/hpca/advanced_computer_casing/side", - "down": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", - "up": "gtceu:block/casings/hpca/advanced_computer_casing/top", - "north": "gtceu:block/casings/hpca/advanced_computer_casing/front", - "east": "gtceu:block/casings/hpca/advanced_computer_casing/side", - "south": "gtceu:block/casings/hpca/advanced_computer_casing/back", - "west": "gtceu:block/casings/hpca/advanced_computer_casing/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } + "parent": "gtceu:block/computer_casing", + "textures": { + "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", + "top": "gtceu:block/casings/hpca/advanced_computer_casing/top", + "front": "gtceu:block/casings/hpca/advanced_computer_casing/front", + "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", + "side": "gtceu:block/casings/hpca/advanced_computer_casing/side" } - ] } diff --git a/src/main/resources/assets/gtceu/models/block/computer_casing.json b/src/main/resources/assets/gtceu/models/block/computer_casing.json index e027e68848a..bde8cee512e 100644 --- a/src/main/resources/assets/gtceu/models/block/computer_casing.json +++ b/src/main/resources/assets/gtceu/models/block/computer_casing.json @@ -1,53 +1,25 @@ { - "parent": "block/block", - "render_type": "cutout_mipped", - "textures": { - "particle": "gtceu:block/casings/hpca/computer_casing/side", - "down": "gtceu:block/casings/hpca/computer_casing/bottom", - "up": "gtceu:block/casings/hpca/computer_casing/top", - "north": "gtceu:block/casings/hpca/computer_casing/front", - "east": "gtceu:block/casings/hpca/computer_casing/side", - "south": "gtceu:block/casings/hpca/computer_casing/back", - "west": "gtceu:block/casings/hpca/computer_casing/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" + "parent": "block/block", + "textures": { + "particle": "#side", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", + "top": "gtceu:block/casings/hpca/computer_casing/top", + "front": "gtceu:block/casings/hpca/computer_casing/front", + "back": "gtceu:block/casings/hpca/computer_casing/back", + "side": "gtceu:block/casings/hpca/computer_casing/side" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down" }, + "up": { "texture": "#top", "cullface": "up" }, + "north": { "texture": "#front", "cullface": "north" }, + "south": { "texture": "#back", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } } - } - } - ] + ] } diff --git a/src/main/resources/assets/gtceu/models/block/cube/all.json b/src/main/resources/assets/gtceu/models/block/cube/all.json deleted file mode 100644 index 4f327969df6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/all.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "#all", - "down": "#all", - "up": "#all", - "north": "#all", - "east": "#all", - "south": "#all", - "west": "#all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube/default.json b/src/main/resources/assets/gtceu/models/block/cube/default.json deleted file mode 100644 index c39a262831b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/default.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json b/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json index d9165e3d512..a6928effd69 100644 --- a/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json +++ b/src/main/resources/assets/gtceu/models/block/cube/tinted/all_0.json @@ -1,51 +1,16 @@ { - "parent": "block/block", - "textures": { - "particle": "#all" - }, + "parent": "block/cube_all", "elements": [ { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "down": { - "texture": "#all", - "cullface": "down", - "tintindex": 0 - }, - "up": { - "texture": "#all", - "cullface": "up", - "tintindex": 0 - }, - "north": { - "texture": "#all", - "cullface": "north", - "tintindex": 0 - }, - "south": { - "texture": "#all", - "cullface": "south", - "tintindex": 0 - }, - "west": { - "texture": "#all", - "cullface": "west", - "tintindex": 0 - }, - "east": { - "texture": "#all", - "cullface": "east", - "tintindex": 0 - } + "down": { "texture": "#all", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 0 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 0 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 0 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 0 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json b/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json index 60d9dbba2b7..2917cbaf09d 100644 --- a/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube/tinted/default.json @@ -1,57 +1,16 @@ { - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, + "parent": "block/cube", "elements": [ { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "down": { - "texture": "#down", - "cullface": "down", - "tintindex": 1 - }, - "up": { - "texture": "#up", - "cullface": "up", - "tintindex": 1 - }, - "north": { - "texture": "#north", - "cullface": "north", - "tintindex": 1 - }, - "south": { - "texture": "#south", - "cullface": "south", - "tintindex": 1 - }, - "west": { - "texture": "#west", - "cullface": "west", - "tintindex": 1 - }, - "east": { - "texture": "#east", - "cullface": "east", - "tintindex": 1 - } + "down": { "texture": "#down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#up", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#north", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#south", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#east", "cullface": "east", "tintindex": 1 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube/uvlock.json b/src/main/resources/assets/gtceu/models/block/cube/uvlock.json deleted file mode 100644 index c39a262831b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/uvlock.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "down": "gtceu:block/casings/voltage/lv/bottom", - "up": "gtceu:block/casings/voltage/lv/top", - "north": "gtceu:block/casings/voltage/lv/side", - "east": "gtceu:block/casings/voltage/lv/side", - "south": "gtceu:block/casings/voltage/lv/side", - "west": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 16, - 16 - ], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "south": { - "texture": "#south", - "cullface": "south" - }, - "west": { - "texture": "#west", - "cullface": "west" - }, - "east": { - "texture": "#east", - "cullface": "east" - } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json b/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json deleted file mode 100644 index 4f327969df6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube/uvlock_all.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "#all", - "down": "#all", - "up": "#all", - "north": "#all", - "east": "#all", - "south": "#all", - "west": "#all" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json index 4dc6b40f32d..2306d471186 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/default.json @@ -5,25 +5,26 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, + "down": { "texture": "#bot_down", "cullface": "down" }, + "up": { "texture": "#bot_up", "cullface": "up" }, "north": { "texture": "#bot_north", "cullface": "north" }, "south": { "texture": "#bot_south", "cullface": "south" }, - "west": { "texture": "#bot_west", "cullface": "west" }, - "east": { "texture": "#bot_east", "cullface": "east" } + "west": { "texture": "#bot_west", "cullface": "west" }, + "east": { "texture": "#bot_east", "cullface": "east" } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, + "down": { "texture": "#top_down", "cullface": "down" }, + "up": { "texture": "#top_up", "cullface": "up" }, "north": { "texture": "#top_north", "cullface": "north" }, "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "west": { "texture": "#top_west", "cullface": "west" }, + "east": { "texture": "#top_east", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json similarity index 75% rename from src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json rename to src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json index bb3bed40272..e3a1c303a1e 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all_top.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_top/default", + "parent": "gtceu:block/cube_2_layer/tinted_bot/all_bot", "textures": { "top_down": "#top_all", "top_up": "#top_all", @@ -8,4 +8,4 @@ "top_west": "#top_all", "top_east": "#top_all" } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json similarity index 68% rename from src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json rename to src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json index 9aedc97dd77..18bdb01448d 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/all.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/all_bot.json @@ -1,6 +1,7 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_top/all_top", + "parent": "gtceu:block/cube_2_layer/tinted_bot/default", "textures": { + "particle": "#bot_all", "bot_down": "#bot_all", "bot_up": "#bot_all", "bot_north": "#bot_all", diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json similarity index 78% rename from src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json rename to src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json index 2b98ec83ef7..c51cacbb780 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/orientable.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_top/default", + "parent": "gtceu:block/cube_2_layer/tinted_bot/default", "textures": { "bot_down": "#bot_bottom", "bot_up": "#bot_top", @@ -7,11 +7,12 @@ "bot_south": "#bot_side", "bot_west": "#bot_side", "bot_east": "#bot_side", + "top_down": "#top_bottom", "top_up": "#top_top", - "top_north": "#top_front", + "top_north": "#top_side", "top_south": "#top_side", "top_west": "#top_side", "top_east": "#top_side" } -} \ No newline at end of file +} diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json index fe98148afe0..3fde5752616 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/default.json @@ -5,25 +5,24 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], - "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, + "down": { "texture": "#top_down", "cullface": "down" }, + "up": { "texture": "#top_up", "cullface": "up" }, "north": { "texture": "#top_north", "cullface": "north" }, "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "west": { "texture": "#top_west", "cullface": "west" }, + "east": { "texture": "#top_east", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json index d2f223fc4f0..a2988df0385 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/all_translucent.json @@ -1,19 +1,4 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/default", - "render_type": "translucent", - "textures": { - "particle": "#bot_all", - "bot_down": "#bot_all", - "bot_up": "#bot_all", - "bot_north": "#bot_all", - "bot_east": "#bot_all", - "bot_south": "#bot_all", - "bot_west": "#bot_all", - "top_down": "#top_all", - "top_up": "#top_all", - "top_north": "#top_all", - "top_east": "#top_all", - "top_south": "#top_all", - "top_west": "#top_all" - } + "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "render_type": "translucent" } diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json index de14939ca31..717264cccc3 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_both/default.json @@ -5,25 +5,24 @@ "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 0 }, "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 0 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], - "shade": false, "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, "north": { "texture": "#top_north", "cullface": "north", "tintindex": 1 }, "south": { "texture": "#top_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } + "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json deleted file mode 100644 index 72d2cf53732..00000000000 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_top/default.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "parent": "block/block", - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, - "north": { "texture": "#bot_north", "cullface": "north" }, - "south": { "texture": "#bot_south", "cullface": "south" }, - "west": { "texture": "#bot_west", "cullface": "west" }, - "east": { "texture": "#bot_east", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#top_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#top_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#top_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#top_east", "cullface": "east", "tintindex": 1 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/fire_box_active.json b/src/main/resources/assets/gtceu/models/block/fire_box_active.json index bb104c4559e..79d1f6059ab 100644 --- a/src/main/resources/assets/gtceu/models/block/fire_box_active.json +++ b/src/main/resources/assets/gtceu/models/block/fire_box_active.json @@ -1,34 +1,32 @@ { "parent": "block/block", "textures": { - "top": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", - "bottom": "gtceu:block/casings/solid/machine_casing_bronze_plated_bricks", - "side": "gtceu:block/casings/firebox/machine_casing_firebox_bronze", "active_side": "gtceu:block/casings/firebox/machine_casing_firebox_bloom", - "particle": "#bottom" + "particle": "#side" }, "elements": [ { - "from": [-0.001, -0.001, -0.001], - "to": [ 16.001, 16.001, 16.001 ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "up": { "texture": "#top", "cullface": "up" }, - "down": { "texture": "#bottom", "cullface": "down" }, - "north": { "texture": "#side", "cullface": "north" }, - "south": { "texture": "#side", "cullface": "south" }, - "west": { "texture": "#side", "cullface": "west" }, - "east": { "texture": "#side", "cullface": "east" } + "up": { "texture": "#top", "cullface": "up" }, + "down": { "texture": "#bottom", "cullface": "down" }, + "north": { "texture": "#side", "cullface": "north" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } } }, { - "from": [-0.002, -0.002, -0.002], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.001, 0, -0.001 ], + "to": [ 16.001, 16, 16.001 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { - "north": { "texture": "#active_side", "cullface": "north", "tintindex": -101, "emissivity": 15}, - "south": { "texture": "#active_side", "cullface": "south", "tintindex": -101, "emissivity": 15}, - "west": { "texture": "#active_side", "cullface": "west", "tintindex": -101, "emissivity": 15}, - "east": { "texture": "#active_side", "cullface": "east", "tintindex": -101, "emissivity": 15} + "north": { "texture": "#active_side", "cullface": "north", "tintindex": -101 }, + "south": { "texture": "#active_side", "cullface": "south", "tintindex": -101 }, + "west": { "texture": "#active_side", "cullface": "west", "tintindex": -101 }, + "east": { "texture": "#active_side", "cullface": "east", "tintindex": -101 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/hermetic_casing.json b/src/main/resources/assets/gtceu/models/block/hermetic_casing.json index efe74b783e7..be6096202e1 100644 --- a/src/main/resources/assets/gtceu/models/block/hermetic_casing.json +++ b/src/main/resources/assets/gtceu/models/block/hermetic_casing.json @@ -2,42 +2,29 @@ "parent": "block/block", "textures": { "particle": "#bot_side", - "bot_down": "#bot_bottom", - "bot_up": "#bot_top", - "bot_north": "#bot_side", - "bot_east": "#bot_side", - "bot_south": "#bot_side", - "bot_west": "#bot_side", - "top_down": "gtceu:block/void", - "top_up": "gtceu:block/void", - "top_north": "#top_side", - "top_east": "#top_side", - "top_south": "#top_side", - "top_west": "#top_side" + "top_side": "gtceu:block/casings/hermetic_casing/hermetic_casing_overlay" }, "elements": [ { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#bot_down", "cullface": "down" }, - "up": { "texture": "#bot_up", "cullface": "up" }, - "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } + "down": { "texture": "#bot_bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#bot_top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#bot_side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#bot_side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#bot_side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#bot_side", "cullface": "east", "tintindex": 1 } } }, { "from": [ 0, 0, 0 ], "to": [ 16, 16, 16 ], "faces": { - "down": { "texture": "#top_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#top_north", "cullface": "north" }, - "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } + "north": { "texture": "#top_side", "cullface": "north" }, + "south": { "texture": "#top_side", "cullface": "south" }, + "west": { "texture": "#top_side", "cullface": "west" }, + "east": { "texture": "#top_side", "cullface": "east" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json b/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json deleted file mode 100644 index dd77cbbcd45..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/block_breaker_machine.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "front": "gtceu:block/machines/rock_crusher/overlay_front" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#front", "cullface": "north", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/buffer.json b/src/main/resources/assets/gtceu/models/block/machine/buffer.json deleted file mode 100644 index 6abc0a82782..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/buffer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_all": "gtceu:block/overlay/machine/overlay_buffer", - "emissive_all": "gtceu:block/overlay/machine/overlay_buffer_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#overlay_all", "cullface": "north" }, - "south": { "texture": "#overlay_all", "cullface": "south" }, - "up": { "texture": "#overlay_all", "cullface": "up" }, - "down": { "texture": "#overlay_all", "cullface": "down" }, - "west": { "texture": "#overlay_all", "cullface": "west" }, - "east": { "texture": "#overlay_all", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#emissive_all", "cullface": "north", "tintindex": -101, "emissivity": 15 }, - "south": { "texture": "#emissive_all", "cullface": "south", "tintindex": -101, "emissivity": 15 }, - "up": { "texture": "#emissive_all", "cullface": "up", "tintindex": -101, "emissivity": 15 }, - "down": { "texture": "#emissive_all", "cullface": "down", "tintindex": -101, "emissivity": 15 }, - "west": { "texture": "#emissive_all", "cullface": "west", "tintindex": -101, "emissivity": 15 }, - "east": { "texture": "#emissive_all", "cullface": "east", "tintindex": -101, "emissivity": 15 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json b/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json deleted file mode 100644 index 19c87a32124..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/crate/metal_crate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/cube/tinted/all", - "textures": { - "all": "gtceu:block/storage/crates/metal_crate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json b/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json deleted file mode 100644 index 75e17d22657..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/crate/wooden_crate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/cube/all", - "textures": { - "all": "gtceu:block/storage/crates/wooden_crate" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json b/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json deleted file mode 100644 index b6378022fda..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_chest.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive", - "bottom": "gtceu:block/casings/voltage/max/bottom", - "top": "gtceu:block/casings/voltage/max/top", - "particle": "gtceu:block/casings/voltage/max/side", - "side": "gtceu:block/casings/voltage/max/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json b/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json deleted file mode 100644 index 8007fdb8783..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_computation_provider.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "bot_bottom": "gtceu:block/casings/voltage/max/bottom", - "bot_top": "gtceu:block/casings/voltage/max/top", - "bot_side": "gtceu:block/casings/voltage/max/side", - "top_all": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "emissive_all": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#bot_side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_all", "cullface": "down" }, - "up": { "texture": "#top_all", "cullface": "up" }, - "north": { "texture": "#top_all", "cullface": "north" }, - "south": { "texture": "#top_all", "cullface": "south" }, - "west": { "texture": "#top_all", "cullface": "west" }, - "east": { "texture": "#top_all", "cullface": "east" } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#emissive_all", "cullface": "down", "tintindex": -101, "emissivity": 15 }, - "up": { "texture": "#emissive_all", "cullface": "up", "tintindex": -101, "emissivity": 15 }, - "north": { "texture": "#emissive_all", "cullface": "north", "tintindex": -101, "emissivity": 15 }, - "south": { "texture": "#emissive_all", "cullface": "south", "tintindex": -101, "emissivity": 15 }, - "west": { "texture": "#emissive_all", "cullface": "west", "tintindex": -101, "emissivity": 15 }, - "east": { "texture": "#emissive_all", "cullface": "east", "tintindex": -101, "emissivity": 15 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json b/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json deleted file mode 100644 index a05a11ab441..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_energy.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/max/side", - "bot_down": "gtceu:block/casings/voltage/max/bottom", - "bot_up": "gtceu:block/casings/voltage/max/top", - "bot_north": "gtceu:block/casings/voltage/max/side", - "bot_east": "gtceu:block/casings/voltage/max/side", - "bot_south": "gtceu:block/casings/voltage/max/side", - "bot_west": "gtceu:block/casings/voltage/max/side", - "top_down": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_up": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_north": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_east": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_south": "gtceu:block/overlay/machine/overlay_energy_emitter", - "top_west": "gtceu:block/overlay/machine/overlay_energy_emitter" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "texture": "#top_down", "cullface": "down" }, - "up": { "texture": "#top_up", "cullface": "up" }, - "north": { "texture": "#top_north", "cullface": "north" }, - "south": { "texture": "#top_south", "cullface": "south" }, - "west": { "texture": "#top_west", "cullface": "west" }, - "east": { "texture": "#top_east", "cullface": "east" } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json b/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json deleted file mode 100644 index 6b92021f781..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/creative_tank.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive", - "bottom": "gtceu:block/casings/voltage/max/bottom", - "top": "gtceu:block/casings/voltage/max/top", - "particle": "gtceu:block/casings/voltage/max/side", - "side": "gtceu:block/casings/voltage/max/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_16a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_2a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_32a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json b/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json deleted file mode 100644 index 376c5d7004b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/electric_gear_box_8a.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json b/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json deleted file mode 100644 index 955e6909185..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/fisher_machine.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "screen": "gtceu:block/overlay/machine/overlay_screen", - "screen_emissive": "gtceu:block/overlay/machine/overlay_qtank_emissive" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen", "cullface": "up" } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen_emissive", "cullface": "up", "tintindex": -101, "emissivity": 15 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json b/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json deleted file mode 100644 index 739d027b983..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/hull_machine.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json b/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json deleted file mode 100644 index 6c10dcaa713..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/kinetic_electric_machine.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [2, 2, 2], - "to": [14, 14, 14], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "from": [0, 0, 0], - "to": [0, 16, 2], - "faces": { - "west": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 0, 14], - "to": [0, 16, 16], - "faces": { - "west": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 14, 2], - "to": [0, 16, 14], - "faces": { - "west": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [0, 0, 2], - "to": [0, 2, 14], - "faces": { - "west": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "west", "tintindex": 1} - } - }, - { - "from": [16, 0, 2], - "to": [16, 2, 14], - "faces": { - "east": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 14, 2], - "to": [16, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 0, 14], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [16, 0, 0], - "to": [16, 16, 2], - "faces": { - "east": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1} - } - }, - { - "from": [0, 2, 2], - "to": [16, 2, 14], - "faces": { - "up": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 14, 2], - "to": [16, 14, 14], - "faces": { - "down": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 2, 2], - "to": [16, 14, 2], - "faces": { - "south": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 2, 14], - "to": [16, 14, 14], - "faces": { - "north": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - 1, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [2, 3, 4, 5] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [6, 7, 8, 9] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [10, 11, 12, 13] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json new file mode 100644 index 00000000000..ffc84d19d35 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json @@ -0,0 +1,53 @@ +{ + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, 16 ], + "to": [ 16, -16, 32 ], + "faces": { + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "down" } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json deleted file mode 100644 index 16b9fbd0ff3..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/ld_fluid_endpoint_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_bottom": "gtceu:block/pipe/ld_fluid_pipe/overlay_bottom", - "overlay_left": "gtceu:block/pipe/ld_fluid_pipe/overlay_left", - "overlay_right": "gtceu:block/pipe/ld_fluid_pipe/overlay_right", - "overlay_top": "gtceu:block/pipe/ld_fluid_pipe/overlay_top", - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_fluid_hatch_in": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", - "overlay_fluid_hatch_out": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south", "tintindex": 2}, - "up": {"uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up", "tintindex": 2}, - "down": {"uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down", "tintindex": 2}, - "west": {"uv": [0, 0, 16, 16], "texture": "#overlay_left", "cullface": "west", "tintindex": 2}, - "east": {"uv": [0, 0, 16, 16], "texture": "#overlay_right", "cullface": "east", "tintindex": 2} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_out", "cullface": "south", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json deleted file mode 100644 index adb45939a88..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/ld_item_endpoint_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "overlay_bottom": "gtceu:block/pipe/ld_item_pipe/overlay_bottom", - "overlay_left": "gtceu:block/pipe/ld_item_pipe/overlay_left", - "overlay_right": "gtceu:block/pipe/ld_item_pipe/overlay_right", - "overlay_top": "gtceu:block/pipe/ld_item_pipe/overlay_top", - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_item_hatch_in": "gtceu:block/overlay/machine/overlay_item_hatch_input", - "overlay_item_hatch_out": "gtceu:block/overlay/machine/overlay_item_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south", "tintindex": 2}, - "up": {"uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up", "tintindex": 2}, - "down": {"uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down", "tintindex": 2}, - "west": {"uv": [0, 0, 16, 16], "texture": "#overlay_left", "cullface": "west", "tintindex": 2}, - "east": {"uv": [0, 0, 16, 16], "texture": "#overlay_right", "cullface": "east", "tintindex": 2} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_in", "cullface": "north", "tintindex": 2}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_out", "cullface": "south", "tintindex": 2} - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json b/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json new file mode 100644 index 00000000000..ebe181e7dca --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/long_distance_fluid_pipeline_endpoint.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/pipeline_endpoint_machine", + "textures": { + "overlay": "gtceu:block/pipe/ld_fluid_pipe/overlay", + "overlay_emissive": "gtceu:block/pipe/ld_fluid_pipe/overlay_emissive", + + "hatch_in": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", + "hatch_out": "gtceu:block/overlay/machine/overlay_fluid_hatch_output" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json b/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json new file mode 100644 index 00000000000..6e0d92c73c9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/long_distance_item_pipeline_endpoint.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/pipeline_endpoint_machine", + "textures": { + "overlay": "gtceu:block/pipe/ld_item_pipe/overlay", + "overlay_emissive": "gtceu:block/pipe/ld_item_pipe/overlay_emissive", + + "hatch_in": "gtceu:block/overlay/machine/overlay_item_hatch_input", + "hatch_out": "gtceu:block/overlay/machine/overlay_item_hatch_output" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json b/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json deleted file mode 100644 index 4e5fddb2c64..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/metal_drum.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "parent": "gtceu:block/cube_2_layer/tinted_bot/default", - "textures": { - "particle": "gtceu:block/storage/drums/drum/side", - "bot_down": "gtceu:block/storage/drums/drum/bottom", - "bot_up": "gtceu:block/storage/drums/drum/top", - "bot_north": "gtceu:block/storage/drums/drum/side", - "bot_east": "gtceu:block/storage/drums/drum/side", - "bot_south": "gtceu:block/storage/drums/drum/side", - "bot_west": "gtceu:block/storage/drums/drum/side", - "top_down": "gtceu:block/storage/drums/drum_top/bottom", - "top_up": "gtceu:block/storage/drums/drum_top/top", - "top_north": "gtceu:block/storage/drums/drum_top/side", - "top_east": "gtceu:block/storage/drums/drum_top/side", - "top_south": "gtceu:block/storage/drums/drum_top/side", - "top_west": "gtceu:block/storage/drums/drum_top/side" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json new file mode 100644 index 00000000000..8313c9ee31c --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/auto_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_full_auto_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json new file mode 100644 index 00000000000..be641ecadb9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/cleaning_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_cleaning_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json index b98c415786b..4de29d786ad 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/coke_oven_hatch.json @@ -1,30 +1,30 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "gtceu:block/casings/solid/machine_coke_bricks", - "2": "gtceu:block/overlay/machine/overlay_hatch", - "particle": "gtceu:block/casings/solid/machine_coke_bricks" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"texture": "#1", "cullface": "north"}, - "east": {"texture": "#1", "cullface": "east"}, - "south": {"texture": "#1", "cullface": "south"}, - "west": {"texture": "#1", "cullface": "west"}, - "up": {"texture": "#1", "cullface": "up"}, - "down": {"texture": "#1", "cullface": "down"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"texture": "#2", "cullface": "north"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "particle": "#all", + "all": "gtceu:block/casings/solid/machine_coke_bricks", + "overlay": "gtceu:block/overlay/machine/overlay_hatch" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "north": { "texture": "#all", "cullface": "north" }, + "east": { "texture": "#all", "cullface": "east" }, + "south": { "texture": "#all", "cullface": "south" }, + "west": { "texture": "#all", "cullface": "west" }, + "up": { "texture": "#all", "cullface": "up" }, + "down": { "texture": "#all", "cullface": "down" } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + } + ] } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json index b43a7e5775c..6590ae7d5cd 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/computation_data_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json new file mode 100644 index 00000000000..38920d6e068 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/configurable_maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance_configurable", + "overlay_2": "gtceu:block/void" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json index c9acf427257..2f1a86d4807 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json index c01f0e74438..e6fd7bb232e 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/data_access_hatch_creative.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_creative", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_creative_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_creative", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_creative_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json deleted file mode 100644 index af8de97cd8a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json deleted file mode 100644 index 932c4733354..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_hatch.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json new file mode 100644 index 00000000000..a4ed4b44d28 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json new file mode 100644 index 00000000000..ac78fb16806 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json deleted file mode 100644 index 4c70d125060..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json deleted file mode 100644 index 0408e48e593..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_16a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json deleted file mode 100644 index bf7829f7b2a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_4a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json deleted file mode 100644 index eab2b5af883..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.input_64a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json deleted file mode 100644 index f1906442ae1..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json deleted file mode 100644 index 6755eddb8c0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_16a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json deleted file mode 100644 index 049199482b0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_4a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json deleted file mode 100644 index 6c945db68d7..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_hatch.output_64a.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json new file mode 100644 index 00000000000..2ec76854c12 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json new file mode 100644 index 00000000000..7fb34dbe35a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json new file mode 100644 index 00000000000..4f2728cb396 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json new file mode 100644 index 00000000000..60ece75e5f3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json new file mode 100644 index 00000000000..4fe025e4248 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json new file mode 100644 index 00000000000..a600fdd0d6f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json new file mode 100644 index 00000000000..c096bd42e82 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json new file mode 100644 index 00000000000..6f54bf2e834 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json deleted file mode 100644 index 53507ef4b10..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json deleted file mode 100644 index 92a6b63a49f..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_4x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json deleted file mode 100644 index 28b20c7cbee..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.export_9x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json deleted file mode 100644 index cd286dfd57a..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json deleted file mode 100644 index 80c3549785c..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_4x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json deleted file mode 100644 index 15d270fed85..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_hatch.import_9x.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json index 49e6c6c4b62..00323340941 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json @@ -1,28 +1,40 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_fluid_hatch_input": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", - "overlay_fluid_hatch_output": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_input", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_output", "cullface": "south"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_fluid_hatch_input": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", + "overlay_fluid_hatch_output": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, 0, -0.002 ], + "to": [ 16.002, 16, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } + } + }, + { + "from": [ -0.004, 0, -0.004 ], + "to": [ 16.004, 16, 16.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_input", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_output", "cullface": "south" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/hull.json b/src/main/resources/assets/gtceu/models/block/machine/part/hull.json index d8b4d48e684..c906ffa153f 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/hull.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/hull.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" - } + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json deleted file mode 100644 index 35252549e1c..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.export.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json deleted file mode 100644 index e06efaaf638..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_bus.import.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive_color_ring", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_hatch", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json index c908aed222f..fead829d98f 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json @@ -1,28 +1,40 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "overlay_item_hatch_input": "gtceu:block/overlay/machine/overlay_item_hatch_input", - "overlay_item_hatch_output": "gtceu:block/overlay/machine/overlay_item_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_input", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_output", "cullface": "south"} - } - } - ] + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_item_hatch_input": "gtceu:block/overlay/machine/overlay_item_hatch_input", + "overlay_item_hatch_output": "gtceu:block/overlay/machine/overlay_item_hatch_output", + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, 0, -0.002 ], + "to": [ 16.002, 16, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } + } + }, + { + "from": [ -0.004, 0, -0.004 ], + "to": [ 16.004, 16, 16.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_input", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_output", "cullface": "south" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json b/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json deleted file mode 100644 index 0fb707de57e..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_input_box.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - 10, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [11, 12, 13, 14] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json b/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json deleted file mode 100644 index ca0aafa82f8..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/kinetic_output_box.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", - "gearbox": "gtceu:block/machines/gearbox", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1} - } - }, - { - "from": [2, 0, 16], - "to": [14, 2, 16], - "faces": { - "south": {"uv": [2, 14, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 16], - "to": [14, 16, 16], - "faces": { - "south": {"uv": [2, 0, 14, 2], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 0, 16], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [14, 0, 16, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [0, 0, 16], - "to": [2, 16, 16], - "faces": { - "south": {"uv": [0, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#gearbox"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay"} - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 16], - "faces": { - "down": {"uv": [14, 0, 2, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 16], - "faces": { - "up": {"uv": [2, 0, 14, 16], "texture": "#side", "tintindex": 1} - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 16], - "faces": { - "west": {"uv": [0, 2, 16, 14], "texture": "#side", "tintindex": 1} - } - } - ], - "groups": [ - 0, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [1, 2, 3, 4] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [] - }, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [5, 6, 7, 8] - }, - 9, - 10, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [11, 12, 13, 14] - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json deleted file mode 100644 index c3d15d16657..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.source.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_source", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json deleted file mode 100644 index c372e303fce..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_hatch.target.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/tinted/front_2", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_target", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json new file mode 100644 index 00000000000..f9b598d7dc0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_laser_source", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json new file mode 100644 index 00000000000..321d713a420 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/tinted/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_laser_target", + "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json deleted file mode 100644 index 22aecd984d0..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.cleaning.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_cleaning", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_cleaning_emissive" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json deleted file mode 100644 index 89420df6344..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.configurable.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_configurable", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_configurable" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json deleted file mode 100644 index 120284326b9..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.full_auto.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance_full_auto", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_maintenance_full_auto_emissive" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json deleted file mode 100644 index 268a3b2d47d..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "particle": "gtceu:block/overlay/machine/overlay_maintenance", - "overlay": "gtceu:block/overlay/machine/overlay_maintenance" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json new file mode 100644 index 00000000000..7be8d05ebd9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/maintenance_hatch.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_maintenance", + "overlay_2": "gtceu:block/void" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json deleted file mode 100644 index be6ccc04202..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.export.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_color_ring", - "textures": { - "particle": "#overlay_fluid_hatch", - "overlay": "gtceu:block/overlay/appeng/me_output_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json deleted file mode 100644 index f3e22bd0611..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_fluid_hatch.import.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_color_ring", - "textures": { - "particle": "#overlay_fluid_hatch", - "overlay": "gtceu:block/overlay/appeng/me_input_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json deleted file mode 100644 index fb04629c0c6..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.export.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_color_ring", - "textures": { - "particle": "#overlay_item_hatch", - "overlay": "gtceu:block/overlay/appeng/me_output_bus" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json deleted file mode 100644 index 26a4541c404..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_item_bus.import.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front_color_ring", - "textures": { - "particle": "#overlay_item_hatch", - "overlay": "gtceu:block/overlay/appeng/me_input_bus" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json deleted file mode 100644 index 6d7a0e0cb8b..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json b/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json deleted file mode 100644 index d28abf39960..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/me_pattern_buffer_proxy.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json index 9658351086b..492b3a5f74e 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/muffler_hatch.json @@ -1,6 +1,6 @@ { - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_muffler" - } + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_muffler" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json b/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json deleted file mode 100644 index 860efa12b65..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/machines/object_holder/overlay_front" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json b/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json deleted file mode 100644 index bcbb9e60e93..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/part/object_holder_active.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/machines/object_holder/overlay_front_active" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json index 2cbd271bc2d..6590ae7d5cd 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/optical_data_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/front_emissive", - "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", - "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_data_hatch_optical", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_data_hatch_optical_emissive" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json index c517f0a9e2d..d3230d99487 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json @@ -1,23 +1,11 @@ { - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/pump_deck/side", - "top": "gtceu:block/casings/pump_deck/top", - "bot": "gtceu:block/casings/pump_deck/bottom", - "side": "gtceu:block/casings/pump_deck/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"texture": "#side", "cullface": "north"}, - "east": {"texture": "#side", "cullface": "east"}, - "south": {"texture": "#side", "cullface": "south"}, - "west": {"texture": "#side", "cullface": "west"}, - "up": {"texture": "#top", "cullface": "up"}, - "down": {"texture": "#bot", "cullface": "down"} - } + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "bottom": "gtceu:block/casings/pump_deck/bottom", + "top": "gtceu:block/casings/pump_deck/top", + "side": "gtceu:block/casings/pump_deck/side", + + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" } - ] -} +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json index 40169d3aa40..3c4495f04b5 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json @@ -1,6 +1,6 @@ { - "parent": "gtceu:block/overlay/front", - "textures": { - "overlay": "gtceu:block/cover/overlay_pump" - } + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay": "gtceu:block/cover/overlay_pump" + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json b/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json deleted file mode 100644 index 1a19a1d9eb1..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/pump_machine.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "gtceu:block/casings/voltage/lv/side", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "side": "gtceu:block/casings/voltage/lv/side", - "screen": "gtceu:block/overlay/machine/overlay_screen", - "screen_emissive": "gtceu:block/overlay/machine/overlay_screen_emissive", - "hatch": "gtceu:block/overlay/machine/overlay_hatch", - "pump": "gtceu:block/overlay/machine/overlay_adv_pump" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen", "cullface": "up" } - } - }, - { - "from": [0, 16, 0], - "to": [16, 16, 16], - "faces": { - "up": {"texture": "#screen_emissive", "cullface": "up", "tintindex": -101, "emissivity": 15 } - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "down": {"texture": "#hatch", "cullface": "down" }, - "west": {"texture": "#pump", "cullface": "west" }, - "east": {"texture": "#pump", "cullface": "east" }, - "south": {"texture": "#pump", "cullface": "south" } - } - } - ] -} diff --git a/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json b/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json deleted file mode 100644 index daa9024b5e9..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/quantum_chest.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_qchest_emissive", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json b/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json deleted file mode 100644 index d9ece8b6c75..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/quantum_tank.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass", - "overlay_qchest": "gtceu:block/overlay/machine/overlay_qtank_emissive", - "bottom": "gtceu:block/casings/voltage/lv/bottom", - "top": "gtceu:block/casings/voltage/lv/top", - "particle": "gtceu:block/casings/voltage/lv/side", - "side": "gtceu:block/casings/voltage/lv/side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east", "tintindex": 1}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south", "tintindex": 1}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west", "tintindex": 1}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up", "tintindex": 1}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down", "tintindex": 1} - } - }, - { - "from": [2, 2, 1], - "to": [14, 14, 1], - "shade": false, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north"} - } - }, - { - "from": [4, 10, 1], - "to": [9, 12, 1], - "shade": false, - "faces": { - "north": {"uv": [4, 4, 12, 7], "texture": "#overlay_qchest", "cullface": "north", "tintindex": -101, "emissivity": 15} - } - }, - { - "from": [2, 0, 0], - "to": [14, 2, 0], - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 16, 0], - "faces": { - "north": {"uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [14, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [0, 0, 0], - "to": [2, 16, 0], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [2, 14, 15], - "faces": { - "east": {"uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 14, 0], - "to": [14, 14, 15], - "faces": { - "down": {"uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 0], - "to": [14, 2, 15], - "faces": { - "up": {"uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [14, 2, 0], - "to": [14, 14, 15], - "faces": { - "west": {"uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } - } - }, - { - "from": [2, 2, 15], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } - } - } - ], - "groups": [ - 0, - 1, - 2, - { - "name": "group", - "origin": [0, 0, 0], - "color": 0, - "children": [3, 4, 5, 6] - }, - { - "name": "group", - "origin": [8, 8, 8], - "color": 0, - "children": [7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json new file mode 100644 index 00000000000..4b0b29981a3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "textures": { + "all": "gtceu:block/storage/crates/metal_crate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json new file mode 100644 index 00000000000..1cc7fb6889f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/metal_crate_taped.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/all", + "textures": { + "bot_all": "gtceu:block/storage/crates/metal_crate", + "top_all": "gtceu:block/overlay/machine/overlay_crate_taped" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json new file mode 100644 index 00000000000..1e697968bcc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "gtceu:block/storage/crates/wooden_crate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json new file mode 100644 index 00000000000..e562e128aa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/crate/wooden_crate_taped.json @@ -0,0 +1,7 @@ +{ + "parent": "gtceu:block/cube_2_layer/all", + "textures": { + "bot_all": "gtceu:block/storage/crates/wooden_crate", + "top_all": "gtceu:block/overlay/machine/overlay_crate_taped" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json new file mode 100644 index 00000000000..0361a0369f8 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json @@ -0,0 +1,56 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "textures": { + "overlay_front": "gtceu:block/void", + "overlay_back": "gtceu:block/void", + "overlay_top": "gtceu:block/void", + "overlay_bottom": "gtceu:block/void", + "overlay_side": "gtceu:block/void", + + "overlay_front_emissive": "gtceu:block/void", + "overlay_back_emissive": "gtceu:block/void", + "overlay_top_emissive": "gtceu:block/void", + "overlay_bottom_emissive": "gtceu:block/void", + "overlay_side_emissive": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json new file mode 100644 index 00000000000..46a24c91d17 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json @@ -0,0 +1,16 @@ +{ + "parent": "gtceu:block/machine/template/overlay/cube_all/sided", + "textures": { + "overlay_front": "#overlay", + "overlay_back": "#overlay", + "overlay_top": "#overlay", + "overlay_bottom": "#overlay", + "overlay_side": "#overlay", + + "overlay_front_emissive": "#overlay_emissive", + "overlay_back_emissive": "#overlay_emissive", + "overlay_top_emissive": "#overlay_emissive", + "overlay_bottom_emissive": "#overlay_emissive", + "overlay_side_emissive": "#overlay_emissive" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json b/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json new file mode 100644 index 00000000000..9b47e81a72e --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/drum/metal_drum.json @@ -0,0 +1,11 @@ +{ + "parent": "gtceu:block/cube_2_layer/tinted_bot/bottom_top", + "textures": { + "bot_bottom": "gtceu:block/storage/drums/drum/bottom", + "bot_top": "gtceu:block/storage/drums/drum/top", + "bot_side": "gtceu:block/storage/drums/drum/side", + "top_bottom": "gtceu:block/storage/drums/drum_top/bottom", + "top_top": "gtceu:block/storage/drums/drum_top/top", + "top_side": "gtceu:block/storage/drums/drum_top/side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json b/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json new file mode 100644 index 00000000000..358b88e44bf --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/drum/wooden_drum.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "gtceu:block/storage/drums/wooden_drum/bottom", + "top": "gtceu:block/storage/drums/wooden_drum/top", + "side": "gtceu:block/storage/drums/wooden_drum/side" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json new file mode 100644 index 00000000000..11bed4ecebb --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down" }, + "up": { "texture": "#top", "cullface": "up" }, + "north": { "texture": "#front", "cullface": "north" }, + "south": { "texture": "#back", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json new file mode 100644 index 00000000000..c02f2f1a781 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json @@ -0,0 +1,58 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", + "pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe_in", "rotation": 0, "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe_out", "rotation": 0, "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 0, "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 180, "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 90, "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay", "rotation": 270, "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 0, "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 180, "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 90, "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 270, "cullface": "east", "tintindex": -101 } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "faces": { + "north": { "texture": "#hatch_in", "cullface": "north" }, + "south": { "texture": "#hatch_out", "cullface": "south" } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json new file mode 100644 index 00000000000..0ec079cff71 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json @@ -0,0 +1,48 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#side", + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "screen": "gtceu:block/overlay/machine/overlay_screen", + "screen_emissive": "gtceu:block/overlay/machine/overlay_screen_emissive", + "hatch": "gtceu:block/overlay/machine/overlay_hatch", + "pump": "gtceu:block/overlay/machine/overlay_adv_pump" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#screen", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#hatch", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "east" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pump", "cullface": "south" } + } + }, + { + "from": [ 0, 16, 0 ], + "to": [ 16, 16.004, 16 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#screen_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json new file mode 100644 index 00000000000..78d757bce06 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/creative_container.json @@ -0,0 +1,10 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "bottom": "gtceu:block/casings/voltage/max/bottom", + "top": "gtceu:block/casings/voltage/max/top", + "side": "gtceu:block/casings/voltage/max/side", + + "overlay_container": "gtceu:block/overlay/machine/overlay_creativecontainer_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json new file mode 100644 index 00000000000..8d2fd9fcb5d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_chest.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "overlay_container": "gtceu:block/overlay/machine/overlay_qchest_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json new file mode 100644 index 00000000000..2283de5dd84 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_container.json @@ -0,0 +1,117 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "particle": "#side", + "overlay_screen": "gtceu:block/overlay/machine/overlay_screen_glass" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 1 ], + "to": [ 14, 14, 1 ], + "shade": false, + "faces": { + "north": { "uv": [2, 2, 14, 14], "texture": "#overlay_screen", "cullface": "north" } + } + }, + { + "from": [ 4, 10, 1 ], + "to": [ 9, 12, 1 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [4, 4, 12, 7], "texture": "#overlay_container", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 2, 0, 0 ], + "to": [ 14, 2, 0 ], + "faces": { + "north": { "uv": [2, 14, 14, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 2, 14, 0 ], + "to": [ 14, 16, 0 ], + "faces": { + "north": { "uv": [2, 0, 14, 2], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 14, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "uv": [0, 0, 2, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 2, 16, 0 ], + "faces": { + "north": { "uv": [14, 0, 16, 16], "texture": "#side", "cullface": "north", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 0 ], + "to": [ 2, 14, 15 ], + "faces": { + "east": { "uv": [1, 2, 16, 14], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 14, 0 ], + "to": [ 14, 14, 15 ], + "faces": { + "down": { "uv": [14, 1, 2, 16], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 0 ], + "to": [ 14, 2, 15 ], + "faces": { + "up": { "uv": [2, 0, 14, 15], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 14, 2, 0 ], + "to": [ 14, 14, 15 ], + "faces": { + "west": { "uv": [0, 2, 15, 14], "texture": "#side", "tintindex": 1 } + } + }, + { + "from": [ 2, 2, 15 ], + "to": [ 14, 14, 15 ], + "faces": { + "north": { "uv": [2, 2, 14, 14], "texture": "#side", "tintindex": 1 } + } + } + ], + "groups": [ + 0, + 1, + 2, + { + "name": "screen", + "origin": [0, 0, 0], + "color": 0, + "children": [3, 4, 5, 6] + }, + { + "name": "inside", + "origin": [8, 8, 8], + "color": 0, + "children": [7, 8, 9, 10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json new file mode 100644 index 00000000000..2bc7b415215 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/quantum/quantum_tank.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/quantum/quantum_container", + "textures": { + "overlay_container": "gtceu:block/overlay/machine/overlay_qtank_emissive" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json new file mode 100644 index 00000000000..25deda6664d --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json @@ -0,0 +1,27 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_rotor_holder" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.002 ], + "to": [ 16, 16, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json new file mode 100644 index 00000000000..00a37d14073 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json @@ -0,0 +1,23 @@ +{ + "parent": "block/block", + "textures": { + "base": "gtceu:block/multiblock/large_turbine/base_bg", + "ring": "gtceu:block/multiblock/large_turbine/base_ring" + }, + "elements": [ + { + "from": [ -16, -16, -0.004 ], + "to": [ 32, 32, -0.004 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ring", "cullface": "north" } + } + }, + { + "from": [ -16, -16, -0.006 ], + "to": [ 32, 32, -0.006 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#base", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json new file mode 100644 index 00000000000..0d32166ff34 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json @@ -0,0 +1,15 @@ +{ + "parent": "block/block", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_idle" + }, + "elements": [ + { + "from": [ -16, -16, -0.008 ], + "to": [ 32, 32, -0.008 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rotor", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json new file mode 100644 index 00000000000..dbce9c611ed --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json @@ -0,0 +1,14 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle", + "elements": [ + { + "from": [ -16, -16, -0.008 ], + "to": [ 32, 32, -0.008 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rotor", "cullface": "north", "tintindex": -103 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json new file mode 100644 index 00000000000..0acb60d5e12 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_spinning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json new file mode 100644 index 00000000000..44c6dd4f150 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_spinning_emissive.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive", + "textures": { + "rotor": "gtceu:block/multiblock/large_turbine/rotor_spinning" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json new file mode 100644 index 00000000000..d4b94e8fd0c --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json @@ -0,0 +1,56 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "overlay_front": "gtceu:block/void", + "overlay_back": "gtceu:block/void", + "overlay_top": "gtceu:block/void", + "overlay_bottom": "gtceu:block/void", + "overlay_side": "gtceu:block/void", + + "overlay_front_emissive": "gtceu:block/void", + "overlay_back_emissive": "gtceu:block/void", + "overlay_top_emissive": "gtceu:block/void", + "overlay_bottom_emissive": "gtceu:block/void", + "overlay_side_emissive": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json new file mode 100644 index 00000000000..4e9dfa8f58a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json @@ -0,0 +1,16 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "overlay_front": "#overlay", + "overlay_back": "#overlay", + "overlay_top": "#overlay", + "overlay_bottom": "#overlay", + "overlay_side": "#overlay", + + "overlay_front_emissive": "#overlay_emissive", + "overlay_back_emissive": "#overlay_emissive", + "overlay_top_emissive": "#overlay_emissive", + "overlay_bottom_emissive": "#overlay_emissive", + "overlay_side_emissive": "#overlay_emissive" + } +} diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json new file mode 100644 index 00000000000..b25cde6da73 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json @@ -0,0 +1,53 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "textures": { + "particle": "#side", + + "bottom": "gtceu:block/casings/voltage/lv/bottom", + "top": "gtceu:block/casings/voltage/lv/top", + "side": "gtceu:block/casings/voltage/lv/side", + + "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_tinted": "gtceu:block/void" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_io", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "east" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_tinted", "cullface": "north", "tintindex": 2 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "south", "tintindex": 3 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "up", "tintindex": 3 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "down", "tintindex": 3 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "west", "tintindex": 3 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "east", "tintindex": 3 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json b/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json deleted file mode 100644 index 501e208f99c..00000000000 --- a/src/main/resources/assets/gtceu/models/block/machine/wooden_drum.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent": "gtceu:block/cube/default", - "textures": { - "particle": "gtceu:block/storage/drums/wooden_drum/side", - "down": "gtceu:block/storage/drums/wooden_drum/bottom", - "up": "gtceu:block/storage/drums/wooden_drum/top", - "north": "gtceu:block/storage/drums/wooden_drum/side", - "east": "gtceu:block/storage/drums/wooden_drum/side", - "south": "gtceu:block/storage/drums/wooden_drum/side", - "west": "gtceu:block/storage/drums/wooden_drum/side" - } -} diff --git a/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json b/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json index b72c2a18c89..f3e2aec258c 100644 --- a/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json +++ b/src/main/resources/assets/gtceu/models/block/material_sets/dull/block.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "parent": "gtceu:block/cube_2_layer/tinted_both/all_translucent", "textures": { "bot_all": "gtceu:block/material_sets/dull/block", "top_all": "gtceu:block/material_sets/dull/block_secondary" diff --git a/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json b/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json index 81993fb655a..f0ea3273608 100644 --- a/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json +++ b/src/main/resources/assets/gtceu/models/block/material_sets/fine/block.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube_2_layer/tinted_both/all", + "parent": "gtceu:block/cube_2_layer/tinted_both/all_translucent", "textures": { "bot_all": "gtceu:block/material_sets/fine/block", "top_all": "gtceu:block/material_sets/fine/block_secondary" diff --git a/src/main/resources/assets/gtceu/models/block/ore_emissive.json b/src/main/resources/assets/gtceu/models/block/ore_emissive.json index 546ea95ec3f..b8b1206ad39 100644 --- a/src/main/resources/assets/gtceu/models/block/ore_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/ore_emissive.json @@ -1,4 +1,5 @@ { + "parent": "block/block", "loader": "forge:composite", "textures": { @@ -18,24 +19,24 @@ "from": [0, 0, 0 ], "to": [16, 16, 16], "faces": { - "down": { "texture": "#layer0", "cullface": "down", "tintindex": -101 }, - "up": { "texture": "#layer0", "cullface": "up", "tintindex": -101 }, + "down": { "texture": "#layer0", "cullface": "down", "tintindex": -101 }, + "up": { "texture": "#layer0", "cullface": "up", "tintindex": -101 }, "north": { "texture": "#layer0", "cullface": "north", "tintindex": -101 }, "south": { "texture": "#layer0", "cullface": "south", "tintindex": -101 }, - "west": { "texture": "#layer0", "cullface": "west", "tintindex": -101 }, - "east": { "texture": "#layer0", "cullface": "east", "tintindex": -101 } + "west": { "texture": "#layer0", "cullface": "west", "tintindex": -101 }, + "east": { "texture": "#layer0", "cullface": "east", "tintindex": -101 } } }, { "from": [0, 0, 0 ], "to": [16, 16, 16], "faces": { - "down": { "texture": "#layer1", "cullface": "down", "tintindex": -111 }, - "up": { "texture": "#layer1", "cullface": "up", "tintindex": -111 }, - "north": { "texture": "#layer1", "cullface": "north", "tintindex": -111 }, - "south": { "texture": "#layer1", "cullface": "south", "tintindex": -111 }, - "west": { "texture": "#layer1", "cullface": "west", "tintindex": -111 }, - "east": { "texture": "#layer1", "cullface": "east", "tintindex": -111 } + "down": { "texture": "#layer1", "cullface": "down", "tintindex": -102 }, + "up": { "texture": "#layer1", "cullface": "up", "tintindex": -102 }, + "north": { "texture": "#layer1", "cullface": "north", "tintindex": -102 }, + "south": { "texture": "#layer1", "cullface": "south", "tintindex": -102 }, + "west": { "texture": "#layer1", "cullface": "west", "tintindex": -102 }, + "east": { "texture": "#layer1", "cullface": "east", "tintindex": -102 } } } ] @@ -44,37 +45,5 @@ "item_render_order": [ "base_stone", "ore_texture" - ], - "display": { - "gui": { - "rotation": [ 30, 225, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0], - "scale":[ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.5, 0.5, 0.5 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 45, 0 ], - "translation": [ 0, 2.5, 0], - "scale": [ 0.375, 0.375, 0.375 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.40, 0.40, 0.40 ] - }, - "firstperson_lefthand": { - "rotation": [ 0, 225, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.40, 0.40, 0.40 ] - } - } + ] } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json new file mode 100644 index 00000000000..b66a25ff627 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json @@ -0,0 +1,31 @@ +{ + "parent": "gtceu:block/overlay/front", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json new file mode 100644 index 00000000000..e6a72333ef0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/front_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json new file mode 100644 index 00000000000..2a9bfdb7dfc --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/overlay/2_layer/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ -0.006, -0.006, -0.006 ], + "to": [ 16.006, 16.006, -0.006 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json new file mode 100644 index 00000000000..61f2af55ffd --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json @@ -0,0 +1,31 @@ +{ + "parent": "gtceu:block/overlay/front", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json new file mode 100644 index 00000000000..e5f6d51ab92 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/top_emissive", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, 16.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "up" } + } + }, + { + "from": [ -0.004, 16.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index c614fd680bd..389928908e8 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -1,12 +1,23 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/cube/tinted/bottom_top", "elements": [ { - "from": [-0.002, -0.002, -0.002], - "to": [16.002, 16.002, -0.002], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json index cde11c491df..48951454409 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -1,22 +1,36 @@ { - "parent": "overlay/front", - "textures": { - "overlay_color": "gtceu:block/overlay/machine/overlay_color" - }, - "elements": [ - { - "from": [-0.002, -0.002, -0.002], - "to": [16.002, 16.002, -0.002], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } - } + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" }, - { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], - "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9, "emissivity": 15 } - } - } - ] + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index 7935c156784..f582daa5a20 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -1,19 +1,25 @@ { - "credit": "Made with Blockbench", - "parent": "block/block", + "parent": "gtceu:block/cube/tinted/bottom_top", "elements": [ { - "from": [-0.002, -0.002, -0.002], - "to": [16.002, 16.002, -0.002], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } } }, { - "from": [-0.004, -0.004, -0.004], - "to": [16.004, 16.004, -0.004], + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101, "emissivity": 15} + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json index 7707d32b8ab..2ed7a9a8af8 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -5,24 +5,33 @@ }, "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101, "emissivity": 15 } + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } } }, { - "from": [ -0.006, -0.006, -0.006 ], - "to": [ 16.006, 16.006, -0.006 ], + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9, "emissivity": 15 } + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json new file mode 100644 index 00000000000..0e1f12fa7d4 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json @@ -0,0 +1,19 @@ +{ + "parent": "gtceu:block/overlay/only/front", + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json new file mode 100644 index 00000000000..0e2aea71203 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json @@ -0,0 +1,21 @@ +{ + "parent": "gtceu:block/overlay/only/front_emissive", + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json new file mode 100644 index 00000000000..49e96e04546 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json @@ -0,0 +1,33 @@ +{ + "parent": "gtceu:block/overlay/only/2_layer/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ -0.006, -0.006, -0.006 ], + "to": [ 16.006, 16.006, -0.006 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json new file mode 100644 index 00000000000..5214a42eff3 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json @@ -0,0 +1,12 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json new file mode 100644 index 00000000000..976bc437104 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/overlay/only/front", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json new file mode 100644 index 00000000000..be0bdfbb768 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json @@ -0,0 +1,14 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json new file mode 100644 index 00000000000..e93de80e011 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json @@ -0,0 +1,26 @@ +{ + "parent": "gtceu:block/overlay/only/front_emissive", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ -0.002, -0.002, -0.002 ], + "to": [ 16.002, 16.002, -0.002 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, -0.004 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json b/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json deleted file mode 100644 index be898cd09d8..00000000000 --- a/src/main/resources/assets/gtceu/models/block/overlay/tinted/front_2.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "elements": [ - { - "from": [-0.001, -0.001, -0.001], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 0], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json new file mode 100644 index 00000000000..ae1522ac9c9 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json @@ -0,0 +1,26 @@ +{ + "parent": "gtceu:block/cube/tinted/bottom_top", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.002, 16.002, -0.002 ], + "to": [ 16.002, 16.002, 16.002 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "cullface": "up", "tintindex": -101 } + } + } + ] +} diff --git a/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json b/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json index 2b3fb311837..50ae842ddbc 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json +++ b/src/main/resources/assets/gtceu/models/block/variant/assembly_line.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/mechanic/machine_casing_assembly_line" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json index 1f1790141bd..a660c6932bf 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json +++ b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/electrolytic_cell" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json index ad77a8bfd89..adc47ecd277 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/electrolytic_cell_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/electrolytic_cell_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json b/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json index 334891c24f7..99604a8dfae 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json +++ b/src/main/resources/assets/gtceu/models/block/variant/engine_intake.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_engine_intake" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json b/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json index 52f52e55c27..bc13793388a 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/engine_intake_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_engine_intake_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json index d96c2ed6a93..8e555361144 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json +++ b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_extreme_engine_intake" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json index 23a00b27ea8..c82e1f5a8ac 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json +++ b/src/main/resources/assets/gtceu/models/block/variant/extreme_engine_intake_active.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/pipe/machine_casing_extreme_engine_intake_active" } diff --git a/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json b/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json index 9dcf52de8ec..131ff9f94e8 100644 --- a/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json +++ b/src/main/resources/assets/gtceu/models/block/variant/heat_vent.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/all", + "parent": "block/cube_all", "textures": { "all": "gtceu:block/casings/unique/heat_vent" } diff --git a/src/main/resources/assets/gtceu/models/item/facade_cover.json b/src/main/resources/assets/gtceu/models/item/facade_cover.json new file mode 100644 index 00000000000..4c4240eda22 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/item/facade_cover.json @@ -0,0 +1,48 @@ +{ + "loader": "gtceu:facade", + "default_model": { + "parent": "block/block", + "textures": { + "side": "gtceu:block/material_sets/dull/wire_side", + "cover": "minecraft:block/stone" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 1 ], + "faces": { + "down": { "texture": "#side", "cullface": "down" }, + "up": { "texture": "#side", "cullface": "up" }, + "north": { "texture": "#cover", "cullface": "north" }, + "south": { "texture": "#side", "cullface": "south" }, + "west": { "texture": "#side", "cullface": "west" }, + "east": { "texture": "#side", "cullface": "east" } + } + } + ], + "display": { + "firstperson_righthand": { + "rotation": [ 0, 135, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.4, 0.4, 0.4 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + } + }, + "display": { + "firstperson_righthand": { + "rotation": [ 0, 135, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.4, 0.4, 0.4 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 315, 0 ], + "translation": [ 0, 0, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + } +} diff --git a/src/main/resources/assets/gtceu/textures/block/cable/wire.png b/src/main/resources/assets/gtceu/textures/block/cable/wire.png deleted file mode 100644 index e00d21e78a9d2a107f49ba8f6fa1b2f11141f543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p<)L71^VC4M4M@SCTLV~B-+?_@*1W&GRMfh!?XXKbTJ`!S2eryBb-C0DJY6Z_w=F!G)YO^9=8d{!e~b(=g-tO=YJkufx}F+G_7{I__J@e~*W44$rjF6*2UngI6~kxc*q diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_advanced_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_advanced_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_activity_detector_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/activity_detector_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm.png b/src/main/resources/assets/gtceu/textures/block/cover/arm.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/arm_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_arm_inverted_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/arm_inverted_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_controller.png b/src/main/resources/assets/gtceu/textures/block/cover/controller.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_controller.png rename to src/main/resources/assets/gtceu/textures/block/cover/controller.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/overlay_conveyor_inverted_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/cover/conveyor_inverted_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png b/src/main/resources/assets/gtceu/textures/block/cover/cover_pump_inverted.png deleted file mode 100644 index 1c3fa70ae0ee7da862f4be7ea623dff6c6b3299c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)xLr(~M(byqXtyv%AZxKPC&qku(wrn`7qViAn(RV`qyM`X-uKV*!1Mgx zKfLx5o;~#U_gi+mj3|mME-oU=GR0yMS(Xumr&kT5KqwSide`)5pFYjb-5;@{y`2ufAFsC=x68%U)D(aGHe1s| zjX`Tm3nx#UVBLlQ4pqVL^Yi7wgM@D0Ad|~eDwSSrU|ANbs?gQd#dI*pz~ClUc6W0# zcoqFono_xp&1QSCfglKYJk7|GghN$`Mx*5OdGtqVil#{>^O#Dd^70C7qKHFP=vnVDNA_4V~xZnq25G?63;U}=yn%R&$Y za=AQ_NTllBvi@tm8Xknh5qz44U6ODpDk(kn?|5+J$Prep?4)CbAFZ_&uh+}e)D&mV zoT+J{#-OvKgL7xk(%I9C$K~R|!UB`~_cJ?lm#u>vYnG{M7c9%-4Nc=sP2_Sd33h@L*wqhsk7p9$XGyV@>}Ce!h5-6@EXDGg%^cZt?M+Js1Hf*VNvG3%``!19jg2ky;Qy&t!-G(0hKGrVq;wt4>xGJiSu`8t!Hwx@jvhUV z+vURRZAQ~Hd~I#)o0#C#sZ%vA)EL-AkzX%e;`4p`Sifd1PmBV)cJJovkCSG^h@Smg>$LK7)nCzs9Q zaX64|w#ImHKN9BCy?g2K`{{kFm+iyDXqv|8XL}ptfnAcgJ$;=m!^6mugi$E4{rwLb z=RqtUM^zLeckeK~Z5x`eoo`N_Xq*QC;o18DsBRAcz1=;iio)e!uzo)HhX*@%eTb3G zpeGW%^X_{Xg#uljosIM0&*<-{ibBye`RT$1`UWMy0`@x*DCKV1qy!fba4!^@IN}qR;bB9pmlL_GGp>d|JS@b z*wmj$74TLqd460?(`ldY?Q5BFw{XU0&q*mt?TH#+^-E&acj|aQ zlv_H>kf(X&>!^K;HJm~=HOW=y=rCE`{A{Cm(=Vh&ZbNk+^P=47jjPI5ny&6hQgxVo zV3nWZ;|H~AD?@!Y3NctXw7k5-m>7NUkYK}^DK_U@I|8Pq7GG~IX5Z#|BKmZ+&U*#l z%P*@eYu_FGp87T{^qFCw8c);Hj3>W8=X5Rl@sCeoyRR~%f_tHkxTn0MbT>m;rc+At q_3uH>*GyGkzh|wtf4VpE4EMr26UG0td2ayvox#)9&t;ucLK6W0g@%3r literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..c7bba50036d16f2cd3d93463c3d451b8f52fea5c GIT binary patch literal 599 zcmV-d0;v6oP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940qjXcK~z{r?U%7m z0znXlPh(?&vE+`{H=waLme80OI}2cP_Nf#%wZVHdKr==k-6XR3wKvmDJGLiFdPo$ zIf^1gWmaJ09Uo3WJy$9fA^DN02sYr`OazQLjwMtLm$l9+qF4~X$RJep!b}A7Gs{}V z6bk}?2oS+LIbir9XJG^&hTpctTjoH!R-cKG5 z4rK3bFbF=U(;%!?-O-pozV?G&ulIW$K#oTv831xrt4SiUBk02k5H3cDyqJu~vWBdC zO4gqj6fWfwWj_E50&)-LLyv(cJx1<+pk&~OoP`m9j2C(UN6_bGSK8#j5Ao^#)+O-f z?m^}(Tpg7CV5?C$iKY%Vs2|{Eem~?GjNJVI5)nY~^N@uRfDEbCYPsv&Znsmbg~@@2 zNCP=JzxwlMb#+kogRMs4B$_(duztW1^cer@2LQsV#2Nv}7pKS44c6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/block_breaker/overlay_front_active.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a42bbc305b5b439fb099508ee251d94d9f18c6 GIT binary patch literal 1016 zcmVxFtgh0x#d1+xDMM*S`NE`@(8@7n! z7){d3t!tA(a& zRI62*%_h}q70a@y)oL^v4HQ)&ilW0i(6v0C=TR({kWx~qROoa%R4NtpLjLeuP!xsp zrE#Q`NEs7`AplVnA%wtp0}R7R1SI05lmJ{`xW=y=ci3I6lQT4grrVkOs+Q%qAv=JiA%Vyi(wc84^Bm$yaz9Q_#9ri|4kr~ z2Oh*o>aF{@pXCxAq&&DZGQ-=?-vH7cjJ{$rs!S&WQXb^Be5MCNRl0lN25zPY#bGlw z#FPi?_0>!do__L~?jF?Jdzl{8hDN%3VEIm_2kZ5f?jG#5b{K#4G1Qzm@IcL}bfOMR zOFvU{E@lUm%VqSN!%T{E0}oDBoxBHcefc`JZ?WCnr0F+k2kqWG2s;7qy!ak)Ob_mE zEoXWFboU^P{Y(#{u#*~M$^%7FGd<9Bt-A+7*v|Bz@B7=HV>f}AR`oS!dXQvn|jpIfxzwa!w<80HBouhf6361yX zKLU>Ff$dxUc~Hoi{du4svOnnC1Krg7^FVfFZypFuW%kM}!{#U(jWw3;-0uFr@J|oc ze%NEnXkptnu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png.mcmeta similarity index 56% rename from src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png.mcmeta index f201982c039..ceecb036fa8 100644 --- a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.mcmeta +++ b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_bottom.png.mcmeta @@ -1,5 +1,5 @@ { "animation": { - "frametime": 8 + "frametime": 2 } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png b/src/main/resources/assets/gtceu/textures/block/machines/high_pressure_steam_miner/overlay_down.png deleted file mode 100644 index bfcdac5e840b6cd518da2576c0f6f968c4126da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!4gjw#}Etuw-YaN9#G(Mxtu3>y+FOaNd5W+ z!zg`;gDc|SF6Td#_&|^SQscU1vhV*gr>0eEFBQ2s<@rU~D$;P; z%HV3Z&?4*8n-~w2&T!_KQk-{tW^RL7hoM)q?0@qH!DQ(d_dflU=6BIQ6l`^5&wK%p PR~S59{an^LB{Ts5itkRS diff --git a/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/machines/rock_crusher/overlay_front_active_emissive.png deleted file mode 100644 index 44b9733d7652f80371f35efab7daa3221f65dd78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>My0`@x*DCKV1qup#x;Tbd_$N!SE=~~XVKPWa0BRIqU|jA} RlMIw*@O1TaS?83{1OOwr8l3*~g2J9Ijv*HQ$r7xK6GVEL3=$H68U+{_m%G#? Q1Em=}UHx3vIVCg!0EcxPqyPW_ diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a42bbc305b5b439fb099508ee251d94d9f18c6 GIT binary patch literal 1016 zcmVxFtgh0x#d1+xDMM*S`NE`@(8@7n! z7){d3t!tA(a& zRI62*%_h}q70a@y)oL^v4HQ)&ilW0i(6v0C=TR({kWx~qROoa%R4NtpLjLeuP!xsp zrE#Q`NEs7`AplVnA%wtp0}R7R1SI05lmJ{`xW=y=ci3I6lQT4grrVkOs+Q%qAv=JiA%Vyi(wc84^Bm$yaz9Q_#9ri|4kr~ z2Oh*o>aF{@pXCxAq&&DZGQ-=?-vH7cjJ{$rs!S&WQXb^Be5MCNRl0lN25zPY#bGlw z#FPi?_0>!do__L~?jF?Jdzl{8hDN%3VEIm_2kZ5f?jG#5b{K#4G1Qzm@IcL}bfOMR zOFvU{E@lUm%VqSN!%T{E0}oDBoxBHcefc`JZ?WCnr0F+k2kqWG2s;7qy!ak)Ob_mE zEoXWFboU^P{Y(#{u#*~M$^%7FGd<9Bt-A+7*v|Bz@B7=HV>f}AR`oS!dXQvn|jpIfxzwa!w<80HBouhf6361yX zKLU>Ff$dxUc~Hoi{du4svOnnC1Krg7^FVfFZypFuW%kM}!{#U(jWw3;-0uFr@J|oc ze%NEnXkptnu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png.mcmeta similarity index 56% rename from src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta rename to src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png.mcmeta index f201982c039..ceecb036fa8 100644 --- a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.mcmeta +++ b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_bottom.png.mcmeta @@ -1,5 +1,5 @@ { "animation": { - "frametime": 8 + "frametime": 2 } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png b/src/main/resources/assets/gtceu/textures/block/machines/steam_miner/overlay_down.png deleted file mode 100644 index bfcdac5e840b6cd518da2576c0f6f968c4126da2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!4gjw#}Etuw-YaN9#G(Mxtu3>y+FOaNd5W+ z!zg`;gDc|SF6Td#_&|^SQscU1vhV*gr>0eEFBQ2s<@rU~D$;P; z%HV3Z&?4*8n-~w2&T!_KQk-{tW^RL7hoM)q?0@qH!DQ(d_dflU=6BIQ6l`^5&wK%p PR~S59{an^LB{Ts5itkRS diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png deleted file mode 100644 index df9f3e572537308e90805b330cafa97a06478295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1174 zcmV;H1Zn$;P)z1^hNTj)UVk zsAn}F930T?b}>y8+qTCK5JJf9?QL?o9Ezgw?AbGX-yg39A%x85^UTf7Q79C+eEBlj zY?h}_pPn8dgph_|Fg-oZ_3PKk<#HH?foT(-EK26F~P52 zzi72uD5K0jfBr;ORZPpX!r}1f3SPf{O`%Z0FbsU(=fQ&q05qFT zTCEnVtE+#Wfe=Eb(`i;$SGjrfCh>S2P1DF`v-JCY9zJ{sFnSNZe*H?f+r_dhEXyJi ziBPZCv2B~TZ{OnkK2M%J8P&jr#?@c(U}9q8d^`w(fLg7FWm$yJYF=Jm#xzX^g8_$! zhvW00SS(7%aoE_{pi-&OY&LoS{{8UB^nYbC8M(K&hpMW?<8gFd$F^;5-MV#pfDl67 zxpN2K_o>(G%+1ZA>-v9K8yO&kkiA}y`}gnj{P}b8`8*##e#CWMTCEmA5RB%*_wV0X zTwEj)iQsu2i9~`gU%pVSR@vX*r{C`n4=@blRVWlfQ4}JP2tg2#PN#YN_%W4Ag?_)! z{{H@-1B4JVnM~sQJ|`z993LN3tJQE_7uR)(Mx(5+uk+^3n?Eno+S;0Y`SK+~2zGXM zc=zrd-@biAQ50<3CY?@m@7_Ix5TizTp>cI?9u$j38H>fv_IU?bSy_?caF|di#O>R+ z&&GqLr6qZAaKO>g5rsm5R4O%ofDl4XPEOKpx6w2WRaI#=o8$4ITrSIeKF`+H7E@DG zxUNgD*F#m+(*sJSk~9p18#ivSu&_X>RAMj~u)DiUr_(u|2SE@}EEdV-a+sz`JRWCh zX^C#P%kJ*(@PL(-71?MsFin$KEJiAo!Y~X5g8{m(v$(i8x`Nr+*;k1~f@n1Q?vde$rQL3Gcz8&++a(+hGjx#*!(e7+1}P<1 zu3W(|40d*QI6gk+)2C0&&(G6tx9N7fqegh4arIaCfvT$K|6kBFjjLC$p8YvxaWLREarc^3XDwX)~;RBkconCdQ;c$5LeNe4d z>2x|sDT&2mD2jrVl18IJB9Y+k-MhmBGMUV)N~OZq))v)jm1?z0uh+x#JUq{1Fc>gD zKR=uY+uPe*yLJst)7aeHWMN@}lamwn_V)Pv`7^%n14A}(V`D>>%ViwL!LlqAMZvNx obX_NvO7ZB?BW7l1n3|g6A5DU)t`hh=0RR9107*qoM6N<$f>X~xrT_o{ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/1.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png deleted file mode 100644 index ee079ef35c951791cffc29f11b1e244c1721caee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2472 zcmWlbc~nyA8^@_3molXyLvzaUIB6643 z@%sAYG&MEbSS;T7IGrEcJF^nMyOSJ55$}UL)G(O^1d9L_eThU;_rR#eBlq$hWWw5< ztMmQC%D27?6evRXwzaiQZKUk+@G0XpxUc3i}pZIsV<@bf#C#L;B8w;yfb(L_Y~i*N^J6_rzWxQHB^M(2Z2;bimW~QvHZ0fq^u33av^YJ+Zy^+Yy zw>C2aALt&YO~qTrTQMN;yk6Nbb)KWM^D*Gr&mWXqTU%Y++*-Q2+?%m~)YR;8#Tg-}&WdcDltOiHRi?>)Rq?0}fd_6xqm+{gsRV>m!QD zI^Mv;FnzUq80m2sVec_y7s_r1icv)qmOu8lVVs5560#NGRJixoyLe6?O&TvSp~ z`FZ~DMyj0ESHYsm){C%ak4A6ED5?O5lo&L0{gY)-MakTjEFa11wInZTfb6_oOd?nu zhj2KY{KCQ`H2WevTg$r~U(wl#zIyd4x}w(eLakAIsR%uz#%_BzpdTvW&glH ze0X@)(2y&zGd(^1;lqbTLy?CZiWdZr1&Wv84&VbGst3sSyQ5a}O<-Y`yvo3AB1o>W zYIs!CE$92-5Ocdk*fm2D( z@USwE$CIX^_uhcGHI!~{CM}6L}s5%M*DAsAh~r?xH(fTwLzOsJ{#;;*ghD*G4X! zHaE|d{&m@;m^+Kb;q=rCS~whTPY?9Ul`GOO8RO&Q(siDDFS|Qh9ocGz zLam$R%u#!HOH_=?_Lu0LpzF36UupCPHb$7MO=(N-u~@9gX6&~X5)m!Vo&~Zyc)~MZ z>Hyl5m#czBaQenkHcpu%x*c=Z;J8}O3M;nVIW_gX-y@uOx;GCr2x#YMBC)=y=|I7J@ow{=<%`Y z5l2%*56BWiZWX9nq(`f(I|&5(NV?nCcZn2eP~qZbROXf>%NiZM&ImEhHRk48R2H2EgnR$K_bnhPX3MF}Y`GFP} z9hgq_NH{{yx2Y_`eDLMVJ@>s7d8ok%^ISkD(0qW=;`rafnw_k*9AQv5hE;Zb%v*wm z(yNe+j4J2*nYD%>T*j(g#Tvjspfw0S4%z?iod(T5b7m%d>gIPDCh>N5c3+6nCC)O8 zI&z`HWp&g}#SAzfiil|SU){3q4J!s)Bcq~(laqboc#sefX`#@+XK9J(!ixYI1f>I2 z`LShnb#6bIu0N z>K5y$=GDZgGZ>85!^7rQRpY?;=@dWJM$kcJd@3TGXQkD4_}t~@}-TOoZLK5 zGJfrGXsZy6Jb<{Ks;Vj(A-ID?v#ohCIjMEGzWK?M7mvGkovj#sC|A(wYU=9KuPaU~ zDJui;xqHE&Hy8}fs??=(Q}!y~mtw#)P?XF1^yyR4U_^9u^i-A#dTMG4;^6st`%7-N z?VeYr0NCpr8)HHt#-j53VyABtuhbnq2yg+~f`>|$eQap-ZSrp7A3-5aOj_I9d&S}t zU?fCUrZG#7pJ)xw$z7=w3koH*em+ zv@@ikla!f*hiTC8@Nj6B4HyYv%=wpp8xlF8Fq*w|rC%GQoJ1zqEyxs4{z&-@@h?|H zAg1mFXNc-@e>JH)THnjgR) O7zE?sX8*`GB=bM|iNiGj diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/2.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png deleted file mode 100644 index c9f52b917d2450cb980ad5a2efb289235dee7b92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmV;U1YG-xP)2Q9BgHTb9LHg1W`?DuCAu|HjvqfxwOYmVJbHV3SzBA{%0$U#vj`zjRTWLs07$3P z|7;SE#bTsVDc0B5QB{>>GD$X@C7;g&M6X`GinUE3grHn5bLrA0`uh5qn3$kcD&aT| z*RNmim_*6ta)e2>VefyA7vbnj5 zq9|==p#1-IDJ8wVy%>hU;NT#aFJC5~&!g-5wkhHlFJ8p5EXw6F#bS|6CPSf6;Of<@ z*tU%jf~~DBzJC4MHp!lLqoYTU?urLIc<>;anwpAS*WDQpY};mOX^G#zfAjI<$L@JB zH#f)T<|a}~#>U3j*x2aGBtAPki>j))u8VEkjE#-)^5sjueft)ztgN(s$^gonH*d&f zGPtfwxm>1Jt1&-6PovSGTCH|WqHJw#;W!SpT8;ht_fxOeSzBAfvMi*O9j_Blr_+>5 zC4Ap!W@d)vJ*Je z;}3BDYH;Sv8C=)p?%lhDVTfs(=(^6(&=BkE>%4#ep3k2@Z_k56hYoS>+&TLD`zaQS z3=a=esZ@|sa_7z+05nY_kw|o!=bm<~6DLmWt{;qyj1Z5)Sl97=Srl+TA zwOW))rS|<`adDAUDn(ykA3_Lnxg4ofin+NtR##VPG#ZSKj&9!%G)+U-bu>-GG);PX zdboG*9`$-1Ap~I<5{qqr3#C{rGBh;A;NT$1WRm;$@AKrz6VmB4!^6WIK75#1EVeBl z^CZ9fi;^)two%e+(im2D?jE;_?X&O>W9LK@7ZNf0@ zye~*8dHwn|ilPvU#YiL)SeC`flP9@y%=lSyvexIq|(SeAwBx>%OQ#>NKCX7jHJ{sXg3cXNl8Iz<2g002ovPDHLkV1j=^ BN^JlD diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/3.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png deleted file mode 100644 index 18454909b2ab9f6bb7400b67c630ec93b158ce36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2507 zcmWlbdpy(oAIDdAkc_z`E!SDj!jWBC#d1577A+i89|S>~{C zB&pV7F0qhX3uz%7b^L@O_e8(X@B4Uszu(8>`_KFPdA*+R*Za+Kp*X^n5K0gT1V%nh zaszKTxNQ~X!BgYujUvHI^RCv`OGm#$EH}~#0 zpNJ6VqV^Par|mRDl8!WOq%1A{#c2S*KEujmK-89dM!Uqf#X&n=o+2U_vphxc4RJoHa{Ie;M+`4_joR ztqiJH@cDHY%>L{SeBdK`59_4WcRso?7Ul?tuEd^{Pu)eOVh~xxt-1eyZuRx0)BmEPnf`AZlKCb=uXUQ^unysFB* zn)>1T`mdi?EsLDfx3{-tn&!VgZ=ahpQ^}CCgHs@&n4Fv(gjD8QP*~Vtgw|qfvK>%l zdpPv{JVETI=HPmNC`3m`C!EP7ncPIe6`69`IXPth!2POBbf&w>KG_G6Q>jY}oe;UT zb`?eDd7H~I<^1Zj^G-uO3na6vD=RAxo0_tRLc}3YzHG0L{|>2i|ID-%`E-1WFjTY; z;+S<0h8%r6Jj@dNq15-JwE7-1DC}NZ9lkWRz6B&0oQ;x=H=nC?M{@f$aymROU2>#S zk$Ih6Cd8`ty+<08hG)fob@!@F((IFi@vmOKl#dma#1Q)?CJeXq$^9K)m zVv9abOeDFRh!+_~XXLtuy8JkIykJZ4d_!PNk|^PrQE;3P9qa8^7;t;SsPG zlNM|?`#<)EDXj*T?p0Q4^+EmE6DL^x({0nsdA&4X9QXl_voWT~`5m3`^y$+LS;GRQ zV)6d9g6=?`1YPN_1kmuPemruOMX_FsjNH<4v}n|)YN1RAr7u^XtG~j=l0e*i-i31 z%pqfAe3MaCb-_$4z>^jb0IeM!xvpxawb#kX z2^datB~hudv9X{p=H}*ddub<#L{dKLZ;x4Wi)n2mPxS3e_ni}w=>Sy&#s4xbQRL4n z>28(nZ{KRwU6`A^6Qct2e&A4hM+U;MLr5G0a(e%2zz9n=IaY#izC!s%nLVx z1Xu6~5T9-}9+g8Ono2*s`h*2J1p&bYwYw*!mpEUJh;YMcD+7GH0(eq726pI~z1OUfi{28<+?}Ax${2MWQe;$hE zY#gb6Z(s%hqO0#>rUl&lk<&G?6tfsBx@!#rj)F(bzkR_z(sciTvOI{+6a$wUkEP9c zZ(+m_^GOJ^%l}_MVe~7Zw1swxs6rFG|A60q< z0Y;OpK?{JUdFQKX^Y+@s-=ViFBw+&S=;&Wkx*r~q7kHpvs%&e`ogNiNdN)L8(Fr5E zt(~2Jc$jIaL6h_H)Ic>!umv7Z0ivP#eStjA%>aA=!Uz&_)M{%p|M=hYwpWGDJVvqSP0lj8V(!kdBNPfdY60rnr~RVEkfUxD-PigCy~}2?$OX$(S>_xR`5SYFj;IUpqW7 zJnU%9DdqDOL_Xu!HGVFI->v}8tj6k!d~*7y{jXeMvG*T|n0lGjH#JqvXqu4+yMQ_i z3JwkED<~)cM1g4E+1X-1K)-ulyy(wh)NYwH6@0L>xP AqW}N^ diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/4.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png deleted file mode 100644 index 56f764cbc0c8e4975997f2a025f35ca7648c5bed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2293 zcmWkw2{e>j99PPk<=M?>N+!`8+mHw&nwd;qlR;w}yX4{7LPnyHFfnPdjy+UNL>jWC zNJ6rQh9vuzVK8C5+xgD@?sx7v_dEal`~Q}kV1Yj`A_NiQ;o%X%nV~JgEDpw50Y31S zyt$bQCO$Xw^Jt#EKTlpm$wROr7+_|1jfY2A^3T}ElSz{Ui~Pa3ix~d#gVKW9u-odF z9C&yHqH$;wYuoqCA?Bs55a`=g|CQ~yY99l#s+nq~C{{7+AW_aS*fc%KRioIuK#M>- zp`NM7B*=Dut!#4@jhGDx?m#+A$U~Dc=i>b&l|`;q63#k#rwm_kwjqw>@+&J( z<6ya~G>$Q8Xy&)mqqH>PyYCf8Mn~@q`^tobgcOvPn){Bt!j(BUIoTp)2t=YXYIog= zU~8)~zp&8iQ{JHbrmhY{CfDXM7&dZA*q1&->VZF61PKI!qPLGvYiW7o$=|!iVVwrxjx>*-#`q!`#8^c%MdFdp6_<+q1Glb!DQC&GkH-2sJ(hSKGxCb>iw{_d7 zM^4C4v~+dj+C2*L^KXk8@7%XgX(^$2D743q2i&Ud;012@7+U7~^JeiTd?ka|OdNas6yO zQB+h!YK)M-1vbTsw@d~~VN8lF^ZVukYDpiJl$6vCA3pqZdYUy!HLeUd)-HzaLW}YHsC|~Qz+SgacFh!PsQCe+Dq$glU zsZF_rz=4Wk-}TK+_iB4p1fpeuU3p{EkEAYZc_!O)bD25I4$sWYd|Fz{`*vkhQsBVH zuC7)uo&B2n`U!25iZJRm?hYA_GwoSm*D(EZB7gsznwFN4koa=$y!_EaJN_X zRoK%H?B8d7Qo0hc_T`+ImX=m?2UI(Na=+Sf346zV!5%5Q#FiwY8m}KUdb&#KUob zeVv}#r~SuTX4WRwIC@cBLw+%sho7J5+}qo{>+9>{)HXX?TNg4}9zy^n2`I`zq3^wP zegxHmhTNl4*S1%h3VXaNMwgz_@Fj8(NCBOmbYpWlaO;<=6lUUCNzRWCNznd*feCiF zJQS(~Nn#B;_y^AQ9*?_wmor;P%_}G{1>n8B+6^N(J8OLE=(sbwBqKw?fYM$@?uNTo z4WqALXFR3Tr9G?cUNIPy;$r1LILu~%wO57UA}zzRdqGN#-=Sp z`|8&USKcdEuAmDEIZ<44PS_7Y)Yf<2M-vmSi4+QGd2nbbw~+s8cg|G*Gb`|qe(zJy z)f`^O-??)T7P;j*_`=cL5OzNG3IqZ%E3yQFVxg zlsVRI+%}qBUjE>sndfo!>cfZ- zB+h(kIq|27o&q)mz?*_E(Z9Z|fWctC`sz0BZa5&3NT5e+8=JxbZ+Urn#cVwI0CaQ( z?W7YahDJtA)_XDI`xlBpap_&2k-Kc0lYjrc%83BX@%Hu(Tdti6TYT9TP{#yk%goBE z1#Xep<>|h?vGmWyi#@}`?RSJ_Eu;?GrP@_{OIKG{1HA{ae&PyxRQ#KEb(fZw9;K$b zF-8eaQM(~;-n;>HaAVI8fX);UOYKOc1K&Sq8oM2tg4#YabQZvB@#3Z49t-k z@YAQ$1_uYD){jaF0dbie6+auf+A8aS#bPxfNn-u{69MVHy_RshR4utf^_yci7QfX# zjEm#*)rIo%@^*H00VDbP`akG1>%=faJTk*$=5uzLQv-z38Xd%8P3?8_0zY&UdpGf` z>0QkHytiTpE71_(u9B3LM5+%9#J~*KI<-}dch@C*ydF)qQLU`4(K?V_pM>Buhm{`+ zQd(K3#ZcTW_vq&DxpjF%3l0z3;imEYtg{c`fZ2QSrRlCLfUHCUn%fg&29L%T<`);o zxoE~8>p%jl`{My11b_y6i_B>T*O&caW)IL-R+8@S?g#|J!pR9A8mb$F$Kxq|b1i<1 zYwNRwNY0e3Axx~bwKZzZWo^3a(4j*vj8Q?pn225W5b$C+we6gZjcj-W3?xa^9ttpE zuZN%E$26rAfem%__e<&P>-&zr78&-es@{q~@$vC#${kWL2)%dMAT$q{cpVd=uI`4+ z_{E9P%f>fu{Sb~7uOX?&ia*_08P@To6P{VC z0Ih~Kj7gIRc zqV0Pl{GxYb05tP036iFz13|N26e}w$1N0QW)da?T`gGxib5k<5&~@mAqb;4-JEsE( zuLPq?f~a8l9sbnYD*;j`3KM+kQg;;lC?qLp@vGL@%}vLhNMqLX%cb_p%F2M7iYHFo z1vtA@4cCON9&2_1)_G1(!80r@9faq*2~9Se4YVnlfZpQWUKOHlk}M8_3knYogGawG Hb&38T0kdmV diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/5.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/6.png deleted file mode 100644 index 3df3a772d890407e2151bc90d92a7fa0bd7738d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2674 zcmWlb2{@E%8^>iGLXr@QG--}(*>_>=9gMLbS;jVYCW#Ia$}#vxgrf-|%Z$TVa~#>1 z3EB53%MfE`EKPGH%J-c2y58lw-uHQ)_rCAn|9?N}_O=!Rd=h+YY-|EnmT(7f7Xs&P z2sgN1NI1-AW8>4Yf*U)!J_#$Z36=C0ds=eIPT!XPZMQ$hL(leJPGh(W&%(_EC z$TF1=1`}|o=oRhH;Zn#Jy1Bq+V(D{6ShyY?bRC`IPJEi0Kauk~$a2afL@z45bKvmc zd&OEBFt>u!*9jb3_B~Rzi%+HetGQ`fC zoiCrXG%O+0SnCI|^{xtNb%{*#YeZsWeZ4)m&|6Q^PE7kVXnI|p(sH<#Xa*Pf`nTUC z^YZdw*xun`K2qm*c~4R+lz)iE!km1I+S%EOZ1ZStZnk%Gvr;YeL!%*1PQQroL4|oG zBqfIenkw|fFI_@h7UX%@QS6~aK4NZVoNI4yPbX8ViP$ojWllex9!eEd^7uOmh85@M z_H+BZJy{MfM|^!~5Ed4;&3fqQbp4s75QOv3q9Vm#%U1TP%F5VryYY zA~DChVqtl?pAl2QKK4?_6p6fW6kqJ8nocCXo(^huSA1gf*iqh0so+}f(5u=BkBIiLCtLZ}g_|FJDHKeN_up z@T2kHsa0mwoFOO@iR4T%R+kX)_4VBxjsCJ>1)dLLU+(M#b8~ZJb*k&?K2vZ;m2GX8 zaOA#)1=lvd+S*#zT4x7>NU1$2M*0A1KxM2*&&9EzFnW#sFh}cJ`Km!CiTZm{)wM zlCtsze(u7TFZ;tWq!s-$YN3H!pYNA$1qJvFgw5$eAlqV zaCCI^RxJd)_M>in-r9=W>p0xr-iFntOjp@WFD=u8+ zh6ZDpNLg*IfK`t5JryG(yI+45=<&`DnXg-m)c!l+ShJ&}BNK=@1uAZJsE^8kjtoZx;a~TU^ zXa5}X1M3or^5A&4i2>~Rxm7kcHi|^DcAU6*cywa-Wq$wtcew0%DM6l)kdO_G4n0Qi z-o1N%O^YbgAE#3r%%j7^lLL$0PaPS~HJg3sjG#i0$kpyMoj<>a2&Z$7>ofUVT3VL> zxt|fMZ>uf!^A(ITF_HaZWb+U6a&(J3P;paJ6C^o_Oz{a17c@hlgM-&`MnAg)n(~HS zk;pz9m066fEJ z){WM^3}%P0PokSW2ANyq%+($aC9lr+dtIkvVEwp*0Wm6_4i!#U(bF6G{8=vX2g_xV z%;unp_h0Eu&_6w4F1J6xQK><2#Os=xvsO71)abuzYY)baPM_-wIW+JLql5-+wRA9M`!1J)|n*WNN``@YiZ}C2iGE3qjiV;R8N4o6qJ-un)r+# z*+YKAY`rv6S6xg@%+#k(V}Mv-sjEY|Hx!hWDVVlu5~+$vykUkn+2!Qq-UT#i zO9={I*6r_1IGzY@p)(j4y_7`w08{`BfM`WhWu@HQ{Cr_aNnlu*KuXVT3kx1l@=(nT zs1@i7gM-{IB+u(taKIId^vJ!v>}SuO1rl<0b_PkkT{T?_vyNK*11@V<3l9nj$+&RC zc9r#T5kwOg*M^n=wmQBA8UnCTN2g6-Ocl%?7HuBkl!wLg?a*ikvHGbdSEs1z1V=3J zTIU-7z`!c{9$U^d)enVAj?}&bfDIfkuBfXMEV3o%-mrskvV(jyF4CuQ4+=)i?Cj1_ zD3p`$G*V_}=ETR3S@X1kP)*;~rAZnK%nTwMVO#I+W(#k{cb)#ko0I|#^{hpDH!T9g znVFfH`0!!4!lt13O0R`Hv42pt;QPdTXX=*WU$rF1Z`3AcQZ-MKku(6S!i zPWo|t=-c2bE-6WwC^ZEg*~KftX)epe)HLP8%F6gsMAzu@vJ`NC#gvp3pdbw6gT~z4 z9N3g>uJxsX1Ogexechf+G@T0}byR+8e{e2iz(iYW5SV<^BB;fmcjQ7fB|#4?EWCti zlX9=kClCmym`M7mimiCQd3hyN+d5aoYS5@ z-DWVZi)LI5tVoOqnnXWOtUdkCqIq=2w>dsRR@oj*+Zjb|ja_zkci*PdH-7#&<`)$F z!W=hZ4&NlHXlM-V@9!f?UA>^S&!(sI1_TE3a5 z?{@dD;sM7f*xDR(aBzH!H*9tfJIL0+kAkjBBoZwv9K^HCfyLqRcYu?6vcl7NILx%wh6y*ObO#2uEE!Ah)v%hEV+~LL?Fi78VwI z6UeeGdA(jyDwTNs`ZXIH8`Nqwgb-+&#?H0LZLvr-QN3pKA%V0uY=uzPESu`7zT=>U>F9A zi;JXEDOOik_y2|6P5^P@#0d(80w+(N#NlwzXf$ZGT9^(Z*d?jeY5>$~HMY06sZ=WH zx;_}eF3IrlFhU5@=`<@VD=aN79Xx~I;q`h2fYa&Z%a<>QC-|M{2>%0mZeenlvY;0h&*?92a0qJy_H*enbH}l}nc{4Q?i{*DH2*c5t~|l*?rd!{FJoXNPm6*XtF9LIJbcjKkqzadC0*K!Kk# z85tSD;czfKJd7;Mf0qX~o9$1_kMJvcZXpl|h`G5r&YU?zrBdPh_wS@qDQdMEv$M0@ zzI~f|y-qrv?oBW?H6?@)OiWDB?RF`ZO0-%nW@l%)bLS5AdYx1%#n-Q2`|IH9)vID_ zYm1?wA*@y_b8~aty?d8>y-p^RA(>2)OeXs)Q3ye&)1g+YF*7r>*LE(KL)Udmr4pK^ z_0NNNJT6_nd|4bnejLBwkE*KZx=y`b$1n^UjRqGlUOZUJfj~ewoleHb$FW+iG#U-E z*({o-;rIIo^TPG(*M-?^#_e{a>pI0^5s$}1Fc=)%OxLbm6YX{zv)PQ@Zs*aXM@&vm z4sPd2Bq9Omx(@t2G*(tt4sYixSFQ-N*^Cf^si~>I%Y)OWPycE85q?F_E%^O@F)=Z* zmj}6Aj!vgTAQ0fmlP5HrP2RtM&xa2mdYkFTj~`^SS=QIrQB@U_$;9aBD3g%iypiF&=x*w`3PpFU+~W(G~u2#3S0t*!Cy-8;J7Zht#>yIrc)D#2h7 zhr_|=&!1^Fn>3qE48ve_bd>q|dCdI?R8{@QTpt9<+RjdSPDF*Y`K z@O@ylT2WOMMN!y&e5BK9Zrr#*yWJk_y)ZO1BvPpqZnv94p@7rr#OL!7i9`mo^U~6i z)M~ZRG>!H3b?)E4zZdfZ=RqtMleV_DFbsp` h*zNW|EkDAq_!knhelGX;g!lje002ovPDHLkV1l|_Wf=ef diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta deleted file mode 100644 index d746756cbd1..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/7.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation":{} -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/blade_active/8.png deleted file mode 100644 index 1ce120cb4bea2bd79e444a6e2e5e69e893f70e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2500 zcmWlbdpwl+7sqWY$b?j*&|Yjr(QHkY-PR%rnpH^*rbMJ>PTQpU-(R&bZ>06p#usGBQd8 zM>}`;SB0Ooyc}G2C#>I-N#z$hM{1qZOw-NnAdkNfu^?+(wC{}m>3G!c zdx@&sJ^j&sNq(NTk9VQ=wJN-?d6Twh{Mj~-Bp;N9;q%xeJ5^g;_JCKTO$E<3uWVn% z+&i)nS(}$}DI~o8h_s~TlQoYo;rh(7V4kD3MA9?7z85KsEQ=juM#{P^S zy8I%*cx!7bmP`(==gmw{qY#Q{3R)->A{6CX#tz$>7PrmBq6uo8h=PbZO2XbmhiV-L;G)b+ztNq6c18)Q+Bv4hX#EENb zmp3*x{B-TmyW-;F&UhAZIG(V-Vc{Fcyp*1>QV)FwlbQT_>{S@k?dcH1$8dIb_ACy` z@S{KXH*#=rfTO=y{@dVoPZ*Q)SgP(&dM77Gxt42K;Iy5P_k4ZiI)waHU;jNhHWtDv zI1!I4H!kheBcRnXP!#m;-Miz(W9hi!Q%}4MysGw?6gVyQ9Q#mHQ}e2~SGl2Dx<3g+ zc^_%2U!c%X9m3?+_!xH9X7MlLJv{f=sCI^8e{nY3AeeNQO_AkD-G(wakwm%1q13@WS>^evziDrEjQnyuBx*KY6-@iu{_YClOynn|7|CI_tr3M#AUPwOV z&Pk0G54zred-{Q8*Z4Tvxal+2z`($+)J-RDdS82cyI4GtJ2NvA)c4?o%c)aKGv%~s z$@00f^76g9x_I$i{fD=>>@%3wJKy6m>IxW2OHAJhynX?i)^`MpZJD0N1UxO|a((6G zBKMEG_cu{wV^;@ zP}?g0_x^sj6uizgSthsp(^ ztbb2XyU|4Z^5w?M&&$sKM&4EKxg9^2_FLbl(eSFWl^lJRzj77l@1IVeu-7kWA>u%2 zRJ0+UqeO!^;Tpm@q9m@2bZ<5}CJue*fy-WDh-O$JgYi8EjUy7G3b?7eiw$OG= z1YSE^&#UmNf0f+LM1wSDpbVR|ii|M6<*q-X#dtHX|j*n)fU&9!|1OEGpWI zz9V1ZK@ko;Jpv0J>9dT{6s9YG7fdAH&eSw^ukb)1k!XZsErXH7jV$x33c?lvQjU3c zEdMeeLwAh2D*4J425;^U_aE}Q^w#32)~LjO;vd||U~Ccb!i67)E{FPtNxy7m<>Un8 zkQr^k@^>6ls;iBj)z|+}-~_G)$4rNnOH03H^K)L0J#1{G8hBU#>Zs?}Bv}&C*e>9kkdW|%PT!U7@Qv!1Grp$= z{R-r7CBl*Dbfx6xSD@~DWn=4`TxPh6QDLUPQ96clJHu`pJc86~4F@AlxqQC8n|gQH zkpuY|036@~@`W1@&&f}msw=y{^6RF4-n6*0b~r97JUl&^(Fy#{#3BGJ zdb`TW&x!q$(TyxNJF~J9hg5=w@cI0Y(Z{{Ky}JY}zr8s(zGMdGMyDU5w4vpalSCp> z(=tjeWBL|qbVcHq;;z2k)3YC^l;4$tk_V}6(XYPc@v3sOvKBXlPh*xp62O6uM~%xC z8vQ&z%!;wxoMqlW9#gizM$ktSB<;`{rCu2cijG!`ij2(C47i#^#5v)RlN|3r`@82# z`Y~f9gqymruWxfi-SU95G0X-Qc@9}wIpQfeNQ=+2ePj*IVKVcRcc|pK95|0dy12MJ zJdboO&yT2cvZ4tX9XcTkBaJVX+O^`PTkG;r`R=~H{GPDA2!yq#r>UtabRQICVrkhu zI*J0dQmNm;gu429sl%kmYQtkSeOZvk^;GMZJ_z=>#^ zSQ;g>q15t}5)?rVEaIxAE5ir;N(rn?EH-2LS5Fp&hlPQg!H5Cz;B$5C#UaY`!>rd! z6CE(B)idqYGGv{dol{;1!O$hMsa;(Jb93_=Ke{;HD(?FAT`-tnayaI-799ycj8FtI z0nHH+3T%GwNaOV=HotWu3XmnS`E;!;Fibz$xGxd`NZX9+YHncxt@Lk&S>6uCSrv)$dcyAL?aXXzY0K1vz;_Wxfq|CgWh|ux zMyq6&*#{Ybzl4Q{f9(ZnXaHVOl=~KJxbLL&el)9lbrsh>KR_ z$g)f#kszPXqpB*^YL$FG&(o(*NhXt6EEXb>h`?`cW>G3 z0Mgd2Td`WLeEQe5PN!hICt(G?d|RK_4RS^;6bLQrq)CTkeZsB5CnlUXU?D~3TxM%KM^nmC%jI9%SgExQyLRmwOr=r;gFym; z01k)aM`S^uR4Soq8Vd^xOiWBH?+13fofj`&@a)+$wr$(S*|TTq?(Rm{b@KTT&5};12?m2mlEjlIPjIC>9TCD?4XhA4{k_V(iSdWl3L>r$q$Wy_Yv{QNwvt*wZnxPCwQX`~x|@IOMh zdGlr?kw_4W#fZn_c)eaENg@~w;&QnNg+h#sjF8D>c=hVl(*J?m?M9L$6h*;mwW8}f zU%q_d;lqa~=dopAVnU2f)nC4E1__#TpoDwc22%Qo--{qbLfxu2ZR0 zs8*{a5((<{`ij}%UpWsA4NR8=Jwi(#|bsMqU!`0!zUvhMHiZ|vN;v#~DH2L3LDQ>RWfve_)t)6?9! zbB9zaMX6LmRaGjL3WY*}Y&Of-*cfl#yjk+Z;=sTFHk%EL#lppl7kTjD0p)U;Kp;S8 zXD5L`fWwCmqwD&zCy)jP2Ke^v8yy`T%+1X)Jw46KmoITTot!>>nvsza!r}1B`$BVb zGd(>$7>!0$Ri#)gVzb$ZMx$K5d>KvC@OV5c*1%vgnFd8sWdHvC%+AjKD2yObtJN@> zOf)q${dr%QoSfv=ty{FUwP7}!(RH1ezAu=~X3FI3B-AKC2?RJyP<+ya|63xxc>zdSJ yCX+$aG(=Iv>2$7t%8*0vI*JQe78U3 zr|{nI^IZ3}3RPB=zH$B5bqoxQ8?rJIs_+>JAEJ0T@TV@rz7z%q4T-G8Q#DK9%@i$r zwXvqZ-X0ruBeB}n_;>MdFg%hqBut_Vp%It6^hX_489k*R;nh?&I`D0ma8Vb^Ha2 z>2KEmXrIq|d^$HcJ^i$G^Gn&KPgXZq1v?f=5&=?(TR~5cu7dq$gj8~7=1K>Z0fGcC zTCrfqy=njOkXt~Y`>^@aOZezF7KeUg_v$Lk?D02O0k0FDu@b$ul|2=GeZ_k*zv0Ig z8)nZrgfpWIE_M^sM7%R>#!4RX@pTrLehJHFc^egVlMqKsQl$6x6 zbr-gq}=D_`$&0P$Yn;Hh1}TAF7nR#s~$=M6gj@$AT6&J^t zC9kbnVLyFeSQz^2m$tRFwSB`hYP$u?^SI9-KReqmp6$htU%z^*UruhjH%(QZ>XS<{ z$H)wgOiSvIk(klYT>I>qp^&;II_50#RE(SnLruNImhWb$1PQh;jH0AOY+_>4`0tm^ z)l~`!h4(Fq4fBwNVuwm#)=Wk);9-zcP|O{k$`%Z(si_V9`W40!Ml0mbk%Huf7c@J^46B;wGkZ{OeN zDQ&(GJU>7GIXX%f)%DnAgPOB(8*^b{LATB^P?W*Pi2B{TcMP&*DfwANtb2QVwbOQI zZ$!efe>>I*c&_42*e1yHi8IIDO&mj}KE(6EV|aEi(W5?wBH3P`b?s2egjx`nh`pTU&{T#=(|;^N`~ZAQlB)QSZ+8>SWE%E&^M)zku}?e3>5ns6nD zNZgaiQTeFB*3r@NQKu#{Kc6|{&50FU6bl=hIJu-P-|eCzRoDS%XI_rP@FyO35a~Vk z<$GkYh%6RXaq${u1kE(Ycckdp4L;j(QNi?1J^ju|x|bh{@Fmr255M5nx*xFmiefa+ zMzQw+CR7W_ljVavg$HL(WMTsb%ozdwQC$v#>FheyZzvS

dT2gcRUNBXK=neDUv$_JFFRm(P6A07mZpgP z6lRfUj<2rv2#2GjR{xtV{-DDg~ff? zaD&T}vHgPs(oh(AfzwVj!ED1tXvdAV4OuoxWx*3KH)k(^OqR#kQvi>u$2l(C}p6$*6|fNI-|RRNwld<1Igivo)LzqT9!fkpo4s@_8ZBIg5^uM?dKV zv$L^;y`8W%_n1_?uwV94OcU^(++-%deisijn`Qp+G*l{QwO)T*?nWDnCl$7@r!c^n z5qA3UG&wz;3C3_~AeAKb@ehv5UgB|_phZ6!?40Dkcby>&Q|n=rkNT@ePLr-t+ z=9Uy1icc0QktLG-o#ngbJ5#RElJ)*?-?&gHd2eqKASL5BZ!+fQjKs1?fR5U-a-wpI zSkv{=EzzHp4Pq&{k_r8;F{|e_6yR2lVEWkaubOneteK5866K1QP$5UCFr*F`*E}qd z=Ss$8RN^Qw;??OfA&HQxb*xKGPEKxJP*qcF-`+;n=|*OrE#6Oi{5nXPB_Q95ot>S$ zdNCy>r8TLym&wy^T`x&~xiz;Z_UOgBjW&I8M;L>wX(bH~?n#U@7S|fjnmi>ImR4*u zIYn`Y+`VK(V&7eALux^w3kj_67}v0(y2J}7+kREq$XHY~?lgN#YH876+*ist(-cpY zXNFZ1aNmD)F9!Mid7LF$nIce)HPH83kS{{kyXs4iX{)I8nA3dusxfiMz1$yGC3@>- z2Y+}&vPC^Sgc@8onKK7rjlT{Zzdxs~nXRS|@93-}9;~$PxV|fRc6@{@a!EoId__er zTfY>zk|jtwT90n5j~P|{5^*>aQ8f^7TP^!O)fi^W=ifGm?Ig;Ou6PYI7IBZkC(EQ- z6Q47H1S5R9C&H$Q8uN_1i{O-)7KxCRN-!n4_&nwJbv{)QBS7RFfq};2QDDp*6ZP?4 zb}KAIk5tC8P*#_>==$tD;$&oO(`|5xf2i~Kcc0P|Nxf;Vdog(a{{H;~|H&}Vr=if8 z*N(Q&9&_j(MSpUA6WOxCP9=U#dI`lSwfA!63gNLfRpb8WbJMdxx)MH z_pxIgZ7}hj{Dy{9Lu5A=F-p|LgfWrRAit(2ae3LiM6cn>0`wL>FF2Yb_6}*AGX%28 z%DRh#i(BWsP6_wSZkgjGIN*zQXXRR9p4oIIb6jZgixOq^CUV(#A9Ph^4M(H87K~=U zce9s%j|VPw zAsq|*x_`4i_A4ML#m`>TM>El=^WF_3%VtqkSMLzoY83bI@R*y|(bi^RWi__9C&?TP zp4?ovF*v<7GBPq%>wqPxGG1gwgDJ!HTLOiWBk1Lj2ZsBZo*J2x~w zX-k6mtU1jexC3{YnVSc}0o?23+WK%O=>JBU@EvC{HYJV5L&=(d%ut?Byc zr~dwa`?ViTot>T0X31Ws{~ien%Ax4Hwhk8#Pqi9c9xg2{0h_kYAvZTS!A+>Bs*0JJ zF&!Kn0Hz}BAW%0b29EgojQ}PDt>c?d{lbitpEEy)V58+ggmv8N%*0xNey{I+AH6JmBOk$j!yp zN+{Rj4Lc6ghUuzkk_YPERO{X|!U#JLj}u zsXlwwSIJw&>*F(Ed^c`@EJ6bO@Vmss9G2@v*@jix_K6;N-v&V#>7#n!rU#n< zUIgG=w^=>O0`H!%g!voN2saYh(i_h<0q66o>0s0V&N`)gx#H53e%lQNcK#7BZ(!RT zLyU|eHBM1ch5LauhHeSjzm18$#YJqio~SzckF|YoMS4*Z666Id@oLcaENa^z3iqt? zjo<5QqooGY;$Czb#eov2Z{taca3mTfx;+_Bh{3=G_vAX-ScYiw^y=wsnVP-ke!+2w zbb1|a)@QwQT3}`Qp`g&}KQAw@pCcor*8^Ao{ApKTG@bP)uBfP^sgz}+j6gp6o0D5h z9amK5bviwTUZJd*AY51wW@hf}F|8P<&Gf^a@meQuKAqkI!v@g+j=$TK>%WOK8N^kJ zsCOpN8=I)Ip|TnMI5$=I8Z6-GM=f!1u-x3-AByC->S`O*)zrWM0=t0NlUxtH0(AvD zxC^ks0AoNu#7g6pZ|N*ytwTd3*(|$(oT#(4GvCdZLXQajOG-F`f`ViaWK+&#dV%40 zZr^TOKbYS;?l!L!pe5?;>e@N>%pJBWDk_3l<|!PN%>qc|`}#wK?1_Z;Zxhse7S?PQBkE3RcgAn|3aR5?ygaT6 z0~Nh~{Tje>#d%;Q=IoO!dE|hTieHpUsgJbQS*fUyQicacMn?J>z7|a1-{0T-5zLmUN_WP>1o{{@O68 zAf@8y1)cyrB#>SO$Qjle;Iu+q6seXVz1hq&;$ zre<$B^%amCDYh@@yWLdnQ|7q2nbW_QsTV$#Pf#dW`;k%Vy zzPu8L{}i0|mKElA1VH-$7gw9;A${AW0ZS{PP+K*SC9FHl4@`Gz4_SniFdea)8|#j{ zGz0>G8N{yB!>xj>tgB(c2!GuuE-jT#Faxek9ROA={P5v@b#;O+$BQA!W6unxX9?s) zzF58(SXfw7jp#UeX7R}<4VNZp!}ZaZ7!dOezpt)tZZbi=F;on#$&O4HR~K)5YA}972Ny$T?UlOkWH*aE!Na-~Qe^UftT_Ogr5eM-#hx+OdUY z4}Etajq0lG#-b!(h?XrN4eW?-`Z*!1=S2tcv(OCg-i)4@m$xtEKBX5@Jswhf!$45h zZA9FIB38B`XS#-tpb_(e{OW|dIt&5=0@KQgR%<9-Q1rxbT=I&Fa34Sy@N6Us)qi$| zg73le^XV|o%FTV}u{G=8r!K~kC`m4v@UZwlmY+%m+<2Il+VtugAM~mT75YfiGEZ$$ z$|@?p4IllgY{sHx@{dHC&v_vX{`=(A*>< zqD8gOF-GmSQ)SK5 zEHbVy?oU=vcT~;jcXl@Z{Q1-VqHRx2%}oG3FVt?Vl3$R&J=i}q>+0|AF^9IcDbmu= z@t@R_Lnq&klVyriyMOZGKrMyWms`j3eTSr+o_PoE-k zq@#X}j7UQFHHg|H1aAVn1`#dVjHYxfe8hUG=YA$4U2%ANIwIfdqd_x$@ksBM_oWBy zC0OYK*rI_{{z{`Z9H90qt1@gQC?o`DA}!pBwR;C`X!t(Uxn?>DA$tX=J84hE1!(i@ z>r*T;&_N2Re58apYa1Kv8=Lhdd;Q#lAQ;s2^!d5D0pKwmFV4_lM!F*D7N%WiJC+>F z%gRKN)Qf)`wxHUxKRa?r;Lz(GRua*Ro&&0e*My!?2916kh1$it$`J(x1ua-Hmhbvr zl$4nt{AnJ*sxP@2-Z9?nEy9-?@%OJC4i1h?!Em5oY2)tos;Vm8<~QjR6I!s6(8oaq z1?pFe-eZP3(rl?W9=05qM6<#af3oJ4vxFs0EK>OO$$~| zPR^7=7ae$U_-%>>anMvrNl9sHYF?FdMXXn+dBtn}?Q6pYg+)cJb~TmOBdq`aPWM5? z7r8theDLt$!^RCzPZ$(bzszFGKljJlU;|H;jK&>i45Q!U8W z+|clT^~VK0fxiK-O<<9wpr8OEKjXG=1IjUt;`p$z>yY8gCTtOLvh@uO1lM9^5PlQ3 z9E*Yd=6e=>1TUv*>+FkAk01B65sUP9cjG}C119B5?O1c#y*S-s#KVNw0U4b^uh7vF z;a;)p=g;qAVn`vMLbs~-jzEJA?jY~Ohmb^rH_%+r{FJ%W}X#x(I;T^3xQ6f8qXwkF1#%Niseu6-%*7of09gWdfF4>{s*~CnB)2sFHgBER#bE^3{zX5b1{&ed2cq6>dzO?x@fBUy^@!x%d@>eg25$6nb`JcoJ|1? zcu)&n)n~4*{AHF8nBscGc6XK%4VWpzcV;}czR%2jgO=5GrYb^Q`c9WA*SQ`#Yp@+_ zE>QWd9J6frPgAbs>n&W|-2Nr&?-CMrVKpHps;EWj(s-k0 z`H^Kw14;6%n3#o5e>nG#vhg_#smXVR9}m3GGkf{eM=x4k}5}ggUy2k yUI{0e6L+E!b2rbyyZf@pUZzu>a1LNyQWcwT&obJfd*Q!GFk~eaB}&8${r(4gu6r;5 diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png b/src/main/resources/assets/gtceu/textures/block/multiblock/large_turbine/template_middle.png deleted file mode 100644 index 406833439e158be3dcaa0366d323746335d52a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7463 zcmWkz2RN1e8$LxyvcLFL2pJJVc2?#gM1LZqkR-{p7vWI;<+ z`GQ?Q-a{|92a|)lik))_sckl$HpdRPkgFWxd`^+eITpxeVBdO!%)rz`{0R=!`#9-BLqT@+>ebvQ zPaYc;YMncGb-4PrPKs#2KY~UtulMpA7#Mi|?$#Kr^%8fiIGn1ZF2OdLmuz9Ry}3Fu zHD!45;>TFu-`tsgJ6_8xE2*cfDfaE#r;{n4s>$Emk{u&8;*;?1oeH_~<@qn=RDo~%Vs&`O zKNlEIuX_JzPiw}vNrmH4w&;5Y4@>?^ezO%~Y~dC1>Xn#Lk!jNl^BT{srDm^*I1SNM z9r@o~XP@@jvwKZ2@Sc14{%e)1$t#=vft)WLhh+&myi9|GgE;YCQ3ZvV{-66EJ$E<} z@K(BEiF1Cwh=0OmANQXt!shn2v%hBu>GEETHN(0@BDI|R949X?1#-Yie|dGbPc`Sf z>UmXWHD0~UwuRxEs@VULmMK?hr;`lF2)3NY%F^8C4wn7DX&Y;3Z-0$X%XcXvSl&&jQj1I&7C>m2+}uHBWfIf} z4s_d><1PO^H{qUt-8_CwQ8DYXsHP~hYECy7ftnCv_F==doIoC=9Hq`3r%8UEd4Fgl z`QAMQ3JQw*t&=o#bleeKu0PsFLs%@n>-lXm71#Y?Lsx3@1nTfwkG&5+BIi!ypP9-2 zxSL-gi!MYZfRhTXm+3t#;3j*trKM%sO%~x58WqJa43%B)b*dRg4{*g%A!SKPhrSHS zr6}BHvtnlM<`1)au)OT@WysX?XHi9NQ9|ovPi*+(FqE``lH>j2nsvp{%-q~WX{W;Y ze8tF<($a*r5x=aBl_|U+<37iln3#C6$mrR#XZ$Bm=2catq9TM>rKN+F&N*eh-gWHd zrtNL1;?A-e2q_{WqHD$tk;t>t9f}M=Bu|nO8K}r#%=xp1I7tT^WK>im29{Bt8gZfjw|3>bpJDX#S7;!@P= z>gs4hszA<+U48ywmF)Yv!TjnB11yTC zwl-D}(^p3+0*YI^_U+DBuc?gS#w(bvJgIumB`XZ?K=}<85|ls$?tWbn9DM#x`7jds+0?&fi7t1DGHrro?N-_K?uUx1)`r zc|9_&KXlLu1bzX52FD6qz<7X-)k@#5gV&f+@Fw^7TG&v^QG)MdJYh(rl$7X@=Ydy zBPKt~_hDe*-gl#-3R$ss5=2gVr96XU5nR4+vh?}iudho#D_)q{@>lzLH4c!M|5*Wb9H`y};_nM>Srsu4zxClW(L5NHoabWKL{+Ul8 zE?mpHtA6w5NfM4B*U6T?CeK*y%OCzLZmVx@-u`EPXvtGv{?CB*5e1)=JBxM6N9Ek_ zr>CQTn&;hd#8&V`t{gr7cycaHG_4&;cG>)W{lf=!eu0NkMz=V7h9bEb_xJYnM5(;+ zFTU5|B;7VJzqSdFxvnZs$2$kWWPsM2e17zu;hUw4_mCqMbxU>tuXP z_oqa`JmLe;m!Bm^+;rkDYj`k2eK_TX6aQ3<_{x>qw!d?bw3cA2a+_g9E^?}?AI8No zIM%Hiefsn%MaGr)QiWq)O-))TyLTAQLwiKpUp=Sl9wh}O<(`k9KB*M;iCybBVpMF= z&SL4)@U!@h?)B>ehWWZpxT<7Y)nff$U@D*hz)u?*grU~D{_pwVpDRkfz6vEJCE!le zOP9_UTmUY-ywXSk3@NT%rapJ>TvLZun@|K)c;h0{tcHOp)LUdd)V06L|JKgczE>9%yfKwC6@uHf8C++lCevF-=w^^plp>MB_nN)Yi%)>4BX0A3RWXa1bglFNfS& zo>JW1kXw2ib5yQ!<44-Y_aHh=9UU7`ds~`REP4!j2-1W!h2!JSRc1ar8&g0XLo+j< zyX;8KRmfWCLKiR(gq7#721*&XX?hkBi;34mj^n+0ij(idnR>_`5GU8h0=P9|oL1VU zz==XuR#yBXBG+te$aA{GIH@3TmjAnS>y(5{)h+3$q5-5(FO%JOJhx>f3mVV(G{tZH`y@pp7QM9d{)jus8x9`ajpDl z2c0g@96ZQC9RlU3%Ed6@B4cfB4SIwc zM_^@TWm}x=tQ;JGxidCbuZ}uNJIQ9)Nw8s{&_A@!&dzu*6bQi4AZwG2&Q8J}13f-I z9;|W9M`cgXDc$&miW}~rNo@WI8Q@M3kAt~^k|b+iRkUw3kV|b6R8u_)b>qvW;KsG zAy{dr?*!;5w8hw}x3lySFm-Q#zXm@umw-U{>(`Qj4UZ(cw&mzPMrsqKbkn8d#+wxz z=Uv1kCDm`;5+Q_#hs*D*j|*AWr^5^B!|C+oX#>U~M#K~pbd8N!z+Y_-Pe+~&r9FTC zyfSduwlsBi)*gKgswN$Dbo2_j^8F9-Xm&GU7QoavnBeJ!6Ba&8YC?w&B=DZIn(D|v ziQ#NWrQy>}e>?9!ejq9#EjhB?wkC=4+k)K`ZY#g`)s^|sAx0LK(B|>ccOeIQE}%b& zh~ehVn=~{uFI^^yG3;kH>pb61x|F!h7(k{%*fR0yir)MpF*`f^w78g0Ts(nJVcq}C zoj>~e`byT;+&E$XR6t7tU#Zim%9k%+z`SR96Gq)+uRA(Efka7eRXcy4L2B5I$;->D z(oFcj7v`<6Zw}Qn(M3f?i8_y|!W^zI#rj1-QFrwrq#rkc1zEGVx0m+( z#mORUR(a1n^xi#;CMpdTDS#sMpCoQH1pZvruoF;(ZoW3|YSEiG}GetA8B?L82zcDHWv z3EtRS09!%hOk+|s(nfar^l3m7TIDf+d}?Y747A?0YkVX{;^y{!$&-YODQE6TF4nHl z0`K0xf8RAQ5T>5fFzRI1NCp8=vrv5?s6h#ENJ+zW8>@!yHjypA(^5M;X(_Om;66m}QkDMos~Kqe175G1OuF=P z&;jxitoQ@LTwGi#xBm<|*9=33e`s!o42_D7&FQm;^n#4*>h5lU z!q3*HDmRT*&pF1;O;*?!(Kz~c)JZe!nLa;+^dzLLafFh$Y`5STz10QP%BjpOwcQL# zg~8o831{Bp#~GNIg4A=A^9mN<(ZkmS9uM?>%+p9XXu2;S(KY;pCNAzpb5S{2~={+U2;;+NYEh%Ya&TIC4u;}!c{ypQs;jGCUKBDzcf(DB z2TrM5-rKdv|7eqxo)`WyHF)?}H+?)V?A;H%4 zbJb;T;FPzwcm2cs`X&zP9g}|mqKqH*^zcwU>a$0F8*IelQd0QCi$?l6re|lz?j3eS zui##%*rIV_{BeA;xTJ(3v=JQ2#1@Tp%%Axk|DpLG;7kk_NCW%@1%kpjR-}RQ30N

l; zoV(nK#EAHK##gUirASn$Nv=~J z3^Wv4y1GxEKabka#QO+_%Db*d<%Mi6H1+G(uYdj}tE#FJGIPq4Xi(& zHTU80E!83;Y##PVyG?gN*-W-3yNsEeovEJ+$46*@tv?>=`(E0n@0KtU0 z*>WIOAm?SVR347+_RVEO^Ek@=tSr*b4?1yk(;ME2XWwGY^4sZYehA-0L1V17lr=Oc zg_9!z9ry0t>#~!8)M)wTBz**^VcGEQ)_6db)P=5Z{}DmKXU?2~_Jbwl7ZRF?kz2U@ zE_naCPrcyK#Y?SCku1lLFFwm!^_$!Sc>VsJ6C4FL*0!227 zJCd(;Xv#Z9E7Bjn0fxL%ItX=7;_e3zm~Goq0x(3_hnBs5O?+4YV_8|5^5h9G+u_52 zHJ{}czW!B8NEpm5b~@@B8ZzF$`GGxHfI!5jrlw+3gF2yb=pbUAm75zgA-UE0t{*33 zI6ZA>s-mAl#jyKfWB}Uv+_{7J0+~M1%hJ`=jbRQc8JbVg;XNd57N(N@{nuzCW^#>< z9s2jH_s=58E=&~8&!eD_2_MsuAs5bAa;yr8ilUKVJBY!%D3l~PepXbIhp|e5 z4iI>6UJ}@a-HgG$%4Z=Rsp6rQ+q1@)L)V3`GT-j5nFAd>hHtZ!UhDi(?6)mQMn?9z zzds={@%BMFAZ0=VpPtyAKMtg``fkC*#%^u-I9AW_!r}Mz_05gE$pW-uk_hTK3_0EW z1^xoOy{F}WMeiu_FlLvO#9`Qoc`Et6+5MI!Ssy-pK>ss>u0AxL5^4XY>0u0g-pxB_8mAxPaVQDE(*y4ScUinkpojO+;FM#yIU)}G9nZ1 zHNbF#8*fb6dwYA~FQA=!fsQa}Z~hK14!pcVmXVP`+B>G`JlSQUBW?0vKY<1!b-x+m zys^dr!NIdU<6)cn@gp9s3%AxBb2L8F+uTp7$S9}(r%8?b$)=_z(upG?sQ)aE=%M7v z!shXT8ph`8*lWY*zG0$62NVb$VrF(4kCuvun71hA!)`J+mj^0seSJJu#%nn@xC{%I z{x!-ZVe?P$dRR@GRl9{>?|m}rQgyM+jsXf9gj5Rg2KD1PmEjQ<8F@C(;OdPsz%H za5;}1+Y{Ry)Nb1dfK5wl#R^^e_AK+!qen*~DZdO2L5+_MUdy`b;1C7ObYJ||j-ka~ z6Ivar9Iw7xT+p-c7u5P%`oXIL z$is#mleui|%T0+I9dKY(u2WW`tnlBD0aMl0vgrEXxBZl|FEG-EVp-K-Co#76_qc{{ z-?RT=`x_Uluo-r>H7PD3p|P;Io@i*;OZOunYkTe*tOj2}_;8fEU z?mh&yVZTY*gws>`h||4)Z^xh(_vsT6J7Y2>V9Mm=WK?u?H&%HfejD0w7R|97$x2)B z$2-dMFK-S>{^-bP#Yo(M9`;-t_9%G%d;*@2gaR;Gr@WSJge_{r`s}eMUX+y zL6hK;fF|CU&WW9#o_>^{Pnk#z!HN;A4UsC)xN_F>a!0yM`k6aPp&Y)fY4b#;;nz10 zLnP;PYeKS81O*_~0(*1&?CBdBRO1A%mOXwPnA057)7MRFc4`yrefOFS7>Ogaq0D1p zSj{_Dz|QOQGfSL4ecr;NBPUkj6JM4O*OC&nH-sc3Nu+a9?FHH44p0`5scji@$q)i0 zcI&f;%pgMpPftIcxM*>7iv;$Lj<#0H$E4aav<2(y= zoN;g!nxpv{avo!DvTr;rrY(0jS&+qR?GI1GEFDR1J??eY*f0YA1NiiScw8fvJ+Hic zb#uqxsIbYt+)6CvJ!LCVjG#qH!nVj13)Ed z>~7ya9TF1q;K2hYWEz@Z#%EnraeGGZx`TraM%G|!eZ)&?z4(qFdwW`n-r2Kf44*KU zE(WccV6sp~4on9gK7o;PMZe=&6cPlD@Ts-cq}KBkRv;`Eo}~OA60vB*5?Wo%5hpEk@%wJfLEP`i>oUZ@Z7L$IeB^eBAecUCn4VOyun9-1ESg>_ZXO6gWXH# z(}C54G(KlUat#UqSSb3R!njqU(L4Kcm!&Z^04K~pX*&btt6v{GKyvu7&Wal?dN8eT zZ+pERU-|`B{?)9w!%*1w2|JEaB&fT{&ylPZs`5iW!_fp7&Vr^By`z3vz+WrlB^JtnPi8b9YV-SIzqCOot>3&WS+BU z_V48nJRTpP`+V;GdOg?c6{@YNe2#{l27y4FQ&my84}Y)2j|?>>{5Iy@R6-zFm{k>I zb?pL{QVg7p`zt=yj#a+vq=+PwrkKJw{b*#rmG1nVb`s&~7p^Y(d1-BoP-Q&aCP zOAKq7n3UQtRS(n-)Yfbr{*b3%>88zkg9<~~`3oZaxwUU~lVl#q_Q`Y?9^|!&6!T@< zuVTwsBC}eak_P$jF}7OMWViaa69vs$vIj}s*70%|Lpo;b>_lT*ZCmEfBF`!|H7Ox# zdbcI3O$Ca-{>qQLbR#8Vp8T#dRTOW#$bI}9UjK&4_kI)9INaM-Yw>5>v|(4WnG}!i z??*?`A>K39IfzZJd9wbSpJ#DAw%KE;IsA9rYfoCZeD$h47K?DLK+`2Mg}1)SMXAI_ z^jls`R*UJdy{yLQotEDEgvpM5)b6kntU23C4@b>REln>#PwGQBfA%;UC%Gq)_5;J$-%h zQW<$w#izNn(Q4CYy^sd72?F2s++);oh@?BZ>=GGWA%vB@tgOJ46!yS+UXRK&2eEJg zRq8;0RM`BMHyk}BSI5Zc9tz2aq_Gf74OQU#T3YJzVdXkvglDXE>^Y&sRUj~{1yvkq zTBO|1(M{Y;y2e-F^gYx^s#b&yM_G)%IKL^*rAe;QU|EK6KKSS2S`nYv%Hql? z<;A#GZ4?s49F7V*?axd7ZOl>f&KW8~m^nwZNyuT)3cW$i^UxNaOV%vyj)(Rj1@1HjeVCkr9dEHEW4e%aibS z^VdfG94>jp#>pwb9lfznI8Kkdq$MIE@?(A;_3YU*S~|LQlG$;Jn`B3KH^Z7|)z^|y zPX(Qy_N9E(ryDKLmybj?OxD?#{&kZ)^<~(h>Uenst(?$<2&zZewSmZ{Hg~vV;l?>?8iP76EMN>+73$rQdyb=XuoR zq=n$6OR9o#LrWfr;$er!)5j!!>K}8ygd{vbrQbfMxR|kgL<5EVJJfRuiItU~_)YAi zW>1Px>h#^aY)ev03P1f;7&-LCf+^Jcv<}js+>vY2IVs>s>c`~u_V#wfN1U2aVuShh z>(bI%SK|N1KQx`hH*@ndhH5`}ATO5MNOXh72Fsm_YgLd;qpX{8oph~enQ=uVsS9$_ zQ9XV76tngF!8cn9HF+#rVd`lPz8kNR{z7t zj*d-^9biiiIZBmLGK~(Qs`D00k=^+dA01tS z%b`%D(22DnmsNhTf5k!UPQGp+wB^88`jY0m_u8ll*NQLt=*5w8dV_@B?ef}lb^rc} zgFyMn=T0Vb6mFB7=V9ZX-6p1ecYr7K34*t93~h94fxN#_+8 z$BsBwM*jI@=&?8?D=$w*8Z64Iu1*`Pe4bd=2f_|T@~zF7OMek1b7D<02{u_hs61&2 zMXb$#VIWr7D3KqvUjD~T7~c1Xqz!+Z{qKG%>1Hxe1%rfu_|CZ2>ABe9hn-}@KHRe1 z@tzaC6BOK@6Q@KqtnBRGls*~k{qrYm*rCZ<*i;i*W?g-J*2%H)@zy0?3==8@3z}dI2o~V! zM0ECud5@nyojKUu_+(n0GBBX$BgJ#>+_}Xed{BP=WlKD(iHXVAuV2AtLA;DBFzTgU zA+44d&ucmVoj&tjvQkBWQKeV`!+j~S0~|`m+|Dz}zxMTv%5?aK%%c~NLaB7IHZCrp zB^ppREEYTMDgl-_zp#*%n@gG6@fx(jwnWF&G-}Lot}XtmuAbiCEpPB?epcGvv9S&< zzr6=^i^m9XEO~9uw{Bf2z}4Mz-y?p4idg00?-iMOeUkKNMT!&46R{`RBD~u z(8Xfc>Zy3%w$A|Ek~(amN0E_{w(x_DS!mVB8svKK*L%TSc`; zl8)sZagYb>rYGuyrZ>FU+1XdUtHn9#Bqb&PO~+}?udFnaw(f%mUx~N$^nCNWNl;g@ z-fT%8dqJVczaACH%X`5_RD(ZF)At6q=SuZ+HZCq3Tie%bYc8)}zwRcwE&eGD4-GvN z#dW9Y=TGtn4<7vL>|~@SpP!#M_wj*L5TKbi6?!Qhbt+0TPrhhy%30iVXY4s}TvSY~ z*tUb+cQc#ErJ3vb>Vn_mZf!G}QMqFdU|1imB$jI9=okerf)L|Wy~WHS=3ox6D|ytF zpjj#}FaN5+!rDNPf!cYZ?o{zGdf0(kqYvaFA~N!Zq@*EDURjygK%r4{{)0SyL&LxS zl$CXKDX>#TC%7!w&k4g_Sy%}CaPu)7j^X1)=I|Tcgb)E$P@OoQqt%eBZ(SByC!N2! z>6aK5f>%cINJrstAafHtMGoQlx?w=CD_5=zRX!Jn?rNi65mx4AQ=Mi@2TiTq-2Mlu zQFF9aWK}ZE%EmTX7eMBT;RXoL9c^C5_WK69mwv>B^_YKt~IhGr>DcsRN;+s%F0xE zS{b>uD-1hhJGa`}Fm@k57VqtN@uqfImXCxsTB>VlK@zT*Nig!CDbM4x-ujS=T z(aja!TlS&naRmhxhub3(&Jzd-ftP6@Rf_tiQ@Qzdk|nFZ23>|503$ywZwQ%u|G75R z?6p$8GgR)xQ&LjmK&VLrRCvF5A>p~o8y6QRdh3?U(w|%44WQTHXNZ%}R6Lt=7Uu*7 zHuXDn*UXUWXo}<*##>PV*$yV@{baCM91geYi4heQecNH1oRnnl;&M`X9qV9yhhVD3 zWf7!-5@BF``@Sgq#dvl6*RL)8_#4&+e=FwFr-mP8(X(gI{`&RH`Ebv@ z%2b$ee6#}5?YilcNqNm;D5sXv42?0fvy>ZC{42L=0 zYnDyy>7Q2}whg2$Mq0{zkm(x%eZ&t{RqsIH;d780kKgiiKX-SponA{|qW=Bfo_$&5 zHggFZwjZUYD4?p8Ab@cchUSis(^vRDWlYm-KHMQh6IL!k_AxQhxXxPPH=wS!QK{q9CbmoM!%zq;a>Xnwqwc5r=k$7bK z^o)b-u4|i`YT~s8lGS}Aq*pVJz5G=KR<|xO0PcV|MmNg~ zCGsb>7rGsoDKtku)3mbUCk+%%wO-2jIkon-Yi@U9sk{bBKYuhzKjh#cU~pykl%n1n zg#-z=dHHvmkItwm=)l`7MUs==y|Z?3h=_?f4^M{C3A%a`CiD8NMc4#Xvmih#@agQm zh48XmwV^4OsZC@x#bO&zlC-smDqb74dn!#cq|shU^vy?{-a6Ud^73-x!U73#Dz#BA zQ~!fLI>D1St#h?CKkk*>#hR@`Com{YaZaUJ0R^3tPJlwhst6>drphA~VU}SI4+dcd zCxWgQ4YtGV@vz8Lv1rh$d;|i$1*p`ZnI9Jxds5uY%v1iE_kzU796#xCD8W#GFff@s zrSqGAVN)Tir?!i%Ihw1{zO=WuH*k<-(;US$`mF0NoC^+E;YMVn3klj^sm)keum@nT zd2;F?0U?6%YK6w(9Fb@=`V+!iCP^)isP!QG6E!kee+Nn5?6qrYZ5Qo)6*N_R985)$tD%5Scbw3&te0;m;3q|%v?2D_9dGJ1@5*l}<$g`ttr z@HZF!Sb-Q70hN~t5@&-?H#9WBBf(xk!_IEC5&t*;wp_j*brF z3fJJXEJFYLtd3N?n9-HU{2hmbAn{JpJxqbGp4gZ7*v<}?0kCyg z^Tfbdqok}1g7y3NZ*4R)=)VBt8Kj~G#0_{M3?~{I8sLb1BO~GU=75i$p`kY&w%J8R z(N@h-7Ud&ng5@AbjXK`u;^Nxe*?G1wea5H1|9G41xWu#0TIA@-MjZji(l)ojN=r#g zNfs-RIY@%E8#gG3m^8~aoqw&?F}DF`vR1wFGJ0dKYom$7se52R2~-@4vPh`SAXKlh z(}j@9GSvL>&dkYCR2O9G!fep)jK2_uX@n+Nzr^;OUP1h$bgx`DjT5xpuHDse5Ho7! zd6J@p;Xd|zDEvS5+<6j-qRtZEJw9%_{!Q!d7E(Ei^YWN3!L#1Tu_AbHZ}0y0O9;ST z%N28KEZ@PrHB!aa3d|0}Eb%Sd%FkT~O`ab8Ln_qv^FloN@r!*oudSiL~cI({w zF(-G6Z3*W1U<0ZMJcd98$&r^Dau&DO^m+5fkZWl47vDo~2r@9!+KGns5v^fx2H4$a zrlSnfFVus)1@6+3I2#~5P1TuxR~}To;q|%S0|V=ueOiek4w7l0RzN1={QP?`P{07V z5}1OM&lCr|2R0Ho-1led9(7JJ-4Gkax2vy^xv-5|d9i9y`qWbq~ zs`XurP-1vk7|q``@!JHSo3O^xz0%lU@Gv zVf&ESt|*o|1Bn{^y=?ldknuNd+|{M!`($BWHXQhxNqIMHTs55Zv@Lmv;9AVYEp{>Mou<_nwO9UmuvPNDXFL=UTmXNZ#xMhX-;M-(25fe zD=obM3kX;uNgu6657+uh#|oUMrM!`>PHS2vbMM~OVTTl47>$GG?aAHUT4Uj9H%WlhfcLbo(U*=L6ER%l^iCR$1ZV08wpcZzEEt^l!Qc(wmd zbfn(4!s~m^#6SE7?5|iV8~HaQ?AHpZbDl`F=*!h`7_VY08UB@i_k}h#9`=nOeD{3L ghbkOdR(Bs$qBoih+PStSW0?kRj9D==8QB>bi6P5~cV^xhuZ&qS+0#)DTC}LXM5I)T zFO=4!O(moa$5M&1#Zf6bpQY~|)T!$`|8!m7`LCI4-g)2Wx$ob7|9;Q?JkR_5>f!D@ zTSG?!fk4b=xHx#i|8tbTnKR(4!QdwVfk5J-S-x^lAPOy(iuh0%h?Z{>gJ@6z@ev3` zbN%{&-G(b>jdr18RE^%wxs$7K=$k$C@es;GxW7NU=V`GdS<}=gV|ntm<70zSmI*Iz zhMkdEhq^5Bjb%%JCDB5=mgR^_{)jC$h>Xg9*{KtpqI#w#M<;VUb5GnmhsE?yZ7$V1 zlx(%#0plM!LzqS?+L^r9(!H66FQ_)vw%OGsOQ2ZxjfebzVOM#4tpcK*oh6X<4YfEr z6i3$>)-YX6pJ6l;(~B2Xb*o-spi)(nA4Vxk^OIGlZCY6HT7~{tjWz7k^XtAs=Ydz9 z_cJ?=Van0l3gb*HUp_CDZXE~s1%-DkH=UPYE;%N|#uPW#nRDkiA%CHrcI-cvMeo)V zn;-X437KZCqVO#1U?@<2fx9&77sRx!*qdUzewp(=VnnDQ-~=MCgHOr3$@X>6b$xlu zv9C&3zgO3oF&~-sD*vf^kZ*UEMHA1GhyqCSiV%O0Fo7H#f zExgX$J*y;Z@NP~win{lzqU)-bb@Yd-F7$Pzfn5rKs?;^6&5N5waN53tKR=?^JcL!B zPnFC?F>~xv8D6eb?)_PHiyIbePz_@5zW7PBLww7Ar~GBo`xQkW=enBudsgi$WIfrb z6MEX;t9HAN=gEtm0U>9hHQ1ZFZ&N>6>jEQ{oD055K7D4*nzI zEk7@&efuX98Q){rzH`H-m^=P@cRZ+z4_y|k)@wu>+&;u_u=?rp{)SkckI+Z~wfEq= zUj23}s_wOMRGaHHNtCOx03VtW9B_EUleE>~^OX$yWcJwFGf!&wr8Vz=+}^NU*meE% zlFMC{`Zj7K9vMyc-5J01;c~-rk0)#PAaf6nB|qP}v3A5l-#Jib-dO&iZo}!ye0Qqn z;fgd5E%zI@14QDD*@~E#zIH3)G5zNqyd+n!pRRnkT!Cq2h|(&`pY$dsSD&a<_xE{V z_da5ao^NsT*mRQjplW2D`_3Z<_&dGDZ}xsfISpDANw4pS*R*GQ$a+UZxhV_yJ0Fy3 z%I-WBnGT24fA~f7h1*iLdn78X4}dKzI)8fc#JFE=&EOEbxjY~!k{&vqdY~nK zW$y*kz(J7Je0*?MWUOQJpO%qY{10SOOHl{z=00R0CvHD7yxy5js|)$py5s+G&1uQ^ zq^;(-?Fo2QGHNiI+}J8?DaDFf^aWmzRcFHrh-w1c)H zH}_U(JQ-;iEowLDaiN*TR*h|MFwx*cRv)*CGCSxAOlJlVR)#-uF`A({ zlf7RzzJp!XR86vvUTVHp7qcK$&olyW(xdT~Eb;YW-5ciXWl}{FpOxkfmzE^}_~N4c zi|#U%#B|AKBUP6Zx#=2i4v;s4uq$uuKw84Bp=DLZ8HKZ)b|6`~Hf3XN32!b39L1aW z7$Lbf!)ah#`n2)DBYx$l2e{Rt*@)i+ZLY$R!r8$?d)`L}Xc|mYX}MMz5wK?{v05+q zBV%5~!^~Ln)#T}K;+>xFRoNQ8`I&h^d4sjPLE@~4bFnJAy3;c-VDaTEs~$A9R0#aX z#t>|OX|^N2^#;7hErQ^^%$Mm#w!}MVjRH?j}r=UUwg>pj*&3PR6>92A!EU>1UOGn zCW?@9LB~iiTyFR^1dsd0UmPI~o1nwv;=nLa2%E~_sDy7qIy0CaUp$l&2q2+&!V4Dr z8%sIF|4XcIa#Qw9(D^zM*!>IcH`brIPZ+~iOeW1i#Enp<$8exyl<{di5f|doCT^(| z5{1kIxL5$-ld)t9(HzU65V%+Zi3|W#BA-H}T7Ct^2$#u$a4x8Xg2Bxo7>C3oQ7BY` zIhF`eKp4UTkL3{gRIDYusZn`U9-d@@{|aKQ6oRV~2>UuKB@_>aq7nfRBoN71B8h8> zB?EAEaJVEm8?Lz}hsq-piG)cg9+&1Mk_rKMI3Xb*0CD1Q!9)zD;51tg1|35*n>3wh z@dyLteAoe=15h|m6eau1m<0(zFFByplVCxy#8Z?POEQH@oFqQs?*mF@a4jlP33xNo zB(ic~XfPdET0mK;Fu-S?Gh`IBnX2hy3pu}!leP+$sjTy668$;g8e4DxFJBe0EB1wR7rhqhyG@`_*6bjkPl*E zJ*lw9d=eHQk-1n7V9w!l0X&&Vouu&vT_)noqW~#rD}b58Y~T`_V1r&hCFY86vxy1; zl}h1>BrM(nOQ5g_BpQKCgH^*#k;N(J^k=qKxc||^YQo^FMF94jY=ajUc&);HS*)h? zQcCy_ex}CZAB+G){|NG3`u>pXhg{#Kz;_w{sIDJ!eU}2?W&ESM{%>+={B_&`!{Ile zDEKh5sKvG)J_ya=tZ{Zgpq1ZMx$nH-7Im?UpA3P}oU8mzd-ODZ6mC?LGnkHQT{Grt z{-ocmi^9OiT?WI!mPM(q++E?SVmoJBMN?}|)2f;N`6c&C^B?$R%y}R8Uc0OTb0Wnz z;FX`LXVc=Sh0>zRKr?-+uoRE)tBJ1>C8&&8moSQoi;ns`dOu`CgR41K`kFQ+(=N1K zym)oVZI|?nQ>PHi)&70z2tK1OA~3*oLBA@0kLrN7_OoTfDKl?BIp&S5?w|%ePjbz^Kb;^eV0*| zmaY{bpZ56HHqt%Te~eYjk@+}M>XWvHGWWZWsg5fzxQegNwd=PVk6stxEi}-|E!2G&Z^ZGuGBC^^yYv`>}eG2Q0U^u!v6xjtQ F{TFejgr@)i diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left_emissive.png deleted file mode 100644 index 3af03260f812c855967722218a3907688590e684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)EX>4Tx04R}tkv&MmKpe$iTeU?if_4yb$WS|35EXHhDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRgvGqgl{F$34}bq^0;@1i`*{oJ3UU(Op0@Cd|nOw&!`4dR(i zQ{%i(9AYI=CO#(~*Xe@9k6f1=e&bxU*~>FSdL}hb93mEq9V~S)E9naHG;vr~RLb{e z9hNz7aaJld*19KuVKA?*q`6LW6mcvefg}V-sG*DsOhjo_NimS3{g{h?#P%o2C6TKP zMvetkp+L0#;D7MDTca>F=_CbXK=+GfeT)JAU7%UFtnXvXYMubTXW&Y0`>PFL_LKB_ zTMHin1KYsGbz776fXf|V_(>CW(UyEPy@dksen#Jv1BPya-ZiJU);>-jfDCoDd;=UD z0+AwRue-cE(AnF+XIlOJ09;yfo=xKx1poj524YJ`L;xTFAOIjcq4HAz000SaNLh0L z01FZT01FZU(%pXi00007bV*G`2j>P73k(O0LEc~h005v#L_t(I%VS^|{^0)v1}0>h zFi1G?pC~aXV4~Cz3qJ(#+)Dj@OuFZ;ACTA;O68Y>;+CX7C3%A$&wLWj$wfV`L70ZKgGY`u(GZ7c(X~2_LYYp|4cS_f zP8yX81TkK2oH^&{>2U*JBzw-YEi|rdT`;oE;56@JC%c+e>z`~roOC2+pyRuPxVAoj z?|F7;bFh{(C#__ycbv1=7t@#vr-t1-{-|rruRpZq9H@SDQN4HY)b-nny7u6g9%LSj z+3L6B)+it4EZ=&4xUS*k&ps8CF*p2!qs(xn$bGBtVV|2KbVOlY{RAIXamG1G+qpHL z?i|{n^?$B@z+8HweMtC*%>{`8VOI~YdpLA-w&A*H&D5b=(2+64l?Ay4SpoBA+Li`w zJNEU|m_2j(InC<(siOJgbfZOcTd!n>_MDhF{;BJ_EqlG2FCWSqdOolF;jbrBgWJ~3 zk`J4lk+}YHyeMt|r0c26XV|6K1lbwlidv#8J!j1;pf!3ey3Q=|81NSCv#w4s{o(+kM7HdVaE+{GPcO-_A`xSX*-5W8HhFiU$1P99mOz z_G`PGQPY-u*Iw(X<+vWSA^Zee*~=Ighn4k=F*cjhZcmK;(Y3hVJ(AwBfjKxPc+!%R zDJ}y8zprwf(A0`}ynEPbxVsmoISpWTx=k5K#Gjd7 z$~|B2MqJz=n=yUY{AE)UqBad3e`@EQ_y~^jg9*vsp82hWBR)-UTjnaddgJVneBh2vYyvv)U`W-8zse8M;W~X0{Yw#^=sx|!dk!xV)y|T7x zN5=lz(EUm3VQEWz89toV_@j4AW(YCqVJO$Ru5O6O+ECjuJlC^d73u?uMr^vY{9a6e z-Css+O7LDC67ti^k9JjTxlwjI_I~gkMd_jodA$`nMTF@~-M(Wd;w$or-6gBfCI};r zEN%R>XXi%#+SB*HL}Oh+r01gFz+$XcXz27_3m-g zgPT<$DXH}il55^XaFO#EtwOP-v3Yo9$Z?-RrmYGfyZN|tK;|?|PKU0Q>bZ*g&U7l2& za4uutrfBY=wM}ycv$Idoz96twnhTeTzpIrNZ}X51x>&GRzx18Qw?6aIx79zZkE}}^ zKL@F9n!R76Zz{R@>^Q*4%B1DYhV#o9g@4+AOIKC?1iPP|xOruh@Ne~> zJG7eKuk45}IkkIuy11jVV@%kS4(78#@1J{T?e?@bjQFaXeKa_~_GHO`4g1}SA3X}) zQ*~(bFJw*D(k)xFZpVDPk=g2dYSCBKb?v!5yrcIHpAX$6O278}q+fTAd&)`ss^X5S zxU->8!f!6}YrK+k-8DIPN#?;X*0-Mt>ONi}o|Vr_TGW*NXyXCezO&s=7hmmI@Z!#b zPc~k0l7BPv=WL(AOVbXXbbDIEYaZO0Br42zt&#UQ-U#vWoNHg;jUa;)l;D0$jQUVa zXjDvGu91;Uqe=_zPXq}FHfnJqjWp0@WU^8n$aqkFl0jF>0~s^%Rrda*H(LE(zQ8j4vAI%Q%=3uGil#nMAHI+D&~ z@|bKi%&5%77(q08fKILu$4RF4L4Z$zj1+@GD`v5>va*<2T&6~s%;JbdA{HBCVHgT5 zP<^)AfE!V@el&zIV@OCnp;KxNN{yNhF>#qD!w|?|06pCjpGq4QWrbJk`&a;cu#C8t z#bL5pDiy20hu#pD2|)S+daZ|E3chAoaim_8p(Dt!Oj2za-5)|uSpBsbx^yZXIl&^+ zNfj{FgIzhVY#AOI6>If?6eKHETFMKM{febQsd!1&E3rWhl}`UafV&m<6>CfGlrgZ1 ziV{mSL4>)3( z{{Fm|Ml(pA9`qta<*=Dtvj!GM4AKGA;;>Tz0ObL)5r^tX+@R4(HJbE51`L4?J+0~} zaG>P40hizg5`eNXu9(9XvoR^g5p(!rOz<9?D`xkz*T|KM?0;tsj}JY-T=WQ~9_*h@ ziOgpzo?K}DWd4}0qz)6EP8|y|PMA~BnRT!99qxT5>@m1@GP z(PX8NunvGSl%T@9?d7u~sRsYxWq~I_&zQOu z;3?8kHZ5F&^uoVwCw8p|k^$O?S$YI?s zkb(9#NJozi;$nv&PrJ<)c6N4@4(b=+;7829VQX1H0H}l$I=6-IvO3$^+EVhC&>hr! z7qGRA*8)Ii%Ye>sLT5PO2Bv-h))cxrO_b8&>^azpa)i$JB1#b&D7OWm%VeU~@Wl#X z>g=MzraAN?E(4sA0gm=aFL3Uhz6Wu!nwuApOv`vB1t_#Q!!-=|9|x3mg3T<$3IJ0W zQ9Xy+*`kETv;&Eh3`PVe1pvxu8CC$8f{TL<(pv_9cz!ut9BmQ1iWyb`1TeiW1<0(a z8|(-`Y|5pS10>J{&I8TC7ID~@NXZ~T*XtsHwWY%A1F`H1K{`P*L7mfq*=C!r*H)nu w!SMx1r>V=@vM?$LY;JE8rGw#{0AK$+l0a!CPD*ylh diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_right_emissive.png deleted file mode 100644 index 8cd0e6223a777bd2dde4d4c8e8920fba4bc1c0b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5713 zcmeHKdsq`!77vIZ5nRzvMHC5xWyP9zLP#VE5|n5I6rzH!Wo9ygkz^($0RmKU5%Ezg ztcb6bRtpGPv2|H|RRIN|zD21hg1TzaT12e7V%3`734}-W+g+#eK(`a_WRArPg0#0V=^rRZsU<_l5 z4r5>@Tuq~ynjUS5-rVNxlyxgQc=HPTfGMk=>}X@0y_l_-yY%5M;?}XnSFo>!Z@lDi z?NROY^svq`EN_0XXY@I4>Z0vJLtyo*l)Ss4OR`@s@7PkC-@JILD-_7QUvR24{V%zd zWwODgI`o^S_L5Hb=tIlWIDdCPy>3nYgB#&DvobFZYqCEhW_pwr-SBBhxcW11N0QDmk!TeT0JLDNOqAXs(!AKN4pDWI^Sosq`=RjNeoFWZ%JsAF;QzUm05;^sJG*Ks?>b zSAQsgzD)>w$jd7je4IY!Y`HjdG|bP)-L>Ss0@rzo)e#RWep+{V(#Vx(CKiRR^8TcN zXc+$akGdU~Vu-5pOz*XP5ocok+&KNlDT|$CH`XqG?l#n&C?nfD)E&)^dq3dJbp0_Y z;qkDo2JK*oY+U5YYR%JR9{8qoYC}L~Yv@wH5g++vH{O}daGkfgarEgBja1PPV9vMG zuNXbazTy6a!iGaOg+ula$~ZAB+*a7;u&+l9S6tcKI_5}>@y|1S^1e`(p7=H@vV40y9yLv| zFz!H+ntAB*kvVlg)uUl8sqNUMst7m9$u(Zi<5D)QE%H63$cJmU?LO~+Hm|Anh4SXk znSXWjDBO%3jaVrt`q*(nojmFsZGHZTHN~rFL${CNlZ9tKZbn-98>Tz1XH+9sahE}X z?lth`Rrz;wA3&X61nYZu(d)T-Vpm#jGyl;1h8L;MjAhd5K!c&t{HL3AFdB~;83-1O6H@5$*Od?hS4pAy zLIp>m3&P^?kW@VunHs7@Q{z#w3YtER?r)L+0xf2Q878fUFi1>N$igcD&lJpt7#0&_ zycCL3gfoIjJ;o5Q1S}3S*n}tXplNi5zh0%5M95}#Q-C)q6lXN*By4taaxyEK&m#4) zY_3==W^;IK9*+qun1&R>2%DIM!Hc5k;*enmRFCV7I7u)lP8cB*jZz2#^9*Z#TAf1C zLr)mGRRDUhO|Xv5WpUVAExWIW!5EwbNV*extA{}e`Y<~JGmwdT6bnwm2%}eD3KiPp zuS?WxEaj+BHm1R}z|;Vua{GmxC0B&^cu*3=;#!@>3y9s%(uk{j#p;(EHDf8KZz90G zhqs@#wRVd!uu>=_G7?Rs(v!=i5EWmdB2io=>3Z}Pi~YnrJ`=-y#Y_QDrDDQjM8xEA zI2;~^2}OKF+=og|7>qE1ViXl1XW@XySI8HN{17n{_2nag!cWW;^Mqn1SIp%jDy~3; z@CAJ+!t^-Um9VC7Ruq*AP$3vcd1+=3#mR*ozb^m&59=hguj3C8%e#ABsEfq zN{T^w_Dn0lfl|RnSOyz0K+56qC0ve#!&CCO60T6f<-X71OE`V(NfoY6`A^o=@nQIP zEqVxU0P#~SP}iA?#1gvRx?VN7FSH6MHJvAc_9Qys%vtv~w>J^U>OeOe6g>%u_m0-ccE(+a!w zqMFWccy+JCZx{hk4+ME9eFx+kkn5ckcqik5-8CTBJ1Ou^#sj-)?r}nq#qaVm=g@4a!mQ)}R%A?-`3=XnV3tV#jUnwV&Xivd zfqB!AuIFyUQNtX1cYf^ZYdxg)$oIIE3bC-!(OgsO#tT%<9lR z_GDni`#M{(e>e6Jm_PNhrR@x`u|~E!{jgDN!6^LKbCgXFfeq5~+FUHMy|Z3uV|AuR z^KQW#Sl{_Ko+%OvoM1fLQ~TSnHyrx{R)@aW@A!GPTqslSj!dFTlm~~(_RomP_yxnf B4^aRB diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png deleted file mode 100644 index d8f9dec87d503d3cd1687113094f3330a478fa10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6130 zcmeHLdsGuw8XtU+1k|Hg3W{h5^+D|LOJ{R6xM&oj?NG_U!ST_Vgbw=jPt|9>4p2 zzx&-ACTk+X-XHBS(E);>(ILTsQD7WPcB(!2oYG;&AZSEqdQ6-#3Nz7ldaYckBIw36 z9YH5jm2wD5z0wdHUvQf@s`s9ke#EdF>67-g-LV(0SbIylC?!06`V!BB;%%$u>~Mgt zmGpI(Vn4nqWd}`Y&02R(xp>;=XK8cmI_6!<|F*2Cb=~!(1kI4!WG^Ild$-)-Ee$htIrshBf&}WT6|w z=q~lc#Osn8>D}d{AcjhPa}>=LN_?ka(t%GdkGDGuWjZZZp#P|Z;%l744vb5>G3`;) z#Qmw|F_+o9o$uEFcw&|F^vTVEA@my8b-nG==s9`LiF*&8OLtR!`~4d4bE134+$3mP zdr(^I7oD@a{u{k%Y368V*VwtEy!3BzByJx*K~K3xR~69;#$OMM2=+1*s1D4(Ol%L> zAawp$I9mO7>_@bz1uUE3UG4>y;itoO(opx}Mse~5wdq=C9Uh)@ zP~3X8Z+K%u>1mhffchzoNNXR@|I06$Dko5Jf|}doZ|C$mMIpLjyjj_N1Z%NWRs@%-6cQ5XEnDb*r$FnsDMH_bNQQlX&l_et^ za-P2Jl*1Ww^l)Ux!ABR`!@Vy)4w{-@+7%G{tYzWU-psPbO`GwUHTay&iWZmUYs!D| zQa^W69aD)bem1-(>Ha2#+A7I#E54f^;=h##?l~R>(45_KC;Ltf0%XXqry!K z4{0{8Zr~$_iV9+y4{eeslyNTvG#Dl-%rR%Hre1B?y0^OG?fQIeQIEhs@Um!$JGbFd z&54=}$5_XV#4pne9-neNGj8oOrwq6>n*H?o-AVV2tM80SGOVv>@_g8)+LEM};z=`> zpMNmN^?2wh%@zBw>Yu7kuYR0esSc0+Wv{w?G&bld+k?A1pWd=LurI=Cq94j^h$=a~=>9UV z1?Id@{r_ILv|EZFuDrCRaCj*azxBU)ytWJo;IYf8WKwO;%T*dD0v-**!1Zt4V)~ z)$@H;*72UTdACgexv`vA(~_TjcYf_S>b5POyJWo)aglV7q=*Y!-OCjjqK?c*vG*2+ ze>)znnQi1fp)6p|oN#?3OWhFZSNBn!Lr(mQwUN8N+u3V6<5#!I*xNPHEH*pNyxsOm z_k(4P5Hx1K5?q0Ck`F|h~3}+E4LJdp}U{&;`CEpK`MA$q?3KUAU&f*2ge#z3Pln;{iQf#Eg zlFraTfV&O%C2MQ$7Gq!~k%$7dcrqDYNT4r+Twf&9;!2swGUcNfkMNfAVM2(>VGhBS z!a|vxfcXNHPhf0|ZI3_1BKFSgH zL&n&r~##)c@4~s8U)E6P<2379tGqPr-nt5dAw2u=-Va0;W+A z;QkmWSgTz58^s_%5jmF-@L(>2qA&*+aA5(?7r+BIWfcJ~_$xj_Lf{W5SfgNvSJ zyXgn`0$cHCwt+JHGnb&#-z@T4{Jx><4PCFrz-t-5sjfG4y%qznW&EbP{xG^62HzD4 z4fqGo1l|PO_oX+1w@7nGR_~@?mW@0O~*l)|{Qoms)KsVO!;|0@#wHQYp3wtj4r&Vl6WAne29U zcE5^X5CEh=wx9jBTSn(G6o@2`+^gXOomBMf3j6I8C^T{x%+QqYmXLN(>*H>y^Ep|| zgN<~4H3b_7B(tQF?CupGTD+cicG*Cz&c6#lR-6@p94C~;L(h8bAQEJ#^Q!>1QqIZF vF_SwnSh53i0Bn)HGJ1G;*n9_*{3~Y4Z@#QMcIOI(TsuS@7PxQj(#-z>n?o-& diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_top_emissive.png deleted file mode 100644 index a3221b27ab241a0e17e0a99799329289509bad17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeHLdsGu=79T3|2tLqNSrJPJMG=`~CQlMUL_#EL6d@v_xJ)LKFp^|KG7tnGsMRWV z*@EC&>z-OY9u!5iqPrDE)VlSB)XKW8VkruWijS_X$RcIG2@t{89?x$7*t1Md=5g=u z{=WPDzWd#i$@-XC(+0D=Sr7ybRz}NX!PS%by19U}@8eDkf(A5ZsT1f}%*HlbC>?1a z*z^)J!6q_E9Ry`wy&u0|Ut@?{M{AJI-Nmr_k2i~jlQuWi9C*BWLHeHb3e%o&#oYvS zh-Z~g!RNpA%g!2-+w!wp_{q@szr;tme~`C#!Pdfns-uOYHtb&u9gLRwM@(JR zbf=Qf*)p;AQS2S3qU@-$wg;n2tBP|&1Ekk~3aFp6^!Mjxb-31?xHvNWAJ@opZN)8R z*%wXLhodV3{rvuRr>^!;(XmyF)@*3H>eCWX_80$|&F_vrWiA<$H}!+_xt9WeGoVPh zQZ{mnP;9LA)cnwpa3I-~lZvVe1(M|G;a9eu4Vr)CxBCsQEhlZk<=1ufbx(AU>fB3a zB8tqW`wibO!!FKc$-jTF(2sko$ngGwj}{1ObKI&0yVJ%$^{)B*$+Vw}0u0&z!U4w9kx!5wSBT zkcp}TyHd>FqTMCr6^-V^_JBCS`FOrQ;_`=5qI#2+J8-f`u-DO~Z86iEf<(2=i%Swq zZzX!?&Gvu~*Ot#eUrImt=2Cdp-K(Xy7r6}f**Q$%LpJZvpZ0Oc;<&m&f{ViRs}~N| z?fTRH<=)gb#rVZX^AmHkcDU@jORS2YwBADitu1qNN=x$mVanr^7sjlq^7vxS$2EJ- zM=3r^!>*8iF3zXec^kPcKECU?jmzC7#SKo9U$_=iMC&-qr)k-15_uK(∋pHcT(^ zQu{WZVl9~OTQR$~Bl;1y18?r6Qq~?AweTyq%SY;m-ja@8*bqM_XawitcRPY7m0yc& zvy?>jMwr-J&A}<16#@Tej*}3>;p5uOfrG zTiJetlKixE@xIdW*I2`jWp(%mb7!6PFkByS1|C~YCl<}A50bV{f3&*bRQ=ibl+yO4 zJ|^dmLE(d+#kL$fv{_$%oAoUBNZE+;=KP(z_rk;%mQ5NdXJ@r_QugtJt(53+apSV) zxXV8#-Cz6gX3e~I$)3(Xd{&Xs)P`~9iByQn97&{*(ODKEE^C$=&q~Fm zT2A<6R%oUS5Euy>V`mx-CaWwnjAQ4OfqTZx`;qVCySLUx+%a@7$=3M%`zU(X0vf^0xo6I^H8Z&%0u`(J|6}M*t*0-W0|nY z>d#PgamWcPZXwMyNtxITC#Ip&=`aol_}M-A8OqNV*exWrS4?+9ofSuu|z3oQTRGOtgP*3N7x4H>X<+_UUMG9$_Gi0BQxJqJ4&( zrc}i^A{Ytuq|t1T0%G?;(xmRWSbcJ1Jof4IP6UKIc>ADx=57ZAlu9L&Q+PU)o>Csh zVaAtfDV)^G?6;UeAixPs42y+26c*x$2*yxc0EeIg3_+zrp-`ghMWr-ZY0QKZ3>6^f zl7L5o3q)EX1cOC7i5M0N2o0=31Q?89s1%o?LNTGkdr{1`kf16tL+`8@DlMQA3UHAG z$FwjZ5rx1)p$>sHghm2mBAqlutkGhqMr)_i;xYwgF=AjjNh78wcxIE{?qCF$MZ_q> zID9Vh+!ABJXdMUudw?`)DVz1VOHCSyI2vR0M8#4uUxFg2I7BSwBj|HbJYlhdT4Y#J zgewr*Ji=CK#K4M zG8B;^d^I1HfqQ{?A|j9>z3`Nl)GhgUXlDDcL%S9|nzVxPm)K2Rdn%4d>w4;XG?4bq z#Ae&Kg$%>HreMV~h%Su*SC?Xi=uD25OrrXfN^Vi?zo5wL>S{LYqJVz_+)(edNYaZR}@M{jiX7>;BR{HkK z)i2juDezX{{_5(N>#Y=cD{y~x{nzATJ%5=ZOyC!g4ZJE93s*LP*DM#!jA?SHllg2r zR=g2d+|AMRtq|lfocTI^bA9X2bhp3V>3 z0pkDuaC%9B^V4%m$kMSWu4ad>)ewoT~+=rJ?b7lRqw%LI(| z6(p|;emw#3JozNTk;&_V8G`@#aE#($>K1Y25Lc+Tcs>3Xvw4|-LB59M#b5^dMiGB* yeG0Yyli3ijUIDw~jVF)^i#Tqti#Ou_x1Cw{IJ{+TUo-#pLdvLF@_kd2SN#hB!^?pH diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_top.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png deleted file mode 100644 index 0a76b6661485dc429631dbb1a4dea7ec257167b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6159 zcmeHLX;f3!7QP@uKmo-9B8nmCLrOExc|>I%YycrD*rMJfHxMBM$pr$4(4r`Um0G}7 zQB)jSrPO(mI@MA|tEJX~IurpBd1#TM&!Wii&dmg@+Vz%ewd=hfo~)C5&e?l^d++b; zbKs^ZCMwLqeyTkLK@Jh&!Li^u5$iY`@IB+{FbqM~Z)FSP(O5VWuTm?evQz|*W~mT7 zqLoP@NPGLn;`a{M|6{^nl1rlHChfY8<(~BBfXyuh7Cvd4becO=O{b~B7Xo=<&bqyW z&yv`Ats?u>%8gTFaju)^lhV!ycb|OnV&{SynluH|DO^*%h6O`%W<3eFk+?gXQ)h**cu&{I+wK99{BPe%tl6v;V{Tg?$UU z)|97&R&_jRtZ3guV3*c2SCx4@sY>AP%)5Q7YfJBe%5592ReSWeU(30%>U_!U!{hUL zH9In9cTUK*JwD~V10SSVu*PX)OWLFAToMvX?Qgi|w35o!osIMfE2pKe=#2mTn~;Vd zRNt-E<=1)%iz@5#gPhrlhtp<7xLALJTqUi15!iYBqO0cd-kUmS;b+TBqWbf)wzizU z@^ZE{;egws--@&H9oROSb~`2|F!zIp(fNJ3XKcQ*v>BY2RTge}uz``L%|BZr-a5`Ua*V)Q^Q2@ z^-o2M7VKME5V}yXWwKAewSW8W{*Gt_nUTfL|CUh$r;!{@H| zJH6VuxI(Dzc-v*Lx^U`&CZVRfP`IM@h3k^k+p(9Xf6;Uf{W;f(pV9qAXYsL+M|TFt zHzglB?-Lh9U0M?`wVf4Ez3ur~cU--1;BtRQ`_e1^oFkEqy~`CU>Ezp0+QLs(sTRp7 zHa3agzi(q@7Wz~d=uCxMMG!@zO#32?X;)5$miCYS})&*WSURNho`#S@}lIo2#@-=JV$Rw zW}I=0-%|8-#+7G#Pi+ux%x=71!6NS1Um>{r{l$0erdCy6yIK11*j4q(S<`%o-^<$a zqp#N0>DWu2*;`p^B6n9Dl<>=|cF6f(CD?6_czRIxF6qmqj@@AiH$5l0BsNaWJ$6>- zzBQUvkzFWSSreYHYJG-n&h=S=jh!8Wn-^Ldk`G_sbN61;-Ow+deVzYwR+H4{rf%l; ztrL2lOJ-y-P9FC=$d4TFx4UV6w39IBc(-L-)meJgm0xS+#a$lSoF5%_xzC>S!dFv2 zZZ74tswr;Egud$PZQn%b{2%%b1ZVZ7o!I+gd+6q!G0KR+in?bu_a-N=>Q5@1`#34D zpY)Zev$kVNrQ*|ly8_h?Fj+hWhp&pVTxWNxeJZf#wn{oGR_Pbxf_ z-EVi%yyyqBe>rm0x!cn5kn5J17nQ$u>`n}ERxL?yn{*pzJ=|5YY_rlPvH9Armi6Kd zHcXeykI_RXxO>8KBFNoqd`iwX4=^VGP`=is;aPQ6a!%AqzjJ9HCC2HlFqXB|EMCxC zUM$E;=S(a5@=jgz{M07K>NVc+(U-a?Px8uNu06cB^RVkR$6U^eyxqAoj+0ijG!$%= z-}h~)-#j#Y3iYgz+(4Zk1 z0K^#3D=joa@Mne`i)fVTYB3U$fhbV#(GU``*8$|SV>D5jbcC!iv0)N@I->&t=4RY6+NRv~%0NpX-~}ti=~#FX!F&Sd zpC?g@WfGo#NTqU_bgr01q%y=bB10nL5IHn91&kyN5sk~H!!UgmRD?o=`* z4B#-hEH*>RhKXDb6CpB~R1s0cMOZ|(M8ss#7;FxMAsqz~t(JkRgi}XHg+WOG6kUwK zVlhoj6jPa0A_L)wh%l83MobQs$%Um<3Cz|*NyNNRrCJVy?Uc#kB!sL|Bq{65a7=SY%Q%IDVnh}vuCP(5>7~_-5;<7;UTs8}^!lrUZlolas4X8y7 zl}aJe8F~q}F+7kCpccj|6#(ehK{mV~H3FkbwNR-{bz$$!{xgTkmA6wqQ=12;3c=*i}r-pCh-_3v!PGW$DS;PG#qycWN2 z=z2rfYccRz%5SRc4PCFrz-uYLsjk0_F8h&pMMMGq!OH}1g32{kgWxUFMl?Sx7#hYt zJ5KHU1gzMp!V@$QG~OBO7FU~B4S+>kG(r$!+i7p0saX353&K3vZ>}(-yjKkp|ThQ%5$Hq9L%ofP9v$FKIRwe*Usi&t0 z>KO){82c}29S~&i0TBv@%xjn|EiKJt23eX$I9t0hO25dP0bLH@*Us_K-9pzfGAt@n zGXvP#;mk^U<8eUA764e;>2+JzO)<-{Xid!wfaQ*br#Hr=)|hwDN40zFr|NYuK1|Kb z0nQi!;bSkoY-nf*JbyELHO!$u0GK1d;cWFn%-W>fx^fU|E3ntku{9I9qazpr04aoMOhF!oETG1|}@i_3rx+V1BBTr29=P6*!Vjf!4+6~5* zz|hhV0a(x*V<4E$=m^XtVtb1TJvVshpM!(gf&1Oq4W2Rip8{aph*cPdZYWt}`C{`| ebbUzw7hm5Ut!Za---*P6i3o`bt_@uN;eP-j5ICg( diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_bottom_emissive.png rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png.mcmeta similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/pipe/ld_fluid_pipe/overlay_left.png.mcmeta rename to src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png deleted file mode 100644 index 69789efda0b2934402b87de4beabcb14983e34c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5672 zcmeHKdpMM78=rE@Xf&swI{B*tR4oh0a7P75UylZC&5~({+9OUo+P`^SsY}-@p65f6x8g@B3u<`grJS znP@>E5M7!l)erptUU|(^2Y<~+r98AGW)lKHPk3LgqSTX^{S1-oAl507 z8mOhdkn(Keh)i|BSrukDcbPNq^nqdssl^c5wNoB`*gll)bx3M$=YH13F2{JUIQ=|C zP_i@~sA&G6x$g9ioCUmt(tB!05p|C)g$y;kxsY|_=M>e*6m7?Chb*=qDOqT4S(g5RB;!b$wxc<((K)?Q#hHnqQ zGb#Tw(EsrEia(;H*J^H5UCJY$3treMi0gTCqq?OKaWn6PXlOp;aH&a=SLW6Se!3MF zQ44S#8H)>CP_}u8FDzmlf4FGnQ5IH9LjTGm{d+Fx8~ zT@hjQthEmk%TuXTHH|H0oKbJou)S^OBWm7d*PTT2G{HP7-(piLtcbet%Wk9k1peYT z+?XZZNEXEKVlj)C<-UX7`Z8i~k0ScPZ)2{9^Z!cg&5XP@hgcva_#t*0-}@#uDMyJZmf>Ml)WaMv4CfjB_) zxKh%tA_?4+Z5okyKl@C!%JposR{G@Jw|!ifEfllzdd14ES4E_}%rdn%_vMQ{>W&5V z+}X3HwKF9*^m+Q`ErMvf8aeXDD$A|yhDN%v?Y4ujH`9#XhqeCMY2p98p~2w2q3o#* z^>uiQEVJ`aM;R%3;B`PLqV9q=wkN+;>F62yF;TX&p9_u_Y)E|CPMFREj#AXQc#fSl_+e-ZnFA)U&amYNzE{x>#p)F z{(x;SA}M->z;4%^im7cz*4_PAf9)Qr*w>bCzNdG2%h+z*NI|5R`G3+k9aG?@Lbgl0 ztDl8J`l_q?4cp$&zbD>utE+H4pOfT%_ZmG@`)Q$lo^i+W%IkX_ey+dFMwnN$UkahV z*xC8;#i>&@xqkQb8b-4ZzHQ5CYR~ZK5YWx|FTM3qSyAF;4T&!wd{;BV3mROtX%MJ2 z|B1W1m#3JLm=+!5()YSB;;q__Og%Pw)r8+>^I*L9gNUYXre$3dkOOv8-aocczF5Xq zwo!+j^}5L@9qJEjF3f8`n7b`{55>jf!iPS6i}n$Zr0bRMY2E8eOn!ilEix;2a;9nQ zZ%;jRJfnC6Uc0+wMZ(Tx$!c-=p5eyFV{^yc7X~kPOmK%l=A`i{6ki&J^09M+jt(Sd zJ9swx8l%%MWvk*D}ky@S2JO;7A`Dy+6cI<>ccF zP*=#nQts1?*DUqIXV1(WlkU06^WM}ut#8U97~fxzad~-IGnbwqW$#C6>mOC0D(+d)ZS=*D*3j(oS5_8icn;l>QzZ zGh(hjddI8aS(S%gi@v_6>$cq{ZHixAxA|lmELc&O6+iA_x+NzRQ`;8yDA3t(<aUS(|pAF+%0;G;BVQFJi{2^Cp^Pbq3#FDyh#3qjAZ1Iy zisp-iP$edlC5n+bz+j*p`Y}F%m`?u$FO<%*0P=y9GsQ?W0)-R^ke^#fWp1$`$ZSCW zXdz{QZzM=RKq`unumQJNKq#~P9D>9CWG{}9L`|o|VIzSkKme*rL9gg9Tzb&xzMm|V z6!7>0@w634_7|EmKKF03zKBgJnNH{PKtS_PxL;_0%zauJ)S}bLR1rHy86J)508{!W zb3|-Dhdezbv4{YM1aROe91{)4aq(O@$(G24Q5f8_r2{<;Mz-DtW%xNeNo9r%<2$kBVJkavsLd8M9x{mj0HH;jzGH^5j&hIJo*O%|!#(;u_7NB$2V_R|WV zH386WW)5sFV6Q@cYF4v+DJlFHKeOxbFM0r>zd89Te!tQ6jjpd^;H#9sRo6GVzKVgb zQvOz5|2Mj{{yy#iLhubJ4m`}bd3z>;2O)Kqw+9shRetS?NBqGVO|fT?6avxKS6*{E zdXgr6(3N zX;j9=+#q?f{9x#^u)WmKV;gjhTin(x|1Lu)u(npb%zCpCKk+6z09$9CTd<;hXPH;e zlwae$!$PBjKbvqp>?-hlbb%TbC(rWb+GU8 z;pDF2{Od@UrFr>+xtrC(j$V_U`jxbv0(JeMsybu|y=-wgf8&-)iytP{m;T(V8mLfQ z7H;UQU#A*QaILx$HNLyXSLNyV*IXGlA_%vZqE~k`KkZ}HtBnSzzi6!U5!r-5^m9#} zOa(RfQ!9`vlgCN%-S|Ha=x`rp;8sn{i`FI9$Cv&@oXAO7aC9G1rhj2!N^gV(wRW&Z z6diEsUG!9hkConuJrUaHj7tdYsr$*R0&w1IulWY}1z;xMUh3SQGUe18JeXEJ@$?P? PBpE_;^PyI{hNb)$WKhl$ diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_left_emissive.png deleted file mode 100644 index 17a3b18585a24c14352433b5fb9798d0d84a3b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)EX>4Tx04R}tkv&MmP!xqvQ?()$5j%)DWT;LSL`57+6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRmELS-bHwp_q#t=zmhi@;1h|XOgAjz4dU5N zOXs{#9AYI&AwDObFsMM{N3P2*zi}=)Ebz>bkx9)H^ZLbN2g@DIN`^{2LmXCAjq-)8 z%L?Z$&T6H`T6OXt2J_lVn(MSj5yuh|NJ4~+8p^1^LWE9@6cZ`Bk9qh<9DkBrGP%lN zIZc;D?bidg4#~2XU1)6o+{yw(t<_X|`2ClTWzuKS?ev)2q zYvChcU>mr&Zfo)$aJd5vKk1SoIg+2YP$&TJXEdf9Fmwy_t+{<`-Q)BD$WX7AZ-9eC zV7y4#>mL8^?d;pXZ(9BP0f_=~u;n5}m;e9(24YJ`L;xTFAOIjcq4HAz000SaNLh0L z01FZT01FZU(%pXi00007bV*G`2j>P66cIKjJo)7S005~;L_t(I%VS^|{^0)v1}0>h z2n|gCu^93nmwHT7nb{crPv#)n5KIGDxfvK(xf%Y?5JqU=S3)u5{}c`;JO=Q=@&CDs z5JNabA%<{>GW?&w@Sic~$3K{I77PPe*s*(-T^K_Dcul|yZ2WM{7=MEiF3!lrz`!BO zz*xY*_k^aMqT=D`gB_#rl4 Tb*jxr00000NkvXXu0mjf>NX>2 diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png deleted file mode 100644 index fd255ffdf74f19f7be2af128c5aabf0c8b8e8e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6285 zcmeHLdsq`!7M}njf=EHEil{MC73q-oQv%9Epcn;2MP-%A%mgAKiAjJ&5tX)9i=fqN z#qy|9v1+yW!cwHZ!51Q^pw{{V!KzrR)g&mgcP1p_uKVrhx7%;`4=>+j?wrT(p7T5B z-jG=lJvrRf*~=M%AlJx<&{%MPkGPy1!RPQNT?hpA`d~p^ye<~WpsF=0nOuQWbp|y~ z#r1L-1nI9{nlW?DNZ-DlZJt^OpWVxw%O?Km+G=_dadKZ_`n2$;nfuvej|86ynd0=- zZ(T3FT8C$Dh|GNw6XJa2cJrF30%lBQpjp2*t!Clk-EA#l%3ZydMKDfxY)9@FYxdBK z#-Odm-tu2v?xc;VXrHUfOQ+^9AGEf7=$7^fJ$ycWbyK+_!mIc|bcfe375)FVSoSk# zXng73{prsi()Kh3+;-9q^vF4|e71mDZoR*DN%Exc z9+ot?_%*EzJX2c;*US!6M)qqm#VAiMmfeZyoQiE-Sp9=$t|DQ%@=EbylryxZXm`#7 zyV#-6O3&@|X5Ss~$%ajrpjk`mpd!!aOpjq<(`I}by!X=k0qZ=N@q=5wiz%JZImmC? zc-=ME@JSo|?rscTcXEZFz-RuGO-EwZaAL~h2euy__`c}qsM)pd688%Cxcr+d6CXF% zyttUS(%`xL`#BYM{;m0n!yC@l@-H5C$}Nmr>|@G&SbS>7k_kb316D-@OV4Ox0>q-F z-k~m@;_5U<-|}|IH#pgi;gbk`|ApQe8>#gPrVVhw$0yBCI1Cx;T&Y)9IH*ekLXP<~ zY&u;ug15RPe`y~&W%Q&Y(T+3E87@xIeeQL7&cP?wdk?SbXwj~|ne8^>IOA(+o=4$| zz-5CqKK+tDn>68&CzV+Qw;Lbj#U6!^i_}r&Co-+>mZaTjCgLMfp zftRMu4auFBvb|#d+GQ{6gL5Ra=T%G%_f2bBZRT3HiGao#vOY5FN)(OJnkMey_fbruC_<%pR5MPi0*^JWA11k~ zeSTt0)rpj`i>CN0w#q+^VdmY5KfAxtv-~1+?$Q3?*WOFLqBkACwnLyQ?Q1-nzkdAe z_Q2}(=Z0>ItEtV0TN_GnkIEl*r+Mw!(-Pju8AfTDH1p3P=hZ9gCrvBZymasM@GC#F zHpkw(lU<_x`U-s_Yvjp_rX%-Mh9B*#9z0xfB6IxMtZg^TR^9cFOZ&E+eJfOZFR5X* zw5IidFfXdm*L9amX4>x&wbkweQ>r3@TlU;bylFgqKDd2%{g1WvKg_D%8k%3#{L_K8 zi@cJn%rQQur+*B7V6PignWs>X)B1Xtv?=^ez1yZ={aD1gXD{0^rsT`U!QS{cr>=Z) zLNTGeU(4b}lQ)km#ebw0rVP*VNnpyE@`TQg2W^_dMTTvSZ7Y?EQu)r8%h!9Z9{5Rb zY~bYMV`i8gci-y2=h&_Cs=}HDAFjIb?9+oCc3Gxe>|XHu@f`={r56G-xYyf*uim#` zHsvwrmo?^dW#S2uyub4rDE9|yj3{gTov zU5n2&1>BiA%<%GY`OWQ7J09VNeXJ+fcxPru-N^nXYIFG$mYZ=@V$n}a#pA9U#?8At zBQf@;jo%--Q5DsBH~eYVh0^=kuFoFq|7u~*r>Sr3J3}a(yI|P1=mrfc#>Qxru|-dh(?uTV%iL@gdtIf;K}lc1sZ(n zg2{2{f)rGU(Sib<1N0&Qkc#UNsyuwaDZT2uq5ldF_e0uzy{(sW`P4d|)X_)^spi49(xJCAsQUfsWfpal|oD-AgF|= zO)UW%3PW^AD5ApwD1*foF&QETD~`n!G5I2vz>mQeF?!gmFuBa|@2rXKLk+MLJwmPp z>l;XsWlv4T=UbjEj|w@tnW$89TZjF?H#7sz z6*7cEu&bE@HfRP08#Dt~io$#W3*$1_OpL>@kY_{Js${whM1xOA0z3k)K!cK8QO9(b z%J=nXGLmtk4uCS4!GoFnI2KF9Vu(PG(f|7NWC)Livr!(*V536N>j(x5xO^Eb;9z{V zjL(%xdH+D(e~=!N0k%|kN3faJ^aAL_foLse0R5lJZ87L^f&yABGH^13gPv|X>AU#? zrT8mHcbol{OHirr7I`av-_iAsuD4>~t&HDw*E_o2ih;K>e%D?9HM*Q%{Z_=4;2*pU z@Jq0$ppJM8=qQZ}4~4pjzi+Cxt_6}l>WGs+TO2yz$_89E_O;7)nZ;rHjj;(t6S*7a}PxY1=YnV^4p8G+8+tp{_%0t4ymUpF=$V{M&)?ou6QgG=-frh2G zT6N^z#nBF;Ex2cs5dg*>Df9p^LB>uB1@zNFvD3Y-?Gf-UP6vy^W-f2;T_!`u`cTT*|h4 S=fTH_h$6!#hwcha%>Fx2vwoHU diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta deleted file mode 100644 index 53a9815890b..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right.png.mcmeta +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ldlib": { - "emissive": true - }, - "shimmer": { - "bloom": true - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png b/src/main/resources/assets/gtceu/textures/block/pipe/ld_item_pipe/overlay_right_emissive.png deleted file mode 100644 index 8119bcb1985ea2ba788912e180348964ef87910d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5726 zcmeHLX;c$g7Op4)g0z4e?qxumQIpEP)FCJm5X3|VX#v4*D^(SUB&m=D2)J-u8*LX_ zZ~>P_(I^b!r~~7IjLYDN!l6Yys3ST~D=?0TOSem7%e)E@f_lyz=S=_UW1y&4_kH(! z_kQob3&q+<6JmgOO5ev?OfK zFpw~5(WoKFa;q&S{^$>r2faxgcFf7oGyB1l(t@$KAI!lGlTwTickayZ5T{jF$|KBp z{`R+b>#=43P*vQqtQ{5QI(*xlz?9ICwv*4E`u%%Ti~h#3XWvu${_ELaHypCA(Ph2J zT{?a5`hwdGO;i5|De&tJhes5)U98LY*;28*!P!{poYen*`P9*yFLX@ItGbj{CU2~- z{o3lgbzsE>wr>2{FNeHJscri9m<4UwwqeJ##Dv}bEy|*sAv5PB)Q=tLno)hVZB}+t zZR9TzMJ`|Hg_%uM*`ka)lOE479^Zm=c+@0+@!7-nfW=M1svpIpW8@=Vv{37(A-A?G~<7CN`?^KaQ@n39%SJuj)^){0Y6%r%o&1_&<+4vr`H zuk)0ppZ6Np>~=zZ;N-=%Qv`l3EsB*z5oOZVdsAy3zZ&j7R-b#Q`HA((ZCC4T$ai)| zhp1iYgIBr9=TQk0*v;XhbK5V~eO_DWxTq0fnQad!~zcGnt;np8me(wB7DQVK2Sw=F=v|E&n-< z+r9tAAu;plAAR$K2Bt8m?KAcaI#M~}(RZ!G7W;oQ1Yrj4J?K|+cEEVQRi5W(uall^ zRpj}o){mN7`|#QylD)kAZwdB!#MgYK`tInr4=f?f8CX7wUaaI=bk9eSA=CLeS$7s zE4>mu$n9t4)RoG%K}g5}W7fVMYu^Tm-<%$NwtJfxRl%=pyfh{_Ih+({)>6mTwm4DO#T}Y1vXF z0L^Y*Th-_laCJ;WP0-(5Hq|bazAWB#pye=gL9pQNmzM|JSfYN?xIA!5UHZ0Xx{Xz1 zuS_fK^z#2~OhJhYnv zJjs|zX0riBko5F)b~>L;850q%R4PR{JcP$%0R+pGp*Ld|mfqw`Q*?32NfU0=7|a?< z57V5Oib^%hm`pGa_r#|&C=_;jy{TITpa){X3<#IaL3BFA(Zgg8NdqL^0e#TJ6b+g( z5=EM*R3lD?q>*~FuOkJ4+x-oxMy)L!0!K(KsRK|GSe4sn$(iAbNV^9uL83-yuz3No z`ykC4b+1@`Vxwnl={N=g-0i%5&^@`^zyPICpmGXNrNaxC%b4`~C_&*G0<{gL5rG}%kCQYNAZKd;4@aVs2r-_B#T5wv zg+xfQFp{rgNjPdDmqQ9jQYdtwm}As{s>HO8QPETcpd$DLmm}t=SOPU6VF@rH&QkG( zB9=%c;0k$s37-&1Y*Yk}hEhfy2DVe9!xBlvpii_-(1N2uk>N5XkIm_|L~1d!8aRM6 zpwSalx~X?6TB9T9nlV~Wu1G54i8&&^SR@hfMABZ+Jkn?awMesaIc$EHB=p9hARQnr zMpr5zuz7%N&|o9@l|UJzDM~A2(m}zrr+r!h4itfzF*#-?0V#*aN4Xr7!;9u|QLY$# zPvP)Ujsu<|H0q51hNh1X9MHAtVHy)yKf`9~I#YAWl&+_)N3F(om|)m;EKm&ZO2LGs zk%TQyz|}Q{Ct>-9)L)>6noWN(4Frtw4d=w1WM+x9WF&qe)L9>3sl_vA7(TgJevkJ6VM87(Lkr zAn)lBU;{X`7~t1s1FZ{mLd4z*yY&LG{+gfeefTw(fZp7fjW0hcqi<(J`{EWyOnl!8Df8goLqXx9~kwf zu-msE!vHaCD>Lk7i1F182IM>#6mIwR4v8JfP&K{nJRt7Jh^t{ZVmhsY_iT>y?~Q2^ p+6eCU+&^S{&(YD)Il_U)lk|S-G$wtCPwGD zB@yC6Jg5;|LKLD7#$8l!H@Hp)j0R8>XO=(D&&N7fN zX`$2*WVzZjMZ0~}829!I0Y+yH8g%ML{8^T<-Ge3nNu*CicKJk1rF@k2LEi^V-}7rm z{f^+GHm9L;@Szc$hE=ldYw$+L^7g}LGspPuXv?~{_g=`|;ZE+8KlE+cv_)X8T4_yP z>Ne`h$=uz7nBW1oEdRc?vT#>S(h{%G;6)F39+rU@c`+?}=AQkgPFJ|RrghGkJ)h`m z#-$|X{X^dJaF}Q9ZwoRVn_WF*zmGUBA5)TIC@gXKxq9;!_Gzzu!q&X&xl=yQp8oEV z#s%If(SIC08@91JyR|a$mSD6@B9Z^`RrZ7j`Ky0;R97;rDY8Ab?pRPm`^wg8{dryU zRl)37)q>)G{`6zn>WLMHmW{5u+?a}Fo%kpmAi&Xzt6m8{QWmlR(jSdxdS*Gsimoq~5>+^uOj_qXDA6Mz5v)=B7i zOG8s*?L6%KYPay(;fEc$jSZTkNtNHd|IMd^^G|IxN*?PjRNoAoACf#{M! z3P1U4$i5{5*7)Bx4_MKHL)?nXj;O~`C}|VC>h#!ML(0E&S>RS+S~9&HT59MUxqQSZ z1AZv)J0JaNTdQW2wsHc+U7Rch7!9B1SD;rpQ|nx=axlm7f?p z&RZz;RBoG@zdLDXy6Vi2m8GjIB?akG(aF0S)=ezW?~~WRmb)eWjt|_XWr@vnFY;R#o-NkXPzm7hic&+3MwMVFqSpFzdGO`BluNr=4*Xj@4&1F+E zj>|dxFXvrTuXnwLgzVqp2i+3G)7E)YF?K(6_>`JYs8-ZpB5v z7b!!gS=ZM-LHy?4p`xx7M~gMv>b^Fvh}v9##91+bUzPXh!RWZ3XT`Ve7+m(D|Im$n z2FskToI{U#94KG2=b>J6V1q-m)u*E6sWSI+!Zn|hzZ_fsSQxjebkms|{qGLg=+SiW zog<$Iv~t6IM=UZHttl>jvXqcC9lFiBZ`Iw|zhNAllYJuwb?>t$3biJX>!VOKBQk=_fu`2H4F7BM$t;0>17_lrNxc~Dn$8c9#T z*_`$?=c!KvTz=w|CuHVPrZLnQbKFv!fI6>{+;kU=C1)ooW8g5ok%Wa@As6LDSg6^2_6KgT%t)xEapB`TD8QSXolesR zDT0{IX0BPl)f>|gotKcxQ|U8l zIhzgqaOeEA2Bor#UT5l10qB8PFayHlqKHI$TVtf%OP-t)R0;LHGxriJ%*g1P{wpcFcPFuT7xYLh}{E8Q|jkp z^_Uyuu`Q?jL_l~KZx3|m+HGKfQYxk4dOVYvo+4b%X2zEidYmGpwnvOm2~e>J;{=HW z5{^(3L~tYoigU!MC`b^fB89j>(v3=?Gtrn1CmAY0&ZPhk9}g6vDnh^sk_4#$1%`6O zDiz65sZo?K5UOxe$m>S&k&yyfiD|meilHI^70E|M60r&ppb|Alh=c49qe2l!jPdwt zzF5FRMW~I6z@_8$MlA-mlhR^oBx2B|*&K}E(vTR1oXzLjp*Bm52BXy=0Gt6zN9fI_ z=imfNOUBa}qbConfG^CsTiHBl_4+bA+rIxl^76b zw}H|HDk0KU3On>-iq2bX9sBSWM*!5lgS?Txy>j)+^+pQ35x6(IdgXc}1>OkUn_d4i zx!j(AOp!Y93&;#Um8Na8>cD4~i)!M8aLCI16_gdN1eSh=$Yc`)^&i4?hs!k|w*zBe zTA_^S`-_|7kfF}fRP_k(4;>#xcu0bHu)`qdyKMmRf8QKlRKS|+XoZ|zfyV9-)Q1H+ zxI2OOj^>bjrbmopr=#=kV0h*LS)W1Bv!|egJM#>7ifJzfGq#rqY(VW}JBbyL*!r_q z1~b?{ZPvBJtkyz*`|y8?{4bn61Yvlrxg863^@JdI?;Zj&{ugz4NdpH1WG8KFh9IVQ zYcB>fu9pZHqmAV0V+eWz2-;g2(@P`UjIX;`SGiiPUyppdBED`CZ{I&{LtvSI Date: Sun, 6 Jul 2025 17:21:51 +0200 Subject: [PATCH 124/270] Fix BedrockFluidDefinition losing data on world load (#3336) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../bedrockfluid/FluidVeinWorldEntry.java | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java index 71e7a198d51..91a931cc417 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java @@ -2,6 +2,8 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; +import com.gregtechceu.gtceu.utils.memoization.MemoizedSupplier; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -12,24 +14,39 @@ public class FluidVeinWorldEntry { + private final MemoizedSupplier vein; @Nullable @Getter - private BedrockFluidDefinition vein; + private String veinId; @Getter private int fluidYield; @Getter private int operationsRemaining; public FluidVeinWorldEntry(@Nullable BedrockFluidDefinition vein, int fluidYield, int operationsRemaining) { - this.vein = vein; + this(GTMemoizer.memoize(() -> vein)); + if (vein != null) { + ResourceLocation key = GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein); + if (key != null) { + this.veinId = key.toString(); + } + } this.fluidYield = fluidYield; this.operationsRemaining = operationsRemaining; } - private FluidVeinWorldEntry() {} + private FluidVeinWorldEntry(MemoizedSupplier vein) { + this.vein = vein; + } + + @Nullable + public BedrockFluidDefinition getVein() { + return this.vein.get(); + } + @Nullable public BedrockFluidDefinition getDefinition() { - return this.vein; + return this.vein.get(); } @SuppressWarnings("unused") @@ -46,24 +63,32 @@ public CompoundTag writeToNBT() { var tag = new CompoundTag(); tag.putInt("fluidYield", fluidYield); tag.putInt("operationsRemaining", operationsRemaining); - if (vein != null && GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein) != null) { - tag.putString("vein", GTRegistries.BEDROCK_FLUID_DEFINITIONS.getKey(vein).toString()); + if (veinId != null) { + tag.putString("vein", veinId); } return tag; } @NotNull public static FluidVeinWorldEntry readFromNBT(@NotNull CompoundTag tag) { - FluidVeinWorldEntry info = new FluidVeinWorldEntry(); - info.fluidYield = tag.getInt("fluidYield"); - info.operationsRemaining = tag.getInt("operationsRemaining"); + String veinId; + MemoizedSupplier vein; if (tag.contains("vein")) { - ResourceLocation id = new ResourceLocation(tag.getString("vein")); - if (GTRegistries.BEDROCK_FLUID_DEFINITIONS.containKey(id)) { - info.vein = GTRegistries.BEDROCK_FLUID_DEFINITIONS.get(id); - } + veinId = tag.getString("vein"); + vein = GTMemoizer.memoize(() -> { + ResourceLocation key = new ResourceLocation(veinId); + return GTRegistries.BEDROCK_FLUID_DEFINITIONS.get(key); + }); + } else { + veinId = null; + vein = GTMemoizer.memoize(() -> null); } + + FluidVeinWorldEntry info = new FluidVeinWorldEntry(vein); + info.veinId = veinId; + info.fluidYield = tag.getInt("fluidYield"); + info.operationsRemaining = tag.getInt("operationsRemaining"); return info; } } From 23a5f2ae3608aba52a6af077b71e7da5ee34eb0d Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 6 Jul 2025 11:45:24 -0400 Subject: [PATCH 125/270] Bump GTM version from 1.7.0 to 7.0.0 for next Major Update (#3164) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 78c7206b722..b6ede03224c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 1.7.0 +mod_version = 7.0.0 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From 5285264adafbd3d8d5175763d17f03b9f07d98f6 Mon Sep 17 00:00:00 2001 From: WithersChat <76114055+WithersChat@users.noreply.github.com> Date: Sun, 6 Jul 2025 12:36:30 -0400 Subject: [PATCH 126/270] Start Deprecation of Chance Boosting and Migrate to New Chance Rates (#3026) Co-authored-by: Ghostipedia <46772882+Ghostipedia@users.noreply.github.com> Co-authored-by: Ghostipedia Co-authored-by: Jurre Groenendijk --- .../resources/assets/gtceu/lang/en_ud.json | 2 + .../resources/assets/gtceu/lang/en_us.json | 2 + .../gtceu/api/recipe/GTRecipeType.java | 2 +- .../gtceu/api/recipe/content/Content.java | 2 +- .../gtceu/data/lang/LangHandler.java | 2 + .../generated/MaterialRecipeHandler.java | 2 +- .../recipe/generated/OreRecipeHandler.java | 47 ++++---- .../data/recipe/misc/CircuitRecipes.java | 8 +- .../data/recipe/misc/MachineRecipeLoader.java | 30 ++--- .../recipe/misc/VanillaStandardRecipes.java | 6 +- .../chemistry/SeparationRecipes.java | 106 +++++++++--------- .../xei/widgets/GTOreByProduct.java | 36 +++--- .../xei/widgets/GTRecipeWidget.java | 48 +++++--- 13 files changed, 158 insertions(+), 135 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 3912e1f4fd4..32e9dc57bd3 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2324,6 +2324,8 @@ "gtceu.gui.content.chance_boosted_logic": ")%s( %s%% :ɹǝı⟘ ʇɐ ǝɔuɐɥƆ", "gtceu.gui.content.chance_nc": "ɹ§pǝɯnsuoƆ ʇoNɔ§", "gtceu.gui.content.chance_nc_short": "ɹ§ƆNɔ§", + "gtceu.gui.content.chance_no_boost": "%s%% :ǝɔuɐɥƆ", + "gtceu.gui.content.chance_no_boost_logic": ")%s( %s%% :ǝɔuɐɥƆ", "gtceu.gui.content.chance_tier_boost_minus": "ɹǝıʇ/%s%%- :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.chance_tier_boost_plus": "ɹǝıʇ/%s%%+ :ǝɔuɐɥƆ snuoᗺ", "gtceu.gui.content.count_range": "x%s-%s", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index e799c329788..05f8531bcfd 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2324,6 +2324,8 @@ "gtceu.gui.content.chance_boosted_logic": "Chance at Tier: %s%% (%s)", "gtceu.gui.content.chance_nc": "§cNot Consumed§r", "gtceu.gui.content.chance_nc_short": "§cNC§r", + "gtceu.gui.content.chance_no_boost": "Chance: %s%%", + "gtceu.gui.content.chance_no_boost_logic": "Chance: %s%% (%s)", "gtceu.gui.content.chance_tier_boost_minus": "Bonus Chance: -%s%%/tier", "gtceu.gui.content.chance_tier_boost_plus": "Bonus Chance: +%s%%/tier", "gtceu.gui.content.count_range": "%s-%sx", diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 8d096bf1cdb..75f126ebd34 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -51,7 +51,7 @@ public class GTRecipeType implements RecipeType { private GTRecipeBuilder recipeBuilder; @Getter @Setter - private ChanceBoostFunction chanceFunction = ChanceBoostFunction.OVERCLOCK; + private ChanceBoostFunction chanceFunction = ChanceBoostFunction.NONE; @Getter @Setter private GTRecipeTypeUI recipeUI = new GTRecipeTypeUI(this); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java index 5ce9e9927ba..c45fb8bbd01 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java @@ -161,7 +161,7 @@ public void drawChance(GuiGraphics graphics, float x, float y, int width, int he graphics.pose().pushPose(); graphics.pose().translate(0, 0, 400); graphics.pose().scale(0.5f, 0.5f, 1); - var func = function == null ? ChanceBoostFunction.OVERCLOCK : function; + var func = function == null ? ChanceBoostFunction.NONE : function; int chance = func.getBoostedChance(this, recipeTier, chanceTier); float chanceFloat = 1f * chance / this.maxChance; String percent = FormattingUtil.formatNumber2Places(100 * chanceFloat); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index a044e861e0f..ed6fe66c1d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1344,6 +1344,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.content.chance_nc_short", "§cNC§r"); provider.add("gtceu.gui.content.chance_base", "Base Chance: %s%%"); provider.add("gtceu.gui.content.chance_base_logic", "Base Chance: %s%% (%s)"); + provider.add("gtceu.gui.content.chance_no_boost", "Chance: %s%%"); + provider.add("gtceu.gui.content.chance_no_boost_logic", "Chance: %s%% (%s)"); provider.add("gtceu.gui.content.chance_tier_boost_plus", "Bonus Chance: +%s%%/tier"); provider.add("gtceu.gui.content.chance_tier_boost_minus", "Bonus Chance: -%s%%/tier"); provider.add("gtceu.gui.content.chance_boosted", "Chance at Tier: %s%%"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index a9ab791a2ef..1de414dcf72 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -74,7 +74,7 @@ private static void processDust(@NotNull Consumer provider, @Not AUTOCLAVE_RECIPES.recipeBuilder("autoclave_" + id + "_water") .inputItems(dustStack) .inputFluids(Water.getFluid(250)) - .chancedOutput(gemStack, 7000, 1000) + .chancedOutput(gemStack, 7500, 0) .duration(1200).EUt(24) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 8b02deded22..87857faf682 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -121,7 +121,7 @@ private static void processOre(@NotNull Consumer provider, @NotN .inputItems(IntersectionIngredient.of(Ingredient.of(orePrefix.getItemTags(material)[0]), Ingredient.of(orePrefix.getItemParentTags()[0]))) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2 * oreTypeMultiplier)) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -129,7 +129,7 @@ private static void processOre(@NotNull Consumer provider, @NotN for (MaterialStack secondaryMaterial : orePrefix.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 800); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -198,7 +198,7 @@ private static void processRawOre(@NotNull Consumer provider, @N .recipeBuilder("macerate_raw_" + material.getName() + "_ore_to_crushed_ore") .inputItems(rawOre, material) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2)) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -206,7 +206,7 @@ private static void processRawOre(@NotNull Consumer provider, @N for (MaterialStack secondaryMaterial : ore.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 800); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -269,7 +269,7 @@ private static void processCrushedOre(@NotNull Consumer provider .outputItems(impureDustStack) .duration(400).EUt(2) .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400, - 850) + 0) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -321,8 +321,8 @@ private static void processCrushedOre(@NotNull Consumer provider .inputFluids(washedInTuple.first().getFluid(washedInTuple.secondInt())) .outputItems(crushedPurifiedOre) .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000, - 580) - .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 650) + 0) + .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 0) .duration(200).EUt(VA[LV]) .category(GTRecipeCategories.ORE_BATHING) .save(provider); @@ -353,7 +353,7 @@ private static void processCrushedCentrifuged(@NotNull Consumer MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_refined_ore_to_dust") .inputItems(crushedRefined, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -388,7 +388,7 @@ private static void processCrushedPurified(@NotNull Consumer pro MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_crushed_ore_to_dust") .inputItems(crushedPurified, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 850) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -417,32 +417,32 @@ private static void processCrushedPurified(@NotNull Consumer pro GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 500, 150) - .chancedOutput(flawlessStack, 1500, 200) - .chancedOutput(gemStack, 5000, 1000) - .chancedOutput(dustStack, 2500, 500) + .chancedOutput(exquisiteStack, 500, 0) + .chancedOutput(flawlessStack, 1500, 0) + .chancedOutput(gemStack, 5000, 0) + .chancedOutput(dustStack, 2500, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2000, 500); + builder.chancedOutput(flawedStack, 2000, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3000, 350); + builder.chancedOutput(chippedStack, 3000, 0); builder.save(provider); } else { GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 300, 100) - .chancedOutput(flawlessStack, 1000, 150) - .chancedOutput(gemStack, 3500, 500) - .chancedOutput(dustStack, 5000, 750) + .chancedOutput(exquisiteStack, 300, 0) + .chancedOutput(flawlessStack, 1000, 0) + .chancedOutput(gemStack, 3500, 0) + .chancedOutput(dustStack, 5000, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2500, 300); + builder.chancedOutput(flawedStack, 2500, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3500, 400); + builder.chancedOutput(chippedStack, 3500, 0); builder.save(provider); } @@ -504,9 +504,8 @@ private static void processPureDust(@NotNull Consumer provider, ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("separate_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 250) - .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, - prefix == TagPrefix.dust ? 150 : 600) + .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 0) + .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, 0) .duration(200).EUt(24) .save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java index 25b3edbd70d..ea1ca537eff 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java @@ -690,14 +690,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_emerald") .inputItems(gemExquisite, Emerald) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 1000, 2000) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_olivine") .inputItems(gemExquisite, Olivine) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 1000, 2000) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); @@ -716,14 +716,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_mutagen") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(Mutagen.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8000, 250) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_bacterial_sludge") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(BacterialSludge.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8000, 250) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index 6656affc784..3e9d018c616 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -319,14 +319,14 @@ private static void registerMixingCrystallizationRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_end_stone") .inputItems(new ItemStack(Blocks.END_STONE)) .outputItems(dust, Endstone) - .chancedOutput(dust, Tungstate, 130, 30) + .chancedOutput(dust, Tungstate, 330, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_netherrack") .inputItems(new ItemStack(Blocks.NETHERRACK)) .outputItems(dust, Netherrack) - .chancedOutput(nugget, Gold, 500, 120) + .chancedOutput(nugget, Gold, 750, 0) .duration(150).EUt(2) .save(provider); @@ -1239,7 +1239,7 @@ private static void registerRecyclingRecipes(Consumer provider) // MACERATOR_RECIPES.recipeBuilder() // .inputItems(stone, Soapstone) // .outputItems(dustImpure, Talc) - // .chancedOutput(dust, Chromite, "1/90", 30) + // .chancedOutput(dust, Chromite, "1/90", 0) // .duration(150).EUt(2) // .save(provider); @@ -1247,63 +1247,63 @@ private static void registerRecyclingRecipes(Consumer provider) // MACERATOR_RECIPES.recipeBuilder() // .inputItems(stone, Redrock) // .outputItems(dust, Redrock) - // .chancedOutput(dust, Redrock, 1000, 380) + // .chancedOutput(dust, Redrock, 1000, 0) // .duration(150).EUt(2) // .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_marble") .inputItems(rock, Marble) .outputItems(dust, Marble) - .chancedOutput(dust, Marble, 1000, 380) + .chancedOutput(dust, Marble, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_basalt") .inputItems(Blocks.BASALT.asItem()) .outputItems(dust, Basalt) - .chancedOutput(dust, Basalt, 1000, 380) + .chancedOutput(dust, Basalt, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_deepslate") .inputItems(Blocks.DEEPSLATE.asItem()) .outputItems(dust, Deepslate) - .chancedOutput(dust, Thorium, 100, 40) + .chancedOutput(dust, Thorium, 150, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_red_granite") .inputItems(rock, GraniteRed) .outputItems(dust, GraniteRed) - .chancedOutput(dust, Uranium238, 10, 5) + .chancedOutput(dust, Uranium238, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_andesite") .inputItems(Blocks.ANDESITE.asItem()) .outputItems(dust, Andesite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_diorite") .inputItems(Blocks.DIORITE.asItem()) .outputItems(dust, Diorite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_granite") .inputItems(Blocks.GRANITE.asItem()) .outputItems(dust, Granite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_calcite") .inputItems(Blocks.CALCITE.asItem()) .outputItems(dust, Calcite) - .chancedOutput(dust, Stone, 10, 5) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); @@ -1323,7 +1323,7 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_pork_chop") .inputItems(new ItemStack(Items.PORKCHOP)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000, 0) + .chancedOutput(dust, Meat, 6500, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index ad1c87f832f..7543739d90e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -278,7 +278,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("gravel_to_flint") .inputItems(new ItemStack(Blocks.GRAVEL, 1)) .outputItems(dust, Stone) - .chancedOutput(new ItemStack(Items.FLINT), 1000, 1000) + .chancedOutput(new ItemStack(Items.FLINT), 3300, 0) .duration(400).EUt(2) .save(provider); @@ -345,7 +345,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_melon_block") .inputItems(new ItemStack(Blocks.MELON)) .outputItems(new ItemStack(Items.MELON_SLICE, 8)) - .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8000, 500) + .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500, 0) .duration(400).EUt(2) .save(provider); @@ -378,7 +378,7 @@ private static void woodRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_logs") .inputItems(ItemTags.LOGS) .outputItems(dust, Wood, 6) - .chancedOutput(dust, Wood, 8000, 680) + .chancedOutput(dust, Wood, 8500, 0) .duration(150).EUt(2) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java index d9a22a273da..0a0330a0d9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java @@ -49,13 +49,13 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("oilsands_ore_separation") .inputItems(ore, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(Oil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("oilsands_dust_separation") .inputItems(dust, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(OilHeavy.getFluid(2000)) .duration(200).EUt(30).save(provider); @@ -105,40 +105,40 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sticky_resin_separation").duration(400).EUt(5) .inputItems(STICKY_RESIN) .outputItems(dust, RawRubber, 3) - .chancedOutput(PLANT_BALL.asStack(), 1000, 850) + .chancedOutput(PLANT_BALL.asStack(), 1500, 0) .outputFluids(Glue.getFluid(100)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(20) .inputItems(GTBlocks.RUBBER_LOG.asStack()) - .chancedOutput(STICKY_RESIN.asStack(), 5000, 1200) - .chancedOutput(PLANT_BALL.asStack(), 3750, 900) - .chancedOutput(dust, Carbon, 2500, 600) - .chancedOutput(dust, Wood, 2500, 700) + .chancedOutput(STICKY_RESIN.asStack(), 6400, 0) + .chancedOutput(PLANT_BALL.asStack(), 4000, 0) + .chancedOutput(dust, Carbon, 3000, 0) + .chancedOutput(dust, Wood, 3000, 0) .outputFluids(Methane.getFluid(60)) .save(provider); // TODO Other kinds of dirt? CENTRIFUGE_RECIPES.recipeBuilder("dirt_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.DIRT.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 1250, 700) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(PLANT_BALL.asStack(), 1400, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6000, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("grass_block_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.GRASS_BLOCK.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 3000, 1200) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(PLANT_BALL.asStack(), 3500, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 5500, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("mycelium_separation").duration(650).EUt(VA[LV]) .inputItems(new ItemStack(Blocks.MYCELIUM)) - .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2500, 900) - .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2500, 900) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 1200) - .chancedOutput(dust, Clay, 450, 100) + .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6200, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("ash_separation").duration(240).EUt(VA[LV]) @@ -170,65 +170,65 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("uranium_238_separation").duration(800).EUt(320) .inputItems(dust, Uranium238) - .chancedOutput(dustTiny, Plutonium239, 200, 80) - .chancedOutput(dustTiny, Uranium235, 2000, 350) + .chancedOutput(dustTiny, Plutonium239, 280, 0) + .chancedOutput(dustTiny, Uranium235, 2300, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("plutonium_239_separation").duration(1600).EUt(320) .inputItems(dust, Plutonium239) - .chancedOutput(dustTiny, Uranium238, 3000, 450) - .chancedOutput(dust, Plutonium241, 2000, 300) + .chancedOutput(dustTiny, Uranium238, 3400, 0) + .chancedOutput(dust, Plutonium241, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("endstone_separation").duration(320).EUt(20) .inputItems(dust, Endstone) - .chancedOutput(new ItemStack(Blocks.SAND), 9000, 300) - .chancedOutput(dust, Tungstate, 315, 110) - .chancedOutput(dust, Platinum, 70, 15) + .chancedOutput(new ItemStack(Blocks.SAND), 9000, 0) + .chancedOutput(dust, Tungstate, 445, 0) + .chancedOutput(dust, Platinum, 80, 0) .outputFluids(Helium.getFluid(120)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("netherrack_separation").duration(160).EUt(20) .inputItems(dust, Netherrack) - .chancedOutput(dust, Redstone, 625, 95) - .chancedOutput(dust, Gold, 70, 15) - .chancedOutput(dust, Sulfur, 2475, 25) - .chancedOutput(dust, Coal, 625, 95) + .chancedOutput(dust, Redstone, 700, 0) + .chancedOutput(dust, Gold, 75, 0) + .chancedOutput(dust, Sulfur, 2500, 0) + .chancedOutput(dust, Coal, 700, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("soul_sand_separation").duration(200).EUt(80) .inputItems(Blocks.SOUL_SAND.asItem()) - .chancedOutput(new ItemStack(Blocks.SAND), 9000, 130) - .chancedOutput(dust, Saltpeter, 2000, 160) - .chancedOutput(dust, Coal, 225, 40) + .chancedOutput(new ItemStack(Blocks.SAND), 9250, 0) + .chancedOutput(dust, Saltpeter, 2250, 0) + .chancedOutput(dust, Coal, 225, 0) .outputFluids(Oil.getFluid(80)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("lava_separation").duration(80).EUt(80) .inputFluids(Lava.getFluid(100)) - .chancedOutput(dust, SiliconDioxide, 1250, 80) - .chancedOutput(dust, Magnesia, 250, 70) - .chancedOutput(dust, Quicklime, 250, 70) - .chancedOutput(nugget, Gold, 250, 80) - .chancedOutput(dust, Sapphire, 315, 70) - .chancedOutput(dust, Tantalite, 125, 35) + .chancedOutput(dust, SiliconDioxide, 1250, 0) + .chancedOutput(dust, Magnesia, 250, 0) + .chancedOutput(dust, Quicklime, 250, 0) + .chancedOutput(nugget, Gold, 250, 0) + .chancedOutput(dust, Sapphire, 315, 0) + .chancedOutput(dust, Tantalite, 125, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rare_earth_separation").duration(64).EUt(20) .inputItems(dust, RareEarth) - .chancedOutput(dustSmall, Cadmium, 2500, 400) - .chancedOutput(dustSmall, Neodymium, 2500, 400) - .chancedOutput(dustSmall, Samarium, 2500, 400) - .chancedOutput(dustSmall, Cerium, 2500, 400) - .chancedOutput(dustSmall, Yttrium, 2500, 400) - .chancedOutput(dustSmall, Lanthanum, 2500, 400) + .chancedOutput(dustSmall, Cadmium, 3500, 0) + .chancedOutput(dustSmall, Neodymium, 4500, 0) + .chancedOutput(dustSmall, Samarium, 3500, 0) + .chancedOutput(dustSmall, Cerium, 5500, 0) + .chancedOutput(dustSmall, Yttrium, 3500, 0) + .chancedOutput(dustSmall, Lanthanum, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_sand_separation").duration(50).EUt(VA[LV]) .inputItems(Blocks.RED_SAND.asItem()) - .chancedOutput(dust, Iron, 5000, 500) - .chancedOutput(dust, Diamond, 10, 10) - .chancedOutput(new ItemStack(Blocks.SAND), 5000, 5000) + .chancedOutput(dust, Iron, 5000, 0) + .chancedOutput(dust, Diamond, 35, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 8500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("hydrogen_separation").duration(160).EUt(20) @@ -271,8 +271,8 @@ public static void init(Consumer provider) { .chancedOutput(dust, PotassiumFeldspar, 2500, 0) .chancedOutput(dust, Marble, "2/9", 0) .chancedOutput(dust, Biotite, "1/9", 0) - .chancedOutput(dust, MetalMixture, 825, 80) - .chancedOutput(dust, Sodalite, 550, 55) + .chancedOutput(dust, MetalMixture, 925, 0) + .chancedOutput(dust, Sodalite, 650, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("metal_mixture_separation").duration(1000).EUt(900) @@ -281,14 +281,14 @@ public static void init(Consumer provider) { .chancedOutput(dust, Bauxite, 2500, 0) .chancedOutput(dust, Pyrolusite, "2/9", 0) .chancedOutput(dust, Barite, "1/9", 0) - .chancedOutput(dust, Chromite, 825, 80) - .chancedOutput(dust, Ilmenite, 550, 55) + .chancedOutput(dust, Chromite, 855, 0) + .chancedOutput(dust, Ilmenite, 575, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("quartz_sand_separation").duration(60).EUt(VA[LV]) .inputItems(dust, QuartzSand, 2) .outputItems(dust, Quartzite) - .chancedOutput(dust, CertusQuartz, 2000, 200) + .chancedOutput(dust, CertusQuartz, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_alloy_separation").duration(900).EUt(VA[LV]) @@ -339,7 +339,7 @@ public static void init(Consumer provider) { .inputItems(dust, Sphalerite, 2) .outputItems(dust, Zinc) .outputItems(dust, Sulfur) - .chancedOutput(dust, Gallium, 500, 250) + .chancedOutput(dust, Gallium, 750, 0) .duration(200).EUt(VA[LV]).save(provider); ELECTROLYZER_RECIPES.recipeBuilder("water_electrolysis") @@ -552,7 +552,7 @@ public static void init(Consumer provider) { EXTRACTOR_RECIPES.recipeBuilder("wood_dust_extraction").duration(16).EUt(4) .inputItems(dust, Wood) - .chancedOutput(PLANT_BALL.asStack(), 200, 30) + .chancedOutput(PLANT_BALL.asStack(), 225, 0) .outputFluids(Creosote.getFluid(5)) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java index 578198b7204..6e1f89112d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTOreByProduct.java @@ -176,12 +176,12 @@ public GTOreByProduct(Material material) { } else { addToOutputs(byproducts[0], TagPrefix.dust, 1); } - addChance(1400, 850); + addChance(1400, 0); // macerate crushed -> impure addToOutputs(material, TagPrefix.dustImpure, 1); addToOutputs(byproducts[0], TagPrefix.dust, byproductMultiplier); - addChance(1400, 850); + addChance(1400, 0); // centrifuge impure -> dust addToOutputs(material, TagPrefix.dust, 1); @@ -205,12 +205,12 @@ public GTOreByProduct(Material material) { // macerate centrifuged -> dust addToOutputs(material, TagPrefix.dust, 1); addToOutputs(byproducts[2], TagPrefix.dust, 1); - addChance(1400, 850); + addChance(1400, 0); // macerate crushed purified -> purified addToOutputs(material, TagPrefix.dustPure, 1); addToOutputs(byproducts[1], TagPrefix.dust, 1); - addChance(1400, 850); + addChance(1400, 0); // centrifuge purified -> dust addToOutputs(material, TagPrefix.dust, 1); @@ -231,7 +231,7 @@ public GTOreByProduct(Material material) { if (hasChemBath) { addToOutputs(material, TagPrefix.crushedPurified, 1); addToOutputs(byproducts[3], TagPrefix.dust, byproductMultiplier); - addChance(7000, 580); + addChance(7000, 0); fluidInputs.add(FluidTagList.of(washedIn.first().getFluidTag(), washedIn.secondInt(), null)); } else { addEmptyOutputs(2); @@ -249,9 +249,9 @@ public GTOreByProduct(Material material) { addToOutputs(material, TagPrefix.dust, 1); addToOutputs(separatedInto.get(0), TagPrefix.dust, 1); - addChance(1000, 250); + addChance(1000, 0); addToOutputs(separatedStack2); - addChance(prefix == TagPrefix.dust ? 500 : 2000, prefix == TagPrefix.dust ? 150 : 600); + addChance(prefix == TagPrefix.dust ? 500 : 2000, 0); } else { addEmptyOutputs(3); } @@ -263,23 +263,23 @@ public GTOreByProduct(Material material) { ItemStack chippedStack = ChemicalHelper.get(TagPrefix.gemChipped, material); addToOutputs(material, TagPrefix.gemExquisite, 1); - addGemChance(300, 100, 500, 150, highOutput); + addGemChance(300, 0, 500, 0, highOutput); addToOutputs(material, TagPrefix.gemFlawless, 1); - addGemChance(1000, 150, 1500, 200, highOutput); + addGemChance(1000, 0, 1500, 0, highOutput); addToOutputs(material, TagPrefix.gem, 1); - addGemChance(3500, 500, 5000, 1000, highOutput); + addGemChance(3500, 0, 5000, 0, highOutput); addToOutputs(material, TagPrefix.dustPure, 1); - addGemChance(5000, 750, 2500, 500, highOutput); + addGemChance(5000, 0, 2500, 0, highOutput); if (!flawedStack.isEmpty()) { addToOutputs(flawedStack); - addGemChance(2500, 300, 2000, 500, highOutput); + addGemChance(2500, 0, 2000, 0, highOutput); } else { addEmptyOutputs(1); } if (!chippedStack.isEmpty()) { addToOutputs(chippedStack); - addGemChance(3500, 400, 3000, 350, highOutput); + addGemChance(3500, 0, 3000, 0, highOutput); } else { addEmptyOutputs(1); } @@ -292,9 +292,13 @@ public void getTooltip(int slotIndex, List tooltips) { if (chances.containsKey(slotIndex)) { Content entry = chances.get(slotIndex); float chance = 100 * (float) entry.chance / entry.maxChance; - float boost = entry.tierChanceBoost / 100.0f; - tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_base", chance)); - tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_tier_boost_plus", boost)); + if (entry.tierChanceBoost != 0) { + float boost = entry.tierChanceBoost / 100.0f; + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_base", chance)); + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_tier_boost_plus", boost)); + } else { + tooltips.add(FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_no_boost", chance)); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 4f4d4d8f13e..92504283c36 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -275,29 +275,43 @@ public static void setConsumedChance(Content content, ChanceLogic logic, List 0) ? "plus" : "minus"); tooltips.add(FormattingUtil.formatPercentage2Places(key, Math.abs(100f * content.tierChanceBoost / content.maxChance))); - } - if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { - tooltips.add(Component.translatable("gtceu.gui.content.chance_boosted_logic", - FormattingUtil.formatNumber2Places(boostedChanceFloat), logic.getTranslation()) - .withStyle(ChatFormatting.YELLOW)); + + if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { + tooltips.add(Component.translatable("gtceu.gui.content.chance_boosted_logic", + FormattingUtil.formatNumber2Places(boostedChanceFloat), logic.getTranslation()) + .withStyle(ChatFormatting.YELLOW)); + } else { + tooltips.add( + FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_boosted", + boostedChanceFloat)); + } } else { - tooltips.add( - FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_boosted", - boostedChanceFloat)); + if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { + tooltips.add(Component.translatable("gtceu.gui.content.chance_no_boost_logic", + FormattingUtil.formatNumber2Places(baseChanceFloat), logic.getTranslation()) + .withStyle(ChatFormatting.YELLOW)); + } else { + tooltips.add( + FormattingUtil.formatPercentage2Places("gtceu.gui.content.chance_no_boost", + baseChanceFloat)); + } } } } From 93234f4f77cef05bcb805c0dcfff59044266883f Mon Sep 17 00:00:00 2001 From: Pumpkin7266 Date: Mon, 7 Jul 2025 05:17:10 +0100 Subject: [PATCH 127/270] Fix batch mode showing in the wrong multis (#3345) --- .../WorkableElectricMultiblockMachine.java | 22 +++++++++++++------ .../recipe/modifier/RecipeModifierList.java | 2 ++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index 6d2b0cdd483..19eca15094f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -15,6 +15,8 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; +import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; @@ -29,6 +31,7 @@ import lombok.Getter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -142,13 +145,18 @@ public List getSubTabs() { @Override public void attachConfigurators(ConfiguratorPanel configuratorPanel) { - configuratorPanel.attachConfigurators(new IFancyConfiguratorButton.Toggle( - GuiTextures.BUTTON_BATCH.getSubTexture(0, 0, 1, 0.5), - GuiTextures.BUTTON_BATCH.getSubTexture(0, 0.5, 1, 0.5), - this::isBatchEnabled, - (cd, p) -> batchEnabled = p) - .setTooltipsSupplier( - p -> List.of(Component.translatable("gtceu.machine.batch_" + (p ? "enabled" : "disabled"))))); + if (getDefinition().getRecipeModifier() instanceof RecipeModifierList list && Arrays.stream(list.getModifiers()) + .anyMatch(modifier -> modifier == GTRecipeModifiers.BATCH_MODE)) { + configuratorPanel.attachConfigurators(new IFancyConfiguratorButton.Toggle( + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0, 1, 0.5), + GuiTextures.BUTTON_BATCH.getSubTexture(0, 0.5, 1, 0.5), + this::isBatchEnabled, + (cd, p) -> batchEnabled = p) + .setTooltipsSupplier( + p -> List.of( + Component.translatable("gtceu.machine.batch_" + (p ? "enabled" : "disabled"))))); + } + IFancyUIMachine.super.attachConfigurators(configuratorPanel); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java index ae17b17368b..020ce9e4f10 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import lombok.Getter; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -11,6 +12,7 @@ */ public final class RecipeModifierList implements RecipeModifier { + @Getter private final RecipeModifier[] modifiers; public RecipeModifierList(RecipeModifier... modifiers) { From b6e070b1fb54677cdaf50703ae341bc676aedefb Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 7 Jul 2025 17:51:28 +0300 Subject: [PATCH 128/270] The most minor of model fixes (#3341) --- .../configurable_maintenance_hatch.json | 2 +- .../block/machine/maintenance_hatch.json | 2 +- .../models/block/machine/primitive_pump.json | 24 +- .../overlay/machine/overlay_steam_vent.json | 376 +----------------- .../gtceu/api/blockentity/IPaintable.java | 3 +- .../api/machine/IMachineBlockEntity.java | 5 +- .../gtceu/api/machine/MetaMachine.java | 35 +- .../gtceu/api/machine/trait/RecipeLogic.java | 18 +- .../registry/registrate/MachineBuilder.java | 2 +- .../forge/ForgeClientEventListener.java | 63 +++ .../model/IBlockEntityRendererBakedModel.java | 5 +- .../model/machine/IMachineRendererModel.java | 24 ++ .../client/model/machine/MachineModel.java | 53 ++- .../model/machine/MachineModelLoader.java | 6 +- .../multipart/MultiPartBakedModel.java | 13 +- .../renderer/machine/DynamicRender.java | 17 - .../machine/impl/BoilerMultiPartRender.java | 7 +- .../gtceu/client/util/ModelUtils.java | 32 ++ .../common/data/machines/GTMachineUtils.java | 10 +- .../common/data/machines/GTMultiMachines.java | 13 +- .../common/data/models/GTMachineModels.java | 11 +- .../common/item/ColorSprayBehaviour.java | 4 +- .../gtceu/config/ConfigHolder.java | 9 +- .../gtceu/core/mixins/LevelRendererMixin.java | 8 + .../data/model/BlockstateModelLoader.java | 8 + .../model/builder/MachineModelBuilder.java | 2 + .../data/model/builder/PartCondition.java | 128 ------ .../jade/provider/StainedColorProvider.java | 4 +- .../top/provider/StainedColorProvider.java | 3 +- .../utils/data/RuntimeExistingFileHelper.java | 14 +- .../models/block/machine/part/pump_hatch.json | 2 +- .../block/machine/part/steam_hatch.json | 2 +- .../machine/template/cube_all/single.json | 2 +- .../block/machine/template/sided/single.json | 2 +- 34 files changed, 301 insertions(+), 608 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java diff --git a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json index f47c041d3d3..91310cf9462 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json @@ -13,7 +13,6 @@ "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -24,6 +23,7 @@ "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json index e3f81d881ce..e8bb6ed65d7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json @@ -13,7 +13,6 @@ "parent": "gtceu:block/machine/part/maintenance_hatch", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -24,6 +23,7 @@ "parent": "gtceu:block/machine/part/maintenance_hatch", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", + "overlay_2": "gtceu:block/overlay/machine/overlay_maintenance_taped", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json index 04f076370c5..b49de1c4598 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/primitive_pump.json @@ -17,7 +17,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=false,recipe_logic_status=suspend": { "model": { @@ -28,7 +29,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=false,recipe_logic_status=waiting": { "model": { @@ -39,7 +41,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=false,recipe_logic_status=working": { "model": { @@ -50,7 +53,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=true,recipe_logic_status=idle": { "model": { @@ -61,7 +65,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=true,recipe_logic_status=suspend": { "model": { @@ -72,7 +77,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=true,recipe_logic_status=waiting": { "model": { @@ -83,7 +89,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true }, "is_formed=true,recipe_logic_status=working": { "model": { @@ -94,7 +101,8 @@ "side": "gtceu:block/casings/pump_deck/side", "top": "gtceu:block/casings/pump_deck/top" } - } + }, + "uvlock": true } } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json index 96d91a1d02e..27f03aea812 100644 --- a/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json +++ b/src/generated/resources/assets/gtceu/models/block/overlay/machine/overlay_steam_vent.json @@ -4,384 +4,18 @@ "faces": { "north": { "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] + "texture": "#steam_vent" } }, "from": [ - -0.002, - -0.002, + 0, + 0, -0.002 ], "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, + 16, + 16, -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 - ] - }, - { - "faces": { - "north": { - "cullface": "north", - "texture": "#steam_vent", - "uv": [ - 0.0, - 0.0, - 16.0, - 16.0 - ] - } - }, - "from": [ - -0.002, - -0.002, - -0.002 - ], - "to": [ - 16.002, - 16.002, - 16.002 ] } ], diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java index 0eecca35a40..bb17dd79ffa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java @@ -5,6 +5,7 @@ public interface IPaintable { BooleanProperty IS_PAINTED_PROPERTY = BooleanProperty.create("is_painted"); + int UNPAINTED_COLOR = 0xffffffff; /** * Get painting color. @@ -25,7 +26,7 @@ public interface IPaintable { * If the block is painted. */ default boolean isPainted() { - return getPaintingColor() != -1 && getPaintingColor() != getDefaultPaintingColor(); + return getPaintingColor() != UNPAINTED_COLOR && getPaintingColor() != getDefaultPaintingColor(); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java index 847c3ec90ea..df3ff0930d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/IMachineBlockEntity.java @@ -67,10 +67,7 @@ default void scheduleRenderUpdate() { @Override default @NotNull ModelData getModelData() { - ModelData.Builder data = IForgeBlockEntity.super.getModelData() - .derive() - .with(MODEL_DATA_LEVEL, level()) - .with(MODEL_DATA_POS, pos()); + ModelData.Builder data = IForgeBlockEntity.super.getModelData().derive(); getMetaMachine().updateModelData(data); return data.build(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index a27582b8f5f..897a8a1f156 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -25,6 +25,7 @@ import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.common.cover.FluidFilterCover; import com.gregtechceu.gtceu.common.cover.ItemFilterCover; import com.gregtechceu.gtceu.common.item.tool.behavior.ToolModeSwitchBehavior; @@ -41,6 +42,7 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import com.lowdragmc.lowdraglib.utils.DummyWorld; +import net.minecraft.ChatFormatting; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -76,6 +78,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.function.Consumer; import java.util.function.Predicate; import javax.annotation.ParametersAreNonnullByDefault; @@ -183,14 +186,15 @@ public void scheduleNeighborShapeUpdate() { } public void setPaintingColor(int color) { - if (color != this.paintingColor) { - MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IS_PAINTED_PROPERTY)) { - setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, color != -1)); - } - } + if (color == this.paintingColor) return; + this.paintingColor = color; this.onPaintingColorChanged(color); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IS_PAINTED_PROPERTY)) { + setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, this.isPainted())); + } } public void onPaintingColorChanged(int color) {} @@ -219,6 +223,14 @@ public void onUnload() { public void onLoad() { traits.forEach(MachineTrait::onMachineLoad); coverContainer.onLoad(); + + // update the painted model property if the machine is painted + if (this.isPainted()) { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IS_PAINTED_PROPERTY) && !renderState.getValue(IS_PAINTED_PROPERTY)) { + setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, true)); + } + } } /** @@ -544,6 +556,17 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I return null; } + public void addDebugOverlayText(Consumer lines) { + lines.accept(ChatFormatting.UNDERLINE + "Targeted Machine: "); + lines.accept(this.getDefinition().getId().toString()); + + // add render state info + MachineRenderState renderState = this.getRenderState(); + for (var property : renderState.getValues().entrySet()) { + lines.accept(ModelUtils.getPropertyValueString(property)); + } + } + public MachineDefinition getDefinition() { return holder.getDefinition(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 66a4dbc2ab8..8b1f3f58c79 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -46,14 +46,16 @@ public class RecipeLogic extends MachineTrait implements IEnhancedManaged, IWork public enum Status implements StringRepresentable { - IDLE, - WORKING, - WAITING, - SUSPEND; - - @Override - public @NotNull String getSerializedName() { - return name().toLowerCase(Locale.ROOT); + IDLE("idle"), + WORKING("working"), + WAITING("waiting"), + SUSPEND("suspend"); + + @Getter + private final String serializedName; + + Status(String name) { + this.serializedName = name; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 168e51fb302..b3b2c0ae50c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -137,7 +137,7 @@ public class MachineBuilder extends Builde @Setter private Object2IntMap> recipeOutputLimits = new Object2IntOpenHashMap<>(); @Setter - private int paintingColor = Long.decode(ConfigHolder.INSTANCE.client.defaultPaintingColor).intValue(); + private int paintingColor = ConfigHolder.INSTANCE.client.getDefaultPaintingColor(); @Setter private BiFunction itemColor = ((itemStack, tintIndex) -> tintIndex == 2 ? GTValues.VC[tier] : tintIndex == 1 ? paintingColor : -1); diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index b9ea555bc4a..76cf528f7f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -3,6 +3,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; +import com.gregtechceu.gtceu.api.item.tool.ToolHelper; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighlightRenderer; @@ -13,11 +15,19 @@ import com.gregtechceu.gtceu.core.mixins.PlayerInfoAccessor; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.HitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.*; +import net.minecraftforge.client.gui.overlay.ForgeGui; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.server.ServerStoppedEvent; @@ -26,7 +36,9 @@ import com.mojang.authlib.minecraft.MinecraftProfileTexture; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import org.apache.commons.lang3.mutable.MutableInt; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -89,6 +101,57 @@ public static void onClientTickEvent(TickEvent.ClientTickEvent event) { } } + private static final String BLOCK_INFO_LINE_START = ChatFormatting.UNDERLINE + "Targeted Block: "; + + @SubscribeEvent + public static void onDebugTextEvent(CustomizeGuiOverlayEvent.DebugText event) { + Minecraft mc = Minecraft.getInstance(); + // don't render machine state information if F3 screen isn't up or reduced debug info is enabled + if (!mc.options.renderDebug || mc.showOnlyReducedInfo()) return; + Entity cameraEntity = mc.getCameraEntity(); + if (cameraEntity == null || mc.level == null) return; + + BlockHitResult hit = ToolHelper.entityPickBlock(cameraEntity, ForgeGui.rayTraceDistance, 0, false); + if (hit.getType() == HitResult.Type.MISS) return; + BlockPos hitPos = hit.getBlockPos(); + BlockEntity blockEntity = mc.level.getBlockEntity(hitPos); + // only try to find the correct location if we have a valid machine + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + + final List rightLines = event.getRight(); + int lineCount = rightLines.size(); + + // look for the empty line after the "Targeted Block" section + // and default to the end if there isn't anything after it + int targetedBlockLine = -1; + int afterBlockSection = lineCount - 1; + for (int i = 0; i < lineCount; i++) { + String line = rightLines.get(i); + // this is formatted like this so we don't need to check targetedBlockLine == -1 twice + if (targetedBlockLine == -1) { + if (line.startsWith(BLOCK_INFO_LINE_START)) { + targetedBlockLine = i; + } + } else { + if (line.isBlank()) { + afterBlockSection = i; + // we can break here because targetedBlockLine must be not -1 for this branch to be reached + break; + } + } + } + if (targetedBlockLine == -1) { + // couldn't find the start of the targeted block info, exit + return; + } + + // actually add the text lines + MutableInt index = new MutableInt(afterBlockSection); + + rightLines.add(index.getAndIncrement(), ""); + machineBE.getMetaMachine().addDebugOverlayText(line -> rightLines.add(index.getAndIncrement(), line)); + } + @SubscribeEvent public static void onClientDisconnect(ClientPlayerNetworkEvent.LoggingOut event) { ClientCacheManager.allowReinit(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java index 70aadb40de9..6a59d976574 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/IBlockEntityRendererBakedModel.java @@ -2,7 +2,6 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @@ -10,11 +9,13 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.IDynamicBakedModel; import com.mojang.blaze3d.vertex.PoseStack; import org.jetbrains.annotations.NotNull; -public interface IBlockEntityRendererBakedModel extends BakedModel, BlockEntityRenderer { +public interface IBlockEntityRendererBakedModel + extends IDynamicBakedModel, BlockEntityRenderer { BlockEntityType getBlockEntityType(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java index b04d6f8e13d..a99e33e8e15 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -6,22 +6,46 @@ import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.model.data.ModelData; import com.mojang.blaze3d.vertex.PoseStack; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Collections; +import java.util.List; public interface IMachineRendererModel extends IBlockEntityRendererBakedModel { MachineDefinition getDefinition(); + @Override + @NotNull + default List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand, + @NotNull ModelData data, @Nullable RenderType renderType) { + return Collections.emptyList(); + } + + default @NotNull List getRenderQuads(@Nullable T machine, + @Nullable BlockState blockState, + @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { + return getQuads(blockState, side, rand, modelData, renderType); + } + void render(T machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index a5321f1f134..6205ee06ba5 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -17,7 +17,6 @@ import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.data.models.GTModels; -import com.gregtechceu.gtceu.core.mixins.ldlib.CustomBakedModelAccessor; import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; @@ -44,6 +43,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.client.model.QuadTransformers; import net.minecraftforge.client.model.data.ModelData; +import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.client.model.geometry.UnbakedGeometryHelper; import com.mojang.blaze3d.vertex.PoseStack; @@ -183,6 +183,28 @@ public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { } } + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + public @NotNull ModelData getModelData(@NotNull BlockAndTintGetter level, @NotNull BlockPos pos, + @NotNull BlockState state, @NotNull ModelData modelData) { + ModelData.Builder builder = modelData.derive() + .with(MODEL_DATA_LEVEL, level) + .with(MODEL_DATA_POS, pos); + MetaMachine machine = MetaMachine.getMachine(level, pos); + MachineRenderState renderState = machine == null ? definition.defaultRenderState() : machine.getRenderState(); + + // add the inner model's model data too + if (multiPart != null) { + multiPart.addMachineModelData(renderState, level, pos, state, modelData, builder); + } else { + ModelData data = modelsByState.get(renderState).getModelData(level, pos, state, modelData); + for (ModelProperty key : data.getProperties()) { + builder.with(key, data.get(key)); + } + } + return builder.build(); + } + @Override public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand, @@ -213,7 +235,14 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl BlockAndTintGetter level = modelData.get(MODEL_DATA_LEVEL); BlockPos pos = modelData.get(MODEL_DATA_POS); - var machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); + return getRenderQuads(machine, blockState, side, rand, modelData, renderType); + } + + @Override + public @NotNull List getRenderQuads(@Nullable MetaMachine machine, @Nullable BlockState blockState, + @Nullable Direction side, RandomSource rand, + @NotNull ModelData modelData, @Nullable RenderType renderType) { if (machine == null) return Collections.emptyList(); // render machine quads @@ -250,7 +279,7 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl // render covers int start = quads.size(); - ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), pos, level, + ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), machine.getPos(), machine.getLevel(), side, rand, modelData, renderType); var iterator = quads.listIterator(start); while (iterator.hasNext()) { @@ -259,6 +288,7 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl return quads; } + @SuppressWarnings({ "rawtypes", "unchecked" }) public List renderMachine(@Nullable MetaMachine machine, @Nullable BlockState blockState, Direction frontFacing, @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { @@ -272,17 +302,20 @@ public List renderMachine(@Nullable MetaMachine machine, @Nullable Bl MachineRenderState renderState = machine != null ? machine.getRenderState() : definition.defaultRenderState(); renderBaseModel(quads, renderState, blockState, side, rand, modelData, renderType); - if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { - quads = replacePartBaseModel(quads, part, frontFacing, side, rand, modelData, renderType); - } if (machine != null) { + for (DynamicRender render : dynamicRenders) { + quads.addAll(render.getRenderQuads(machine, blockState, side, rand, modelData, renderType)); + } + if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { + quads = replacePartBaseModel(quads, part, frontFacing, side, rand, modelData, renderType); + } + // we have to recalculate CTM ourselves. // this is the slowest part by a long shot because the LDLib quad logic isn't very optimized. return CustomBakedModel.reBakeCustomQuads(quads, machine.getLevel(), machine.getPos(), blockState, side, 0.0f); - } else { - return quads; } + return quads; } public void renderBaseModel(List quads, @NotNull MachineRenderState renderState, @@ -312,10 +345,6 @@ public List replacePartBaseModel(List originalQuads, IMult } else if (model instanceof MachineModel controllerModel) { newQuads = renderPartOverrides(controllerModel, controller, originalQuads, part, frontFacing, side, rand, modelData, renderType); - } else if (model instanceof CustomBakedModelAccessor ctmModel && - ctmModel.gtceu$getParent() instanceof MachineModel controllerModel) { - newQuads = renderPartOverrides(controllerModel, controller, originalQuads, - part, frontFacing, side, rand, modelData, renderType); } if (newQuads != null) { return newQuads; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java index 17284d43880..e0d4b3d5db9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java @@ -29,7 +29,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; @@ -91,10 +90,11 @@ public static void loadDynamicModels(ModelEvent.ModifyBakingResult event) { } @Override - public UnbakedMachineModel read(JsonObject json, JsonDeserializationContext context) throws JsonParseException { + public @Nullable UnbakedMachineModel read(JsonObject json, + JsonDeserializationContext context) throws JsonParseException { ResourceLocation machineId = new ResourceLocation(GsonHelper.getAsString(json, "machine")); MachineDefinition definition = GTRegistries.MACHINES.get(machineId); - Preconditions.checkNotNull(definition, "A machine with id " + machineId + " does not exist."); + if (definition == null) return null; // load the inner models final Map variants = new HashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java index 950f169453d..215d13cca23 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java @@ -143,17 +143,22 @@ public ModelData getModelData(BlockAndTintGetter level, BlockPos pos, BlockState var machine = MetaMachine.getMachine(level, pos); if (machine == null) return builder.build(); + addMachineModelData(machine.getRenderState(), level, pos, state, modelData, builder); + return builder.build(); + } + + public void addMachineModelData(MachineRenderState renderState, BlockAndTintGetter level, BlockPos pos, + BlockState state, ModelData baseData, ModelData.Builder builder) { MultipartModelData.Builder multiPartData = MultipartModelData.builder(); - var selectors = getSelectors(machine.getRenderState()); + + var selectors = getSelectors(renderState); for (int i = 0; i < selectors.length(); i++) { if (selectors.get(i)) { BakedModel model = this.selectors.get(i).getRight(); - multiPartData.with(model, model.getModelData(level, pos, state, modelData)); + multiPartData.with(model, model.getModelData(level, pos, state, baseData)); } } builder.with(MultipartModelData.PROPERTY, multiPartData.build()); - - return builder.build(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java index 14921e43e1d..780132d81cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java @@ -6,20 +6,10 @@ import com.gregtechceu.gtceu.client.model.machine.IMachineRendererModel; import com.gregtechceu.gtceu.client.model.machine.MachineModel; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.core.Direction; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.ModelData; - import com.mojang.serialization.Codec; import lombok.Getter; import lombok.Setter; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; public abstract class DynamicRender> extends BaseBakedModel implements Comparable>, IMachineRendererModel { @@ -40,13 +30,6 @@ public MachineDefinition getDefinition() { return parent.getDefinition(); } - @Override - public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction elementSide, - @NotNull RandomSource rand, @NotNull ModelData extraData, - @Nullable RenderType renderType) { - return List.of(); - } - @Override public int compareTo(@NotNull DynamicRender o) { return this.getType().compareTo(o.getType()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index e837f9b6635..e1dcea968e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -1,10 +1,10 @@ package com.gregtechceu.gtceu.client.renderer.machine.impl; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; -import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.client.model.machine.IControllerModelRenderer; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; @@ -115,11 +115,8 @@ public void renderPartModel(List quads, IMultiController controller, int belowControllerY = controllerPos.relative(relativeDown).get(relativeDown.getAxis()); int partY = partPos.get(relativeDown.getAxis()); if (belowControllerY == partY) { - // IDK why but the field isn't synced properly, so I have to check it manually - RecipeLogic.Status status = controller.self().getRenderState() - .getOptionalValue(RecipeLogic.STATUS_PROPERTY).orElse(RecipeLogic.Status.IDLE); // firebox - if (status == RecipeLogic.Status.WORKING) { + if (controller instanceof IRecipeLogicMachine rlm && rlm.getRecipeLogic().isWorking()) { emitQuads(quads, fireboxActiveModel, machine.getLevel(), partPos, fireboxActive, side, rand, modelData, renderType); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java index 4be8759eb7b..176ce821752 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -1,7 +1,11 @@ package com.gregtechceu.gtceu.client.util; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.client.model.machine.MachineModel; +import com.gregtechceu.gtceu.core.mixins.ldlib.CustomBakedModelAccessor; +import net.minecraft.ChatFormatting; +import net.minecraft.Util; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.*; import net.minecraft.core.BlockPos; @@ -10,6 +14,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ModelEvent; import net.minecraftforge.client.event.TextureStitchEvent; @@ -21,6 +26,7 @@ import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; import java.util.List; +import java.util.Map; import java.util.Set; @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) @@ -35,6 +41,20 @@ public static List getBakedModelQuads(BakedModel model, BlockAndTintG return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); } + public static String getPropertyValueString(Map.Entry, Comparable> entry) { + Property property = entry.getKey(); + Comparable value = entry.getValue(); + + String valueString = Util.getPropertyName(property, value); + if (Boolean.TRUE.equals(value)) { + valueString = ChatFormatting.GREEN + valueString; + } else if (Boolean.FALSE.equals(value)) { + valueString = ChatFormatting.RED + valueString; + } + + return property.getName() + ": " + valueString; + } + public static void registerAtlasStitchedEventListener(AssetEventListener.AtlasStitched listener) { EVENT_LISTENERS.add(listener); } @@ -70,6 +90,18 @@ public static void onAtlasStitched(TextureStitchEvent.Post event) { @SuppressWarnings("unchecked") @SubscribeEvent(priority = EventPriority.LOWEST) public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { + // Unwrap all machine models from the LDLib CTM models so we don't need to be as aggressive with mixins. + // Also, the caching they have stops our models from updating properly. + for (var entry : event.getModels().entrySet()) { + BakedModel model = entry.getValue(); + if (!(model instanceof CustomBakedModelAccessor ctmModel)) { + continue; + } + if (ctmModel.gtceu$getParent() instanceof MachineModel machine) { + entry.setValue(machine); + } + } + for (var listener : EVENT_LISTENERS) { Class eventClass = listener.eventClass(); if (eventClass != null && eventClass.isInstance(event)) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index d967ebc8bf6..cb1c33acb0b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -229,10 +229,12 @@ public static MachineDefinition[] registerTransformerMachines(String langName, i (holder, tier) -> new TransformerMachine(holder, tier, baseAmp), (tier, builder) -> builder .rotationState(RotationState.ALL) - .itemColor((itemStack, index) -> index == 2 ? GTValues.VC[tier + 1] : - index == 3 ? GTValues.VC[tier] : - index == 1 ? Long.decode(ConfigHolder.INSTANCE.client.defaultPaintingColor) - .intValue() : -1) + .itemColor((itemStack, index) -> switch (index) { + case 1 -> ConfigHolder.INSTANCE.client.getDefaultPaintingColor(); + case 2 -> VC[tier + 1]; + case 3 -> VC[tier]; + default -> -1; + }) .modelProperty(TransformerMachine.TRANSFORM_UP_PROPERTY, false) .model(createTransformerModel(baseAmp)) .langValue("%s %sTransformer".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 2357438b721..c365c541dee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -577,8 +577,19 @@ public class GTMultiMachines { .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) - .sidedWorkableCasingModel(GTCEu.id("block/casings/pump_deck"), + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createSidedWorkableCasingMachineModel(GTCEu.id("block/casings/pump_deck"), GTCEu.id("block/multiblock/primitive_pump")) + .andThen(builder -> { + builder.replaceForAllStates((state, models) -> { + for (int i = 0; i < models.length; i++) { + models[i] = ConfiguredModel.builder() + .modelFile(models[i].model).uvLock(true) + .buildLast(); + } + return models; + }); + })) .register(); public static final MultiblockMachineDefinition STEAM_GRINDER = REGISTRATE diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index af76bc8291f..15166e0d9d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -127,7 +127,6 @@ public static MachineBuilder.ModelInitializer createColorOverlayTieredHullMachin return (ctx, prov, builder) -> { builder.forAllStatesModels(state -> { BlockModelBuilder model = colorOverlayHullModel(overlay, emissiveOverlay, state, prov.models()); - tieredHullTextures(model, builder.getOwner().getTier()); return tieredHullTextures(model, builder.getOwner().getTier()); }); @@ -207,15 +206,9 @@ public static MachineBuilder.ModelInitializer createWorkableSteamHullMachineMode return; } - ModelFile ventModel = prov.models().getBuilder(VENT_OVERLAY.toString()) - .texture("steam_vent", VENT_OVERLAY) - .element() - .from(-0.002f, -0.002f, -0.002f).to(16.002f, 16.002f, 16.002f) - .face(Direction.NORTH).uvs(0, 0, 16, 16).texture("#steam_vent").cullface(Direction.NORTH).end() - .end(); for (RelativeDirection relative : RelativeDirection.VALUES) { Direction dir = relative.global; - builder.part().modelFile(ventModel) + builder.part().modelFile(prov.models().getExistingFile(VENT_OVERLAY)) .rotationX(dir == Direction.DOWN ? 90 : dir == Direction.UP ? 270 : 0) .rotationY(dir.getAxis().isVertical() ? 0 : ((int) dir.toYRot() + 180) % 360) .addModel() @@ -542,7 +535,7 @@ public static MachineBuilder.ModelInitializer createMaintenanceModel(ResourceLoc .parent(prov.models().getExistingFile(overlayModel)); tieredHullTextures(baseModel, builder.getOwner().getTier()); - if (!state.getValue(IMaintenanceMachine.MAINTENANCE_TAPED_PROPERTY)) { + if (state.getValue(IMaintenanceMachine.MAINTENANCE_TAPED_PROPERTY)) { baseModel.texture("overlay_2", MAINTENANCE_TAPED_OVERLAY); } return baseModel; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java index 9eb18ee277b..a445af5c425 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/ColorSprayBehaviour.java @@ -186,10 +186,10 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex private static boolean paintPaintable(IPaintable paintable, DyeColor color) { if (color == null) { - if (paintable.getPaintingColor() == -1) { + if (!paintable.isPainted()) { return false; } - paintable.setPaintingColor(-1); + paintable.setPaintingColor(IPaintable.UNPAINTED_COLOR); } else if (paintable.getPaintingColor() != color.getMapColor().col) { paintable.setPaintingColor(color.getMapColor().col); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index c3526dc4e0a..38863500cd3 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -728,8 +728,8 @@ public static class ClientConfigs { public String defaultPaintingColor = "#FFFFFF"; @Configurable @Configurable.Comment({ "The default color to overlay onto Machine (and other) UIs.", - "16777215 (#FFFFFF) is no coloring (like GTCE) (default).", - "13819135 (#D2DCFF in decimal) is the classic blue from GT5." }) + "#FFFFFF is no coloring (like GTCE) (default).", + "#D2DCFF is the classic blue from GT5." }) @Configurable.StringPattern(value = "#[0-9a-fA-F]{1,6}") @Configurable.Gui.ColorValue public String defaultUIColor = "#FFFFFF"; @@ -750,6 +750,11 @@ public static class ClientConfigs { @Configurable public RendererConfigs renderer = new RendererConfigs(); + public int getDefaultPaintingColor() { + // OR with full alpha to differentiate from a machine that's painted white (map color 0xffffff) + return Long.decode(defaultPaintingColor).intValue() | 0xff000000; + } + public static class ArmorHud { @Configurable diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java index 34c8def4bee..ad527304e75 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java @@ -215,9 +215,17 @@ private static void renderShape(PoseStack poseStack, VertexConsumer consumer, Vo @Unique private @NotNull MaterialEntry gtceu$getTranslucentBlockMaterial(BlockState state, BlockPos pos) { + assert level != null; + // skip non-solid blocks from other mods (like vanilla ice blocks) + if (!state.isSolidRender(level, pos) && !(state.getBlock() instanceof MaterialBlock)) { + return MaterialEntry.NULL_ENTRY; + } + BakedModel blockModel = minecraft.getBlockRenderer().getBlockModel(state); ModelData modelData = level.getModelDataManager().getAt(pos); if (modelData == null) modelData = ModelData.EMPTY; + modelData = blockModel.getModelData(level, pos, state, modelData); + gtceu$modelRandom.setSeed(state.getSeed(pos)); if (blockModel.getRenderTypes(state, gtceu$modelRandom, modelData).contains(RenderType.translucent())) { return ChemicalHelper.getMaterialEntry(state.getBlock()); diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java index d17d3767801..7566a6aee69 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/model/BlockstateModelLoader.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.data.models.GTMachineModels; +import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.model.generators.BlockModelProvider; @@ -31,5 +32,12 @@ public static void init(GTBlockstateProvider provider) { model = models.withExistingParent(modelName.toString(), SIDED_SIDED_OVERLAY_MODEL); GTMachineModels.casingTextures(model, modelName); } + // Create the steam vent overlay model here so we don't add the element to it 16 times + models.getBuilder(VENT_OVERLAY.toString()) + .texture("steam_vent", VENT_OVERLAY) + .element() + .from(0, 0, -0.002f).to(16, 16, -0.002f) + .face(Direction.NORTH).uvs(0, 0, 16, 16).texture("#steam_vent").cullface(Direction.NORTH).end() + .end(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java index 66e819a53f7..ddd8cea72b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java @@ -49,7 +49,9 @@ public static > BiFunction parts = new ArrayList<>(); private final Set coveredStates = new HashSet<>(); + @Getter private final List replaceableTextures = new ArrayList<>(); + @Getter private final SortedMap textureOverrides = new TreeMap<>(); protected MachineModelBuilder(T parent, ExistingFileHelper existingFileHelper, MachineDefinition owner) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java deleted file mode 100644 index 67cbea26f0d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/data/model/builder/PartCondition.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.gregtechceu.gtceu.data.model.builder; - -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.Property; - -import com.google.common.collect.Maps; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public interface PartCondition extends Supplier { - - void validate(StateDefinition stateDefinition); - - static TerminalPartCondition condition() { - return new TerminalPartCondition(); - } - - static PartCondition and(PartCondition... conditions) { - return new CompositePartCondition(PartCondition.Operation.AND, Arrays.asList(conditions)); - } - - static PartCondition or(PartCondition... conditions) { - return new CompositePartCondition(PartCondition.Operation.OR, Arrays.asList(conditions)); - } - - public static class CompositePartCondition implements PartCondition { - - private final PartCondition.Operation operation; - private final List subConditions; - - CompositePartCondition(PartCondition.Operation operation, List subConditions) { - this.operation = operation; - this.subConditions = subConditions; - } - - public void validate(StateDefinition stateDefinition) { - this.subConditions.forEach((condition) -> condition.validate(stateDefinition)); - } - - public JsonElement get() { - JsonArray subConditionsList = new JsonArray(); - this.subConditions.stream().map(Supplier::get).forEach(subConditionsList::add); - JsonObject json = new JsonObject(); - json.add(this.operation.id, subConditionsList); - return json; - } - } - - public static enum Operation { - - AND("AND"), - OR("OR"); - - final String id; - - Operation(String id) { - this.id = id; - } - } - - public static class TerminalPartCondition implements PartCondition { - - private final Map, String> terms = Maps.newHashMap(); - - private static > String joinValues(Property property, Stream valueStream) { - return valueStream.map(property::getName).collect(Collectors.joining("|")); - } - - private static > String getTerm(Property property, - T firstValue, T[] additionalValues) { - return joinValues(property, Stream.concat(Stream.of(firstValue), Stream.of(additionalValues))); - } - - private > void putValue(Property property, String value) { - String s = this.terms.put(property, value); - if (s != null) { - throw new IllegalStateException("Tried to replace " + property + " value from " + s + " to " + value); - } - } - - public final > TerminalPartCondition term(Property property, T value) { - this.putValue(property, property.getName(value)); - return this; - } - - @SafeVarargs - public final > TerminalPartCondition term(Property property, - T firstValue, T... additionalValues) { - this.putValue(property, getTerm(property, firstValue, additionalValues)); - return this; - } - - public final > TerminalPartCondition negatedTerm(Property property, T value) { - this.putValue(property, "!" + property.getName(value)); - return this; - } - - @SafeVarargs - public final > TerminalPartCondition negatedTerm(Property property, - T firstValue, T... additionalValues) { - this.putValue(property, "!" + getTerm(property, firstValue, additionalValues)); - return this; - } - - public JsonElement get() { - JsonObject json = new JsonObject(); - this.terms.forEach((p, v) -> json.addProperty(p.getName(), v)); - return json; - } - - public void validate(StateDefinition definition) { - List> missing = this.terms.keySet().stream() - .filter((property) -> definition.getProperty(property.getName()) != property) - .toList(); - if (!missing.isEmpty()) { - throw new IllegalStateException("Properties " + missing + " are missing from " + definition); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java index 7c63ef48abe..3eea99a037a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/StainedColorProvider.java @@ -19,7 +19,7 @@ public class StainedColorProvider implements IBlockComponentProvider, IServerDat public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { if (blockAccessor.getServerData().contains("StainedColor")) { int paintingColor = blockAccessor.getServerData().getInt("StainedColor"); - if (paintingColor != -1) { + if (paintingColor != IPaintable.UNPAINTED_COLOR) { iTooltip.add(Component.translatable("gtceu.top.stained", String.format("#%06X", paintingColor)) .withStyle(style -> style.withColor(paintingColor))); } @@ -29,7 +29,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi @Override public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof IPaintable paintable) { - int paintingColor = paintable.getPaintingColor(); + int paintingColor = paintable.isPainted() ? paintable.getPaintingColor() : IPaintable.UNPAINTED_COLOR; compoundTag.putInt("StainedColor", paintingColor); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java index 489420b238e..c977bdd90ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/StainedColorProvider.java @@ -30,9 +30,8 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play if (!(blockEntity instanceof IPaintable paintable)) { return; } - + if (!paintable.isPainted()) return; int paintingColor = paintable.getPaintingColor(); - if (paintingColor == -1) return; IProbeInfo horizontal = iProbeInfo.horizontal(iProbeInfo .defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java index 16f3625b183..7125b63eb81 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java @@ -10,8 +10,6 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraftforge.common.data.ExistingFileHelper; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; import org.jetbrains.annotations.NotNull; import java.io.FileNotFoundException; @@ -30,8 +28,6 @@ public class RuntimeExistingFileHelper extends ExistingFileHelper { public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper(); - protected final Multimap generated = HashMultimap.create(); - protected RuntimeExistingFileHelper() { super(Collections.emptySet(), Collections.emptySet(), false, null, null); } @@ -55,7 +51,7 @@ protected ResourceLocation getLocation(ResourceLocation base, String prefix, Str @Override public boolean exists(ResourceLocation loc, PackType packType) { - return generated.get(packType).contains(loc) || getManager(packType).getResource(loc).isPresent(); + return true; } @Override @@ -64,13 +60,11 @@ public void trackGenerated(ResourceLocation loc, IResourceType type) { } @Override - public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) { - this.generated.put(packType, getLocation(loc, prefix, suffix)); - } + public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) {} @Override - public Resource getResource(ResourceLocation loc, PackType packType, String pathSuffix, String pathPrefix) - throws FileNotFoundException { + public Resource getResource(ResourceLocation loc, PackType packType, + String pathSuffix, String pathPrefix) throws FileNotFoundException { return getResource(getLocation(loc, pathPrefix, pathSuffix), packType); } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json index d3230d99487..888891d70f9 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json @@ -3,7 +3,7 @@ "textures": { "bottom": "gtceu:block/casings/pump_deck/bottom", "top": "gtceu:block/casings/pump_deck/top", - "side": "gtceu:block/casings/pump_deck/side", + "side": "#top", "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json index 3c4495f04b5..9c101a18276 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/steam_hatch.json @@ -1,6 +1,6 @@ { "parent": "gtceu:block/overlay/front", "textures": { - "overlay": "gtceu:block/cover/overlay_pump" + "overlay": "gtceu:block/cover/pump" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json index 46a24c91d17..32a368a1993 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/single.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/overlay/cube_all/sided", + "parent": "gtceu:block/machine/template/cube_all/sided", "textures": { "overlay_front": "#overlay", "overlay_back": "#overlay", diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json index 4e9dfa8f58a..9245521218c 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/single.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/cube/tinted/bottom_top", + "parent": "gtceu:block/machine/template/sided/sided", "textures": { "overlay_front": "#overlay", "overlay_back": "#overlay", From 2dfa84712644ec146d87a5004f2307cca489b86c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Tue, 8 Jul 2025 09:31:52 +0300 Subject: [PATCH 129/270] change the default machine model path (#3355) --- .../gtceu/api/registry/registrate/MachineBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index b3b2c0ae50c..5e805c23fb9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -225,7 +225,7 @@ public MachineBuilder simpleModel(ResourceLocation modelName) { } public MachineBuilder defaultModel() { - return simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); + return simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/template/" + name)); } public MachineBuilder tieredHullModel(ResourceLocation model) { @@ -473,7 +473,7 @@ public DEFINITION register() { definition.setRotationState(rotationState); setupStateDefinition(definition); if (model == null && blockModel == null) { - simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); + simpleModel(new ResourceLocation(registrate.getModid(), "block/machine/template/" + name)); } var blockBuilder = BlockBuilderWrapper.makeBlockBuilder(this, definition); if (this.langValue != null) { From 9feaa5529ca3235d413bd45f69b4316247277b63 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Wed, 9 Jul 2025 07:02:59 -0600 Subject: [PATCH 130/270] Fix KJS machines from NPEing (#3362) --- .../gtceu/api/registry/registrate/MachineBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 5e805c23fb9..4c3f92ce362 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -539,7 +539,7 @@ public DEFINITION register() { definition.setRenderXEIPreview(renderMultiblockXEIPreview); definition.setRenderWorldPreview(renderMultiblockWorldPreview); GTRegistries.MACHINES.register(definition.getId(), definition); - return definition; + return value = definition; } @FunctionalInterface From e28a3a811ba44a490078a462cdad808c60fd6ee3 Mon Sep 17 00:00:00 2001 From: NegaNote Date: Thu, 10 Jul 2025 11:10:11 -0400 Subject: [PATCH 131/270] Revert `MachineBuilder#machine` being made final (#3361) --- .../gtceu/api/registry/registrate/MachineBuilder.java | 3 ++- .../api/registry/registrate/MultiblockMachineBuilder.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 4c3f92ce362..a5195b06096 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -91,7 +91,8 @@ public class MachineBuilder extends Builde protected final TriFunction, BlockPos, BlockState, IMachineBlockEntity> blockEntityFactory; protected final Function definition; - protected final Function machine; + @Setter + protected Function machine; @Nullable @Getter @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 222545a41f4..acfc208b47b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; @@ -114,6 +115,11 @@ public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { return this; } + @Override + public MultiblockMachineBuilder machine(Function metaMachine) { + return (MultiblockMachineBuilder) super.machine(metaMachine); + } + @Override public MultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { return (MultiblockMachineBuilder) super.model(model); From 8ec521969116de65760aa8507e88f658e3c359ef Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 18:53:32 +0300 Subject: [PATCH 132/270] Fix the quantum tank fluid render being offset in the inventory (#3372) --- .../client/renderer/machine/impl/QuantumTankFluidRender.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java index f74b4668620..1489b8dc126 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java @@ -57,7 +57,6 @@ public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, if (CREATIVE_FLUID_ITEM == null) CREATIVE_FLUID_ITEM = GTMachines.CREATIVE_FLUID.getItem(); if (stack.hasTag()) { poseStack.pushPose(); - poseStack.translate(-0.5D, -0.5D, -0.5D); FluidStack stored = FluidStack.loadFluidStackFromNBT(stack.getOrCreateTagElement("stored")); long storedAmount = stack.getOrCreateTag().getLong("storedAmount"); From c6787ae51f236a24153234e99feb1f0a1da194dd Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 21:38:51 +0300 Subject: [PATCH 133/270] fix the GT recipe serializer desyncing itself (#3375) --- .../com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index 97e25322cf5..a345b4c681f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -101,7 +101,6 @@ public static Map, List> tuplesToMap(List, List> inputs = tuplesToMap( buf.readCollection(c -> new ArrayList<>(), GTRecipeSerializer::entryReader)); Map, List> tickInputs = tuplesToMap( From 256c533c549a30c011d85f7069f398031fa5b9c1 Mon Sep 17 00:00:00 2001 From: Spicierspace153 Date: Thu, 10 Jul 2025 12:59:15 -0600 Subject: [PATCH 134/270] Fix LCR recipemap tooltips (#3373) --- .../java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index de22d288620..91a40411041 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -640,6 +640,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) + .setMaxTooltips(5) .setSmallRecipeMap(CHEMICAL_RECIPES); public static final GTRecipeType FUSION_RECIPES = register("fusion_reactor", MULTIBLOCK).setMaxIOSize(0, 0, 2, 1) From 3bef4060ec5bf9566674d0ba861383b6f613bda6 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 22:08:47 +0300 Subject: [PATCH 135/270] fix machine block entities loading AE2 classes (#3376) --- .../blockentity/MetaMachineBlockEntity.java | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 7ead7a8baf8..7a1daaf6c2a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -145,7 +145,7 @@ public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, I @Override public @NotNull LazyOptional getCapability(@NotNull Capability cap, @Nullable Direction side) { var result = getCapability(getMetaMachine(), cap, side); - return result == null ? super.getCapability(cap, side) : result; + return result.isPresent() ? result : super.getCapability(cap, side); } @Override @@ -155,7 +155,6 @@ public void setChanged() { } } - @Nullable public static LazyOptional getCapability(MetaMachine machine, @NotNull Capability cap, @Nullable Direction side) { if (cap == GTCapability.CAPABILITY_COVERABLE) { @@ -218,25 +217,21 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca } else if (cap == ForgeCapabilities.ITEM_HANDLER) { var handler = machine.getItemHandlerCap(side, true); if (handler != null) { - return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, - LazyOptional.of(() -> handler)); + return ForgeCapabilities.ITEM_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); } } else if (cap == ForgeCapabilities.FLUID_HANDLER) { var handler = machine.getFluidHandlerCap(side, true); if (handler != null) { - return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, - LazyOptional.of(() -> handler)); + return ForgeCapabilities.FLUID_HANDLER.orEmpty(cap, LazyOptional.of(() -> handler)); } } else if (cap == ForgeCapabilities.ENERGY) { if (machine instanceof IEnergyStorage energyStorage) { - return ForgeCapabilities.ENERGY.orEmpty(cap, - LazyOptional.of(() -> energyStorage)); + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> energyStorage)); } var list = getCapabilitiesFromTraits(machine.getTraits(), side, IEnergyStorage.class); if (!list.isEmpty()) { // TODO wrap list in the future - return ForgeCapabilities.ENERGY.orEmpty(cap, - LazyOptional.of(() -> list.get(0))); + return ForgeCapabilities.ENERGY.orEmpty(cap, LazyOptional.of(() -> list.get(0))); } } else if (cap == GTCapability.CAPABILITY_LASER) { if (machine instanceof ILaserContainer energyContainer) { @@ -266,18 +261,13 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca } } if (GTCEu.Mods.isAE2Loaded()) { - if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { - if (machine instanceof IInWorldGridNodeHost nodeHost) { - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); - } - var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); - if (!list.isEmpty()) { - // TODO wrap list in the future (or not.) - return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); - } + LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); + if (opt.isPresent()) { + // noinspection unchecked + return (LazyOptional) opt; } } - return null; + return LazyOptional.empty(); } public static List getCapabilitiesFromTraits(List traits, Direction accessSide, @@ -317,4 +307,22 @@ public void load(CompoundTag tag) { TagFixer.fixFluidTags(tag); super.load(tag); } + + public static class AE2CallWrapper { + + public static LazyOptional getGridNodeHostCapability(Capability cap, MetaMachine machine, + Direction side) { + if (cap == Capabilities.IN_WORLD_GRID_NODE_HOST) { + if (machine instanceof IInWorldGridNodeHost nodeHost) { + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> nodeHost)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IInWorldGridNodeHost.class); + if (!list.isEmpty()) { + // TODO wrap list in the future (or not.) + return Capabilities.IN_WORLD_GRID_NODE_HOST.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } + } + return LazyOptional.empty(); + } + } } From e5606b213a222f793db0458cc3386e6029c8d5ac Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 23:14:12 +0300 Subject: [PATCH 136/270] Fix machine overlays Z-fighting (#3374) --- .../client/model/TextureOverrideModel.java | 5 ++++- .../client/model/machine/MachineModel.java | 18 ++++++------------ .../renderer/cover/FacadeCoverRenderer.java | 4 ++-- .../client/renderer/cover/IOCoverRenderer.java | 14 ++++++++------ .../renderer/cover/SimpleCoverRenderer.java | 5 +++-- .../gtceu/client/util/StaticFaceBakery.java | 15 ++++++++------- .../block/machine/template/cube_all/sided.json | 8 ++++---- .../block/machine/template/sided/sided.json | 8 ++++---- .../models/block/overlay/2_layer/front.json | 8 ++++---- .../block/overlay/2_layer/front_emissive.json | 8 ++++---- .../2_layer/front_emissive_color_ring.json | 12 ++++++------ .../block/overlay/2_layer/tinted/front.json | 8 ++++---- .../block/overlay/2_layer/top_emissive.json | 8 ++++---- .../gtceu/models/block/overlay/front.json | 4 ++-- .../models/block/overlay/front_color_ring.json | 8 ++++---- .../models/block/overlay/front_emissive.json | 4 ++-- .../overlay/front_emissive_color_ring.json | 8 ++++---- .../block/overlay/only/2_layer/front.json | 8 ++++---- .../overlay/only/2_layer/front_emissive.json | 8 ++++---- .../2_layer/front_emissive_color_ring.json | 12 ++++++------ .../gtceu/models/block/overlay/only/front.json | 4 ++-- .../block/overlay/only/front_color_ring.json | 8 ++++---- .../block/overlay/only/front_emissive.json | 4 ++-- .../only/front_emissive_color_ring.json | 8 ++++---- .../models/block/overlay/top_emissive.json | 4 ++-- 25 files changed, 101 insertions(+), 100 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java index 91df9100092..2644df07e9a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java @@ -10,6 +10,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.BakedModelWrapper; +import net.minecraftforge.client.model.IQuadTransformer; import net.minecraftforge.client.model.data.ModelData; import lombok.Getter; @@ -20,6 +21,8 @@ public class TextureOverrideModel extends BakedModelWrapper { + private static final IQuadTransformer OVERLAY_OFFSET = GTQuadTransformers.offset(0.001f); + @NotNull @Getter protected final Map textureOverrides; @@ -58,7 +61,7 @@ public static List retextureQuads(List quads, if (replacement != null) { newQuads.add(GTQuadTransformers.setSprite(quad, replacement)); } else { - newQuads.add(quad); + newQuads.add(OVERLAY_OFFSET.process(quad)); } } return newQuads; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 6205ee06ba5..351a24d7474 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -253,26 +253,20 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl if (machine instanceof IAutoOutputItem autoOutputItem) { var itemFace = autoOutputItem.getOutputFacingItems(); if (itemFace != null && side == itemFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - side, pipeOverlaySprite, BlockModelRotation.X0_Y0, - -1, 0, true, true)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, side, pipeOverlaySprite)); if (autoOutputItem.isAutoOutputItems()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - side, itemOutputOverlaySprite, BlockModelRotation.X0_Y0, - -101, 15, true, true)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, side, + itemOutputOverlaySprite)); } } } if (machine instanceof IAutoOutputFluid autoOutputFluid) { var fluidFace = autoOutputFluid.getOutputFacingFluids(); if (fluidFace != null && side == fluidFace) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, - side, pipeOverlaySprite, BlockModelRotation.X0_Y0, - -1, 0, true, true)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.OUTPUT_OVERLAY, side, pipeOverlaySprite)); if (autoOutputFluid.isAutoOutputFluids()) { - quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, - side, fluidOutputOverlaySprite, BlockModelRotation.X0_Y0, - -101, 15, true, true)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.AUTO_OUTPUT_OVERLAY, side, + fluidOutputOverlaySprite)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 82642e38c25..64f5543e834 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -128,8 +128,8 @@ public List getFacadeQuads(BlockState state, @NotNull RandomSource ra quads.addAll(model.getQuads(state, Direction.NORTH, rand, extraData, renderType)); for (Direction modelSide : FACADE_EDGE_FACES) { - quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, ICoverableRenderer.COVER_BACK_PLATE[0], - BlockModelRotation.X0_Y0, -1, 0, false, true)); + quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, + ICoverableRenderer.COVER_BACK_PLATE[0])); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java index a545a909b47..1c7cd06c2cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java @@ -73,16 +73,18 @@ public void renderCover(List quads, @Nullable Direction side, RandomS boolean isInverted = ioCover.getIo() != IO.OUT; if (isInverted && invertedOverlaySprite != null) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, invertedOverlaySprite)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + invertedOverlaySprite)); } else if (overlaySprite != null) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, overlaySprite)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + overlaySprite)); } if (isInverted && invertedEmissiveOverlaySprite != null) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, invertedEmissiveOverlaySprite, - BlockModelRotation.X0_Y0, -101, 15)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + invertedEmissiveOverlaySprite, BlockModelRotation.X0_Y0, -101, 15, true, false)); } else if (emissiveOverlaySprite != null) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, emissiveOverlaySprite, - BlockModelRotation.X0_Y0, -101, 15)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + emissiveOverlaySprite, BlockModelRotation.X0_Y0, -101, 15, true, false)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java index 9f762805a6a..9ce622e6f78 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java @@ -54,9 +54,10 @@ public void renderCover(List quads, Direction side, RandomSource rand @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, @NotNull ModelData modelData, @Nullable RenderType renderType) { if (side == null || side == coverBehavior.attachedSide) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, sprite)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, sprite)); if (emissiveSprite != null) { - quads.add(StaticFaceBakery.bakeFace(coverBehavior.attachedSide, emissiveSprite)); + quads.add(StaticFaceBakery.bakeFace(StaticFaceBakery.COVER_OVERLAY, coverBehavior.attachedSide, + emissiveSprite)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index 4e349b503cd..ab34b2d6cba 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -3,10 +3,7 @@ import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; import net.minecraft.client.renderer.FaceInfo; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.BlockElementFace; -import net.minecraft.client.renderer.block.model.BlockElementRotation; -import net.minecraft.client.renderer.block.model.BlockFaceUV; +import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.ModelState; @@ -30,10 +27,10 @@ public class StaticFaceBakery { public static final AABB SLIGHTLY_OVER_BLOCK = new AABB(-0.001f, -0.001f, -0.001f, 1.001f, 1.001f, 1.001f); - public static final AABB OUTPUT_OVERLAY = new AABB(-.004f, -.004f, -.004f, - 1.004f, 1.004f, 1.004f); - public static final AABB AUTO_OUTPUT_OVERLAY = new AABB(-.006f, -.006f, -.006f, + public static final AABB OUTPUT_OVERLAY = new AABB(-.006f, -.006f, -.006f, 1.006f, 1.006f, 1.006f); + public static final AABB AUTO_OUTPUT_OVERLAY = new AABB(-.008f, -.008f, -.008f, + 1.008f, 1.008f, 1.008f); public static final AABB COVER_OVERLAY = new AABB(-.008f, -.008f, -.008f, 1.008f, 1.008f, 1.008f); @@ -93,6 +90,10 @@ public static BakedQuad bakeFace(Direction face, TextureAtlasSprite sprite) { return bakeFace(face, sprite, BlockModelRotation.X0_Y0); } + public static BakedQuad bakeFace(AABB cube, Direction face, TextureAtlasSprite sprite) { + return bakeFace(cube, face, sprite, BlockModelRotation.X0_Y0, -1, 0, true, true); + } + public static BakedQuad bakeQuad(Vector3f posFrom, Vector3f posTo, BlockElementFace face, diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json index 0361a0369f8..edce8448b4d 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json @@ -27,8 +27,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, @@ -39,8 +39,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.008, -0.008, -0.008 ], + "to": [ 16.008, 16.008, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json index d4b94e8fd0c..7563d0add5c 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json @@ -27,8 +27,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.004, -0.004, -0.004 ], + "to": [ 16.004, 16.004, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, @@ -39,8 +39,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.008, -0.008, -0.008 ], + "to": [ 16.008, 16.008, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json index b66a25ff627..7f5ed8415dd 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json index e6a72333ef0..e0021f64c43 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json @@ -14,15 +14,15 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json index 2a9bfdb7dfc..aadc2ff2d4e 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -33,8 +33,8 @@ } }, { - "from": [ -0.006, -0.006, -0.006 ], - "to": [ 16.006, 16.006, -0.006 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json index 61f2af55ffd..7c3c24b909a 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json index e5f6d51ab92..69d7233889a 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json @@ -14,15 +14,15 @@ } }, { - "from": [ -0.002, 16.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ 0, 16.004, 0 ], + "to": [ 16, 16.004, 16 ], "faces": { "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "up" } } }, { - "from": [ -0.004, 16.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ 0, 16.006, 0 ], + "to": [ 16, 16.006, 16 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index 389928908e8..07012e5726a 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -14,8 +14,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json index 48951454409..820bf463964 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index f582daa5a20..6fb38070722 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -14,8 +14,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json index 2ed7a9a8af8..25aa1e3e2c7 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -17,8 +17,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -26,8 +26,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json index 0e1f12fa7d4..01065d70519 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front", "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json index 0e2aea71203..d3e32fba1b3 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front_emissive", "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json index 49e96e04546..9b10ff1527d 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.006 ], + "to": [ 16, 16, 16.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -21,8 +21,8 @@ } }, { - "from": [ -0.006, -0.006, -0.006 ], - "to": [ 16.006, 16.006, -0.006 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json index 5214a42eff3..6b7fa489ff8 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json index 976bc437104..7fb246df961 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json index be0bdfbb768..db90b7c7275 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json index e93de80e011..7a8752ce03a 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json @@ -5,8 +5,8 @@ }, "elements": [ { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, -0.002 ], + "from": [ 0, 0, 16.004 ], + "to": [ 16, 16, 16.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -14,8 +14,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, -0.004 ], + "from": [ 0, 0, 16.008 ], + "to": [ 16, 16, 16.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json index ae1522ac9c9..f69a5ddb70c 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json @@ -14,8 +14,8 @@ } }, { - "from": [ -0.002, 16.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ 0, 16.004, 0 ], + "to": [ 16, 16.004, 16 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { From a2c70d90c6620be637c4cb491dab8d1a20b2905f Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 23:14:32 +0300 Subject: [PATCH 137/270] add the other standard tags to dough and wheat (#3367) --- .../data/forge/tags/items/dough.json | 2 +- .../data/forge/tags/items/dough/wheat.json | 5 ++++ .../data/forge/tags/items/grain.json | 5 ++++ .../data/forge/tags/items/grain/wheat.json | 5 ++++ .../gtceu/common/data/GTItems.java | 2 +- .../gtceu/data/recipe/CustomTags.java | 4 +++ .../data/recipe/misc/MiscRecipeLoader.java | 26 +++++++++---------- .../gtceu/data/tags/ItemTagLoader.java | 5 ++++ 8 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 src/generated/resources/data/forge/tags/items/dough/wheat.json create mode 100644 src/generated/resources/data/forge/tags/items/grain.json create mode 100644 src/generated/resources/data/forge/tags/items/grain/wheat.json diff --git a/src/generated/resources/data/forge/tags/items/dough.json b/src/generated/resources/data/forge/tags/items/dough.json index 0d7285b98cf..b5199814db7 100644 --- a/src/generated/resources/data/forge/tags/items/dough.json +++ b/src/generated/resources/data/forge/tags/items/dough.json @@ -1,5 +1,5 @@ { "values": [ - "gtceu:dough" + "#forge:dough/wheat" ] } \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/dough/wheat.json b/src/generated/resources/data/forge/tags/items/dough/wheat.json new file mode 100644 index 00000000000..0d7285b98cf --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/dough/wheat.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:dough" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/grain.json b/src/generated/resources/data/forge/tags/items/grain.json new file mode 100644 index 00000000000..80b58877897 --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/grain.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#forge:grain/wheat" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/grain/wheat.json b/src/generated/resources/data/forge/tags/items/grain/wheat.json new file mode 100644 index 00000000000..89f26fbe7dd --- /dev/null +++ b/src/generated/resources/data/forge/tags/items/grain/wheat.json @@ -0,0 +1,5 @@ +{ + "values": [ + "gtceu:wheat_dust" + ] +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 75ee73c50a3..338be46274f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -2010,7 +2010,7 @@ public static ItemEntry createFluidCell(Material mat, int capacit .effect(() -> new MobEffectInstance(MobEffects.HUNGER, 400), .40f) .effect(() -> new MobEffectInstance(MobEffects.POISON, 100), .05f) .build()))) - .tag(CustomTags.DOUGHS) + .tag(CustomTags.WHEAT_DOUGHS) .register(); public static ItemEntry PLANT_BALL = REGISTRATE.item("plant_ball", ComponentItem::create) .onRegister(burnTime(75)).register(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java index 127a804d5b2..1ef6761d452 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/CustomTags.java @@ -17,7 +17,11 @@ public class CustomTags { public static final TagKey PISTONS = TagUtil.createItemTag("pistons"); public static final TagKey CONCRETE_ITEM = TagUtil.createItemTag("concretes"); public static final TagKey CONCRETE_POWDER_ITEM = TagUtil.createItemTag("concrete_powders"); + // common/mod compat tags public static final TagKey DOUGHS = TagUtil.createItemTag("dough"); + public static final TagKey WHEAT_DOUGHS = TagUtil.createItemTag("dough/wheat"); + public static final TagKey GRAINS = TagUtil.createItemTag("grain"); + public static final TagKey WHEAT_GRAINS = TagUtil.createItemTag("grain/wheat"); // Why did I put them all here? Why not? Science isn't about why, it's about why NOT! // Why is so much of our science dangerous? Why don't you marry safe science if you love it so much!? diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java index 6c459181c24..b7fa1679e3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java @@ -501,11 +501,11 @@ public static void init(Consumer provider) { if (!ConfigHolder.INSTANCE.recipes.hardMiscRecipes) { VanillaRecipeHelper.addShapedRecipe(provider, "flour_to_dough", new ItemStack(DOUGH, 8), "FFF", "FWF", "FFF", - 'F', ChemicalHelper.get(dust, Wheat), + 'F', CustomTags.WHEAT_GRAINS, 'W', Water.getBucket()); MIXER_RECIPES.recipeBuilder("flour_to_dough") - .inputItems(dust, Wheat, 2) + .inputItems(CustomTags.WHEAT_GRAINS, 2) .inputFluids(Water.getFluid(250)) .outputItems(DOUGH, 3) .EUt(VA[ULV]) @@ -513,14 +513,14 @@ public static void init(Consumer provider) { .save(provider); VanillaRecipeHelper.addShapelessRecipe(provider, "pumpkin_pie_from_dough", new ItemStack(Items.PUMPKIN_PIE), - new ItemStack(Blocks.PUMPKIN), new ItemStack(Items.SUGAR), new ItemStack(DOUGH)); + new ItemStack(Blocks.PUMPKIN), new ItemStack(Items.SUGAR), CustomTags.DOUGHS); VanillaRecipeHelper.addShapelessRecipe(provider, "cookie_from_dough", new ItemStack(Items.COOKIE, 8), - new ItemStack(DOUGH), new ItemStack(Items.COCOA_BEANS)); + CustomTags.DOUGHS, new ItemStack(Items.COCOA_BEANS)); FORMING_PRESS_RECIPES.recipeBuilder("cookie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH) + .inputItems(CustomTags.DOUGHS) .inputItems(Items.COCOA_BEANS, 2) .outputItems(Items.COOKIE, 12) .EUt(VA[LV]) @@ -532,15 +532,15 @@ public static void init(Consumer provider) { 'E', Items.EGG, 'S', Items.SUGAR, 'M', new FluidContainerIngredient(Milk.getFluidTag(), 1000), - 'D', DOUGH); + 'D', CustomTags.DOUGHS); } else { VanillaRecipeHelper.addShapedRecipe(provider, "flour_to_dough", new ItemStack(DOUGH, 4), "FFF", "FWF", "FFF", - 'F', ChemicalHelper.get(dust, Wheat), + 'F', CustomTags.WHEAT_GRAINS, 'W', Water.getBucket()); MIXER_RECIPES.recipeBuilder("flour_to_dough") - .inputItems(dust, Wheat, 4) + .inputItems(CustomTags.WHEAT_GRAINS, 4) .inputItems(Items.EGG, 2) .inputFluids(Milk.getFluid(250)) // 1 bucket = 1000mB, hence 250mb. Also its infinitely renewable .outputItems(DOUGH, 7) @@ -549,14 +549,14 @@ public static void init(Consumer provider) { .save(provider); VanillaRecipeHelper.addShapelessRecipe(provider, "pumpkin_pie_from_dough", new ItemStack(Items.PUMPKIN_PIE), - new ItemStack(Blocks.PUMPKIN), new ItemStack(DOUGH), new ItemStack(Items.SUGAR), 'r', 'k'); + new ItemStack(Blocks.PUMPKIN), CustomTags.DOUGHS, new ItemStack(Items.SUGAR), 'r', 'k'); VanillaRecipeHelper.addShapelessRecipe(provider, "cookie", new ItemStack(Items.COOKIE, 4), - new ItemStack(Items.COCOA_BEANS), new ItemStack(DOUGH), new ItemStack(Items.SUGAR), 'r'); + new ItemStack(Items.COCOA_BEANS), CustomTags.DOUGHS, new ItemStack(Items.SUGAR), 'r'); FORMING_PRESS_RECIPES.recipeBuilder("cookie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH) + .inputItems(CustomTags.DOUGHS) .inputItems(Items.COCOA_BEANS, 2) .inputItems(Items.SUGAR) .outputItems(Items.COOKIE, 8) @@ -569,12 +569,12 @@ public static void init(Consumer provider) { 'B', Items.SWEET_BERRIES, 'S', Items.SUGAR, 'M', new FluidContainerIngredient(Milk.getFluidTag(), 1000), - 'D', DOUGH); + 'D', CustomTags.DOUGHS); } FORMING_PRESS_RECIPES.recipeBuilder("pumpkin_pie") .notConsumable(SHAPE_MOLD_CYLINDER) - .inputItems(DOUGH, 2) + .inputItems(CustomTags.DOUGHS, 2) .inputItems(Items.PUMPKIN) .inputItems(Items.SUGAR) .outputItems(Items.PUMPKIN_PIE, 2) diff --git a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java index 9ef9f2efedf..05d22cd698a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/tags/ItemTagLoader.java @@ -21,8 +21,13 @@ public class ItemTagLoader { @SuppressWarnings("DataFlowIssue") public static void init(RegistrateItemTagsProvider provider) { + provider.addTag(CustomTags.DOUGHS).addTag(CustomTags.WHEAT_DOUGHS); + provider.addTag(CustomTags.WHEAT_GRAINS).add(GTMaterialItems.MATERIAL_ITEMS.get(dust, Wheat).get()); + provider.addTag(CustomTags.GRAINS).addTag(CustomTags.WHEAT_GRAINS); + provider.copy(CustomTags.CONCRETE_BLOCK, CustomTags.CONCRETE_ITEM); provider.copy(CustomTags.CONCRETE_POWDER_BLOCK, CustomTags.CONCRETE_POWDER_ITEM); + // spotless:off // the coral blocks: alive, dead, both provider.addTag(CustomTags.ALIVE_CORAL_BLOCK_ITEMS) From 8fb59b0e57f3b281a58fa52978043fe61815ee74 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 23:15:02 +0300 Subject: [PATCH 138/270] Clean up unused and/or useless mixins (#3359) --- gradle/forge.versions.toml | 2 +- .../gtceu/api/block/ActiveBlock.java | 4 +- .../blockentity/MetaMachineBlockEntity.java | 4 +- .../recipe/ItemRecipeCapability.java | 2 +- .../gtceu/api/cosmetics/CapeRegistry.java | 10 +- .../api/gui/fancy/ConfiguratorPanel.java | 2 +- .../gtceu/api/gui/widget/ButtonWidget.java | 41 ------- .../api/gui/widget/PatternPreviewWidget.java | 11 +- .../gui/widget/PredicatedButtonWidget.java | 1 + .../gtceu/api/recipe/GTRecipeType.java | 11 -- .../ingredient/IntCircuitIngredient.java | 2 +- .../item/IntersectionMapIngredient.java | 2 +- .../item/StrictNBTItemStackMapIngredient.java | 2 +- .../api/registry/registrate/GTRegistrate.java | 2 +- .../EnvironmentalHazardClientHandler.java | 2 +- .../forge/ForgeClientEventListener.java | 4 +- .../gtceu/client/util/DrawUtil.java | 2 +- .../gtceu/client/util/ModelUtils.java | 13 ++- .../gregtechceu/gtceu/common/CommonProxy.java | 13 ++- .../gtceu/common/data/GTPlacerTypes.java | 36 ------- .../fluid/potion/PotionFluidHelper.java | 2 +- .../common/worldgen/RubberFoliagePlacer.java | 59 ---------- .../common/worldgen/RubberTrunkPlacer.java | 102 ------------------ .../gtceu/core/mixins/EntityMixin.java | 16 +-- .../gtceu/core/mixins/GTMixinPlugin.java | 72 +++++++++++++ .../core/mixins/GregTechMixinPlugin.java | 51 --------- .../mixins/IFoliagePlacerTypeAccessor.java | 18 ---- .../core/mixins/ITrunkPlacerTypeAccessor.java | 18 ---- .../gtceu/core/mixins/InventoryMixin.java | 6 +- .../core/mixins/RecipeManagerAccessor.java | 23 ---- .../core/mixins/RecipeManagerInvoker.java | 19 ---- .../mixins/ae2/GenericStackInvAccessor.java | 17 --- .../AbstractClientPlayerAccessor.java | 2 +- .../mixins/{ => client}/BiomeColorsMixin.java | 2 +- .../mixins/{ => client}/BlockModelMixin.java | 2 +- .../{ => client}/ClientLevelAccessor.java | 2 +- .../{ => client}/GuiGraphicsAccessor.java | 2 +- .../mixins/{ => client}/GuiGraphicsMixin.java | 2 +- .../{ => client}/GuiHeartTypeMixin.java | 2 +- .../{ => client}/HumanoidArmorLayerMixin.java | 11 +- .../{ => client}/LevelRendererMixin.java | 2 +- .../{ => client}/ModelManagerMixin.java | 2 +- .../MultiPlayerGameModeMixin.java | 2 +- .../{ => client}/PlayerInfoAccessor.java | 2 +- .../VariantDeserializerMixin.java | 2 +- .../IntersectionIngredientAccessor.java | 2 +- .../PartialNBTIngredientAccessor.java | 2 +- .../StrictNBTIngredientAccessor.java | 2 +- .../ftbchunks/FTBChunksClientMixin.java | 2 +- .../ldlib/CustomBakedModelAccessor.java | 15 --- .../AbstractRegistrateAccessor.java | 2 +- .../RegistrateDataProviderAccessor.java | 2 +- .../gtceu/data/GregTechDatagen.java | 2 +- .../xei/widgets/GTRecipeWidget.java | 1 - .../gtceu/utils/IngredientEquality.java | 1 + src/main/resources/gtceu.mixins.json | 46 ++++---- 56 files changed, 172 insertions(+), 509 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/AbstractClientPlayerAccessor.java (87%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/BiomeColorsMixin.java (97%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/BlockModelMixin.java (98%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/ClientLevelAccessor.java (90%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/GuiGraphicsAccessor.java (83%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/GuiGraphicsMixin.java (95%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/GuiHeartTypeMixin.java (94%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/HumanoidArmorLayerMixin.java (91%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/LevelRendererMixin.java (99%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/ModelManagerMixin.java (97%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/MultiPlayerGameModeMixin.java (97%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/PlayerInfoAccessor.java (89%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => client}/VariantDeserializerMixin.java (96%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => forge}/IntersectionIngredientAccessor.java (89%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => forge}/PartialNBTIngredientAccessor.java (90%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => forge}/StrictNBTIngredientAccessor.java (87%) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => registrate}/AbstractRegistrateAccessor.java (93%) rename src/main/java/com/gregtechceu/gtceu/core/mixins/{ => registrate}/RegistrateDataProviderAccessor.java (90%) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index b0f7e19d71d..459bd259001 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -1,5 +1,5 @@ [versions] -ldlib = "1.0.39" +ldlib = "1.0.40.a" registrate = "MC1.20-1.3.11" configuration = "2.2.0" mixinExtras = "0.5.0-rc.3" diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java index c4c2b3d7a8b..ca21bb7b809 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/ActiveBlock.java @@ -31,7 +31,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder getUnlockedCapes(UUID uuid) { } /** - * Registers a cape. + * Registers a cape.
+ * use {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)} instead of calling this + * directly. * * @param id An identifier for the cape * @param texture The full path to the cape's texture in a resource pack * - * @deprecated use the {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)}. * @see RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation) */ @ApiStatus.Internal @@ -169,12 +170,13 @@ public static void registerCape(ResourceLocation id, ResourceLocation texture) { } /** - * Registers a cape that will always be unlocked for all players. + * Registers a cape that will always be unlocked for all players.
+ * use {@link RegisterGTCapesEvent#registerCape(ResourceLocation, ResourceLocation)} instead of calling this + * directly. * * @param id An identifier for the cape * @param texture The full path to the cape's texture in a resource pack * - * @deprecated use {@link RegisterGTCapesEvent#registerFreeCape(ResourceLocation, ResourceLocation)}. * @see RegisterGTCapesEvent#registerFreeCape(ResourceLocation, ResourceLocation) */ @ApiStatus.Internal diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java index 0fb46ba9651..6ab93be46bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/fancy/ConfiguratorPanel.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.gui.fancy; import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.widget.ButtonWidget; import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.animation.Animation; @@ -9,6 +8,7 @@ import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.TextTexture; import com.lowdragmc.lowdraglib.gui.util.ClickData; +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import com.lowdragmc.lowdraglib.gui.widget.ImageWidget; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java deleted file mode 100644 index e5b2952804b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/ButtonWidget.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.gregtechceu.gtceu.api.gui.widget; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; - -import com.lowdragmc.lowdraglib.gui.editor.annotation.LDLRegister; -import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; -import com.lowdragmc.lowdraglib.gui.util.ClickData; - -import java.util.function.Consumer; - -@LDLRegister(name = "button", group = "widget.basic") -public class ButtonWidget extends com.lowdragmc.lowdraglib.gui.widget.ButtonWidget { - - public ButtonWidget() { - this(0, 0, 40, 20, GuiTextures.BUTTON, null); - } - - public ButtonWidget(int xPosition, int yPosition, int width, int height, - IGuiTexture buttonTexture, Consumer onPressed) { - super(xPosition, yPosition, width, height, buttonTexture, onPressed); - } - - public ButtonWidget(int xPosition, int yPosition, int width, int height, Consumer onPressed) { - super(xPosition, yPosition, width, height, onPressed); - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (isMouseOverElement(mouseX, mouseY)) { - isClicked = true; - ClickData clickData = new ClickData(); - writeClientAction(1, clickData::writeToBuf); - if (onPressCallback != null) { - onPressCallback.accept(clickData); - } - playButtonClickSound(); - return true; - } - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 89b8db9cef6..30f55020a70 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -42,6 +42,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.model.data.ModelDataManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -51,6 +52,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.shedaniel.rei.impl.client.gui.screen.AbstractDisplayViewingScreen; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; import java.util.*; @@ -231,7 +233,14 @@ public static PatternPreviewWidget getPatternWidget(MultiblockMachineDefinition GTCEu.LOGGER.error("Try to init pattern previews before level load"); throw new IllegalStateException(); } - LEVEL = new TrackedDummyWorld(); + LEVEL = new TrackedDummyWorld() { + + @SuppressWarnings("UnstableApiUsage") + @Override + public @Nullable ModelDataManager getModelDataManager() { + return getLevel().getModelDataManager(); + } + }; } return new PatternPreviewWidget(controllerDefinition); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java index 25ab9e90017..11b8e95e682 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PredicatedButtonWidget.java @@ -2,6 +2,7 @@ import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.util.ClickData; +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import net.minecraft.network.FriendlyByteBuf; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 75f126ebd34..b0438edc5d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.recipe.lookup.GTRecipeLookup; import com.gregtechceu.gtceu.api.recipe.ui.GTRecipeTypeUI; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.core.mixins.RecipeManagerInvoker; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -24,7 +23,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SmeltingRecipe; @@ -189,15 +187,6 @@ public String toString() { return registryName.toString(); } - @Nullable - public GTRecipe getRecipe(RecipeManager recipeManager, ResourceLocation id) { - var recipes = ((RecipeManagerInvoker) recipeManager).getRecipeFromType(this); - if (recipes.get(id) instanceof GTRecipe recipe) { - return recipe; - } - return null; - } - public @NotNull Iterator searchRecipe(IRecipeCapabilityHolder holder, Predicate canHandle) { if (!holder.hasCapabilityProxies()) return Collections.emptyIterator(); var iterator = getLookup().getRecipeIterator(holder, canHandle); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java index 0e23911257a..619ca461b7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntCircuitIngredient.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java index 18fca1f3e6f..ab644883e7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/IntersectionMapIngredient.java @@ -6,7 +6,7 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.MapIngredientTypeManager; -import com.gregtechceu.gtceu.core.mixins.IntersectionIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.IntersectionIngredientAccessor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java index a5400be7930..657f12c8130 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/item/StrictNBTItemStackMapIngredient.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index f637c6d48f3..fa8edf5ea0a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -12,7 +12,7 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; -import com.gregtechceu.gtceu.core.mixins.AbstractRegistrateAccessor; +import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java b/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java index 27e985f52ed..e5cf094b3c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/client/EnvironmentalHazardClientHandler.java @@ -3,7 +3,7 @@ import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.particle.HazardParticleOptions; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.core.mixins.ClientLevelAccessor; +import com.gregtechceu.gtceu.core.mixins.client.ClientLevelAccessor; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index 76cf528f7f6..85771fb568a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -11,8 +11,8 @@ import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.commands.GTClientCommands; -import com.gregtechceu.gtceu.core.mixins.AbstractClientPlayerAccessor; -import com.gregtechceu.gtceu.core.mixins.PlayerInfoAccessor; +import com.gregtechceu.gtceu.core.mixins.client.AbstractClientPlayerAccessor; +import com.gregtechceu.gtceu.core.mixins.client.PlayerInfoAccessor; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; import net.minecraft.ChatFormatting; diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java index 55cf4941c75..03b1958a156 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/DrawUtil.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.client.util; -import com.gregtechceu.gtceu.core.mixins.GuiGraphicsAccessor; +import com.gregtechceu.gtceu.core.mixins.client.GuiGraphicsAccessor; import com.lowdragmc.lowdraglib.utils.ColorUtils; diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java index 176ce821752..567881509d8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -2,7 +2,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.client.model.machine.MachineModel; -import com.gregtechceu.gtceu.core.mixins.ldlib.CustomBakedModelAccessor; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; import net.minecraft.ChatFormatting; import net.minecraft.Util; @@ -23,18 +24,16 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; - +import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Set; @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class ModelUtils { private ModelUtils() {} - private static final Set> EVENT_LISTENERS = new ReferenceOpenHashSet<>(); + private static final List> EVENT_LISTENERS = new ArrayList<>(); public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, RandomSource rand) { @@ -94,10 +93,10 @@ public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { // Also, the caching they have stops our models from updating properly. for (var entry : event.getModels().entrySet()) { BakedModel model = entry.getValue(); - if (!(model instanceof CustomBakedModelAccessor ctmModel)) { + if (!(model instanceof CustomBakedModel ctmModel)) { continue; } - if (ctmModel.gtceu$getParent() instanceof MachineModel machine) { + if (ctmModel.getParent() instanceof MachineModel machine) { entry.setValue(machine); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index e7e579039c6..45c0d237336 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -35,7 +35,7 @@ import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.config.ConfigHolder; -import com.gregtechceu.gtceu.core.mixins.AbstractRegistrateAccessor; +import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import com.gregtechceu.gtceu.data.GregTechDatagen; import com.gregtechceu.gtceu.data.lang.MaterialLangGenerator; import com.gregtechceu.gtceu.data.loot.ChestGenHooks; @@ -121,7 +121,6 @@ public static void init() { // Initialize the model generator before any content is loaded so machine models can use the generated data GregTechDatagen.initPre(); - GTPlacerTypes.init(); GTRecipeCapabilities.init(); GTRecipeConditions.init(); GTToolTiers.init(); @@ -162,12 +161,12 @@ public static void init() { // noinspection UnstableApiUsage List> providers = Multimaps.asMap(accessor.getDatagens()) .get(ProviderType.LANG); - if (providers.isEmpty()) { - providers.add( - (provider) -> MaterialLangGenerator.generate((RegistrateLangProvider) provider, registry)); + NonNullConsumer generator = (provider) -> MaterialLangGenerator + .generate((RegistrateLangProvider) provider, registry); + if (providers == null) { + accessor.getDatagens().put(ProviderType.LANG, generator); } else { - providers.add(0, - (provider) -> MaterialLangGenerator.generate((RegistrateLangProvider) provider, registry)); + providers.add(0, generator); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java deleted file mode 100644 index 27556226c05..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlacerTypes.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.gregtechceu.gtceu.common.data; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.common.worldgen.RubberFoliagePlacer; -import com.gregtechceu.gtceu.common.worldgen.RubberTrunkPlacer; -import com.gregtechceu.gtceu.core.mixins.IFoliagePlacerTypeAccessor; -import com.gregtechceu.gtceu.core.mixins.ITrunkPlacerTypeAccessor; - -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.mojang.serialization.Codec; - -public class GTPlacerTypes { - - public static final TrunkPlacerType RUBBER_TRUNK = registerTruckPlacer("rubber", - RubberTrunkPlacer.CODEC); - public static final FoliagePlacerType RUBBER_FOLIAGE = registerFoliagePlacer("rubber", - RubberFoliagePlacer.CODEC); - - public static

TrunkPlacerType

registerTruckPlacer(String pKey, Codec

pCodec) { - return GTRegistries.register(BuiltInRegistries.TRUNK_PLACER_TYPE, GTCEu.id(pKey), - ITrunkPlacerTypeAccessor.callCtor(pCodec)); - } - - public static

FoliagePlacerType

registerFoliagePlacer(String pKey, Codec

pCodec) { - return GTRegistries.register(BuiltInRegistries.FOLIAGE_PLACER_TYPE, GTCEu.id(pKey), - IFoliagePlacerTypeAccessor.callCtor(pCodec)); - } - - public static void init() {} -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java index 57fe115bb54..1cd4574deec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; import com.gregtechceu.gtceu.common.data.GTFluids; -import com.gregtechceu.gtceu.core.mixins.StrictNBTIngredientAccessor; +import com.gregtechceu.gtceu.core.mixins.forge.StrictNBTIngredientAccessor; import com.gregtechceu.gtceu.utils.FormattingUtil; import com.gregtechceu.gtceu.utils.GTMath; diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java deleted file mode 100644 index f9622683221..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberFoliagePlacer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.gregtechceu.gtceu.common.worldgen; - -import com.gregtechceu.gtceu.common.data.GTPlacerTypes; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; -import net.minecraft.util.valueproviders.IntProvider; -import net.minecraft.world.level.LevelSimulatedReader; -import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class RubberFoliagePlacer extends FoliagePlacer { - - public static final Codec CODEC = RecordCodecBuilder - .create((p_68473_) -> foliagePlacerParts(p_68473_).apply(p_68473_, RubberFoliagePlacer::new)); - - public RubberFoliagePlacer(IntProvider pRadius, IntProvider pOffset) { - super(pRadius, pOffset); - } - - @Override - protected FoliagePlacerType type() { - return GTPlacerTypes.RUBBER_FOLIAGE; - } - - @Override - protected void createFoliage(LevelSimulatedReader level, FoliageSetter blockSetter, RandomSource random, - TreeConfiguration config, int maxFreeTreeHeight, FoliageAttachment attachment, - int foliageHeight, int foliageRadius, int offset) { - BlockPos blockpos = attachment.pos(); - int end = offset - foliageRadius; - for (int l = offset; l >= end; --l) { - this.placeLeavesRow(level, blockSetter, random, config, blockpos, foliageRadius, l, - attachment.doubleTrunk()); - } - } - - @Override - public int foliageHeight(RandomSource random, int height, TreeConfiguration config) { - return Math.max(height - 2, 9 + random.nextInt(2)); - } - - @Override - protected boolean shouldSkipLocation(RandomSource random, int localX, int localY, int localZ, int range, - boolean large) { - int yOff = localY - Mth.clamp(localY, -5, -2); - return localX * localX + localZ * localZ + yOff * yOff > 10 + random.nextInt(8); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java deleted file mode 100644 index 02154956c56..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/RubberTrunkPlacer.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gregtechceu.gtceu.common.worldgen; - -import com.gregtechceu.gtceu.common.data.GTPlacerTypes; - -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.LevelSimulatedReader; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.google.common.collect.ImmutableList; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import java.util.List; -import java.util.function.BiConsumer; - -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class RubberTrunkPlacer extends TrunkPlacer { - - public static final Codec CODEC = RecordCodecBuilder - .create((p_70206_) -> trunkPlacerParts(p_70206_).apply(p_70206_, RubberTrunkPlacer::new)); - - public RubberTrunkPlacer(int pBaseHeight, int pHeightRandA, int pHeightRandB) { - super(pBaseHeight, pHeightRandA, pHeightRandB); - } - - @Override - protected TrunkPlacerType type() { - return GTPlacerTypes.RUBBER_TRUNK; - } - - @Override - public List placeTrunk(LevelSimulatedReader level, - BiConsumer blockSetter, - RandomSource random, int freeTreeHeight, BlockPos pos, - TreeConfiguration config) { - BlockPos blockpos = pos.below(); - setDirtAt(level, blockSetter, random, blockpos, config); - setDirtAt(level, blockSetter, random, blockpos.east(), config); - setDirtAt(level, blockSetter, random, blockpos.south(), config); - setDirtAt(level, blockSetter, random, blockpos.south().east(), config); - BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); - freeTreeHeight--; - for (int i = 0; i < freeTreeHeight; ++i) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 0); - if (i < freeTreeHeight - 1) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, -1); - } - if (i == 0 || i == freeTreeHeight - 6) { - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 1, i, -1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, 1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -1, i, -1); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 2, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, -2, i, 0); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, 2); - placeLogIfFreeWithOffset(level, blockSetter, random, mutableBlockPos, config, pos, 0, i, -2); - } - if (i == 1 || i == freeTreeHeight - 7) { - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, 1, i, - 1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, 1, i, - -1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, -1, - i, 1); - placeLogIfFreeWithOffsetAndChance(0.33f, level, blockSetter, random, mutableBlockPos, config, pos, -1, - i, -1); - - } - } - return ImmutableList.of(new FoliagePlacer.FoliageAttachment(pos.above(freeTreeHeight), 0, false)); - } - - private void placeLogIfFreeWithOffset(LevelSimulatedReader level, BiConsumer blockSetter, - RandomSource random, BlockPos.MutableBlockPos pos, TreeConfiguration config, - BlockPos pOffsetPos, int pOffsetX, int pOffsetY, int pOffsetZ) { - pos.setWithOffset(pOffsetPos, pOffsetX, pOffsetY, pOffsetZ); - placeLogIfFree(level, blockSetter, random, pos, config); - } - - private void placeLogIfFreeWithOffsetAndChance(float pChance, LevelSimulatedReader level, - BiConsumer blockSetter, RandomSource random, - BlockPos.MutableBlockPos pos, TreeConfiguration config, - BlockPos pOffsetPos, int pOffsetX, int pOffsetY, int pOffsetZ) { - if (random.nextFloat() > pChance) { - return; - } - pos.setWithOffset(pOffsetPos, pOffsetX, pOffsetY, pOffsetZ); - placeLogIfFree(level, blockSetter, random, pos, config); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java index 02b8b8615d3..f8e65ae9d87 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/EntityMixin.java @@ -16,7 +16,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Entity.class) public abstract class EntityMixin implements IFireImmuneEntity { @@ -29,9 +28,9 @@ public abstract class EntityMixin implements IFireImmuneEntity { @Unique private boolean gtceu$isEntityInit = false; - @Inject(method = "fireImmune", at = @At("RETURN"), cancellable = true) - private void gtceu$changeFireImmune(CallbackInfoReturnable cir) { - cir.setReturnValue(gtceu$fireImmune || cir.getReturnValueZ()); + @ModifyReturnValue(method = "fireImmune", at = @At("RETURN")) + private boolean gtceu$changeFireImmune(boolean original) { + return original || gtceu$fireImmune; } @Inject(method = "", at = @At("TAIL")) @@ -43,15 +42,10 @@ public abstract class EntityMixin implements IFireImmuneEntity { this.gtceu$fireImmune = isImmune; } - @SuppressWarnings("UnreachableCode") // it doesn't like the cast because mixin. @ModifyReturnValue(method = "getMaxAirSupply", at = @At("RETURN")) private int gtceu$hazardModifyMaxAir(int original) { - if (!gtceu$isEntityInit) { - return original; - } - - if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) - return original; + if (!gtceu$isEntityInit) return original; + if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled) return original; IMedicalConditionTracker tracker = GTCapabilityHelper.getMedicalConditionTracker((Entity) (Object) this); if (tracker != null && tracker.getMaxAirSupply() != -1) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java new file mode 100644 index 00000000000..430c4aaaf2c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java @@ -0,0 +1,72 @@ +package com.gregtechceu.gtceu.core.mixins; + +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.loading.LoadingModList; + +import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class GTMixinPlugin implements IMixinConfigPlugin { + + @Override + public void onLoad(String mixinPackage) {} + + @Override + public String getRefMapperConfig() { + return null; + } + + private static final String MIXIN_PACKAGE = "com.gregtechceu.gtceu.core.mixins."; + private static final Map MOD_COMPAT_MIXINS = new HashMap<>(); + + static { + MOD_COMPAT_MIXINS.put("roughlyenoughitems", MIXIN_PACKAGE + "rei"); + addModCompatMixin("emi"); + addModCompatMixin("jei"); + addModCompatMixin("top"); + addModCompatMixin("ftbchunks"); + addModCompatMixin("xaerominimap"); + addModCompatMixin("xaeroworldmap"); + } + + @Override + public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { + for (var compatMod : MOD_COMPAT_MIXINS.entrySet()) { + if (mixinClassName.startsWith(compatMod.getValue())) { + return isModLoaded(compatMod.getKey()); + } + } + return true; + } + + @Override + public void acceptTargets(Set myTargets, Set otherTargets) {} + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} + + @Override + public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} + + private static void addModCompatMixin(String modId) { + MOD_COMPAT_MIXINS.put(modId, MIXIN_PACKAGE + modId); + } + + private static boolean isModLoaded(String modId) { + if (ModList.get() == null) { + return LoadingModList.get().getModFileById(modId) != null; + } + return ModList.get().isLoaded(modId); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java deleted file mode 100644 index 0ad2923f287..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GregTechMixinPlugin.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.lowdragmc.lowdraglib.core.mixins.MixinPluginShared; - -import org.objectweb.asm.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import java.util.List; -import java.util.Set; - -public class GregTechMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) {} - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.create")) { - return MixinPluginShared.isClassFound("com.simibubi.create.compat.Mods"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.rei")) { - return MixinPluginShared.isClassFound("me.shedaniel.rei.api.common.plugins.REIPlugin"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.top")) { - return MixinPluginShared.isClassFound("mcjty.theoneprobe.api.ITheOneProbe"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.jei")) { - return MixinPluginShared.isClassFound("mezz.jei.api.IModPlugin"); - } else if (mixinClassName.contains("com.gregtechceu.gtceu.core.mixins.emi")) { - return MixinPluginShared.isClassFound("dev.emi.emi.api.EmiPlugin"); - } - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) {} - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {} -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java deleted file mode 100644 index 0e10bfda2b2..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IFoliagePlacerTypeAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; -import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; - -import com.mojang.serialization.Codec; -import org.apache.commons.lang3.NotImplementedException; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(FoliagePlacerType.class) -public interface IFoliagePlacerTypeAccessor { - - @Invoker(value = "") - static FoliagePlacerType callCtor(Codec pCodec) { - throw new NotImplementedException("Mixin failed to apply"); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java deleted file mode 100644 index 736d111b321..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ITrunkPlacerTypeAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; -import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; - -import com.mojang.serialization.Codec; -import org.apache.commons.lang3.NotImplementedException; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(TrunkPlacerType.class) -public interface ITrunkPlacerTypeAccessor { - - @Invoker(value = "") - static TrunkPlacerType callCtor(Codec pCodec) { - throw new NotImplementedException("Mixin failed to apply"); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java index c59d0e61835..df628d0ac4a 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/InventoryMixin.java @@ -26,7 +26,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isSameItemSameTags(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemStack;)Z")) - private boolean gtceu$modifyFindSlotMatcher(ItemStack stack, ItemStack other, Operation original) { + private boolean gtceu$ignoreGTToolNbt(ItemStack stack, ItemStack other, Operation original) { if (stack.getItem() instanceof IGTTool) { return ItemStack.isSameItem(stack, other); } @@ -36,7 +36,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isDamaged()Z")) - private boolean gtceu$damagedToolBypass(ItemStack instance, Operation original) { + private boolean gtceu$ignoreGTToolDamage(ItemStack instance, Operation original) { if (instance.getItem() instanceof IGTTool) { return false; } @@ -46,7 +46,7 @@ public abstract class InventoryMixin { @WrapOperation(method = "findSlotMatchingUnusedItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isEnchanted()Z")) - private boolean gtceu$enchantedToolBypass(ItemStack instance, Operation original) { + private boolean gtceu$ignoreGTToolEnchants(ItemStack instance, Operation original) { if (instance.getItem() instanceof IGTTool) { return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java deleted file mode 100644 index e6b3ebe78be..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerAccessor.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.item.crafting.RecipeType; - -import org.jetbrains.annotations.VisibleForTesting; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -@Mixin(RecipeManager.class) -public interface RecipeManagerAccessor { - - @Accessor("recipes") - Map, Map>> getRawRecipes(); - - @Accessor("recipes") - @VisibleForTesting - void setRawRecipes(Map, Map>> recipes); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java deleted file mode 100644 index 74dcee4fae6..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RecipeManagerInvoker.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.Container; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.item.crafting.RecipeType; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.Map; - -@Mixin(RecipeManager.class) -public interface RecipeManagerInvoker { - - @Invoker("byType") - > Map> getRecipeFromType(RecipeType type); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java deleted file mode 100644 index 0a5dfe6974c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ae2/GenericStackInvAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins.ae2; - -import appeng.helpers.externalstorage.GenericStackInv; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(value = GenericStackInv.class, remap = false) -public interface GenericStackInvAccessor { - - @Accessor - Runnable getListener(); - - @Accessor - @Mutable - void setListener(Runnable listener); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java similarity index 87% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java index 87a1d8dafa7..0bccc988375 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractClientPlayerAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/AbstractClientPlayerAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.client.player.AbstractClientPlayer; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java index b5cc30f6668..69da57611e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BiomeColorsMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BiomeColorsMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.client.EnvironmentalHazardClientHandler; import com.gregtechceu.gtceu.config.ConfigHolder; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java similarity index 98% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java index fe5531463cc..9f0ab39ecae 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/BlockModelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.client.model.SpriteCapturer; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java similarity index 90% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java index d1aa93f0289..0cce686ea64 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ClientLevelAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ClientLevelAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import net.minecraft.client.color.block.BlockTintCache; import net.minecraft.client.multiplayer.ClientLevel; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java similarity index 83% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java index cb2353cc615..23dc158d2f9 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import net.minecraft.client.gui.GuiGraphics; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java similarity index 95% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java index d79b263bcc0..45a34910a9e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiGraphicsMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiGraphicsMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.client.util.RenderUtil; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java similarity index 94% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java index d50077288c4..0d0b711d8a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GuiHeartTypeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/GuiHeartTypeMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.common.data.GTMobEffects; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java similarity index 91% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java index 3d06992bd66..0c5240170df 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/HumanoidArmorLayerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/HumanoidArmorLayerMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; @@ -28,7 +28,8 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + - "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), index = 6) private float gtceu$modifyArmorTintR(float oldR, @Local ArmorItem armorItem) { if (armorItem instanceof GTArmorItem gtArmorItem) { @@ -47,7 +48,8 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + - "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), index = 7) private float gtceu$modifyArmorTintsG(float oldG, @Local ArmorItem armorItem) { if (armorItem instanceof GTArmorItem gtArmorItem) { @@ -66,7 +68,8 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderer) { @ModifyArg(method = "renderArmorPiece", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;renderModel" + - "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V"), + "(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ILnet/minecraft/world/item/ArmorItem;Lnet/minecraft/client/model/Model;ZFFFLnet/minecraft/resources/ResourceLocation;)V", + remap = false), index = 8) private float gtceu$modifyArmorTintsB(float oldB, @Local ArmorItem armorItem) { if (armorItem instanceof GTArmorItem gtArmorItem) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java similarity index 99% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index ad527304e75..be5ee59e1bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java index 07729f60ba4..daa07fa51f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.client.renderer.block.MaterialBlockRenderer; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java index 712c7c45fd9..ab4890ed515 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MultiPlayerGameModeMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/MultiPlayerGameModeMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java similarity index 89% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java index e391af2d465..f4549b6cbb7 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/PlayerInfoAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/PlayerInfoAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import net.minecraft.client.multiplayer.PlayerInfo; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java similarity index 96% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java index b1ee89299c3..1ecd21d0569 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/VariantDeserializerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/VariantDeserializerMixin.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.client; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.client.util.VariantRotationHelpers; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java similarity index 89% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java index f7edb4daf28..c9c1f257841 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/IntersectionIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/IntersectionIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java similarity index 90% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java index c3953078475..9e25b3cea32 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/PartialNBTIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/PartialNBTIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java similarity index 87% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java index c91752b250c..2ca0f7abf32 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/StrictNBTIngredientAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/StrictNBTIngredientAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.forge; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.crafting.StrictNBTIngredient; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java index 5fb87fe7a8f..28a5062c507 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java @@ -30,7 +30,7 @@ import java.util.Iterator; -@Mixin(value = FTBChunksClient.class) +@Mixin(value = FTBChunksClient.class, remap = false) public class FTBChunksClientMixin { @Unique diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java deleted file mode 100644 index 774f0c5af31..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ldlib/CustomBakedModelAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins.ldlib; - -import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; - -import net.minecraft.client.resources.model.BakedModel; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(value = CustomBakedModel.class, remap = false) -public interface CustomBakedModelAccessor { - - @Accessor("parent") - BakedModel gtceu$getParent(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java similarity index 93% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java index 801fa24fc68..8546afae25e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/AbstractRegistrateAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/AbstractRegistrateAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.registrate; import com.google.common.collect.ListMultimap; import com.tterrag.registrate.AbstractRegistrate; diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java similarity index 90% rename from src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java rename to src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java index 14c204b3b8d..795638b44ea 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/RegistrateDataProviderAccessor.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/registrate/RegistrateDataProviderAccessor.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.core.mixins; +package com.gregtechceu.gtceu.core.mixins.registrate; import com.google.common.collect.BiMap; import com.tterrag.registrate.providers.ProviderType; diff --git a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java index 605385aa27a..05ee4c3bde3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java +++ b/src/main/java/com/gregtechceu/gtceu/data/GregTechDatagen.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.registry.GTRegistration; -import com.gregtechceu.gtceu.core.mixins.RegistrateDataProviderAccessor; +import com.gregtechceu.gtceu.core.mixins.registrate.RegistrateDataProviderAccessor; import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.data.model.BlockstateModelLoader; import com.gregtechceu.gtceu.data.tags.*; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 92504283c36..9703c3186d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.WidgetUtils; -import com.gregtechceu.gtceu.api.gui.widget.ButtonWidget; import com.gregtechceu.gtceu.api.gui.widget.PredicatedButtonWidget; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java index 86bf1fef489..ab292863e5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/IngredientEquality.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; import com.gregtechceu.gtceu.core.mixins.*; +import com.gregtechceu.gtceu.core.mixins.forge.*; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.item.Item; diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 0106b38e87a..85b791ac899 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -4,25 +4,25 @@ "refmap": "gtceu.refmap.json", "package": "com.gregtechceu.gtceu.core.mixins", "compatibilityLevel": "JAVA_17", - "plugin": "com.gregtechceu.gtceu.core.mixins.GregTechMixinPlugin", + "plugin": "com.gregtechceu.gtceu.core.mixins.GTMixinPlugin", "client": [ - "AbstractClientPlayerAccessor", - "BiomeColorsMixin", - "BlockModelMixin", - "ClientLevelAccessor", - "GuiGraphicsAccessor", - "GuiGraphicsMixin", - "GuiHeartTypeMixin", - "HumanoidArmorLayerMixin", - "LevelRendererMixin", - "ModelManagerMixin", - "MultiPlayerGameModeMixin", - "PlayerInfoAccessor", - "VariantDeserializerMixin", + "client.AbstractClientPlayerAccessor", + "client.BiomeColorsMixin", + "client.BlockModelMixin", + "client.ClientLevelAccessor", + "client.GuiGraphicsAccessor", + "client.GuiGraphicsMixin", + "client.GuiHeartTypeMixin", + "client.HumanoidArmorLayerMixin", + "client.LevelRendererMixin", + "client.ModelManagerMixin", + "client.MultiPlayerGameModeMixin", + "client.PlayerInfoAccessor", + "client.VariantDeserializerMixin", "ftbchunks.FTBChunksClientMixin", "ftbchunks.LargeMapScreenMixin", "ftbchunks.RegionMapPanelMixin", - "ldlib.CustomBakedModelAccessor", + "ldlib.ModularWrapperWidgetMixin", "rei.FluidEntryRendererMixin", "xaerominimap.HighlighterRegistryMixin", "xaerominimap.MinimapFBORendererMixin", @@ -31,48 +31,42 @@ "xaeroworldmap.WorldMapSessionMixin" ], "mixins": [ - "AbstractRegistrateAccessor", "BlockBehaviourAccessor", "BlockMixin", "BlockPropertiesAccessor", "ChunkGeneratorMixin", "EntityMixin", - "IFoliagePlacerTypeAccessor", "IngredientAccessor", - "IntersectionIngredientAccessor", "InventoryMixin", "ItemValueAccessor", - "ITrunkPlacerTypeAccessor", "LevelMixin", "LootDataManagerMixin", "LootPoolAccessor", "OreConfigurationMixin", "OreVeinifierMixin", - "PartialNBTIngredientAccessor", "PotionBrewingAccessor", "PrimedTntAccessor", - "RecipeManagerAccessor", - "RecipeManagerInvoker", "RecipeManagerMixin", - "RegistrateDataProviderAccessor", "RepairItemRecipeMixin", "ServerChunkProviderMixin", "ServerGamePacketListenerImplAccessor", "ShapedRecipeAccessor", "SidedRedstoneConnectivityMixin", - "StrictNBTIngredientAccessor", "TagLoaderMixin", "TagManagerMixin", "TagValueAccessor", - "ae2.GenericStackInvAccessor", "emi.FillRecipePacketMixin", "emi.FluidEmiStackMixin", "forge.ConfiguredModelBuilderAccessor", "forge.ConfiguredModelListAccessor", "forge.ModelBuilderAccessor", + "forge.IntersectionIngredientAccessor", + "forge.PartialNBTIngredientAccessor", + "forge.StrictNBTIngredientAccessor", "jei.FluidHelperMixin", - "ldlib.ModularWrapperWidgetMixin", "ldlib.SyncUtilsMixin", + "registrate.AbstractRegistrateAccessor", + "registrate.RegistrateDataProviderAccessor", "rei.InputSlotCrafterMixin", "rei.RecipeFinderMixin", "top.ConfigMixin" From 1a78feadbf23c75a6435e8c2ff1169cba68cdd8d Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 10 Jul 2025 23:15:16 +0300 Subject: [PATCH 139/270] fix the computer monitor's and machine controller's textures (#3366) --- .../com/gregtechceu/gtceu/api/gui/GuiTextures.java | 2 +- .../cover/{display.png => computer_monitor.png} | Bin ...y_emissive.png => computer_monitor_emissive.png} | Bin .../{controller.png => machine_controller.png} | Bin 4 files changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/assets/gtceu/textures/block/cover/{display.png => computer_monitor.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{display_emissive.png => computer_monitor_emissive.png} (100%) rename src/main/resources/assets/gtceu/textures/block/cover/{controller.png => machine_controller.png} (100%) diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java index 04b7239d43c..a8d39e6b28b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/GuiTextures.java @@ -496,7 +496,7 @@ public class GuiTextures { // Covers public static final ResourceTexture COVER_MACHINE_CONTROLLER = new ResourceTexture( - "gtceu:textures/items/metaitems/cover.controller.png"); + "gtceu:textures/items/machine_controller_cover.png"); // Terminal public static final ResourceTexture ICON_REMOVE = new ResourceTexture( diff --git a/src/main/resources/assets/gtceu/textures/block/cover/display.png b/src/main/resources/assets/gtceu/textures/block/cover/computer_monitor.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/display.png rename to src/main/resources/assets/gtceu/textures/block/cover/computer_monitor.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/display_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/computer_monitor_emissive.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/display_emissive.png rename to src/main/resources/assets/gtceu/textures/block/cover/computer_monitor_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/cover/controller.png b/src/main/resources/assets/gtceu/textures/block/cover/machine_controller.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/block/cover/controller.png rename to src/main/resources/assets/gtceu/textures/block/cover/machine_controller.png From 337f8f3b67513d534b3d80244d199232364d9714 Mon Sep 17 00:00:00 2001 From: fdjgnbjfdsnkfv <121055316+kdcjxbsdnbgfdg@users.noreply.github.com> Date: Thu, 10 Jul 2025 22:01:12 +0100 Subject: [PATCH 140/270] Fixed 2 gcym multis having incorrect fluid renderer code (#3378) Co-authored-by: eve336 <121055316+eve336@users.noreply.github.com> --- .../multiblock/electric/gcym/LargeChemicalBathMachine.java | 2 +- .../machine/multiblock/electric/gcym/LargeMixerMachine.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 8d4f54058f8..618a95d2bc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -39,7 +39,7 @@ public LargeChemicalBathMachine(IMachineBlockEntity holder, Object... args) { @Override public void onStructureFormed() { super.onStructureFormed(); - IFluidRenderMulti.super.onStructureInvalid(); + IFluidRenderMulti.super.onStructureFormed(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index f9c4ae4359d..01bccba3b85 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -44,7 +44,7 @@ public ManagedFieldHolder getFieldHolder() { @Override public void onStructureFormed() { super.onStructureFormed(); - IFluidRenderMulti.super.onStructureInvalid(); + IFluidRenderMulti.super.onStructureFormed(); } @Override From 551ca2b6714358d4fa21fc9d212b652715ed52a4 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Thu, 10 Jul 2025 18:30:10 -0400 Subject: [PATCH 141/270] Fix FTBChunksClient mixin crashing non-dev clients (#3380) --- .../gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java index 28a5062c507..203ebf854cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/ftbchunks/FTBChunksClientMixin.java @@ -43,7 +43,8 @@ public class FTBChunksClientMixin { @Inject(method = "renderHud", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;scale(FFF)V", - shift = At.Shift.AFTER), + shift = At.Shift.AFTER, + remap = true), slice = @Slice(from = @At(value = "INVOKE", target = "Ldev/ftb/mods/ftbchunks/api/client/icon/MapIcon;getPos(F)Lnet/minecraft/world/phys/Vec3;"), to = @At(value = "INVOKE", From ad51bcfcba46a9ca7681a989a50c6f771514733e Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Fri, 11 Jul 2025 01:58:59 -0600 Subject: [PATCH 142/270] Fix overlays using wrong offsets (#3385) --- .../models/block/machine/steam_input_hatch.json | 1 - .../gtceu/models/block/overlay/2_layer/front.json | 8 ++++---- .../models/block/overlay/2_layer/front_emissive.json | 8 ++++---- .../overlay/2_layer/front_emissive_color_ring.json | 12 ++++++------ .../models/block/overlay/2_layer/tinted/front.json | 8 ++++---- .../assets/gtceu/models/block/overlay/front.json | 4 ++-- .../gtceu/models/block/overlay/front_color_ring.json | 8 ++++---- .../gtceu/models/block/overlay/front_emissive.json | 4 ++-- .../block/overlay/front_emissive_color_ring.json | 8 ++++---- .../models/block/overlay/only/2_layer/front.json | 8 ++++---- .../block/overlay/only/2_layer/front_emissive.json | 8 ++++---- .../only/2_layer/front_emissive_color_ring.json | 12 ++++++------ .../gtceu/models/block/overlay/only/front.json | 4 ++-- .../models/block/overlay/only/front_color_ring.json | 8 ++++---- .../models/block/overlay/only/front_emissive.json | 4 ++-- .../overlay/only/front_emissive_color_ring.json | 8 ++++---- 16 files changed, 56 insertions(+), 57 deletions(-) diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json index 2f8d860d22a..42273458b86 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_hatch.json @@ -13,7 +13,6 @@ "parent": "gtceu:block/machine/part/steam_hatch", "textures": { "bottom": "gtceu:block/casings/steam/bronze/bottom", - "overlay": "gtceu:block/cover/pump", "side": "gtceu:block/casings/steam/bronze/side", "top": "gtceu:block/casings/steam/bronze/top" } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json index 7f5ed8415dd..923354d7676 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json index e0021f64c43..3ba07e27f33 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json index aadc2ff2d4e..7a022b57172 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -33,8 +33,8 @@ } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json index 7c3c24b909a..6edd7e47c53 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index 07012e5726a..33015a6bf34 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json index 820bf463964..c463a37376a 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index 6fb38070722..34c6d207e2e 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json index 25aa1e3e2c7..45d5a125902 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -17,8 +17,8 @@ } }, { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -26,8 +26,8 @@ } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json index 01065d70519..ec94f7e0858 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front", "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json index d3e32fba1b3..31804576e1b 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front_emissive", "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json index 9b10ff1527d..c5d986292c9 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.006 ], - "to": [ 16, 16, 16.006 ], + "from": [ 0, 0, -0.006 ], + "to": [ 16, 16, -0.006 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -21,8 +21,8 @@ } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json index 6b7fa489ff8..91d0c428efc 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json index 7fb246df961..189d364f209 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json index db90b7c7275..97726fe9177 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json index 7a8752ce03a..7a6881a2b98 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json @@ -5,8 +5,8 @@ }, "elements": [ { - "from": [ 0, 0, 16.004 ], - "to": [ 16, 16, 16.004 ], + "from": [ 0, 0, -0.004 ], + "to": [ 16, 16, -0.004 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, 16.008 ], - "to": [ 16, 16, 16.008 ], + "from": [ 0, 0, -0.008 ], + "to": [ 16, 16, -0.008 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { From 8c30898f3761a332f6e2d925d75db1cfcba0417c Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Fri, 11 Jul 2025 01:59:44 -0600 Subject: [PATCH 143/270] Fix Material Decomp being wrong for some recipes (#3382) --- .../gtceu/api/data/chemical/material/ItemMaterialData.java | 5 +++-- .../api/data/chemical/material/stack/MaterialStack.java | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java index 412a8931662..597475c6a6c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java @@ -176,12 +176,13 @@ public static void resolveItemMaterialInfos(Consumer provider) { for (var entry : UNRESOLVED_ITEM_MATERIAL_INFO.entrySet()) { List stacks = new ArrayList<>(); var stack = entry.getKey(); - var count = stack.getCount(); + int outputCount = stack.getCount(); for (var input : entry.getValue()) { var matStack = getMaterialInfo(input.getItem()); + int inputCount = input.getCount(); if (matStack != null) { matStack.getMaterials() - .forEach(ms -> stacks.add(new MaterialStack(ms.material(), ms.amount() / count))); + .forEach(ms -> stacks.add(ms.multiply(inputCount).divide(outputCount))); } } if (stacks.isEmpty()) continue; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java index 27cb7a51bf1..c524b19fc15 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialStack.java @@ -28,6 +28,10 @@ public MaterialStack multiply(long amount) { return new MaterialStack(material, this.amount * amount); } + public MaterialStack divide(long amount) { + return new MaterialStack(material, this.amount / amount); + } + public static MaterialStack fromString(CharSequence str) { String trimmed = str.toString().trim(); String copy = trimmed; From fa77735ed96564fba56c30d52ccf5a103ded32a2 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Fri, 11 Jul 2025 04:02:56 -0400 Subject: [PATCH 144/270] Clean Up EMI GUI for MultiAmp (#3384) --- .../resources/assets/gtceu/lang/en_ud.json | 7 ++-- .../resources/assets/gtceu/lang/en_us.json | 7 ++-- .../gtceu/api/recipe/ui/GTRecipeTypeUI.java | 2 +- .../gtceu/common/data/GCYMRecipeTypes.java | 2 +- .../gtceu/common/data/GTRecipeTypes.java | 22 +++++------ .../gtceu/data/lang/LangHandler.java | 7 ++-- .../xei/widgets/GTRecipeWidget.java | 38 ++++++++++++++++--- 7 files changed, 58 insertions(+), 27 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 32e9dc57bd3..fed6f89b963 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -3439,8 +3439,9 @@ "gtceu.recipe.duration": "sɔǝs %s :uoıʇɐɹnᗡ", "gtceu.recipe.environmental_hazard": "%s ǝʌɐɥ ʇsnɯ ɐǝɹⱯɔ§", "gtceu.recipe.environmental_hazard.reverse": "%s ɟo ǝǝɹɟ ǝq ʇsnɯ ɐǝɹⱯɔ§", - "gtceu.recipe.eu": "ʇ/∩Ǝ %s :ǝbɐs∩", - "gtceu.recipe.eu_inverted": "ʇ/∩Ǝ %s :uoıʇɐɹǝuǝ⅁", + "gtceu.recipe.eu": "%s @ Ɐ %s :ǝbɐs∩", + "gtceu.recipe.eu.total": "ʇ/∩Ǝ %s", + "gtceu.recipe.eu_inverted": "%s @ Ɐ %s :uoıʇɐɹǝuǝ⅁", "gtceu.recipe.eu_to_start": "%s∩Ǝ%s :ʇɹɐʇS o⟘ ∩Ǝ", "gtceu.recipe.explosive": "%s :ǝʌısoןdxƎ", "gtceu.recipe.max_eu": "∩Ǝ %s :∩Ǝ ˙xɐW", @@ -3451,7 +3452,7 @@ "gtceu.recipe.total": "∩Ǝ %s :ןɐʇo⟘", "gtceu.recipe.total_computation": "∩MƆ %s :uoıʇɐʇndɯoƆ", "gtceu.recipe.total_eu": "ʇ/∩Ǝ %s :ǝbɐs∩ ןɐʇo⟘", - "gtceu.recipe.voltage": "Ɐ %s @ Λ %s :ǝbɐʇןoΛ", + "gtceu.recipe.voltage": "%s @ Ɐ %s :ǝbɐs∩", "gtceu.recipe_logic.condition_fails": "sןıɐℲ uoıʇıpuoƆ", "gtceu.recipe_logic.insufficient_fuel": "ןǝnℲ ʇuǝıɔıɟɟnsuI", "gtceu.recipe_logic.insufficient_in": "sʇnduI ʇuǝıɔıɟɟnsuI", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 05f8531bcfd..bd853936d1a 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -3439,8 +3439,9 @@ "gtceu.recipe.duration": "Duration: %s secs", "gtceu.recipe.environmental_hazard": "§cArea must have %s", "gtceu.recipe.environmental_hazard.reverse": "§cArea must be free of %s", - "gtceu.recipe.eu": "Usage: %s EU/t", - "gtceu.recipe.eu_inverted": "Generation: %s EU/t", + "gtceu.recipe.eu": "Usage: %s A @ %s", + "gtceu.recipe.eu.total": "%s EU/t", + "gtceu.recipe.eu_inverted": "Generation: %s A @ %s", "gtceu.recipe.eu_to_start": "EU To Start: %sEU%s", "gtceu.recipe.explosive": "Explosive: %s", "gtceu.recipe.max_eu": "Max. EU: %s EU", @@ -3451,7 +3452,7 @@ "gtceu.recipe.total": "Total: %s EU", "gtceu.recipe.total_computation": "Computation: %s CWU", "gtceu.recipe.total_eu": "Total Usage: %s EU/t", - "gtceu.recipe.voltage": "Voltage: %s V @ %s A", + "gtceu.recipe.voltage": "Usage: %s A @ %s", "gtceu.recipe_logic.condition_fails": "Condition Fails", "gtceu.recipe_logic.insufficient_fuel": "Insufficient Fuel", "gtceu.recipe_logic.insufficient_in": "Insufficient Inputs", diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java index 9aaa0e83104..00b094b96b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java @@ -84,7 +84,7 @@ public class GTRecipeTypeUI { protected BiConsumer uiBuilder; @Setter @Getter - protected int maxTooltips = 4; + protected int maxTooltips = 3; private CompoundTag customUICache; private Size xeiSize; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index 490b0aebe71..cba81582187 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -50,7 +50,7 @@ public class GCYMRecipeTypes { } return ""; }) - .setMaxTooltips(5) + .setMaxTooltips(4) .setUiBuilder((recipe, widgetGroup) -> { int temp = recipe.data.getInt("ebf_temp"); List> items = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 91a40411041..a28cf8c4441 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -184,7 +184,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) - .setMaxTooltips(5) + .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); @@ -204,7 +204,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, true, GuiTextures.DUST_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_SLICE, LEFT_TO_RIGHT) .setSound(GTSoundEntries.CUT) - .setMaxTooltips(5) + .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -341,7 +341,7 @@ public class GTRecipeTypes { .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .setSlotOverlay(false, false, true, GuiTextures.LENS_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) - .setMaxTooltips(5) + .setMaxTooltips(4) .setSound(GTSoundEntries.ELECTROLYZER); public final static GTRecipeType SIFTER_RECIPES = register("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) @@ -368,7 +368,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.CIRCUIT_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_CIRCUIT_ASSEMBLER, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) - .setMaxTooltips(5) + .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -391,14 +391,14 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.INT_CIRCUIT_OVERLAY) .setSlotOverlay(true, true, GuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(5) + .setMaxTooltips(4) .setOffsetVoltageText(true) .setSound(GTSoundEntries.COOLING); public final static GTRecipeType AIR_SCRUBBER_RECIPES = register("air_scrubber", ELECTRIC) .setMaxIOSize(1, 3, 1, 3).setEUIO(IO.IN) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(5) + .setMaxTooltips(4) .setSound(GTSoundEntries.COOLING); public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) @@ -407,7 +407,7 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.SCANNER_OVERLAY) .setSlotOverlay(true, false, GuiTextures.RESEARCH_STATION_OVERLAY) .setScanner(true) - .setMaxTooltips(5) + .setMaxTooltips(4) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); public final static GTRecipeType ROCK_BREAKER_RECIPES = register("rock_breaker", ELECTRIC).setMaxIOSize(1, 4, 0, 0) @@ -432,7 +432,7 @@ public class GTRecipeTypes { .setBackground(GuiTextures.FLUID_SLOT).setShowAmount(false)); } }) - .setMaxTooltips(5) + .setMaxTooltips(4) .setSound(GTSoundEntries.FIRE); public static final GTRecipeType SCANNER_RECIPES = register("scanner", ELECTRIC) @@ -626,7 +626,7 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) .setHasResearchSlot(true) - .setMaxTooltips(5) + .setMaxTooltips(4) .onRecipeBuild(ResearchManager::createDefaultResearchRecipe); public static final GTRecipeType LARGE_CHEMICAL_RECIPES = register("large_chemical_reactor", MULTIBLOCK) @@ -640,7 +640,7 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) - .setMaxTooltips(5) + .setMaxTooltips(4) .setSmallRecipeMap(CHEMICAL_RECIPES); public static final GTRecipeType FUSION_RECIPES = register("fusion_reactor", MULTIBLOCK).setMaxIOSize(0, 0, 2, 1) @@ -648,7 +648,7 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_FUSION, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ARC) .setOffsetVoltageText(true) - .setMaxTooltips(5) + .setMaxTooltips(4) .setUiBuilder(FusionReactorMachine::addEUToStartLabel); public static final GTRecipeType DUMMY_RECIPES = register("dummy", DUMMY) diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index ed6fe66c1d9..70c360f73e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -972,10 +972,11 @@ public static void init(RegistrateLangProvider provider) { "§4§lWARNING:§r§4 DEPRECATED. WILL BE REMOVED IN A FUTURE VERSION.§r"); provider.add("gtceu.recipe.total", "Total: %s EU"); provider.add("gtceu.recipe.max_eu", "Max. EU: %s EU"); - provider.add("gtceu.recipe.eu", "Usage: %s EU/t"); - provider.add("gtceu.recipe.eu_inverted", "Generation: %s EU/t"); + provider.add("gtceu.recipe.eu", "Usage: %s A @ %s"); + provider.add("gtceu.recipe.eu_inverted", "Generation: %s A @ %s"); + provider.add("gtceu.recipe.eu.total", "%s EU/t"); provider.add("gtceu.recipe.duration", "Duration: %s secs"); - provider.add("gtceu.recipe.voltage", "Voltage: %s V @ %s A"); + provider.add("gtceu.recipe.voltage", "Usage: %s A @ %s"); provider.add("gtceu.recipe.total_eu", "Total Usage: %s EU/t"); provider.add("gtceu.recipe.not_consumed", "Does not get consumed in the process"); provider.add("gtceu.recipe.chance", "Chance: %s +%s/tier"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java index 9703c3186d5..39335ee1b0e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/xei/widgets/GTRecipeWidget.java @@ -21,6 +21,7 @@ import com.gregtechceu.gtceu.common.recipe.condition.DimensionCondition; import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.FormattingUtil; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -57,6 +58,7 @@ public class GTRecipeWidget extends WidgetGroup { private final int xOffset; private final GTRecipe recipe; private final List recipeParaTexts = new ArrayList<>(); + private LabelWidget recipeVoltageText = null; private final int minTier; private int tier; private int yOffset; @@ -107,7 +109,7 @@ private void setRecipeWidget() { EnergyStack EUt = RecipeHelper.getRealEUt(recipe); int yOffset = 5 + size.height; this.yOffset = yOffset; - yOffset += !EUt.isEmpty() ? 30 : 0; + yOffset += !EUt.isEmpty() ? 21 : 0; if (recipe.data.getBoolean("duration_is_total_cwu")) { yOffset -= 10; } @@ -147,6 +149,9 @@ private void initializeRecipeTextWidget() { int textsY = yOffset - 10; int duration = recipe.duration; var EUt = RecipeHelper.getRealEUtWithIO(recipe); + var minVoltageTier = GTUtil.getTierByVoltage(EUt.voltage()); + float minAmperage = (float) EUt.getTotalEU() / GTValues.V[minVoltageTier]; + List texts = getRecipeParaText(recipe, duration, EUt); for (Component text : texts) { textsY += 10; @@ -154,6 +159,22 @@ private void initializeRecipeTextWidget() { addWidget(labelWidget); recipeParaTexts.add(labelWidget); } + + if (EUt.voltage() > 0) { + textsY += 10; + Component text = Component.translatable(EUt.isInput() ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", + FormattingUtil.formatNumber2Places(minAmperage), GTValues.VN[minVoltageTier]) + .withStyle(ChatFormatting.UNDERLINE); + recipeVoltageText = new LabelWidget(3 - xOffset, textsY, text).setTextColor(-1) + .setDropShadow(true); + recipeVoltageText.setHoverTooltips( + Component.translatable("gtceu.recipe.eu.total", FormattingUtil.formatNumbers(EUt.getTotalEU())) + .withStyle(ChatFormatting.UNDERLINE)); + if (recipeVoltageText != null) { + addWidget(recipeVoltageText); + } + } + if (EUt.isInput()) { LabelWidget voltageTextWidget = new LabelWidget(getVoltageXOffset() - xOffset, getSize().height - 10, tierText).setTextColor(-1).setDropShadow(false); @@ -190,10 +211,6 @@ private static List getRecipeParaText(GTRecipe recipe, int duration, } else { texts.add(Component.translatable("gtceu.recipe.total", FormattingUtil.formatNumbers(euTotal))); } - texts.add(Component.translatable(eu.isInput() ? "gtceu.recipe.eu" : "gtceu.recipe.eu_inverted", - FormattingUtil.formatNumbers(eu.getTotalEU()))); - texts.add(Component.translatable("gtceu.recipe.voltage", - FormattingUtil.formatNumbers(eu.voltage()), FormattingUtil.formatNumbers(eu.amperage()))); } return texts; @@ -247,6 +264,7 @@ private void setRecipeOverclockWidget(OverclockingLogic logic) { EnergyStack inputEUt = recipe.getInputEUt(); int duration = recipe.duration; String tierText = GTValues.VNF[tier]; + if (tier > minTier && !inputEUt.isEmpty()) { int ocs = tier - minTier; if (minTier == ULV) ocs--; @@ -256,12 +274,22 @@ private void setRecipeOverclockWidget(OverclockingLogic logic) { inputEUt = inputEUt.multiplyVoltage(result.eutMultiplier()); tierText = tierText.formatted(ChatFormatting.ITALIC); } + var minVoltageTier = GTUtil.getTierByVoltage(inputEUt.voltage()); + float minAmperage = (float) inputEUt.getTotalEU() / GTValues.V[minVoltageTier]; List texts = getRecipeParaText(recipe, duration, new EnergyStack.WithIO(inputEUt, IO.IN)); for (int i = 0; i < texts.size(); i++) { recipeParaTexts.get(i).setComponent(texts.get(i)); } voltageTextWidget.setText(tierText); voltageTextWidget.setSelfPositionX(getVoltageXOffset() - xOffset); + if (recipeVoltageText != null) { + recipeVoltageText.setComponent(Component.translatable("gtceu.recipe.eu", + FormattingUtil.formatNumber2Places(minAmperage), GTValues.VN[minVoltageTier]) + .withStyle(ChatFormatting.UNDERLINE)); + recipeVoltageText.setHoverTooltips( + Component.translatable("gtceu.recipe.eu.total", FormattingUtil.formatNumbers(inputEUt.getTotalEU())) + .withStyle(ChatFormatting.UNDERLINE)); + } detectAndSendChanges(); updateScreen(); } From 9e8b05b3194f566dbc128358b63c98d1247ebafc Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 12 Jul 2025 12:04:08 +0300 Subject: [PATCH 145/270] fix parallel limiting counting all inventories as distinct (#3396) --- .../recipe/FluidRecipeCapability.java | 37 +++++++++++++------ .../recipe/ItemRecipeCapability.java | 15 +++++--- .../gtceu/api/recipe/RecipeRunner.java | 3 +- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index d035747be4c..3a70e594512 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -189,21 +189,32 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe var inputs = (tick ? recipe.tickInputs : recipe.inputs).get(this); if (inputs == null || inputs.isEmpty()) return limit; + // Find all the fluids in the combined Fluid Input inventories and create oversized FluidStacks List> inventoryGroups = getInputContents(holder); if (inventoryGroups.isEmpty()) return 0; + // map the recipe ingredients to account for duplicated and notConsumable ingredients. + // notConsumable ingredients are not counted towards the max ratio var nonConsumables = new Object2IntOpenHashMap(); var consumables = new Object2IntOpenHashMap(); for (Content content : inputs) { - FluidIngredient ingredient = of(content.content); - if (content.chance == 0) nonConsumables.addTo(ingredient, ingredient.getAmount()); - else consumables.addTo(ingredient, ingredient.getAmount()); + FluidIngredient ing = of(content.content); + + int amount; + if (ing instanceof IntProviderFluidIngredient provider) amount = provider.getCountProvider().getMaxValue(); + else amount = ing.getAmount(); + + if (content.chance == 0) nonConsumables.addTo(ing, amount); + else consumables.addTo(ing, amount); } + // is this even possible if (consumables.isEmpty() && nonConsumables.isEmpty()) return limit; int maxMultiplier = 0; + // Check every inventory group for (var group : inventoryGroups) { + // Check for enough NC in inventory group boolean satisfied = true; for (var ncEntry : Object2IntMaps.fastIterable(nonConsumables)) { FluidIngredient ingredient = ncEntry.getKey(); @@ -230,9 +241,9 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe int invMultiplier = Integer.MAX_VALUE; // Loop over all consumables - for (var inputEntry : Object2IntMaps.fastIterable(consumables)) { - FluidIngredient ingredient = inputEntry.getKey(); - final int needed = inputEntry.getIntValue(); + for (var cEntry : Object2IntMaps.fastIterable(consumables)) { + FluidIngredient ingredient = cEntry.getKey(); + final int needed = cEntry.getIntValue(); final int maxNeeded = needed * limit; int available = 0; // Search stacks in our inventory group, summing them up @@ -274,24 +285,26 @@ private static List> getInputContents(IRecipeCapabilit // Handle distinct groups first, adding an inventory based on their contents individually. for (RecipeHandlerList handlerList : distinctHandlerLists) { var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); + Object2IntOpenHashMap distinctInv = new Object2IntOpenHashMap<>(); + for (IRecipeHandler handler : handlers) { - Object2IntOpenHashMap distinctInv = new Object2IntOpenHashMap<>(); for (var content : handler.getContents()) { if (content instanceof FluidStack stack && !stack.isEmpty()) { distinctInv.addTo(stack, stack.getAmount()); } } - if (!distinctInv.isEmpty()) invs.add(distinctInv); } + if (!distinctInv.isEmpty()) invs.add(distinctInv); } - // Then handle other groups. The logic of undyed busses belonging to + // Then handle other groups. The logic of undyed hatches belonging to // everything has already been taken care of by addToRecipeMap() for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { - if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + + Object2IntOpenHashMap inventory = new Object2IntOpenHashMap<>(); for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { var handlers = handlerList.getCapability(FluidRecipeCapability.CAP); - Object2IntOpenHashMap inventory = new Object2IntOpenHashMap<>(); for (var handler : handlers) { for (var content : handler.getContents()) { if (content instanceof FluidStack stack && !stack.isEmpty()) { @@ -299,8 +312,8 @@ private static List> getInputContents(IRecipeCapabilit } } } - if (!inventory.isEmpty()) invs.add(inventory); } + if (!inventory.isEmpty()) invs.add(inventory); } return invs; diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 30d9439725d..34035e8c139 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -292,6 +292,7 @@ public int getMaxParallelByInput(IRecipeCapabilityHolder holder, GTRecipe recipe if (invMultiplier == limit) return limit; maxMultiplier = Math.max(maxMultiplier, invMultiplier); } + return maxMultiplier; } @@ -314,24 +315,26 @@ private static List> getInputContents(IRecipeCapability // Handle distinct groups first, adding an inventory based on their contents individually. for (RecipeHandlerList handlerList : distinctHandlerLists) { var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); + Object2IntOpenCustomHashMap distinctInv = new Object2IntOpenCustomHashMap<>(strat); + for (IRecipeHandler handler : handlers) { - Object2IntOpenCustomHashMap distinctInv = new Object2IntOpenCustomHashMap<>(strat); for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { distinctInv.addTo(stack, stack.getCount()); } } - if (!distinctInv.isEmpty()) invs.add(distinctInv); } + if (!distinctInv.isEmpty()) invs.add(distinctInv); } - // Then handle other groups. The logic of undyed busses belonging to + // Then handle other groups. The logic of undyed buses belonging to // everything has already been taken care of by addToRecipeMap() for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { - if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + + Object2IntOpenCustomHashMap inventory = new Object2IntOpenCustomHashMap<>(strat); for (RecipeHandlerList handlerList : handlerListEntry.getValue()) { var handlers = handlerList.getCapability(ItemRecipeCapability.CAP); - Object2IntOpenCustomHashMap inventory = new Object2IntOpenCustomHashMap<>(strat); for (var handler : handlers) { for (var content : handler.getContents()) { if (content instanceof ItemStack stack && !stack.isEmpty()) { @@ -339,8 +342,8 @@ private static List> getInputContents(IRecipeCapability } } } - if (!inventory.isEmpty()) invs.add(inventory); } + if (!inventory.isEmpty()) invs.add(inventory); } return invs; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 98ef74757b5..c8e7889d637 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -150,7 +150,8 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { // Check the others for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { - if (RecipeHandlerGroupDistinctness.BUS_DISTINCT == handlerListEntry.getKey()) continue; + if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + // List to keep track of the remaining items for this RecipeHandlerGroup Map, List> copiedRecipeContents = searchRecipeContents; boolean found = false; From 66a01e8c3d8d73ec0b873b35e252a52a9d60205c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 12 Jul 2025 12:12:34 +0300 Subject: [PATCH 146/270] Fix facades coloring grass etc. with the underlying block's color (#3392) --- gradle/forge.versions.toml | 2 +- .../models/block/machine/ev_rotor_holder.json | 60 ++---- .../models/block/machine/hv_rotor_holder.json | 60 ++---- .../models/block/machine/iv_rotor_holder.json | 60 ++---- .../block/machine/luv_rotor_holder.json | 60 ++---- .../block/machine/opv_rotor_holder.json | 60 ++---- .../block/machine/uev_rotor_holder.json | 60 ++---- .../block/machine/uhv_rotor_holder.json | 60 ++---- .../block/machine/uiv_rotor_holder.json | 60 ++---- .../models/block/machine/uv_rotor_holder.json | 60 ++---- .../block/machine/uxv_rotor_holder.json | 60 ++---- .../block/machine/zpm_rotor_holder.json | 60 ++---- .../gtceu/api/block/MaterialPipeBlock.java | 27 +-- .../api/gui/widget/PatternPreviewWidget.java | 11 +- .../feature/multiblock/IFluidRenderMulti.java | 21 +- .../part/MultiblockPartMachine.java | 21 +- .../forge/ForgeClientEventListener.java | 7 + .../gtceu/client/model/PipeModel.java | 4 +- .../client/model/TextureOverrideModel.java | 4 +- .../model/machine/IMachineRendererModel.java | 12 +- .../client/model/machine/MachineModel.java | 75 ++++---- .../multipart/MultiPartBakedModel.java | 2 +- .../renderer/block/PipeBlockRenderer.java | 79 +++++--- .../renderer/cover/FacadeCoverRenderer.java | 182 ++++++++++++++---- .../renderer/cover/ICoverableRenderer.java | 4 +- .../machine/impl/FluidAreaRender.java | 5 +- .../gtceu/client/util/GTQuadTransformers.java | 29 ++- .../gtceu/client/util/StaticFaceBakery.java | 4 +- .../gtceu/common/block/CableBlock.java | 5 +- .../gtceu/common/data/GTBlocks.java | 16 +- .../gtceu/common/data/GTMaterialBlocks.java | 3 + .../common/data/models/GTMachineModels.java | 26 +-- .../machine/electric/ChargerMachine.java | 15 +- .../gcym/LargeChemicalBathMachine.java | 39 ++-- .../electric/gcym/LargeMixerMachine.java | 31 +-- .../part/RotorHolderPartMachine.java | 3 +- .../PrimitiveBlastFurnaceMachine.java | 14 +- .../gtceu/core/mixins/LevelMixin.java | 11 +- .../mixins/client/LevelRendererMixin.java | 12 +- .../model/builder/MachineModelBuilder.java | 65 +++++-- .../machine/template/cube_all/sided.json | 8 +- .../machine/template/rotor_holder/block.json | 25 +-- .../template/rotor_holder/overlay.json | 8 +- .../template/rotor_holder/rotor_idle.json | 4 +- .../rotor_holder/rotor_idle_emissive.json | 4 +- .../block/machine/template/sided/sided.json | 8 +- .../gtceu/models/item/facade_cover.json | 9 +- .../textures/block/casings/signs/blank_32.png | Bin 869 -> 0 bytes .../textures/block/casings/signs/blank_64.png | Bin 1086 -> 0 bytes .../textures/block/storage/rubber_planks.png | 0 .../textures/block/storage/safe/newsafe.png | Bin 2733 -> 0 bytes 51 files changed, 670 insertions(+), 785 deletions(-) delete mode 100644 src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/casings/signs/blank_64.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/storage/rubber_planks.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 459bd259001..061c1bc6419 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -1,5 +1,5 @@ [versions] -ldlib = "1.0.40.a" +ldlib = "1.0.40.b" registrate = "MC1.20-1.3.11" configuration = "2.2.0" mixinExtras = "0.5.0-rc.3" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json index 88e1115883d..57af1d762b5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json index f3e683206bf..3157d8c5e46 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json index 9fc9bd9ccf4..a6ac8c5643a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json index c6e38346326..6ed6838d370 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json index 7185f396dad..f4b9ce832d3 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json index 96d5ba5ba39..5358c536d05 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json index b70fc6eea3f..1a9dda92f1e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json index 2d73c1ceaea..8a37036aada 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json index 477d636fcba..5b9c19e609b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json index 70f2243b483..030cbdd8e96 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json index 044446002f0..ed22c1f7613 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_rotor_holder.json @@ -22,55 +22,25 @@ "when": { "is_formed": "true" } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "false" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" - }, - "when": { - "emissive_rotor": "false", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } - }, - { - "apply": { - "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" - }, - "when": { - "emissive_rotor": "true", - "has_rotor": "true", - "is_formed": "true", - "rotor_spinning": "true" - } } ], "replaceable_textures": [ "bottom", "top", "side" - ] + ], + "variants": { + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle" + }, + "emissive_rotor=false,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=false": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_idle_emissive" + }, + "emissive_rotor=true,has_rotor=true,is_formed=true,rotor_spinning=true": { + "model": "gtceu:block/machine/template/rotor_holder/rotor_spinning_emissive" + } + } } \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java index 4a27b188d90..07d640a090f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/api/block/MaterialPipeBlock.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.block; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; +import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.pipenet.*; import com.gregtechceu.gtceu.client.model.PipeModel; @@ -40,29 +40,20 @@ public MaterialPipeBlock(Properties properties, PipeType pipeType, Material mate @OnlyIn(Dist.CLIENT) public static BlockColor tintedColor() { - return (blockState, level, blockPos, index) -> { - if (blockState.getBlock() instanceof MaterialPipeBlock block) { - if (blockPos != null && level != null && - level.getBlockEntity(blockPos) instanceof PipeBlockEntity pipe) { - if (!pipe.getFrameMaterial().isNull()) { - if (index == 3) { - return pipe.getFrameMaterial().getMaterialRGB(); - } else if (index == 4) { - return pipe.getFrameMaterial().getMaterialSecondaryRGB(); - } - } - if (pipe.isPainted()) { - return pipe.getRealColor(); - } + return (state, level, pos, index) -> { + if (level != null && pos != null && (index == 0 || index == 1)) { + if (level.getBlockEntity(pos) instanceof IPaintable paintable && paintable.isPainted()) { + return paintable.getPaintingColor(); } - return block.tinted(blockState, level, blockPos, index); + } + if (state.getBlock() instanceof MaterialPipeBlock block) { + return block.tinted(state, level, pos, index); } return -1; }; } - public int tinted(BlockState blockState, @Nullable BlockAndTintGetter blockAndTintGetter, - @Nullable BlockPos blockPos, int index) { + public int tinted(BlockState blockState, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { return index == 0 || index == 1 ? material.getMaterialRGB() : -1; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 30f55020a70..89b8db9cef6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -42,7 +42,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.data.ModelDataManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; @@ -52,7 +51,6 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.shedaniel.rei.impl.client.gui.screen.AbstractDisplayViewingScreen; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; import java.util.*; @@ -233,14 +231,7 @@ public static PatternPreviewWidget getPatternWidget(MultiblockMachineDefinition GTCEu.LOGGER.error("Try to init pattern previews before level load"); throw new IllegalStateException(); } - LEVEL = new TrackedDummyWorld() { - - @SuppressWarnings("UnstableApiUsage") - @Override - public @Nullable ModelDataManager getModelDataManager() { - return getLevel().getModelDataManager(); - } - }; + LEVEL = new TrackedDummyWorld(); } return new PatternPreviewWidget(controllerDefinition); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java index 3835d9b2b14..473eb1ba5f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IFluidRenderMulti.java @@ -4,12 +4,30 @@ import net.minecraft.core.BlockPos; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + import java.util.Set; public interface IFluidRenderMulti extends IWorkableMultiController, IMachineFeature { + @ApiStatus.NonExtendable + default Set getFluidOffsets() { + Set offsets = getFluidBlockOffsets(); + if (offsets.isEmpty() && this.isFormed()) { + offsets = saveOffsets(); + setFluidBlockOffsets(offsets); + } + return offsets; + } + + @ApiStatus.OverrideOnly + @NotNull Set getFluidBlockOffsets(); + @ApiStatus.Internal + void setFluidBlockOffsets(@NotNull Set offsets); + @Override default void onStructureFormed() { saveOffsets(); @@ -20,5 +38,6 @@ default void onStructureInvalid() { getFluidBlockOffsets().clear(); } - void saveOffsets(); + @NotNull + Set saveOffsets(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index 1f2f25df233..d24e903d78b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -20,6 +20,7 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; @@ -77,12 +78,6 @@ public void onControllersUpdated(Set newPositions, Set old) controllers.add(controller); } } - MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { - setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, !controllers.isEmpty())); - } else { - scheduleRenderUpdate(); - } } @Override @@ -140,15 +135,29 @@ public void onUnload() { // *** Multiblock LifeCycle ***// ////////////////////////////////////// + @MustBeInvokedByOverriders @Override public void removedFromController(IMultiController controller) { controllerPositions.remove(controller.self().getPos()); controllers.remove(controller); + + if (controllers.isEmpty()) { + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { + setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, false)); + } + } } + @MustBeInvokedByOverriders @Override public void addedToController(IMultiController controller) { controllerPositions.add(controller.self().getPos()); controllers.add(controller); + + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { + setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, true)); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java index 85771fb568a..c4a3043d093 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/client/forge/ForgeClientEventListener.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.client.renderer.BlockHighlightRenderer; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.FacadeCoverRenderer; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.commands.GTClientCommands; import com.gregtechceu.gtceu.core.mixins.client.AbstractClientPlayerAccessor; @@ -30,6 +31,7 @@ import net.minecraftforge.client.gui.overlay.ForgeGui; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.level.LevelEvent; import net.minecraftforge.event.server.ServerStoppedEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -101,6 +103,11 @@ public static void onClientTickEvent(TickEvent.ClientTickEvent event) { } } + @SubscribeEvent + public static void onLevelUnloadEvent(LevelEvent.Unload event) { + FacadeCoverRenderer.clearItemModelCache(); + } + private static final String BLOCK_INFO_LINE_START = ChatFormatting.UNDERLINE + "Targeted Block: "; @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java index b47102e9c3e..e831842bbe7 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java @@ -177,7 +177,7 @@ public VoxelShape getShapes(int connections) { public List bakeQuads(@Nullable Direction side, int connections, int blockedConnections) { if (side != null) { if (thickness == 1) { // full block - List quads = new ArrayList<>(); + List quads = new LinkedList<>(); quads.add(FaceQuad.builder(side, sideSprite).cube(coreCube).cubeUV().tintIndex(0).bake()); if (secondarySideSprite != null) { quads.add(FaceQuad.builder(side, secondarySideSprite).cube(coreCube).cubeUV().tintIndex(0).bake()); @@ -186,7 +186,7 @@ public List bakeQuads(@Nullable Direction side, int connections, int } if (PipeBlockEntity.isConnected(connections, side)) { // side connected - List quads = new ArrayList<>(); + List quads = new LinkedList<>(); quads.add(FaceQuad.builder(side, endSprite).cube(sideCubes.get(side).inflate(-0.001)).cubeUV() .tintIndex(1).bake()); if (secondaryEndSprite != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java index 2644df07e9a..00c4903876d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java @@ -21,7 +21,7 @@ public class TextureOverrideModel extends BakedModelWrapper { - private static final IQuadTransformer OVERLAY_OFFSET = GTQuadTransformers.offset(0.001f); + public static final IQuadTransformer OVERLAY_OFFSET = GTQuadTransformers.offset(0.002f); @NotNull @Getter @@ -61,7 +61,7 @@ public static List retextureQuads(List quads, if (replacement != null) { newQuads.add(GTQuadTransformers.setSprite(quad, replacement)); } else { - newQuads.add(OVERLAY_OFFSET.process(quad)); + newQuads.add(quad); } } return newQuads; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java index a99e33e8e15..945b47e4c4b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -13,6 +13,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -32,15 +33,16 @@ public interface IMachineRendererModel extends IBlock MachineDefinition getDefinition(); + @ApiStatus.NonExtendable @Override - @NotNull - default List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand, - @NotNull ModelData data, @Nullable RenderType renderType) { + default @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, + @NotNull RandomSource rand, @NotNull ModelData data, + @Nullable RenderType renderType) { return Collections.emptyList(); } - default @NotNull List getRenderQuads(@Nullable T machine, - @Nullable BlockState blockState, + default @NotNull List getRenderQuads(@Nullable T machine, @Nullable BlockAndTintGetter level, + @Nullable BlockPos pos, @Nullable BlockState blockState, @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { return getQuads(blockState, side, rand, modelData, renderType); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 351a24d7474..d4773607797 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -13,7 +13,6 @@ import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; -import com.gregtechceu.gtceu.client.util.GTQuadTransformers; import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.data.models.GTModels; @@ -63,8 +62,6 @@ public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, IMachineRendererModel { - public static final float COVER_OVERLAY_OFFSET = 0.008f; - public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); public static final ResourceLocation ITEM_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_item_output"); @@ -155,10 +152,10 @@ public MachineModel(MachineDefinition definition, public @NotNull TextureAtlasSprite getParticleIcon() { if (particleIcon != null) { return particleIcon; - } else if (!modelsByState.isEmpty()) { - return modelsByState.get(getDefinition().defaultRenderState()).getParticleIcon(); } else if (multiPart != null) { return multiPart.getParticleIcon(); + } else if (!modelsByState.isEmpty()) { + return modelsByState.get(getDefinition().defaultRenderState()).getParticleIcon(); } else { return Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS) .apply(MissingTextureAtlasSprite.getLocation()); @@ -174,10 +171,10 @@ public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { MachineRenderState renderState = machine != null ? machine.getRenderState() : getDefinition().defaultRenderState(); - if (modelsByState.containsKey(renderState)) { - return modelsByState.get(renderState).getParticleIcon(modelData); - } else if (multiPart != null) { + if (multiPart != null) { return multiPart.getParticleIcon(renderState, modelData); + } else if (modelsByState.containsKey(renderState)) { + return modelsByState.get(renderState).getParticleIcon(modelData); } else { return super.getParticleIcon(modelData); } @@ -196,7 +193,8 @@ public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { // add the inner model's model data too if (multiPart != null) { multiPart.addMachineModelData(renderState, level, pos, state, modelData, builder); - } else { + } + if (modelsByState.containsKey(renderState)) { ModelData data = modelsByState.get(renderState).getModelData(level, pos, state, modelData); for (ModelProperty key : data.getProperties()) { builder.with(key, data.get(key)); @@ -223,7 +221,7 @@ public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { quads = getMachineQuads(state, side, rand, modelData, renderType); } else { // if it doesn't have either of those properties, we're rendering an item. - quads = renderMachine(null, state, Direction.NORTH, side, rand, modelData, renderType); + quads = renderMachine(null, null, null, state, side, rand, modelData, renderType); } postTransform.processInPlace(quads); return quads; @@ -236,20 +234,21 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl BlockPos pos = modelData.get(MODEL_DATA_POS); MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); - return getRenderQuads(machine, blockState, side, rand, modelData, renderType); + return getRenderQuads(machine, level, pos, blockState, side, rand, modelData, renderType); } @Override - public @NotNull List getRenderQuads(@Nullable MetaMachine machine, @Nullable BlockState blockState, + public @NotNull List getRenderQuads(@Nullable MetaMachine machine, @Nullable BlockAndTintGetter level, + @Nullable BlockPos pos, @Nullable BlockState blockState, @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { - if (machine == null) return Collections.emptyList(); - // render machine quads - List quads = renderMachine(machine, blockState, machine.getFrontFacing(), - side, rand, modelData, renderType); + List quads = renderMachine(machine, level, pos, blockState, side, rand, modelData, renderType); + if (machine == null) { + return quads; + } - // render auto IO + // render output overlays if (machine instanceof IAutoOutputItem autoOutputItem) { var itemFace = autoOutputItem.getOutputFacingItems(); if (itemFace != null && side == itemFace) { @@ -272,42 +271,33 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl } // render covers - int start = quads.size(); - ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), machine.getPos(), machine.getLevel(), + ICoverableRenderer.super.renderCovers(quads, machine.getCoverContainer(), pos, level, side, rand, modelData, renderType); - var iterator = quads.listIterator(start); - while (iterator.hasNext()) { - GTQuadTransformers.offset(COVER_OVERLAY_OFFSET).processInPlace(iterator.next()); - } return quads; } @SuppressWarnings({ "rawtypes", "unchecked" }) - public List renderMachine(@Nullable MetaMachine machine, @Nullable BlockState blockState, - Direction frontFacing, @Nullable Direction side, RandomSource rand, + public List renderMachine(@Nullable MetaMachine machine, @Nullable BlockAndTintGetter level, + @Nullable BlockPos pos, @Nullable BlockState blockState, + @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { List quads = new LinkedList<>(); - if (!dynamicRenders.isEmpty()) { - for (var render : dynamicRenders) { - quads.addAll(render.getQuads(blockState, side, rand, modelData, renderType)); - } - } MachineRenderState renderState = machine != null ? machine.getRenderState() : definition.defaultRenderState(); renderBaseModel(quads, renderState, blockState, side, rand, modelData, renderType); - if (machine != null) { - for (DynamicRender render : dynamicRenders) { - quads.addAll(render.getRenderQuads(machine, blockState, side, rand, modelData, renderType)); - } - if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { - quads = replacePartBaseModel(quads, part, frontFacing, side, rand, modelData, renderType); - } + for (DynamicRender render : dynamicRenders) { + quads.addAll(render.getRenderQuads(machine, level, pos, blockState, side, rand, modelData, renderType)); + } + // the instanceof check also ensures it's not null + if (machine instanceof IMultiPart part && part.replacePartModelWhenFormed()) { + quads = replacePartBaseModel(quads, part, machine.getFrontFacing(), side, rand, modelData, renderType); + } - // we have to recalculate CTM ourselves. - // this is the slowest part by a long shot because the LDLib quad logic isn't very optimized. - return CustomBakedModel.reBakeCustomQuads(quads, machine.getLevel(), machine.getPos(), - blockState, side, 0.0f); + // we have to recalculate CTM ourselves. + // this is the slowest part by a long shot because the LDLib quad logic isn't very optimized. + if (level != null && pos != null && blockState != null) { + return CustomBakedModel.reBakeCustomQuads(quads, level, pos, blockState, side, 0.0f); } return quads; } @@ -318,7 +308,8 @@ public void renderBaseModel(List quads, @NotNull MachineRenderState r if (multiPart != null) { quads.addAll(multiPart.getMachineQuads(definition, renderState, blockState, side, rand, modelData, renderType)); - } else { + } + if (modelsByState.containsKey(renderState)) { quads.addAll(modelsByState.get(renderState).getQuads(blockState, side, rand, modelData, renderType)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java index 215d13cca23..2835f96414f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/multipart/MultiPartBakedModel.java @@ -96,7 +96,7 @@ public List getMachineQuads(MachineDefinition definition, MachineRend if (blockState == null) blockState = definition.defaultBlockState(); BitSet bitset = getSelectors(renderState); - List quads = new ArrayList<>(); + List quads = new LinkedList<>(); long k = random.nextLong(); for (int j = 0; j < bitset.length(); ++j) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java index 0b8f3555ed1..b06ac84c7ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/PipeBlockRenderer.java @@ -5,12 +5,16 @@ import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.client.model.PipeModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -31,11 +35,12 @@ import lombok.Getter; import org.jetbrains.annotations.NotNull; -import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.function.Consumer; +import static com.lowdragmc.lowdraglib.client.model.forge.LDLRendererModel.RendererBakedModel.*; + public class PipeBlockRenderer implements IRenderer, ICoverableRenderer { @Getter @@ -76,35 +81,55 @@ public List renderModel(BlockAndTintGetter level, BlockPos pos, Block RandomSource rand) { if (level == null) { return pipeModel.bakeQuads(side, PipeModel.ITEM_CONNECTIONS, 0); - } else if (level.getBlockEntity(pos) instanceof IPipeNode pipeNode) { - var quads = new LinkedList<>( - pipeModel.bakeQuads(side, pipeNode.getVisualConnections(), pipeNode.getBlockedConnections())); - - ICoverableRenderer.super.renderCovers(quads, pipeNode.getCoverContainer(), pos, level, side, rand, - ModelData.EMPTY, null); - if (!pipeNode.getFrameMaterial().isNull()) { - BlockState blockState = GTMaterialBlocks.MATERIAL_BLOCKS - .get(TagPrefix.frameGt, pipeNode.getFrameMaterial()) - .getDefaultState(); - var frameModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(blockState); - for (Direction face : Direction.values()) { - if ((pipeNode.getConnections() & 1 << (12 + face.get3DDataValue())) == 0) { - var frameTintedFaces = frameModel.getQuads(state, face, rand) - .stream() - .map(quad -> new BakedQuad(quad.getVertices(), - quad.getTintIndex() + (quad.isTinted() ? 3 : 0), - quad.getDirection(), - quad.getSprite(), - quad.isShade(), - quad.hasAmbientOcclusion())) - .toList(); - quads.addAll(frameTintedFaces); - } + } + if (!(level.getBlockEntity(pos) instanceof IPipeNode pipeNode)) { + return pipeModel.bakeQuads(side, 0, 0); + } + RenderType renderType = CURRENT_RENDER_TYPE.get(); + ModelData modelData = CURRENT_MODEL_DATA.get().get(MODEL_DATA); + if (modelData == null) modelData = ModelData.EMPTY; + + List quads = new LinkedList<>(); + + if (renderType == null || renderType == RenderType.cutoutMipped()) { + quads.addAll(pipeModel.bakeQuads(side, pipeNode.getVisualConnections(), pipeNode.getBlockedConnections())); + } + ICoverableRenderer.super.renderCovers(quads, pipeNode.getCoverContainer(), pos, level, side, rand, + modelData, renderType); + + if (pipeNode.getFrameMaterial().isNull() || (renderType != null && renderType != RenderType.translucent())) { + return quads; + } + + BlockState frameState = GTMaterialBlocks.MATERIAL_BLOCKS.get(TagPrefix.frameGt, pipeNode.getFrameMaterial()) + .getDefaultState(); + BakedModel frameModel = Minecraft.getInstance().getBlockRenderer().getBlockModel(frameState); + + modelData = frameModel.getModelData(level, pos, frameState, modelData); + + List frameQuads = new LinkedList<>(); + if (side == null || pipeNode.getCoverContainer().getCoverAtSide(side) == null) { + frameQuads.addAll(frameModel.getQuads(state, side, rand, modelData, renderType)); + } + if (side == null) { + for (Direction face : GTUtil.DIRECTIONS) { + if (pipeNode.getCoverContainer().getCoverAtSide(face) != null) { + continue; } + frameQuads.addAll(frameModel.getQuads(state, face, rand, modelData, renderType)); } - return quads; } - return Collections.emptyList(); + + // bake all the quads' tint colors into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad frameQuad : frameQuads) { + if (frameQuad.isTinted()) { + int color = blockColors.getColor(frameState, level, pos, frameQuad.getTintIndex()); + frameQuad = GTQuadTransformers.setColor(frameQuad, color, true); + } + quads.add(frameQuad); + } + return quads; } @NotNull diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 64f5543e834..76f0efd81be 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -4,7 +4,9 @@ import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.client.model.BaseBakedModel; import com.gregtechceu.gtceu.client.model.ItemBakedModel; +import com.gregtechceu.gtceu.client.model.TextureOverrideModel; import com.gregtechceu.gtceu.client.util.FacadeBlockAndTintGetter; +import com.gregtechceu.gtceu.client.util.GTQuadTransformers; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.cover.FacadeCover; import com.gregtechceu.gtceu.common.item.FacadeItemBehaviour; @@ -12,13 +14,18 @@ import net.minecraft.Util; import net.minecraft.client.Minecraft; +import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.RenderShape; @@ -28,6 +35,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.ModelData; +import com.mojang.blaze3d.vertex.PoseStack; import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import org.jetbrains.annotations.NotNull; @@ -48,12 +56,12 @@ public class FacadeCoverRenderer extends BaseBakedModel implements ICoverRendere for (Direction dir : GTUtil.DIRECTIONS) { var normal = dir.getNormal(); var cube = new AABB( - normal.getX() > 0 ? 1 : 0, - normal.getY() > 0 ? 1 : 0, - normal.getZ() > 0 ? 1 : 0, - normal.getX() >= 0 ? 1 : 0, - normal.getY() >= 0 ? 1 : 0, - normal.getZ() >= 0 ? 1 : 0); + normal.getX() > 0 ? 1.01 : -0.01, + normal.getY() > 0 ? 1.01 : -0.01, + normal.getZ() > 0 ? 1.01 : -0.01, + normal.getX() >= 0 ? 1.01 : -0.01, + normal.getY() >= 0 ? 1.01 : -0.01, + normal.getZ() >= 0 ? 1.01 : -0.01); map.put(dir, cube); } }); @@ -71,6 +79,10 @@ public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { this.defaultItemModel = defaultItemModel; } + public static void clearItemModelCache() { + CACHE.clear(); + } + @Override @OnlyIn(Dist.CLIENT) public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, @@ -88,6 +100,10 @@ public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { if (!(stack.getItem() instanceof ComponentItem)) { return Collections.singletonList(this); } + var mc = Minecraft.getInstance(); + if (mc.level == null) { + return Collections.singletonList(this); + } BlockState facadeState = FacadeItemBehaviour.getFacadeStateNullable(stack); if (facadeState == null) { return Collections.singletonList(this); @@ -96,6 +112,9 @@ public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { int hash = facadeState.hashCode(); ItemBakedModel model = CACHE.computeIfAbsent(hash, $ -> new ItemBakedModel() { + private final FacadeBlockAndTintGetter level = new FacadeBlockAndTintGetter(mc.level, + BlockPos.ZERO, facadeState, null); + @Override public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand) { @@ -106,31 +125,48 @@ public FacadeCoverRenderer(@Nullable BakedModel defaultItemModel) { public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand, @NotNull ModelData extraData, @Nullable RenderType renderType) { - return getFacadeQuads(facadeState, rand, extraData, renderType); + return getFacadeQuads(facadeState, level, rand, extraData, renderType); } }); return Collections.singletonList(model); } @OnlyIn(Dist.CLIENT) - public List getFacadeQuads(BlockState state, @NotNull RandomSource rand, + public List getFacadeQuads(BlockState state, BlockAndTintGetter level, @NotNull RandomSource rand, @NotNull ModelData extraData, @Nullable RenderType renderType) { - List quads = new ArrayList<>(); - var mc = Minecraft.getInstance(); - if (mc.level != null) { - BakedModel model = mc.getBlockRenderer().getBlockModel(state); - if (!model.isCustomRenderer()) { - var level = new FacadeBlockAndTintGetter(mc.level, BlockPos.ZERO, state, null); - extraData = model.getModelData(level, BlockPos.ZERO, state, extraData); - - quads.addAll(model.getQuads(state, null, rand, extraData, renderType)); - quads.addAll(model.getQuads(state, Direction.NORTH, rand, extraData, renderType)); - - for (Direction modelSide : FACADE_EDGE_FACES) { - quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, - ICoverableRenderer.COVER_BACK_PLATE[0])); + if (mc.level == null) { + return Collections.emptyList(); + } + + List quads = new LinkedList<>(); + BakedModel model = mc.getBlockRenderer().getBlockModel(state); + + if (!model.isCustomRenderer()) { + extraData = model.getModelData(level, BlockPos.ZERO, state, extraData); + + List facadeQuads = new LinkedList<>(); + facadeQuads.addAll(model.getQuads(state, null, rand, extraData, renderType)); + facadeQuads.addAll(model.getQuads(state, Direction.NORTH, rand, extraData, renderType)); + + // offset all the cover quads by a small value and bake their tint color into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad quad : facadeQuads) { + if (quad.isTinted()) { + // if the quad has a tint index set, bake the tint into the vertex + int color = blockColors.getColor(state, level, BlockPos.ZERO, quad.getTintIndex()); + quad = GTQuadTransformers.setColor(quad, color, true); + } else { + // otherwise just copy the quad so we don't mutate the original model with the overlay offset + quad = GTQuadTransformers.copy(quad); } + TextureOverrideModel.OVERLAY_OFFSET.processInPlace(quad); + + quads.add(quad); + } + + for (Direction modelSide : FACADE_EDGE_FACES) { + quads.add(StaticFaceBakery.bakeFace(FACADE_PLANE, modelSide, ICoverableRenderer.COVER_BACK_PLATE[0])); } } return quads; @@ -141,25 +177,91 @@ public List getFacadeQuads(BlockState state, @NotNull RandomSource ra public void renderCover(List quads, Direction side, RandomSource rand, @NotNull CoverBehavior coverBehavior, BlockPos pos, BlockAndTintGetter level, @NotNull ModelData modelData, @Nullable RenderType renderType) { - if (coverBehavior instanceof FacadeCover facadeCover) { - var state = facadeCover.getFacadeState(); - if (state.getRenderShape() == RenderShape.MODEL) { - BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); - ModelData extraData = model.getModelData(level, BlockPos.ZERO, state, modelData); - - var facadeQuads = model.getQuads(state, coverBehavior.attachedSide, rand, extraData, renderType); - if (side == coverBehavior.attachedSide) { - quads.addAll(facadeQuads); - } else if (side == null && coverBehavior.coverHolder.shouldRenderBackSide()) { - AABB cube = COVER_BACK_CUBES.get(coverBehavior.attachedSide); - - for (BakedQuad quad : facadeQuads) { - quads.add(StaticFaceBakery.bakeFace(cube, coverBehavior.attachedSide.getOpposite(), - quad.getSprite(), BlockModelRotation.X0_Y0, - quad.getTintIndex(), 0, false, quad.isShade())); - } - } + if (!(coverBehavior instanceof FacadeCover facadeCover)) { + return; + } + BlockState state = facadeCover.getFacadeState(); + if (state.getRenderShape() != RenderShape.MODEL) { + return; + } + + Direction attachedSide = coverBehavior.attachedSide; + + BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + ModelData extraData = model.getModelData(level, BlockPos.ZERO, state, modelData); + + List facadeQuads = model.getQuads(state, attachedSide, rand, extraData, renderType); + facadeQuads = new LinkedList<>(facadeQuads); + + List coverQuads = new ArrayList<>(); + if (side == attachedSide) { + coverQuads.addAll(facadeQuads); + } else if (side == null && coverBehavior.coverHolder.shouldRenderBackSide()) { + AABB cube = COVER_BACK_CUBES.get(attachedSide); + + for (BakedQuad quad : facadeQuads) { + coverQuads.add(StaticFaceBakery.bakeFace(cube, attachedSide.getOpposite(), + quad.getSprite(), BlockModelRotation.X0_Y0, + quad.getTintIndex(), 0, false, quad.isShade())); + } + } + + // offset all the cover quads by a small value and bake their tint color into the vertices + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + for (BakedQuad quad : coverQuads) { + if (quad.isTinted()) { + // if the quad has a tint index set, bake the tint into the vertex + int color = blockColors.getColor(state, level, pos, quad.getTintIndex()); + quad = GTQuadTransformers.setColor(quad, color, true); + } else { + // otherwise just copy the quad so we don't mutate the original model with the overlay offset + quad = GTQuadTransformers.copy(quad); } + TextureOverrideModel.OVERLAY_OFFSET.processInPlace(quad); + + quads.add(quad); + } + } + + @Override + public boolean useAmbientOcclusion() { + if (defaultItemModel != null) { + return defaultItemModel.useAmbientOcclusion(); + } + return super.useAmbientOcclusion(); + } + + @Override + public @NotNull TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { + if (defaultItemModel != null) { + return defaultItemModel.getParticleIcon(modelData); + } + return super.getParticleIcon(); + } + + @Override + public @NotNull BakedModel applyTransform(@NotNull ItemDisplayContext transformType, + @NotNull PoseStack poseStack, boolean leftHand) { + if (defaultItemModel != null) { + defaultItemModel.applyTransform(transformType, poseStack, leftHand); + } + return this; + } + + @SuppressWarnings("deprecation") + @Override + public @NotNull ItemTransforms getTransforms() { + if (defaultItemModel != null) { + return defaultItemModel.getTransforms(); + } + return super.getTransforms(); + } + + @Override + public @NotNull ItemOverrides getOverrides() { + if (defaultItemModel != null) { + return defaultItemModel.getOverrides(); } + return super.getOverrides(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index a94f0ecc885..32a81d59694 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -56,10 +56,10 @@ default void renderCovers(List quads, @NotNull ICoverable coverable, normal.getZ() >= 0 ? 0.999 : min); if (side == null) { // render back quads.add(FaceQuad.builder(face.getOpposite(), COVER_BACK_PLATE[0]) - .cube(cube).cubeUV().tintIndex(-1).bake()); + .cube(cube).cubeUV().bake()); } else if (side != face.getOpposite()) { // render sides quads.add(FaceQuad.builder(side, COVER_BACK_PLATE[0]) - .cube(cube).cubeUV().tintIndex(-1).bake()); + .cube(cube).cubeUV().bake()); } } // it won't ever be null on the client diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java index 49bae40901f..c0cd3bc9ffd 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java @@ -77,6 +77,9 @@ public void render(IFluidRenderMulti machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) { if (!ConfigHolder.INSTANCE.client.renderer.renderFluids) return; + if (!machine.isFormed() || machine.getFluidOffsets() == null) { + return; + } if (!fixedFluid) { var lastRecipe = machine.getRecipeLogic().getLastRecipe(); if (lastRecipe == null) { @@ -106,7 +109,7 @@ public void render(IFluidRenderMulti machine, float partialTick, machine.self().isFlipped()); if (dir.getAxis() != Direction.Axis.Y) dir = dir.getOpposite(); - fluidBlockRenderer.drawPlane(dir, machine.getFluidBlockOffsets(), pose, consumer, cachedFluid, + fluidBlockRenderer.drawPlane(dir, machine.getFluidOffsets(), pose, consumer, cachedFluid, RenderUtil.FluidTextureType.STILL, packedOverlay, machine.self().getPos()); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java index 5f1d387c0ed..a601d17996b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.client.util; +import net.minecraft.client.renderer.FaceInfo; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; @@ -10,20 +11,31 @@ public final class GTQuadTransformers { public static IQuadTransformer offset(float by) { - if (by == 0.0f) return QuadTransformers.empty(); + return offset(by, by, by); + } + + public static IQuadTransformer offset(float xOffset, float yOffset, float zOffset) { + if (xOffset == 0.0f && yOffset == 0.0f && zOffset == 0.0f) return QuadTransformers.empty(); return quad -> { int[] vertices = quad.getVertices(); Direction direction = quad.getDirection(); + FaceInfo faceInfo = FaceInfo.fromFacing(direction); for (int i = 0; i < 4; i++) { + FaceInfo.VertexInfo normal = faceInfo.getVertexInfo(i); + int xNormal = Direction.from3DDataValue(normal.xFace).getStepX(); + int yNormal = Direction.from3DDataValue(normal.yFace).getStepY(); + int zNormal = Direction.from3DDataValue(normal.zFace).getStepZ(); + int offset = i * IQuadTransformer.STRIDE + IQuadTransformer.POSITION; float x = Float.intBitsToFloat(vertices[offset]); float y = Float.intBitsToFloat(vertices[offset + 1]); float z = Float.intBitsToFloat(vertices[offset + 2]); - x += by * direction.getStepX(); - y += by * direction.getStepY(); - z += by * direction.getStepZ(); + + x += xOffset * xNormal; + y += yOffset * yNormal; + z += zOffset * zNormal; vertices[offset] = Float.floatToRawIntBits(x); vertices[offset + 1] = Float.floatToRawIntBits(y); @@ -52,6 +64,15 @@ public static BakedQuad setSprite(BakedQuad quad, TextureAtlasSprite sprite) { sprite, quad.isShade(), quad.hasAmbientOcclusion()); } + public static BakedQuad setColor(BakedQuad quad, int argbColor, boolean clearTintIndex) { + int[] vertices = quad.getVertices().clone(); + BakedQuad copy = new BakedQuad(vertices, clearTintIndex ? -1 : quad.getTintIndex(), quad.getDirection(), + quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); + + QuadTransformers.applyingColor(argbColor).processInPlace(copy); + return copy; + } + public static BakedQuad copy(BakedQuad quad) { return new BakedQuad(quad.getVertices().clone(), quad.getTintIndex(), quad.getDirection(), quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index ab34b2d6cba..998b48f011b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -134,7 +134,9 @@ public static BakedQuad bakeQuad(Vector3f posFrom, QuadTransformers.applyingLightmap(data.blockLight(), data.skyLight()).processInPlace(quad); QuadTransformers.applyingColor(data.color()).processInPlace(quad); } - QuadTransformers.settingEmissivity(emissivity).processInPlace(quad); + if (emissivity > 0) { + QuadTransformers.settingEmissivity(emissivity).processInPlace(quad); + } return quad; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java index 4bbdcd9f334..60f7d017bb2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java +++ b/src/main/java/com/gregtechceu/gtceu/common/block/CableBlock.java @@ -52,12 +52,11 @@ public CableBlock(Properties properties, Insulation insulation, Material materia } @Override - public int tinted(BlockState blockState, @Nullable BlockAndTintGetter blockAndTintGetter, - @Nullable BlockPos blockPos, int index) { + public int tinted(BlockState state, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, int index) { if (pipeType.isCable && index == 0) { return 0x404040; } - return index == 0 || index == 1 ? material.getMaterialRGB() : -1; + return super.tinted(state, level, pos, index); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index 920cd5e28e0..043ed94bdfe 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -118,6 +118,7 @@ private static void registerLaserPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> LaserPipeBlock::tintedColor) .item(LaserPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -147,6 +148,7 @@ private static void registerOpticalPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> OpticalPipeBlock::tintedColor) .item(OpticalPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -174,6 +176,7 @@ private static void registerDuctPipeBlock(int index) { .defaultLoot() .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .item(DuctPipeBlockItem::new) .model(NonNullBiConsumer.noop()) .build() @@ -323,7 +326,6 @@ private static void registerDuctPipeBlock(int index) { .block("pump_deck", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.sound(SoundType.WOOD).mapColor(MapColor.WOOD)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createSidedCasingModel(GTCEu.id("block/casings/pump_deck"))) .tag(CustomTags.MINEABLE_WITH_WRENCH, BlockTags.MINEABLE_WITH_AXE) .item(BlockItem::new) @@ -443,7 +445,6 @@ private static void registerDuctPipeBlock(int index) { .block("computer_heat_vent", Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate((ctx, prov) -> { prov.simpleBlock(ctx.getEntry(), prov.models().cubeColumn("computer_heat_vent", GTCEu.id("block/casings/hpca/computer_heat_vent_side"), @@ -461,7 +462,6 @@ private static BlockEntry createSidedCasingBlock(String name, ResourceLoc return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createSidedCasingModel(texture)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) @@ -474,7 +474,6 @@ private static BlockEntry createBrickCasingBlock(String name, ResourceLoc return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .exBlockstate(GTModels.cubeAllModel(texture)) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .item(BlockItem::new) @@ -497,7 +496,7 @@ private static BlockEntry createGlassCasingBlock(String name, Resour public static BlockEntry createCasingBlock(String name, ResourceLocation texture) { return createCasingBlock(name, Block::new, texture, () -> Blocks.IRON_BLOCK, - () -> RenderType::cutoutMipped); + () -> RenderType::solid); } public static BlockEntry createCasingBlock(String name, @@ -523,7 +522,6 @@ private static BlockEntry createMachineCasingBlock(int tier) { .lang("%s Machine Casing".formatted(GTValues.VN[tier])) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, ent) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createMachineCasingModel(tierName)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) @@ -557,7 +555,6 @@ private static BlockEntry createHermeticCasing(int tier) { private static BlockEntry createSteamCasing(String name, String material) { return REGISTRATE.block(name, Block::new) .initialProperties(() -> Blocks.IRON_BLOCK) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createSteamCasingModel(material)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) @@ -585,7 +582,6 @@ private static BlockEntry createBatteryBlock(IBatteryData batteryD p -> new BatteryBlock(p, batteryData)) .initialProperties(() -> Blocks.IRON_BLOCK) .properties(p -> p.isValidSpawn((state, level, pos, entityType) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createBatteryBlockModel(batteryData)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .item(BlockItem::new) @@ -617,7 +613,6 @@ private static BlockEntry createCleanroomFilter(IFilterType filterType) { .initialProperties(() -> Blocks.IRON_BLOCK) .properties(properties -> properties.strength(2.0f, 8.0f).sound(SoundType.METAL) .isValidSpawn((blockState, blockGetter, blockPos, entityType) -> false)) - .addLayer(() -> RenderType::cutoutMipped) .blockstate(GTModels.createCleanroomFilterModel(filterType)) .tag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH, CustomTags.TOOL_TIERS[1]) .item(BlockItem::new) @@ -690,7 +685,7 @@ private static BlockEntry createFireboxCasing(BoilerFireboxType typ .initialProperties(() -> Blocks.OAK_SAPLING) .lang("Rubber Sapling") .blockstate(GTModels::createCrossBlockState) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::cutout) .tag(BlockTags.SAPLINGS) .item() .model(GTModels::rubberTreeSaplingModel) @@ -1303,7 +1298,6 @@ public static void generateStoneBlocks() { .block("%s_borderless_lamp".formatted(dyeColor.getName()), (p) -> new LampBlock(p, dyeColor, false)) .initialProperties(() -> Blocks.GLASS) .properties(p -> p.strength(0.3f, 8.0f).sound(SoundType.GLASS)) - .addLayer(() -> RenderType::cutout) .blockstate(GTModels.lampModel(dyeColor, false)) .item(LampBlockItem::new) .build() diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index e31cc3063f7..7600b448de6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -213,6 +213,7 @@ private static void registerCableBlock(Material material, Insulation insulation, .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -260,6 +261,7 @@ private static void registerFluidPipeBlock(Material material, FluidPipeType flui .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) @@ -306,6 +308,7 @@ private static void registerItemPipeBlock(Material material, ItemPipeType itemPi .setData(ProviderType.LANG, NonNullBiConsumer.noop()) .setData(ProviderType.LOOT, NonNullBiConsumer.noop()) .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::translucent) .color(() -> MaterialPipeBlock::tintedColor) .item(MaterialPipeBlockItem::new) .model(NonNullBiConsumer.noop()) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index 15166e0d9d7..b95cf976c9a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -459,28 +459,32 @@ public static MachineBuilder.ModelInitializer createTransformerModel(int baseAmp public static MachineBuilder.ModelInitializer createRotorHolderModel() { return (ctx, prov, builder) -> { + BlockModelProvider models = prov.models(); var blockModel = prov.models().nested() .parent(prov.models().getExistingFile(ROTOR_HOLDER_BLOCK)); tieredHullTextures(blockModel, builder.getOwner().getTier()); builder.part(blockModel).end(); builder.part(ROTOR_HOLDER_OVERLAY).condition(IS_FORMED_PROPERTY, true).end(); - makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_IDLE, false, false); - makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_IDLE.withSuffix(EMISSIVE_SUFFIX), false, true); - makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_SPINNING, true, false); - makeRotorHolderPart(builder, ROTOR_HOLDER_ROTOR_SPINNING.withSuffix(EMISSIVE_SUFFIX), true, true); + + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE, false, false); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE.withSuffix(EMISSIVE_SUFFIX), false, true); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_SPINNING, true, false); + makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_SPINNING.withSuffix(EMISSIVE_SUFFIX), true, true); builder.addReplaceableTextures("bottom", "top", "side"); }; } - private static void makeRotorHolderPart(MachineModelBuilder builder, ResourceLocation model, - boolean spinning, boolean emissive) { - builder.part(model) - .condition(IS_FORMED_PROPERTY, true) - .condition(HAS_ROTOR_PROPERTY, true) - .condition(ROTOR_SPINNING_PROPERTY, spinning) - .condition(EMISSIVE_ROTOR_PROPERTY, emissive); + private static void makeRotorHolderState(MachineModelBuilder builder, + BlockModelProvider provider, ResourceLocation model, + boolean spinning, boolean emissive) { + builder.partialState() + .with(IS_FORMED_PROPERTY, true) + .with(HAS_ROTOR_PROPERTY, true) + .with(ROTOR_SPINNING_PROPERTY, spinning) + .with(EMISSIVE_ROTOR_PROPERTY, emissive) + .setModel(provider.getExistingFile(model)); } public static final ImmutableMap MATERIALS_TO_CASING_TEXTURES = Util.make(() -> { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 9511986713c..6ec6383307e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -35,7 +35,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Locale; import javax.annotation.ParametersAreNonnullByDefault; @@ -50,13 +49,15 @@ public class ChargerMachine extends TieredEnergyMachine implements IControllable public enum State implements StringRepresentable { - IDLE, - RUNNING, - FINISHED; + IDLE("idle"), + RUNNING("running"), + FINISHED("finished"); - @Override - public String getSerializedName() { - return name().toLowerCase(Locale.ROOT); + @Getter + private final String serializedName; + + State(String name) { + this.serializedName = name; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java index 618a95d2bc6..9dd22537545 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeChemicalBathMachine.java @@ -14,6 +14,8 @@ import net.minecraft.core.Direction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -28,14 +30,20 @@ public class LargeChemicalBathMachine extends WorkableElectricMultiblockMachine LargeChemicalBathMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter + @Setter @DescSynced @RequireRerender - private final Set fluidBlockOffsets = new HashSet<>(); + private @NotNull Set fluidBlockOffsets = new HashSet<>(); public LargeChemicalBathMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); } + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + @Override public void onStructureFormed() { super.onStructureFormed(); @@ -48,29 +56,26 @@ public void onStructureInvalid() { IFluidRenderMulti.super.onStructureInvalid(); } + @NotNull @Override - public void saveOffsets() { + public Set saveOffsets() { Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); - Direction clockWise; - Direction counterClockWise; - if (up == Direction.UP || up == Direction.DOWN) { - clockWise = getFrontFacing().getClockWise(); - counterClockWise = getFrontFacing().getCounterClockWise(); - } else { - clockWise = Direction.UP; - counterClockWise = Direction.DOWN; - } + Direction clockWise = RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), + isFlipped()); BlockPos pos = getPos(); - BlockPos center = pos.relative(up, 3); + BlockPos center = pos.relative(up); + + Set offsets = new HashSet<>(); - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 5; i++) { center = center.relative(back); - if (i % 2 == 0) - fluidBlockOffsets.add(center.subtract(pos)); - fluidBlockOffsets.add(center.relative(clockWise).subtract(pos)); - fluidBlockOffsets.add(center.relative(counterClockWise).subtract(pos)); + offsets.add(center.subtract(pos)); + offsets.add(center.relative(clockWise).subtract(pos)); + offsets.add(center.relative(counterClockWise).subtract(pos)); } + return offsets; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java index 01bccba3b85..6ea69b2d342 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/gcym/LargeMixerMachine.java @@ -14,6 +14,8 @@ import net.minecraft.core.Direction; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -28,9 +30,10 @@ public class LargeMixerMachine extends WorkableElectricMultiblockMachine impleme LargeMixerMachine.class, WorkableElectricMultiblockMachine.MANAGED_FIELD_HOLDER); @Getter + @Setter @DescSynced @RequireRerender - private final Set fluidBlockOffsets = new HashSet<>(); + private @NotNull Set fluidBlockOffsets = new HashSet<>(); public LargeMixerMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); @@ -54,28 +57,26 @@ public void onStructureInvalid() { } @Override - public void saveOffsets() { + public @NotNull Set saveOffsets() { Direction up = RelativeDirection.UP.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); Direction back = getFrontFacing().getOpposite(); - Direction clockWise; - Direction counterClockWise; - if (up == Direction.UP || up == Direction.DOWN) { - clockWise = getFrontFacing().getClockWise(); - counterClockWise = getFrontFacing().getCounterClockWise(); - } else { - clockWise = Direction.UP; - counterClockWise = Direction.DOWN; - } + Direction clockWise = RelativeDirection.RIGHT.getRelative(getFrontFacing(), getUpwardsFacing(), isFlipped()); + Direction counterClockWise = RelativeDirection.LEFT.getRelative(getFrontFacing(), getUpwardsFacing(), + isFlipped()); BlockPos pos = getPos(); BlockPos center = pos.relative(up, 3); + Set offsets = new HashSet<>(); + for (int i = 0; i < 3; i++) { center = center.relative(back); - if (i % 2 == 0) - fluidBlockOffsets.add(center.subtract(pos)); - fluidBlockOffsets.add(center.relative(clockWise).subtract(pos)); - fluidBlockOffsets.add(center.relative(counterClockWise).subtract(pos)); + if (i % 2 == 0) { + offsets.add(center.subtract(pos)); + } + offsets.add(center.relative(clockWise).subtract(pos)); + offsets.add(center.relative(counterClockWise).subtract(pos)); } + return offsets; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index aa69804a2c3..d9018dd21dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -101,8 +101,8 @@ public void onLoad() { super.onLoad(); if (!isRemote()) { updateRotorSubscription(); + rotorInvSubs = this.inventory.addChangedListener(this::onRotorInventoryChanged); } - rotorInvSubs = this.inventory.addChangedListener(this::onRotorInventoryChanged); } @Override @@ -179,7 +179,6 @@ private void updateRotorSpeed() { public void setRotorSpeed(int rotorSpeed) { if ((this.rotorSpeed > 0 && rotorSpeed <= 0) || (this.rotorSpeed <= 0 && rotorSpeed > 0)) { - scheduleRenderUpdate(); setRenderState(getRenderState().setValue(ROTOR_SPINNING_PROPERTY, rotorSpeed > 0)); } this.rotorSpeed = rotorSpeed; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index d0f7013ad76..2c155db3476 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -35,7 +35,10 @@ import net.minecraftforge.api.distmarker.OnlyIn; import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; +import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -51,9 +54,10 @@ public class PrimitiveBlastFurnaceMachine extends PrimitiveWorkableMachine imple private TickableSubscription hurtSubscription; @Getter + @Setter @DescSynced @RequireRerender - private final Set fluidBlockOffsets = new HashSet<>(); + private @NotNull Set fluidBlockOffsets = new HashSet<>(); public PrimitiveBlastFurnaceMachine(IMachineBlockEntity holder, Object... args) { super(holder, args); @@ -80,13 +84,14 @@ protected NotifiableItemStackHandler createExportItemHandler(Object... args) { public void onUnload() { super.onUnload(); unsubscribe(hurtSubscription); + hurtSubscription = null; } @Override public void onStructureFormed() { super.onStructureFormed(); IFluidRenderMulti.super.onStructureFormed(); - this.hurtSubscription = subscribeServerTick(this::hurtEntities); + this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntities); } @Override @@ -94,11 +99,12 @@ public void onStructureInvalid() { super.onStructureInvalid(); IFluidRenderMulti.super.onStructureInvalid(); unsubscribe(hurtSubscription); + hurtSubscription = null; } @Override - public void saveOffsets() { - fluidBlockOffsets.add(getPos().relative(getFrontFacing().getOpposite())); + public @NotNull Set saveOffsets() { + return Collections.singleton(new BlockPos(getFrontFacing().getOpposite().getNormal())); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index fa7e47b7edb..4dec448cf6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.core.mixins; +import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.lowdragmc.lowdraglib.async.AsyncThreadData; @@ -23,6 +24,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.HashSet; +import java.util.Set; + @Mixin(Level.class) public abstract class LevelMixin implements LevelAccessor { @@ -72,7 +76,12 @@ public abstract class LevelMixin implements LevelAccessor { if (!(((Object) this) instanceof ServerLevel serverLevel)) return; MultiblockWorldSavedData mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); - for (var structure : mwsd.getControllersInChunk(chunk.getPos())) { + Set defensiveCopy = new HashSet<>(mwsd.getControllersInChunk(chunk.getPos())); + for (MultiblockState structure : defensiveCopy) { + if (!structure.getController().isFormed()) { + // skip for unloaded/unformed multiblocks + continue; + } if (structure.isPosInCache(pos)) { serverLevel.getServer().executeBlocking(() -> structure.onBlockStateChanged(pos, newState)); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index be5ee59e1bd..62c5075dce4 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -2,12 +2,14 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; +import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -184,9 +186,15 @@ private static void renderShape(PoseStack poseStack, VertexConsumer consumer, Vo doRenderColoredOutline = true; rgb = GTValues.VCM[tiered.getTier()]; } - } else if (rendererCfg.coloredWireOutline && level.getBlockEntity(pos) instanceof CableBlockEntity cbe) { + } else if (rendererCfg.coloredWireOutline && level.getBlockEntity(pos) instanceof IPipeNode pipe) { doRenderColoredOutline = true; - rgb = GTValues.VCM[GTUtil.getTierByVoltage(cbe.getNodeData().getVoltage())]; + if (!pipe.getFrameMaterial().isNull()) { + rgb = pipe.getFrameMaterial().getMaterialRGB(); + } else if (pipe instanceof CableBlockEntity cable) { + rgb = GTValues.VCM[GTUtil.getTierByVoltage(cable.getNodeData().getVoltage())]; + } else if (state.getBlock() instanceof MaterialPipeBlock materialPipe) { + rgb = materialPipe.material.getMaterialRGB(); + } } VoxelShape blockShape = state.getShape(level, pos, CollisionContext.of(entity)); diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java index ddd8cea72b5..494b2282a46 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java @@ -66,12 +66,21 @@ public JsonObject toJson(JsonObject json) { json.addProperty("machine", owner.getId().toString()); StateDefinition stateDefinition = owner.getStateDefinition(); if (getModels().isEmpty() && getParts().isEmpty()) { - throw new IllegalStateException("A machine model must have either a variant or multipart model!"); + throw new IllegalStateException("A machine model must have a variant or multipart model!"); + } + List missingStates = new ArrayList<>(stateDefinition.getPossibleStates()); + missingStates.removeAll(coveredStates); + + if (!getParts().isEmpty()) { + JsonArray parts = new JsonArray(); + for (PartBuilder part : getParts()) { + missingStates.removeIf(part::matchesState); + parts.add(part.toJson()); + } + json.add("multipart", parts); } if (!getModels().isEmpty()) { - List missingStates = Lists.newArrayList(stateDefinition.getPossibleStates()); - missingStates.removeAll(coveredStates); Preconditions.checkState(missingStates.isEmpty(), "Render state for machine %s does not cover all states. Missing: %s", owner, missingStates); final JsonObject variants = new JsonObject(); @@ -83,13 +92,6 @@ public JsonObject toJson(JsonObject json) { json.add("variants", variants); } - if (!getParts().isEmpty()) { - JsonArray parts = new JsonArray(); - for (PartBuilder part : getParts()) { - parts.add(part.toJson()); - } - json.add("multipart", parts); - } if (!this.dynamicRenders.isEmpty()) { JsonArray dynamicRenders = new JsonArray(); @@ -285,9 +287,7 @@ public ConfiguredModel.Builder part() { * @see MachineModelBuilder#part(ResourceLocation) */ public PartBuilder part(ModelFile model) { - PartBuilder part = new PartBuilder(new ConfiguredModelList(new ConfiguredModel(model))); - this.parts.add(part); - return part; + return part().modelFile(model).addModel(); } /** @@ -643,6 +643,45 @@ private JsonObject conditionsToJson(Multimap, Comparable> conditi return groupJson; } + protected boolean matchesState(MachineRenderState state) { + return matchesState(state, this.useOr, this.conditions, this.nestedConditionGroups); + } + + protected boolean matchesState(MachineRenderState state, boolean useOr, + Multimap, Comparable> conditions, + List nestedConditionGroups) { + var stateValues = state.getValues(); + boolean matched = !useOr; + + if (!conditions.isEmpty()) { + for (var entry : stateValues.entrySet()) { + Property property = entry.getKey(); + Comparable value = entry.getValue(); + boolean contains = conditions.containsEntry(property, value); + + if (useOr) { + // any OR condition can match + matched |= contains; + } else { + // all AND conditions must match + matched &= contains; + } + } + } else if (!nestedConditionGroups.isEmpty()) { + for (ConditionGroup group : this.nestedConditionGroups) { + if (useOr) { + matched |= matchesState(state, group.useOr, group.conditions, group.nestedConditionGroups); + } else { + matched &= matchesState(state, group.useOr, group.conditions, group.nestedConditionGroups); + } + } + } else { + return true; + } + + return matched; + } + public class ConditionGroup { public final Multimap, Comparable> conditions = MultimapBuilder.linkedHashKeys() diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json index edce8448b4d..a4207c7ec17 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/cube_all/sided.json @@ -27,8 +27,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, @@ -39,8 +39,8 @@ } }, { - "from": [ -0.008, -0.008, -0.008 ], - "to": [ 16.008, 16.008, 16.008 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json index 25deda6664d..df13d812144 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/block.json @@ -1,27 +1,6 @@ { - "parent": "gtceu:block/cube/tinted/bottom_top", + "parent": "gtceu:block/overlay/front", "textures": { "overlay": "gtceu:block/overlay/machine/overlay_rotor_holder" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, - "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, - "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, - "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, - "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, - "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } - } - }, - { - "from": [ 0, 0, -0.002 ], - "to": [ 16, 16, -0.002 ], - "faces": { - "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } - } - } - ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json index 00a37d14073..a4eb5f3e105 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/overlay.json @@ -6,15 +6,15 @@ }, "elements": [ { - "from": [ -16, -16, -0.004 ], - "to": [ 32, 32, -0.004 ], + "from": [ -16, -16, -0.008 ], + "to": [ 32, 32, -0.008 ], "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#ring", "cullface": "north" } } }, { - "from": [ -16, -16, -0.006 ], - "to": [ 32, 32, -0.006 ], + "from": [ -16, -16, -0.012 ], + "to": [ 32, 32, -0.012 ], "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#base", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json index 0d32166ff34..86f9240fadb 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle.json @@ -5,8 +5,8 @@ }, "elements": [ { - "from": [ -16, -16, -0.008 ], - "to": [ 32, 32, -0.008 ], + "from": [ -16, -16, -0.016 ], + "to": [ 32, 32, -0.016 ], "faces": { "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rotor", "cullface": "north", "tintindex": 2 } } diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json index dbce9c611ed..ca4e53c8b58 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/rotor_holder/rotor_idle_emissive.json @@ -2,8 +2,8 @@ "parent": "gtceu:block/machine/template/rotor_holder/rotor_idle", "elements": [ { - "from": [ -16, -16, -0.008 ], - "to": [ 32, 32, -0.008 ], + "from": [ -16, -16, -0.016 ], + "to": [ 32, 32, -0.016 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json index 7563d0add5c..7ac3bd3a2b6 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/sided/sided.json @@ -27,8 +27,8 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, @@ -39,8 +39,8 @@ } }, { - "from": [ -0.008, -0.008, -0.008 ], - "to": [ 16.008, 16.008, 16.008 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/item/facade_cover.json b/src/main/resources/assets/gtceu/models/item/facade_cover.json index 4c4240eda22..1df4ba3e6e7 100644 --- a/src/main/resources/assets/gtceu/models/item/facade_cover.json +++ b/src/main/resources/assets/gtceu/models/item/facade_cover.json @@ -36,13 +36,18 @@ "display": { "firstperson_righthand": { "rotation": [ 0, 135, 0 ], - "translation": [ 0, 0, 0 ], + "translation": [ 0, 2, 0 ], "scale": [ 0.4, 0.4, 0.4 ] }, "firstperson_lefthand": { "rotation": [ 0, 315, 0 ], - "translation": [ 0, 0, 0 ], + "translation": [ 0, 2, 0 ], "scale": [ 0.40, 0.40, 0.40 ] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [-4, 2, 0], + "scale": [0.7, 0.7, 0.7] } } } diff --git a/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png b/src/main/resources/assets/gtceu/textures/block/casings/signs/blank_32.png deleted file mode 100644 index f048339668be73b83c981474f86f79c9ed6e8978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmV-r1DgDaP)FEB2~xNzaesW7Oj8jl`4#Ibjeh?8V040`<@s=CHoZ@+`4Y4F;MClCa1 z?EUvp)G?akE}HT_);B&y*uukyXRxxoj3|t7=k6a={4DR2*fu@1gRVYWDt1~!z>2suMhPtYz!=P!_f!<7nKkwW` z6hRn5P(ax1xZAsDFPgeRKc3DlB0$r$IJ|fqZyt(~=M|#p9){}$dOc{yPD;0)3=jl6e+uW0 zVo;sM-&x&Atf1H(d-u5q zQs_r7AwJ!jrGy;^iFQ z{PZ!>nbt&=|9=ME1dta6+7@aJ{(5}fB+1QaH!Pd$AxQ=Zk{3{p*ARvg#^VB8Tf?a^ z=sLE@bL7PsU!VH~?=GH38NeGa?}m*wD_p-ZkA83!->!Xzwk`3`<_5Y-P2)YNFv@dW zxpEoH%PY8a>#Io+IPst0%fEeOqB&XC!}mX&!_t8RNV9=yFet`j6D?X?T*6>5YkM{o z;QZCo+xu?53k1+sNV6HNuRp@UrA1`3d(bvFroy1pqKg+Vpx^5wj6#zcyR&g#nDolr v>@3QvM4BWh%hF_q=qD+nC_P)000C9Nkl`_;{W4KK~WDH zV@$*q7g0ns8l%yPGt)n-_pt2yen$p_r%pq^(`Ra`s{3{QdhgYP_E9`ryV{(I682APyl1hQ1Mb~RJ z`LX}N0pT=Bgxl>EVb8}p85v$D97dtAN3rnq z^j+c7k3gkB(W287d-I3)OTtf{{4Km^?_Ocsg3i4j=Je!GXM}^m7ye;%hj6$3PWaxl zbHc{p9XcJXfd{j*!do_N7WRDfU-}WK6ewD>cD4LS$5}l|#DuV8JHl@kUZbrlxl{@iE!t$T*K1@Kr76k} z{d!(_%NQDuZJrcf`Sc3?1gNvP_*|HllA@zUB{)u$QkR6TJv>YAhE6kjx6+S5r9jc5 zd5_m*#|JfkP<^#=40AE;wb8bYefsU27s3vT6}i^Rim05{2Fu9sh_J~}$@MB*XzfVp z70^n-pfLtU$^I7X```D#wh2S*!Hxs_zO#%;tzlj%16NjM97ZDhhh_IJ{&hj<<|FtI zxvAnpYe!12fVRlaPSfNYRsWNW)=5mUqXb^8H_~gupS!%tul}%{)`Oxo;E>rh`Xg+u7YjI0EONm4ol8Fgl>$YJ z=Ge|qvmu;W8-(o`{%$WuoqmIc41BJ^^Pa1dy`a7eicS8tyb{;PFSI3YXgx1U#kSZ@V~!qewCPh9J<@QvBi z!g&s-;mZo*uzaGFegrB7iWY4Q=4Fr8!2JB2@Wce}!XCc7g4TV;&6N5cnfvFsFvod< z0B6OmJGX_$cOd7Y7T^pi{RmVF6fHW6vEOrCsMQ)5ZZw93`|?J~m$>)%;=ppwpR=f3 z<#azC)P(4W17lrt~9FDNwZh3t|gFAOf!Z;s5{u07*qoM6N<$ Ef}-yn#Q*>R diff --git a/src/main/resources/assets/gtceu/textures/block/storage/rubber_planks.png b/src/main/resources/assets/gtceu/textures/block/storage/rubber_planks.png deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png b/src/main/resources/assets/gtceu/textures/block/storage/safe/newsafe.png deleted file mode 100644 index c496ca7dd095aeff6fe2b43936ee07008aedded0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2733 zcmcgu`#aN*7k>|PzpjOEWJp7ZNQ}h{A(!MDh9zHeNfWt@GPgpc_%th*lApAE3Jg?_GujicSIhoE*HWH$TL;(Phu(P#t;UVGQ z5EkU+4zr8BJOD+x*r0*e1BxrWLIh{)6$JodkbeU-GIf)~YYIi%Ia&)%iNYY-#>aL2 zSQpSO_So2-#jNxzYUlw=FsO`AT??j=FO!|Ob8=!jaDVMtl>f;w@ zKh(W>aS=xsI*Uid=_V1)*@ONZn%L*75nX!>-6Rn$84VE-N`{b@K~NJ$agG3&S*fbh zGA}}H)lh(2mpzMn-nB#`4RGSBog-~l6#Yh$Rof$H*8z2?jJiNlw6q&4aq9ZAtvdAG z2K-*yC(=^4sC3<&f7{O}fVx0F=ZN`%6OUY3b=?kgnE5g|xr5=%KVTdP=_=f!7|Zo* zpRAP0wAA+|ACN9{&J`OR&O-&A$q!*Y8$J4A%uC7ccpTwOv+BU1)G+u|)YX@7nL1$k z$&&(4u4ytSB?rrq)aPVRX=`U0L17I3&sn$-arO{^n_W?FF<AH*T@;42-d7LA z#VUaluB2)?zQ*oCOkD!<=j$Cy*gk!2X`i#VB(ww<`*^C$a(DMT>sk-YV%ttN{v1-_ z2jJacHc+s3>03wKkp5$}hPmrhAS0AP|>thpr^o|{nmS0yIKR8cW{0%83sFx_Yx z&%FLDZTDk^IT+ZT&P}R&F{{$Lqy+K`SEtMyxrvkr#k<6r`_Rn95fX0n@u4-{t^8j} zrHrt2mtwf%e1utpc@Liq>QYYpAccunPR=fDBanc1(4|Qt1AQ(|RuI@d~+Va%6K+7WgIggoOC1QgIP*LNtPZJgzvu2>#h!ich@b^vAIYq*_{AG8*YT5Ff(rF*X?ZlP|q=wn6gXBqXoJ_cKev@@Xo?qpTF_8^{c+ozCsL{8PqUr z68ugG#4+$*@-*kZjXRkdOPUp7Il1p-XFtde>d{%A`sl}Rc+j|&CDe0Yhd;itaax0$s5}2#W;c1kHW;m5R3jl zg*1iAJ36bZSfoiWC0W`zhG{HGF>ri%U%G}4tx>7IwPxZIU0S(2`i&KdmJ!EqmpU@T zU=Q6|(krJ8a_6ru8YFj@?Q}*3f^iX{Eg*+Oj&+wuAqIz;nbM3~1<|9%ofCyRAMbsl z*|+B>2N>@teyLxNKQ$p5bmD=Qc3uY~p#@RfdeWOMNbaqOj+{TlYyc9jZ@*W57r^E( z^iwn5{DmxB;TQMSv9Yf+c4*hTUmILq;PmcbHC|3p_L8l9pYqXwNS&vAt2&6g!ABcv z-@A_&1@qfsy;F%*Juf7E%i-6Dt)r%594!6Z{YS{U6c?nV`JE{fzGZ?gd+!D;sZPd%Hm)Zbh=$VNx|PuO{vPxCJa`P4J# z7*;TVTIKH-RrTqEF0|o#)@W1p6aZTDMViN#UiD7`12wU;9JKJ|j)e6J-2jCN*+IcP zR8@70)Ot_)bval28rkta!@1Kdq;T-#*80Z+RDIJ}Zek*La?Ki^nOmF`ei}Rh*`N$2 zIy$UTRInFtl#$>znCw{AIP?iBgT_3gHJvZ{-gE*=#foC}zVEh&Lv;Pg*nSo0|nv$Z*@TygDj-X@0Xbo7I^IWpE%0_M!vsl?@==chq{-63e zL$Lf=5b)yzt5pz)n_pWg1?rY!Bc}O)#GjK4jely!B{)AkW?a%2+hl&dmKm!6g2IlPj=a0 zKI=p2?SGm*n#+Obih($(1kE%I5Z^6{&S)fw9mzl~B2fx{t_00XKbd()FS=oBpFQu_ zuc150|IqSou`ki#S73Xq<3^6`-O+hiyy%fBO-a4;`a)<)XH~LC^CAdtdgV8GU@o!* zlgZlb^MP@4B%TFoe#x6xU_TOiQ8-&%*o0ep;CcJJ_hz8Zo26RkYhj6h>HR-X*M;vp z@~j=Rd6;HXP=wqGCvu&Jvv#cD$%HV<7=Agvt(fsQp%&(<$X(ul%RBR;c%N=G4)q`KY#XI)z!*f(4D;_wY`f*h{MzMCvXf#KZCK~WZ!<3 z7AC5f{l<)uMp1inV>i-R9 bZFgb*eyPamemzy*cL~^8J6XL(V^jVIsjU=G From 4f6c18b50cb6e21a1e2e7fd61b756a2cf7e1afc2 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 12 Jul 2025 07:25:11 -0600 Subject: [PATCH 147/270] Fix #3399 (#3401) --- src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index 4dec448cf6b..ad9d476e856 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -78,7 +78,7 @@ public abstract class LevelMixin implements LevelAccessor { MultiblockWorldSavedData mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); Set defensiveCopy = new HashSet<>(mwsd.getControllersInChunk(chunk.getPos())); for (MultiblockState structure : defensiveCopy) { - if (!structure.getController().isFormed()) { + if (structure.getController() == null || !structure.getController().isFormed()) { // skip for unloaded/unformed multiblocks continue; } From 71838060d76bd1bf7d9d581c5580cd8bac968b79 Mon Sep 17 00:00:00 2001 From: Ghostipedia Date: Sat, 12 Jul 2025 09:41:34 -0400 Subject: [PATCH 148/270] Textures --- .../block/overlay/machine/overlay_pipe_4x.png | Bin 226 -> 351 bytes .../block/overlay/machine/overlay_pipe_9x.png | Bin 214 -> 374 bytes .../machine/overlay_pipe_in_emissive.png | Bin 0 -> 996 bytes .../machine/overlay_pipe_out_emissive.png | Bin 0 -> 953 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.png diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png index 59719f948878a49fe523e51916f5ec8da07a9c86..65b8ba68a2641f17bc94e0e582dbc158e570f6f0 100644 GIT binary patch delta 324 zcmV-K0lWU<0p9|UB!3BTNLh0L01m_e01m_fl`9S#0003INkl6qGD=O3us;I0vBIAwfp*$U}jW-H5Oa+pHza`qIqzej zNPmi=DAZcZXf#4Zh%w@vLsjwKqpBAmJY|fLG))l^LHMhIfKzII{;B-1+jAg(7LPR*9&ooWLX0v%g7#yOiq8fWC+W9!= z-Y00E^>(`j=slR%>vdOC*Y$gYEX!Cfml$L4-s7C3X&Rh!R8_@vI^}-9_Y9K%|Ct^% W!G-_81RQ?=0000GZx^prw85kH?(j9#r85lP9bN@+X1@buyJR*x382Ao@Fyrz3 z6)8Z$a!(h>5DWigiGl+hOC@`Hd;fcTc{x=IeE9RT*r3<<&zqZ@6ZYyP2r4jW?kayT zcX+w~`~x+1c6My4s;UOk(=9j*95W3VG=F`1$}Mr&-lTy+uTa3jutBCFiQz=0jg3tL uPtswK*a8ay&2NV?bOIE`*rW^$7#Ox!r)@a@d65jz4Gf;HelF{r5}E)%UPH?O diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png index 8b7dac7d74d7d59ddbccc53cb91fb7c6707f247e..ad7ecabef40f09dc956928aef004093910a8594f 100644 GIT binary patch literal 374 zcmV-+0g3*JP)zu|s&+$l*T-|J$lN9IND%S`_5DDj;0Fb6>grsCyCM0DT1_2;>p8K4nS1u}v<0&IWE{uM+*%von2#NC zq|CBgqLWzG+!!OyIiIUX)H6yh6hRX+!~`o4ei002KX)Du-z{cm?{&5yI? zIHiP6LJjQ#%~b)tJ`_Qo*sK3cECB7$;`{(ByHwnc}LU9QaUx!#3 Ur%nju9RL6T07*qoM6N<$f)5^&ZU6uP literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!E8?##}Etuw-XGx4k+-r?hl)DbcNkc;L*9)MZ=M_Ld7=v|2J{Lh&)Z&9_zr z+%74pKm2CZ?+L4?6rHzJRQhml{q;G;H&WdnOt=SH(%q!NWKAR%EV0Ex4;no5 zP(iS{c&gwDrXlI>&g|~|d-HxC zgwp0^^0L`z(~@@_-h7z%e)Idxo3BMg7-X=4?%o#wzWKt1Tb~d?!E-ABfGCYnvP(Et ze-$ow@ZQ)5*0unbySVz{H46ZgQcy~PF$SU^@c!H^Va%|EDC61iW?mb}`uetSlH z1Z@vu85R2AXk}Deg5FGiqtFNIopm!{s&=f<2Mde8m;tuM3w@CFGBe=s@P45W;%=e= zv?|=JwA1G{7+mpSI=e+J$(0Nks? z)+9T6;Dcuhu=hUr;``4jOaeS;-$y%Xp_lgh^FfxU`0|~vcJG6`s|$rb*lK8iOeKXr zkXdd9Se9Mr1Mcc)a}AJYy+R-OFTP*~Z0CdNiPtoM*#~6@UagGj$rGr$RWqQ-2Y-aC z@VpN2&6D#Fe6Sw?d+&p@U%x?Pm-$5B4_W|QJPMri1Tyjs6I4;mDVzTyLT5!7#HRTT08eUo_;S34EP6aU>qjh S!adXg00005a{;JkA3VQz&jQG$B>+qqB0LY(?ILP5K7H^&Oa+Kqjjwli z1%NRIV+>MC?9L7kZ`^QB+zG*kA;uW0)hbd-lu}eG6#)L;-gZK80J2^u2m;bHWjGv? zBnd$fAf;qGie>|Z=h14l7!HTDS}lSgpxtgW7!0TgQ3BxmL{Y@@@(R{kn$0F!Ynsg_ z4e2J$dE#|CSZlG?kR%BJX__LX+6L+ zNDmHX18N%^g+A!-?ac-tWuXtoIpypCk~eP(eK6A60XSJWdh&$tjj`4k23oT;uMd8> zeOpK=3B&Nh2mcws+56zvwKZ#^2wAOSIpKqPo%HY!X8Az%dVIdMmFt6VClh-sv){em zeZSBLrEX^vhJ`*@_q^GFxZf}I!6(^5m5cm5Iz{x^#c*u8J zTmOU)d?84z<(`jk2tBV4Y?AQB zqerLrLHOcDp%3zw+hC+=p%3DmGjQ8|DGPm|a@u|83``Ui`rxxN{lPRJeBABMeuJzJ z8dB2nJUZPjm7ME+ZXf)V*?-}K^8h$|AN+Fpvh}ZB!|!x3lL^twm!xmsmiK|ERQU4o z<9~~{`1F6)4KA18;$n$|)&QpA_k`u~YKG0>-c+v+|A-LJ=;k8=C`}_R0yE_|@ z^}!!;jH=Zbwc9i{Hux&D|H2370q}n32U02gD_5v2FQdm}j-Nh-x#tJZp8e~C`)O*k zo$6fk#8MyM)8>g$8Nhq>L8*D7)q1gcq8W|Y>h)}Ob(MI3pI7}pL#+$v2TnQ9yFPp^ bEDZPuR@oh$XJ?+`00000NkvXXu0mjfQD?mw literal 0 HcmV?d00001 From 7ec7b1c206964bc7a37bf8b3dea136bec1319ad1 Mon Sep 17 00:00:00 2001 From: Ghostipedia Date: Sat, 12 Jul 2025 09:56:34 -0400 Subject: [PATCH 149/270] I was told to commit to the bit. Add the MCMETA & Resolution Error. --- .../block/overlay/machine/overlay_pipe_9x.png | Bin 374 -> 368 bytes .../machine/overlay_pipe_in_emissive.mcmeta | 5 +++++ .../machine/overlay_pipe_out_emissive.mcmeta | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.mcmeta create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_9x.png index ad7ecabef40f09dc956928aef004093910a8594f..8525e53b0cec4d9510c4927570cd11203cb5d51e 100644 GIT binary patch delta 355 zcmV-p0i6E!0`LMMiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPLe>TgfI{*Msp+|VR--%uSeWj?(mb?bE*h>pgWAxLmy(PB#NNKaXAHKB;`(g z-MV@rkO+JNf$wL7ZQDjUqkZ3JXJenOfWlfU0EDCf*u~L3jdfk)5Foi*Xq%H1=iDyW z2tg15=bQkLuIq%P6h$Em(fQ95*`A811hzFc#)xyy=jsXd zh!P7yP$vwj`H?~)xKx619DmgufbR?Hfu?Ex?-U&Mhbtwxq=0rf4RyQbIl6OwJ_JD? zIIH)oms1FW6j+ueXtKZH_V0l#{g@;IiNM_iegHFv8KwSiBL{Q4GJ0x0000DNk~Le0000X0000W2nGNE0GzlH%8?-$e<(>r zK~z|U?N>`~g)j^>RhQ%tvx~Wrm4``_J`dBcMB}`Bl#$y8sNqILu z-c3N{Ch>!tgyIq;K93gbx{lJnZQCYC>(^I8VXYMaLQ(*%V(Xm7JkRk+kX+qtnUfUf z+$z@yMGy(+oB)ufX@sO?StcZ9e;5VoF-=qOhJV2&z9*9V=jR(Y3B^r9aS0M%hgcb>P6*^300000NkvXX Hu0mjf_Z5<4 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.mcmeta new file mode 100644 index 00000000000..ceecb036fa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.mcmeta new file mode 100644 index 00000000000..ceecb036fa8 --- /dev/null +++ b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} \ No newline at end of file From abd9894bcc996853c06bd735e04fad86c6c884cd Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 12 Jul 2025 08:15:40 -0600 Subject: [PATCH 150/270] Fix Jade Structure forming info (#3400) Co-authored-by: screret <68943070+screret@users.noreply.github.com> --- .../jade/provider/MultiblockStructureProvider.java | 2 +- .../gregtechceu/gtceu/integration/top/TheOneProbePlugin.java | 2 +- ...tructureProvider.java => MultiblockStructureProvider.java} | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename src/main/java/com/gregtechceu/gtceu/integration/top/provider/{MulitblockStructureProvider.java => MultiblockStructureProvider.java} (91%) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java index da6ca49a643..cb4c2d5cf31 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/MultiblockStructureProvider.java @@ -33,7 +33,7 @@ public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPlugi public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { if (blockAccessor.getBlockEntity() instanceof MetaMachineBlockEntity blockEntity) { if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - compoundTag.putBoolean("hasError", controller.getMultiblockState().hasError()); + compoundTag.putBoolean("hasError", !controller.isFormed()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java index 1e73cad3f68..380613d6ce7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/TheOneProbePlugin.java @@ -46,7 +46,7 @@ public ResourceLocation getId() { oneProbe.registerProvider(new RecipeLogicInfoProvider()); oneProbe.registerProvider(new ParallelProvider()); oneProbe.registerProvider(new RecipeOutputProvider()); - oneProbe.registerProvider(new MulitblockStructureProvider()); + oneProbe.registerProvider(new MultiblockStructureProvider()); oneProbe.registerProvider(new MaintenanceInfoProvider()); oneProbe.registerProvider(new ExhaustVentInfoProvider()); oneProbe.registerProvider(new SteamBoilerInfoProvider()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java similarity index 91% rename from src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java rename to src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java index f7446f040eb..1b0a999953b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MulitblockStructureProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MultiblockStructureProvider.java @@ -15,7 +15,7 @@ import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; -public class MulitblockStructureProvider implements IProbeInfoProvider { +public class MultiblockStructureProvider implements IProbeInfoProvider { @Override public ResourceLocation getID() { @@ -27,7 +27,7 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play BlockState blockState, IProbeHitData iProbeHitData) { if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { if (blockEntity.getMetaMachine() instanceof IMultiController controller) { - if (controller.getMultiblockState().hasError()) { + if (!controller.isFormed()) { iProbeInfo.text(CompoundText.create().error("gtceu.top.invalid_structure")); } else { iProbeInfo.text(CompoundText.create().ok("gtceu.top.valid_structure")); From 215edbc63ed484559ae2ef322b08bff6a1685863 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sat, 12 Jul 2025 08:16:08 -0600 Subject: [PATCH 151/270] Fix more decomp related issues (#3395) --- .../chemical/material/ItemMaterialData.java | 52 ++++++++++++------- .../data/recipe/builder/GTRecipeBuilder.java | 7 ++- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java index 597475c6a6c..342641859da 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/ItemMaterialData.java @@ -173,29 +173,43 @@ public static void reinitializeMaterialData() { @ApiStatus.Internal public static void resolveItemMaterialInfos(Consumer provider) { - for (var entry : UNRESOLVED_ITEM_MATERIAL_INFO.entrySet()) { - List stacks = new ArrayList<>(); + for (var iter = UNRESOLVED_ITEM_MATERIAL_INFO.entrySet().iterator(); iter.hasNext();) { + var entry = iter.next(); var stack = entry.getKey(); - int outputCount = stack.getCount(); - for (var input : entry.getValue()) { - var matStack = getMaterialInfo(input.getItem()); - int inputCount = input.getCount(); - if (matStack != null) { - matStack.getMaterials() - .forEach(ms -> stacks.add(ms.multiply(inputCount).divide(outputCount))); - } + var existingMaterialInfo = recurseFindMaterialInfo(ITEM_MATERIAL_INFO.get(stack.getItem()), stack); + if (existingMaterialInfo != null) { + RecyclingRecipes.registerRecyclingRecipes(provider, stack.copyWithCount(1), + existingMaterialInfo.getMaterials(), false, null); } - if (stacks.isEmpty()) continue; - var matInfo = ITEM_MATERIAL_INFO.get(stack.getItem()); - if (matInfo == null) { - matInfo = new ItemMaterialInfo(stacks); - ITEM_MATERIAL_INFO.put(stack.getItem(), matInfo); + iter.remove(); + } + } + + private static ItemMaterialInfo recurseFindMaterialInfo(ItemMaterialInfo info, ItemStack stack) { + // grab material info from each input + for (var input : UNRESOLVED_ITEM_MATERIAL_INFO.get(stack)) { + // recurse if its nested inputs, not yet resolved + if (UNRESOLVED_ITEM_MATERIAL_INFO.containsKey(input)) { + info = recurseFindMaterialInfo(info, input); } else { - matInfo.addMaterialStacks(stacks); + // add the info from an item that is resolved (or not in the map to begin with) + var singularMatInfo = getMaterialInfo(input.getItem()); + int inputCount = input.getCount(); + int outputCount = stack.getCount(); + if (singularMatInfo != null) { // if that material info exists + List stackList = new ArrayList<>(); + for (var matStack : singularMatInfo.getMaterials()) { + stackList.add(matStack.multiply(inputCount).divide(outputCount)); + } + if (info == null) { // if the info isn't set initialize it + info = new ItemMaterialInfo(stackList); + ITEM_MATERIAL_INFO.put(stack.getItem(), info); + } else { // otherwise, add to it + info.addMaterialStacks(stackList); + } + } } - RecyclingRecipes.registerRecyclingRecipes(provider, entry.getKey().copyWithCount(1), - matInfo.getMaterials(), false, null); } - UNRESOLVED_ITEM_MATERIAL_INFO.clear(); + return info; } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 9b27b1f4f3f..d330dc1b671 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -370,14 +370,19 @@ public GTRecipeBuilder inputItems(ItemStack input) { return this; } else { var matInfo = ItemMaterialData.getMaterialInfo(input.getItem()); + var unresolvedMatInfo = ItemMaterialData.UNRESOLVED_ITEM_MATERIAL_INFO.get(input); if (chance == maxChance && chance != 0) { + if (unresolvedMatInfo != null) { + tempItemStacks.add(input); + } if (matInfo != null) { for (var matStack : matInfo.getMaterials()) { tempItemMaterialStacks.add(matStack.multiply(input.getCount())); } - } else { + } else if (unresolvedMatInfo == null) { tempItemStacks.add(input); } + } } return input(ItemRecipeCapability.CAP, SizedIngredient.create(input)); From 0916a0b78e7abd674e897aced56bdece4bac359d Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 13 Jul 2025 01:49:20 +0300 Subject: [PATCH 152/270] The Rendering Holiday Special (#3402) Co-authored-by: Ghostipedia --- build.gradle | 36 +++++++- dependencies.gradle | 57 ++++++------ gradle/forge.versions.toml | 4 +- gradle/scripts/moddevgradle.gradle | 10 ++- .../hpca_active_cooler_component_base.json | 2 +- ...a_advanced_computation_component_base.json | 2 +- .../block/hpca_bridge_component_base.json | 2 +- .../hpca_computation_component_base.json | 2 +- .../block/hpca_empty_component_base.json | 2 +- .../block/hpca_heat_sink_component_base.json | 2 +- .../machine/ev_16a_energy_converter.json | 4 + .../block/machine/ev_1a_energy_converter.json | 4 + .../block/machine/ev_4a_energy_converter.json | 4 + .../block/machine/ev_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/ev_diode.json | 10 +++ .../models/block/machine/ev_input_bus.json | 8 +- .../models/block/machine/ev_input_hatch.json | 8 +- .../block/machine/ev_input_hatch_4x.json | 10 ++- .../block/machine/ev_input_hatch_9x.json | 10 ++- .../models/block/machine/ev_output_bus.json | 8 +- .../models/block/machine/ev_output_hatch.json | 8 +- .../block/machine/ev_output_hatch_4x.json | 10 ++- .../block/machine/ev_output_hatch_9x.json | 10 ++- .../block/machine/ev_transformer_16a.json | 6 +- .../block/machine/ev_transformer_1a.json | 6 +- .../block/machine/ev_transformer_2a.json | 6 +- .../block/machine/ev_transformer_4a.json | 6 +- .../machine/hv_16a_energy_converter.json | 4 + .../block/machine/hv_1a_energy_converter.json | 4 + .../block/machine/hv_4a_energy_converter.json | 4 + .../block/machine/hv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/hv_diode.json | 10 +++ .../models/block/machine/hv_input_bus.json | 8 +- .../models/block/machine/hv_input_hatch.json | 8 +- .../models/block/machine/hv_output_bus.json | 8 +- .../models/block/machine/hv_output_hatch.json | 8 +- .../block/machine/hv_transformer_16a.json | 6 +- .../block/machine/hv_transformer_1a.json | 6 +- .../block/machine/hv_transformer_2a.json | 6 +- .../block/machine/hv_transformer_4a.json | 6 +- .../machine/iv_16a_energy_converter.json | 4 + .../block/machine/iv_1a_energy_converter.json | 4 + .../block/machine/iv_4a_energy_converter.json | 4 + .../block/machine/iv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/iv_diode.json | 10 +++ .../models/block/machine/iv_input_bus.json | 8 +- .../models/block/machine/iv_input_hatch.json | 8 +- .../block/machine/iv_input_hatch_4x.json | 10 ++- .../block/machine/iv_input_hatch_9x.json | 10 ++- .../models/block/machine/iv_output_bus.json | 8 +- .../models/block/machine/iv_output_hatch.json | 8 +- .../block/machine/iv_output_hatch_4x.json | 10 ++- .../block/machine/iv_output_hatch_9x.json | 10 ++- .../block/machine/iv_transformer_16a.json | 6 +- .../block/machine/iv_transformer_1a.json | 6 +- .../block/machine/iv_transformer_2a.json | 6 +- .../block/machine/iv_transformer_4a.json | 6 +- .../machine/luv_16a_energy_converter.json | 4 + .../machine/luv_1a_energy_converter.json | 4 + .../machine/luv_4a_energy_converter.json | 4 + .../machine/luv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/luv_diode.json | 10 +++ .../models/block/machine/luv_input_bus.json | 8 +- .../models/block/machine/luv_input_hatch.json | 8 +- .../block/machine/luv_input_hatch_4x.json | 10 ++- .../block/machine/luv_input_hatch_9x.json | 10 ++- .../models/block/machine/luv_output_bus.json | 8 +- .../block/machine/luv_output_hatch.json | 8 +- .../block/machine/luv_output_hatch_4x.json | 10 ++- .../block/machine/luv_output_hatch_9x.json | 10 ++- .../block/machine/luv_transformer_16a.json | 6 +- .../block/machine/luv_transformer_1a.json | 6 +- .../block/machine/luv_transformer_2a.json | 6 +- .../block/machine/luv_transformer_4a.json | 6 +- .../machine/lv_16a_energy_converter.json | 4 + .../block/machine/lv_1a_energy_converter.json | 4 + .../block/machine/lv_4a_energy_converter.json | 4 + .../block/machine/lv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/lv_diode.json | 10 +++ .../models/block/machine/lv_input_bus.json | 8 +- .../models/block/machine/lv_input_hatch.json | 8 +- .../models/block/machine/lv_output_bus.json | 8 +- .../models/block/machine/lv_output_hatch.json | 8 +- .../block/machine/lv_transformer_16a.json | 6 +- .../block/machine/lv_transformer_1a.json | 6 +- .../block/machine/lv_transformer_2a.json | 6 +- .../block/machine/lv_transformer_4a.json | 6 +- .../machine/max_16a_energy_converter.json | 4 + .../machine/max_1a_energy_converter.json | 4 + .../machine/max_4a_energy_converter.json | 4 + .../machine/max_8a_energy_converter.json | 4 + .../models/block/machine/max_input_bus.json | 8 +- .../models/block/machine/max_input_hatch.json | 8 +- .../block/machine/max_input_hatch_4x.json | 10 ++- .../block/machine/max_input_hatch_9x.json | 10 ++- .../models/block/machine/max_output_bus.json | 8 +- .../block/machine/max_output_hatch.json | 8 +- .../block/machine/max_output_hatch_4x.json | 10 ++- .../block/machine/max_output_hatch_9x.json | 10 ++- .../models/block/machine/me_input_bus.json | 4 +- .../models/block/machine/me_input_hatch.json | 4 +- .../models/block/machine/me_output_bus.json | 4 +- .../models/block/machine/me_output_hatch.json | 4 +- .../block/machine/me_pattern_buffer.json | 4 +- .../machine/me_pattern_buffer_proxy.json | 4 +- .../block/machine/me_stocking_input_bus.json | 4 +- .../machine/me_stocking_input_hatch.json | 4 +- .../machine/mv_16a_energy_converter.json | 4 + .../block/machine/mv_1a_energy_converter.json | 4 + .../block/machine/mv_4a_energy_converter.json | 4 + .../block/machine/mv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/mv_diode.json | 10 +++ .../models/block/machine/mv_input_bus.json | 8 +- .../models/block/machine/mv_input_hatch.json | 8 +- .../models/block/machine/mv_output_bus.json | 8 +- .../models/block/machine/mv_output_hatch.json | 8 +- .../block/machine/mv_transformer_16a.json | 6 +- .../block/machine/mv_transformer_1a.json | 6 +- .../block/machine/mv_transformer_2a.json | 6 +- .../block/machine/mv_transformer_4a.json | 6 +- .../machine/opv_16a_energy_converter.json | 4 + .../machine/opv_1a_energy_converter.json | 4 + .../machine/opv_4a_energy_converter.json | 4 + .../machine/opv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/opv_diode.json | 10 +++ .../models/block/machine/opv_input_bus.json | 8 +- .../models/block/machine/opv_input_hatch.json | 8 +- .../block/machine/opv_input_hatch_4x.json | 10 ++- .../block/machine/opv_input_hatch_9x.json | 10 ++- .../models/block/machine/opv_output_bus.json | 8 +- .../block/machine/opv_output_hatch.json | 8 +- .../block/machine/opv_output_hatch_4x.json | 10 ++- .../block/machine/opv_output_hatch_9x.json | 10 ++- .../block/machine/opv_transformer_16a.json | 6 +- .../block/machine/opv_transformer_1a.json | 6 +- .../block/machine/opv_transformer_2a.json | 6 +- .../block/machine/opv_transformer_4a.json | 6 +- .../models/block/machine/steam_input_bus.json | 8 +- .../block/machine/steam_output_bus.json | 8 +- .../machine/uev_16a_energy_converter.json | 4 + .../machine/uev_1a_energy_converter.json | 4 + .../machine/uev_4a_energy_converter.json | 4 + .../machine/uev_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/uev_diode.json | 10 +++ .../models/block/machine/uev_input_bus.json | 8 +- .../models/block/machine/uev_input_hatch.json | 8 +- .../block/machine/uev_input_hatch_4x.json | 10 ++- .../block/machine/uev_input_hatch_9x.json | 10 ++- .../models/block/machine/uev_output_bus.json | 8 +- .../block/machine/uev_output_hatch.json | 8 +- .../block/machine/uev_output_hatch_4x.json | 10 ++- .../block/machine/uev_output_hatch_9x.json | 10 ++- .../block/machine/uev_transformer_16a.json | 6 +- .../block/machine/uev_transformer_1a.json | 6 +- .../block/machine/uev_transformer_2a.json | 6 +- .../block/machine/uev_transformer_4a.json | 6 +- .../machine/uhv_16a_energy_converter.json | 4 + .../machine/uhv_1a_energy_converter.json | 4 + .../machine/uhv_4a_energy_converter.json | 4 + .../machine/uhv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/uhv_diode.json | 10 +++ .../models/block/machine/uhv_input_bus.json | 8 +- .../models/block/machine/uhv_input_hatch.json | 8 +- .../block/machine/uhv_input_hatch_4x.json | 10 ++- .../block/machine/uhv_input_hatch_9x.json | 10 ++- .../models/block/machine/uhv_output_bus.json | 8 +- .../block/machine/uhv_output_hatch.json | 8 +- .../block/machine/uhv_output_hatch_4x.json | 10 ++- .../block/machine/uhv_output_hatch_9x.json | 10 ++- .../block/machine/uhv_transformer_16a.json | 6 +- .../block/machine/uhv_transformer_1a.json | 6 +- .../block/machine/uhv_transformer_2a.json | 6 +- .../block/machine/uhv_transformer_4a.json | 6 +- .../machine/uiv_16a_energy_converter.json | 4 + .../machine/uiv_1a_energy_converter.json | 4 + .../machine/uiv_4a_energy_converter.json | 4 + .../machine/uiv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/uiv_diode.json | 10 +++ .../models/block/machine/uiv_input_bus.json | 8 +- .../models/block/machine/uiv_input_hatch.json | 8 +- .../block/machine/uiv_input_hatch_4x.json | 10 ++- .../block/machine/uiv_input_hatch_9x.json | 10 ++- .../models/block/machine/uiv_output_bus.json | 8 +- .../block/machine/uiv_output_hatch.json | 8 +- .../block/machine/uiv_output_hatch_4x.json | 10 ++- .../block/machine/uiv_output_hatch_9x.json | 10 ++- .../block/machine/uiv_transformer_16a.json | 6 +- .../block/machine/uiv_transformer_1a.json | 6 +- .../block/machine/uiv_transformer_2a.json | 6 +- .../block/machine/uiv_transformer_4a.json | 6 +- .../machine/ulv_16a_energy_converter.json | 4 + .../machine/ulv_1a_energy_converter.json | 4 + .../machine/ulv_4a_energy_converter.json | 4 + .../machine/ulv_8a_energy_converter.json | 4 + .../models/block/machine/ulv_input_bus.json | 8 +- .../models/block/machine/ulv_input_hatch.json | 8 +- .../models/block/machine/ulv_output_bus.json | 8 +- .../block/machine/ulv_output_hatch.json | 8 +- .../block/machine/ulv_transformer_16a.json | 6 +- .../block/machine/ulv_transformer_1a.json | 6 +- .../block/machine/ulv_transformer_2a.json | 6 +- .../block/machine/ulv_transformer_4a.json | 6 +- .../machine/uv_16a_energy_converter.json | 4 + .../block/machine/uv_1a_energy_converter.json | 4 + .../block/machine/uv_4a_energy_converter.json | 4 + .../block/machine/uv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/uv_diode.json | 10 +++ .../models/block/machine/uv_input_bus.json | 8 +- .../models/block/machine/uv_input_hatch.json | 8 +- .../block/machine/uv_input_hatch_4x.json | 10 ++- .../block/machine/uv_input_hatch_9x.json | 10 ++- .../models/block/machine/uv_output_bus.json | 8 +- .../models/block/machine/uv_output_hatch.json | 8 +- .../block/machine/uv_output_hatch_4x.json | 10 ++- .../block/machine/uv_output_hatch_9x.json | 10 ++- .../block/machine/uv_transformer_16a.json | 6 +- .../block/machine/uv_transformer_1a.json | 6 +- .../block/machine/uv_transformer_2a.json | 6 +- .../block/machine/uv_transformer_4a.json | 6 +- .../machine/uxv_16a_energy_converter.json | 4 + .../machine/uxv_1a_energy_converter.json | 4 + .../machine/uxv_4a_energy_converter.json | 4 + .../machine/uxv_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/uxv_diode.json | 10 +++ .../models/block/machine/uxv_input_bus.json | 8 +- .../models/block/machine/uxv_input_hatch.json | 8 +- .../block/machine/uxv_input_hatch_4x.json | 10 ++- .../block/machine/uxv_input_hatch_9x.json | 10 ++- .../models/block/machine/uxv_output_bus.json | 8 +- .../block/machine/uxv_output_hatch.json | 8 +- .../block/machine/uxv_output_hatch_4x.json | 10 ++- .../block/machine/uxv_output_hatch_9x.json | 10 ++- .../block/machine/uxv_transformer_16a.json | 6 +- .../block/machine/uxv_transformer_1a.json | 6 +- .../block/machine/uxv_transformer_2a.json | 6 +- .../block/machine/uxv_transformer_4a.json | 6 +- .../machine/zpm_16a_energy_converter.json | 4 + .../machine/zpm_1a_energy_converter.json | 4 + .../machine/zpm_4a_energy_converter.json | 4 + .../machine/zpm_8a_energy_converter.json | 4 + .../gtceu/models/block/machine/zpm_diode.json | 10 +++ .../models/block/machine/zpm_input_bus.json | 8 +- .../models/block/machine/zpm_input_hatch.json | 8 +- .../block/machine/zpm_input_hatch_4x.json | 10 ++- .../block/machine/zpm_input_hatch_9x.json | 10 ++- .../models/block/machine/zpm_output_bus.json | 8 +- .../block/machine/zpm_output_hatch.json | 8 +- .../block/machine/zpm_output_hatch_4x.json | 10 ++- .../block/machine/zpm_output_hatch_9x.json | 10 ++- .../block/machine/zpm_transformer_16a.json | 6 +- .../block/machine/zpm_transformer_1a.json | 6 +- .../block/machine/zpm_transformer_2a.json | 6 +- .../block/machine/zpm_transformer_4a.json | 6 +- .../gtceu/models/block/rubber_leaves.json | 0 .../api/registry/registrate/BuilderBase.java | 3 +- .../registry/registrate/MachineBuilder.java | 47 ++++++---- .../registrate/MultiblockMachineBuilder.java | 18 ++-- .../model/machine/IMachineRendererModel.java | 84 +++--------------- .../client/model/machine/MachineModel.java | 32 ++++++- .../model/machine/MachineModelLoader.java | 23 ----- .../machine/overlays/EnergyIOOverlay.java | 41 ++++++--- .../renderer/cover/FacadeCoverRenderer.java | 2 +- .../renderer/cover/ICoverableRenderer.java | 16 ++-- .../renderer/machine/DynamicRender.java | 3 +- .../machine/impl/FusionRingRender.java | 7 -- .../gtceu/client/util/StaticFaceBakery.java | 34 +++---- .../gtceu/common/data/GTBlocks.java | 4 +- .../gtceu/common/data/GTMachines.java | 24 ++--- .../common/data/machines/GCYMMachines.java | 4 +- .../common/data/machines/GTMachineUtils.java | 35 +++++--- .../common/data/machines/GTMultiMachines.java | 6 +- .../common/data/models/GTMachineModels.java | 51 +++++++---- .../gtceu/core/mixins/GTMixinPlugin.java | 1 + .../core/mixins/client/ModelManagerMixin.java | 5 ++ .../core/mixins/kubejs/KubeJSForgeMixin.java | 22 +++++ .../model/builder/MachineModelBuilder.java | 4 +- .../data/pack/GTDynamicResourcePack.java | 12 +++ .../integration/kjs/GregTechKubeJSPlugin.java | 32 ++++--- .../machine/KJSSteamMachineBuilder.java | 60 +++++++++---- .../machine/KJSTieredMachineBuilder.java | 3 +- .../machine/KJSTieredMultiblockBuilder.java | 3 +- .../machine/KJSWrappingMachineBuilder.java | 3 +- .../machine/KJSWrappingMultiblockBuilder.java | 8 ++ .../integration/kjs/built/KJSTagPrefix.java | 9 +- .../utils/data/RuntimeExistingFileHelper.java | 10 ++- .../gtceu/models/block/computer_casing.json | 20 +---- .../block/machine/large_miner_active.json | 4 +- .../block/machine/part/dual_input_hatch.json | 4 +- .../block/machine/part/dual_output_hatch.json | 4 +- .../machine/part/energy_input_hatch.json | 44 ++++++++- .../machine/part/energy_input_hatch_16a.json | 44 ++++++++- .../machine/part/energy_input_hatch_4a.json | 44 ++++++++- .../machine/part/energy_input_hatch_64a.json | 44 ++++++++- .../machine/part/energy_output_hatch.json | 44 ++++++++- .../machine/part/energy_output_hatch_16a.json | 44 ++++++++- .../machine/part/energy_output_hatch_4a.json | 44 ++++++++- .../machine/part/energy_output_hatch_64a.json | 44 ++++++++- .../machine/part/fluid_passthrough_hatch.json | 23 +++-- .../machine/part/item_passthrough_hatch.json | 23 +++-- .../machine/part/laser_source_hatch.json | 47 +++++++++- .../machine/part/laser_target_hatch.json | 47 +++++++++- .../models/block/machine/part/pump_hatch.json | 4 +- .../machine/template/part/hatch_machine.json | 36 ++++++++ .../part/hatch_machine_color_ring.json | 45 ++++++++++ .../template/part/hatch_machine_emissive.json | 42 +++++++++ .../hatch_machine_emissive_color_ring.json | 51 +++++++++++ .../{ => part}/hpca_part_machine.json | 0 .../template/pipeline_endpoint_machine.json | 33 ++++--- .../block/machine/template/pump_machine.json | 8 +- .../template/transformer_like_machine.json | 26 ++++-- .../assets/gtceu/models/block/miner_pipe.json | 14 +-- .../converter_native_in_emissive.png | Bin 0 -> 400 bytes .../converter_native_out_emissive.png | Bin 0 -> 368 bytes .../overlay_energy_16a_in_emissive.png | Bin 0 -> 296 bytes .../overlay_energy_16a_out_emissive.png | Bin 0 -> 265 bytes .../machine/overlay_energy_1a_in_emissive.png | Bin 0 -> 182 bytes .../overlay_energy_1a_out_emissive.png | Bin 0 -> 186 bytes .../machine/overlay_energy_2a_in_emissive.png | Bin 0 -> 202 bytes .../overlay_energy_2a_out_emissive.png | Bin 0 -> 269 bytes .../machine/overlay_energy_4a_in_emissive.png | Bin 0 -> 183 bytes .../overlay_energy_4a_out_emissive.png | Bin 0 -> 177 bytes .../overlay_energy_64a_in_emissive.png | Bin 0 -> 289 bytes .../overlay_energy_64a_out_emissive.png | Bin 0 -> 282 bytes .../machine/overlay_energy_8a_in_emissive.png | Bin 0 -> 343 bytes .../overlay_energy_8a_out_emissive.png | Bin 0 -> 311 bytes .../overlay/machine/overlay_laser_base.png | Bin 0 -> 211 bytes .../machine/overlay_laser_source_emissive.png | Bin 0 -> 204 bytes .../machine/overlay_laser_target_emissive.png | Bin 0 -> 207 bytes .../block/overlay/machine/overlay_pipe_4x.png | Bin 351 -> 387 bytes .../block/overlay/machine/overlay_pipe_9x.png | Bin 368 -> 583 bytes .../block/overlay/machine/overlay_pipe_in.png | Bin 1016 -> 0 bytes .../overlay/machine/overlay_pipe_in_4x.png | Bin 1193 -> 0 bytes .../overlay/machine/overlay_pipe_in_9x.png | Bin 2947 -> 0 bytes .../machine/overlay_pipe_in_emissive.mcmeta | 5 -- ...ta => overlay_pipe_in_emissive.png.mcmeta} | 0 .../overlay/machine/overlay_pipe_out.png | Bin 7897 -> 0 bytes .../overlay/machine/overlay_pipe_out_4x.png | Bin 1092 -> 0 bytes .../machine/overlay_pipe_out_4x.png.mcmeta | 5 -- .../overlay/machine/overlay_pipe_out_9x.png | Bin 2708 -> 0 bytes .../machine/overlay_pipe_out_9x.png.mcmeta | 5 -- .../machine/overlay_pipe_out_emissive.mcmeta | 5 -- ...a => overlay_pipe_out_emissive.png.mcmeta} | 0 src/main/resources/gtceu.mixins.json | 1 + 343 files changed, 2243 insertions(+), 960 deletions(-) rename src/{main => generated}/resources/assets/gtceu/models/block/rubber_leaves.json (100%) create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json rename src/main/resources/assets/gtceu/models/block/machine/template/{ => part}/hpca_part_machine.json (100%) create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_2a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_in_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_base.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_source_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_9x.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_emissive.mcmeta rename src/main/resources/assets/gtceu/textures/block/overlay/machine/{overlay_pipe_in_4x.png.mcmeta => overlay_pipe_in_emissive.png.mcmeta} (100%) delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_emissive.mcmeta rename src/main/resources/assets/gtceu/textures/block/overlay/machine/{overlay_pipe_in_9x.png.mcmeta => overlay_pipe_out_emissive.png.mcmeta} (100%) diff --git a/build.gradle b/build.gradle index 8cf94961bfb..f2dd9df780c 100644 --- a/build.gradle +++ b/build.gradle @@ -27,6 +27,11 @@ sourceSets { srcDir 'src/generated/resources' } + client { + compileClasspath += main.output + runtimeClasspath += main.output + main.runtimeClasspath + } + test { kotlin { srcDirs += 'src/test/java' @@ -39,10 +44,39 @@ sourceSets { compileClasspath += main.output runtimeClasspath += main.output + main.runtimeClasspath } + + clientExtra { + compileClasspath += client.output + extra.compileClasspath + runtimeClasspath += client.output + client.runtimeClasspath + extra.runtimeClasspath + } } +configurations { + // set these as unresolvable so we don't accidentally force all dependents to use them with us + clientRuntimeOnly.canBeResolved = false + extraRuntimeOnly.canBeResolved = false + clientExtraRuntimeOnly.canBeResolved = false + + runtimeClasspath.extendsFrom localRuntime + extraRuntimeClasspath.extendsFrom extraLocalRuntime + clientRuntimeClasspath.extendsFrom clientLocalRuntime + extraClientRuntimeClasspath.extendsFrom clientExtraLocalRuntime +} + +afterEvaluate { + configurations { + // same as above but for the modRuntimeOnly configurations + modClientRuntimeOnly.canBeResolved = false + modExtraRuntimeOnly.canBeResolved = false + modClientExtraRuntimeOnly.canBeResolved = false + } +} obfuscation { - createRemappingConfiguration(configurations.extraRuntimeOnly) + createRemappingConfiguration(configurations.localRuntime) + createRemappingConfiguration(configurations.clientLocalRuntime) + + createRemappingConfiguration(configurations.extraLocalRuntime) + createRemappingConfiguration(configurations.clientExtraLocalRuntime) } apply from: "$rootDir/gradle/scripts/jars.gradle" diff --git a/dependencies.gradle b/dependencies.gradle index 28ce6571053..e500b001ec5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -43,9 +43,6 @@ dependencies { modCompileOnly(forge.embeddium) modCompileOnly(forge.oculus) - // JAVD - modCompileOnly(forge.javd) - // Teams modCompileOnly(forge.ftblibrary) modCompileOnly(forge.ftbteams) @@ -69,43 +66,47 @@ dependencies { modCompileOnly(forge.cc.tweaked.forge.api) // Standard runtime mods // - modRuntimeOnly(forge.jade) - modRuntimeOnly(forge.ae2) - modRuntimeOnly(forge.spark) + modLocalRuntime(forge.jade) + modLocalRuntime(forge.ae2) + modLocalRuntime(forge.spark) // Runtime Recipe Viewers - uncomment whichever one you want to use // - modRuntimeOnly(forge.emi) -// modRuntimeOnly(forge.jei.forge.impl) -// modRuntimeOnly(forge.bundles.rei.runtime) + modLocalRuntime(forge.emi) +// modLocalRuntime(forge.jei.forge.impl) +// modLocalRuntime(forge.bundles.rei.runtime) + + // Client-only runtime mods // + modClientLocalRuntime(forge.embeddium) + modClientLocalRuntime(forge.oculus) ////////////////////////////////////////////////////// // Runtime mods for dev testing with unclean client // ////////////////////////////////////////////////////// - modExtraRuntimeOnly(forge.javd) - modExtraRuntimeOnly(forge.trenzalore) - modExtraRuntimeOnly(forge.curios) -// modExtraRuntimeOnly(forge.worldstripper) - modExtraRuntimeOnly(forge.cc.tweaked.forge.impl) + modExtraLocalRuntime(forge.javd) + modExtraLocalRuntime(forge.trenzalore) + modExtraLocalRuntime(forge.curios) +// modExtraLocalRuntime(forge.worldstripper) + modExtraLocalRuntime(forge.cc.tweaked.forge.impl) - modExtraRuntimeOnly(forge.bundles.kjs) + modExtraLocalRuntime(forge.bundles.kjs) - modExtraRuntimeOnly(forge.ftblibrary) - modExtraRuntimeOnly(forge.ftbteams) - modExtraRuntimeOnly(forge.ftbquests) + modExtraLocalRuntime(forge.ftblibrary) + modExtraLocalRuntime(forge.ftbteams) + modExtraLocalRuntime(forge.ftbquests) - modExtraRuntimeOnly(forge.heracles) - modExtraRuntimeOnly(forge.resourcefullib) + modExtraLocalRuntime(forge.heracles) + modExtraLocalRuntime(forge.resourcefullib) -// modExtraRuntimeOnly(forge.xaerosminimap) -// modExtraRuntimeOnly(forge.xaerosworldmap) -// modExtraRuntimeOnly(forge.journeymap.forge) -// modExtraRuntimeOnly(forge.ftbchunks) +// modExtraLocalRuntime(forge.xaerosminimap) +// modExtraLocalRuntime(forge.xaerosworldmap) +// modExtraLocalRuntime(forge.journeymap.forge) +// modExtraLocalRuntime(forge.ftbchunks) - modExtraRuntimeOnly(forge.gamestages) - modExtraRuntimeOnly(forge.bookshelf) + modExtraLocalRuntime(forge.gamestages) + modExtraLocalRuntime(forge.bookshelf) - modExtraRuntimeOnly(forge.kotlinforforge) - modExtraRuntimeOnly(forge.observable) + modExtraLocalRuntime(forge.kotlinforforge) + modExtraLocalRuntime(forge.observable) ////////////////////////// testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 061c1bc6419..787efcd3c96 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -25,8 +25,8 @@ ccTweaked = "1.114.3" ## modrinth maven ## jade = "11.6.3" -embeddium = "0.3.19+mc1.20.1" -oculus = "1.20.1-1.7.0" +embeddium = "0.3.31+mc1.20.1" +oculus = "1.20.1-1.8.0" ## cursemaven ## worldStripper = "4578579" diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index 324894980cd..fea86c5ee76 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -23,15 +23,17 @@ legacyForge { // define mod <-> source bindings "${mod_id}" { sourceSet(sourceSets.main) + sourceSet(sourceSets.client) sourceSet(sourceSets.test) sourceSet(sourceSets.extra) + sourceSet(sourceSets.clientExtra) } } runs { client { client() - sourceSet = sourceSets.extra + sourceSet = sourceSets.clientExtra ideName = "Client 1" systemProperty('forge.enabledGameTestNamespaces', project.mod_id) @@ -39,7 +41,7 @@ legacyForge { client2 { client() - sourceSet = sourceSets.extra + sourceSet = sourceSets.clientExtra ideName = "Client 2" programArguments.addAll('--username', 'YoungOnion', '--uuid', '3a27782d-6864-4814-a9fe-7c6931f29a8a') @@ -59,13 +61,13 @@ legacyForge { // Client with GTM + Jade, EMI, AE2 cleanClient { client() - sourceSet = sourceSets.main + sourceSet = sourceSets.client ideName = "Clean Client" systemProperty('forge.enabledGameTestNamespaces', project.mod_id) } - server { + cleanServer { server() sourceSet = sourceSets.main ideName = "Clean Server" diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json index b20b7eff72a..815ad6e9e35 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_active_cooler_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json index b20b7eff72a..815ad6e9e35 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_advanced_computation_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/advanced_computer_casing/back", "bottom": "gtceu:block/casings/hpca/advanced_computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json index 9101355e7a5..1bb505af931 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_bridge_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/computer_casing/back", "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json index 9101355e7a5..1bb505af931 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_computation_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/computer_casing/back", "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json index 9101355e7a5..1bb505af931 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_empty_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/computer_casing/back", "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json index 9101355e7a5..1bb505af931 100644 --- a/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json +++ b/src/generated/resources/assets/gtceu/models/block/hpca_heat_sink_component_base.json @@ -1,5 +1,5 @@ { - "parent": "gtceu:block/machine/template/hpca_part_machine", + "parent": "gtceu:block/machine/template/part/hpca_part_machine", "textures": { "back": "gtceu:block/casings/hpca/computer_casing/back", "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json index 60476b3d0cd..2732e1a6c04 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json index aa778a97740..9797cad8ad3 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json index 8795472dc6f..927d0cca478 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json index 0a3fa3e0cef..520e2523e9b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json index 4f8a9a6e8c2..155b5b80395 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json index ae27b7563e8..07266c3b50e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json index 9c2d1442c53..74430e116c1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json index 3f536b94f54..78934aa9896 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json index 5125f6b2cbb..bdf92ca1083 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json index 23015e72ac1..42c5c3590f7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json index 5745e9c8705..25abd397d64 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json index 497ef104aed..362b3e0b071 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json index 5fdc0599f57..b9c252adac7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json index 4dc71eb5333..fdb3dfb2a79 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json index 032ea8680a6..af245d907e1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json index 2fc66e24edb..15a77896859 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json index fdb7e95a842..a035a3d6184 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ev_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/ev/side", "top": "gtceu:block/casings/voltage/ev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json index b4ac3af6bcf..7f7d14f6e38 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json index 7e2203c243d..0dd01d05319 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json index 2c233715bb5..2bbf7a4351d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json index 19890a3c913..5a8ce315abf 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json index 1c16cef2f08..35f015c19f9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json index c278ac1c02e..a67ad9ced90 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json index 2cd7a554f59..becbe694803 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json index 9ef715d5830..ecf59021f8b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json index ca5d64c614a..df3214b2704 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json index 1d43f006ab5..b2ae7935afd 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json index b00bf83b6a2..ace15ee821e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json index 696f0925311..cf95c176c7f 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json index 1a320647f6c..36905578d87 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json index d60788054d2..f00d9762b95 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json index 0d7d5f59722..b1aa772f85c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json index a3f9bbd128d..1fe5d86dc60 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json index 34bba8b0637..a4fe383034e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json index 7a51a46ba40..9b379db7b66 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json index 2dbf931bd5e..92d54201168 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json index 999cf3d562f..9b6eb4d9bff 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json index 431eb490072..0f1c3fe5335 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json index 41f0d193737..fc4fc583e61 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json index 120463a998d..77c7d8d1b07 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json index 707b1136394..52182d2cd41 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json index 600d24c5b5f..9e77d9d2c4d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json index 33bf0969f2d..3e35871adf3 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json index 19c9cc875a5..7b75caa363b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json index 7a07ec03b7f..cac711c5ae6 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json index 01aeac75fe4..2144efdd721 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json index cf788e3aac0..1a0fd2722f9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/iv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/iv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/iv/side", "top": "gtceu:block/casings/voltage/iv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json index 6f3bb5a6db6..6460c0727d7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json index 36c2dc8f36a..e962584365e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json index 709f0876d0c..def4ce8e457 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json index c2602637a7d..36efddf09f1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json index 3786ec3ac40..fb8fbe9fd7a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json index c39c0fde6cc..19346c670b1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json index 89271df0487..253f22fc33b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json index 63d42ec2249..fddb5205bc7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json index e4e0a0dc4c3..3a2302e0bce 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json index 54443f656b6..d92dcdf4d12 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json index dd040dc90e3..58c8bd23514 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json index 55ef71b1aea..ba59aa73f6a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json index cb71bb44b80..056d5b06cf2 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json index 145d3f4b94a..a74c18ce3cd 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json index 0df687b9094..51598d8d385 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json index 496a4cc8185..9053a69ddf8 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json index da557839759..20309114743 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/luv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/luv/side", "top": "gtceu:block/casings/voltage/luv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json index 6162ac89c18..05fc2bd2216 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json index 81c816b0000..14d2cea358b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json index df39d5a604d..8c0c96f60a7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json index 58d271dc1ca..a6d4e48d555 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json index b46de49c565..7c792ee34ce 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json index 26190d19dec..be70094c1f1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json index a9aafb77955..a968b5aad43 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json index 680c115ccab..53d7e4d643a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json index bd537b067c7..ac1b89fd6b0 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json index 05381ddd92b..733e8e6cc74 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json index ad305e668f6..36fe2cc6f3e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json index 48fe37db462..93361fd4ed8 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json index 45f1bde5cc7..e8188934be9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json index 5bbb15886b0..a7a850d6d60 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json index 3706ee39893..6f460753085 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json index cecd4c65e04..3fa4e20b86b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json index f4d5bea75a7..064ac0d4032 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json index 36532f2d3a7..88cef882c84 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json index a8d50700f2a..a9a78e5ea7e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json index bed2138262e..162675606eb 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json index bd0bf5db324..87e69c1b1ab 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json index d47098a920d..911281a9402 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json index 93545ee1c17..025e5838e39 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json index 181621bfea7..82a7d908144 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json index 1dc44c752b0..e9afb2666f0 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/max_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/max/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/max/side", "top": "gtceu:block/casings/voltage/max/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json index 8dc5e361c18..89cbfb0b5ee 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_bus.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_bus", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_bus", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json index 27ffdac742b..e06ab9b2c09 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_input_hatch.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_hatch", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_hatch", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json index f3866f870f6..b3d24ae564a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_bus.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_output_bus", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_output_bus", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json index b9f5338e7ba..676ee091e01 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_output_hatch.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_output_hatch", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ev/bottom", "overlay": "gtceu:block/overlay/appeng/me_output_hatch", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json index 93485f50cca..bda8d106e21 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json index 416f7126d06..aed406bbd4e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_pattern_buffer_proxy.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_buffer_hatch_proxy", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json index 1b80fa142a0..f53958681de 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_bus.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_bus", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_bus", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json index ca8f657b6af..5262fb2a7c5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/me_stocking_input_hatch.json @@ -10,7 +10,7 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/front", + "parent": "gtceu:block/machine/template/part/hatch_machine", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_hatch", @@ -21,7 +21,7 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/front_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/luv/bottom", "overlay": "gtceu:block/overlay/appeng/me_input_hatch", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json index f170db7f307..81b92b13df2 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json index 09a97a918ed..2c78c515023 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json index e734e1d2d46..4383cd121f4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json index e675afdf32d..e811cce1564 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json index 3e62f36b4bf..f3eb15ef48d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json index dbf3c72ca75..3b7b55c18e6 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json index d9863bedba5..f282ae71758 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json index 8217288b00f..1ca97cb57a6 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json index 1b3e12f813c..3d3deb6119b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json index e13674165b1..8c247eb2f4c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json index 4a04fec6097..a4d00ff0489 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json index 6f3e236ad91..d7679824a9d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json index 042d3f06f34..359a9e8d45a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json index c0c99d7e93d..613278232e7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json index 2e09537809c..e174072aebe 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json index 28b2a43bdc1..24edd69c809 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json index 108aed34a70..6cb6bc9de28 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json index 27535794c03..b960c266fef 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json index 6dfd7a8d50b..e92b1473530 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json index 5cdf2bb11fa..bb55daf624b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json index 0c1be96a383..e87e62d80cc 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json index f8689c6f7e8..fc73ca2a5ce 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json index 7bdea359a07..15e745d1a6e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json index 84173cdc2cc..775fae93ee9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json index 4b8769ff181..097b63dd769 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json index 2fface95693..4c92a855efa 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json index dce760e3846..d3d695d0f09 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json index 2d0d86adf8d..c75c96accdf 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json index 8dc14b3b7e1..d0444677d60 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json index 3e370bfe703..c7952537671 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/opv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/opv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/opv/side", "top": "gtceu:block/casings/voltage/opv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json index 1825409ec39..3a74ff80f90 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/steam/bronze/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/steam/bronze/side", "top": "gtceu:block/casings/steam/bronze/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/steam/bronze/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/steam/bronze/side", "top": "gtceu:block/casings/steam/bronze/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json index 9701b8039ad..634e5cb66fa 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/steam_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/steam/bronze/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/steam/bronze/side", "top": "gtceu:block/casings/steam/bronze/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/steam/bronze/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/steam/bronze/side", "top": "gtceu:block/casings/steam/bronze/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json index cda7e4bd0e6..af1b0fca24d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json index a4a1cf3ec0e..c8dfee5b643 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json index efbcb73f71c..4b3150d04bd 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json index fcd4cf06686..37151126681 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json index 2f1763e88c2..edf3354cd31 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json index 86adaac674d..909b5be4c02 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json index c3dd55b1e66..42f8ed7322c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json index adb4a6db937..955a4525ae2 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json index 243518e3af5..cb9d37722c5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json index 5ca3bb2cb12..f241a9a344a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json index 94e1ab27d45..45a3c77d785 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json index a2ffb54e397..fdb79a2ab2e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json index 8ea4174c681..895ac0102e9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json index 7b82c4923dc..80478799d75 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json index fa257e412ca..f6bdfed8051 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json index f9363246d3d..e7d4d28912f 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json index 98e4e5a8a5e..28fcc48a735 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uev_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uev/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uev/side", "top": "gtceu:block/casings/voltage/uev/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json index 4aa1fa37a5d..91d1400e863 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json index 502963b1d95..ecb475a86d3 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json index b75ffa77604..2f165b5eff1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json index cdc49112ce2..c36ee7a60c9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json index 4364bbc5548..f986a1b308f 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json index bd8b7d25e9b..e16e67e69b3 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json index 9919d354b26..5fe10d8d313 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json index 02d324b20b1..d64d0b7ce92 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json index 288a1c7dc19..f3861294655 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json index 3c748a57413..074d676e6a8 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json index 5bfc2bb345d..53220f28bf9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json index 518308aa7ff..16e23fa0094 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json index 835923715f4..30021e01a4b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json index 4ecb5e95acd..3d581b448d5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json index 408330013c3..2e73b1c2cfc 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json index 6d3f196b848..980b6b5738e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json index 486596953f2..ec0d2e3dcd1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uhv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uhv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uhv/side", "top": "gtceu:block/casings/voltage/uhv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json index a507c4b0657..0f3c931c26b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json index e7dea0ab913..ca0429318c4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json index 0c0753d5300..fb41af858b0 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json index e15b322ec56..24f03d65d75 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json index 73d5157da9b..e49881bf0fb 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json index cf3faa376ed..4ab67fc490b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json index 03067e139e7..f31f8627a4a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json index fdfdc53e173..692ad755c9d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json index f37874650be..71e800cd74d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json index ed2daf4d4de..ad4119f76ce 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json index e90c299347c..4b9a99c1738 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json index 08688fc2408..26b69242c08 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json index d46d6921f4d..72b1a674e85 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json index 9dbaa70b57f..11212f56d67 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json index 18a51698b8a..e6264513543 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json index ef8071a0ef4..c8b9f4c932c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json index aac90a48c46..45df909caee 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uiv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uiv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uiv/side", "top": "gtceu:block/casings/voltage/uiv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json index e57123d54c3..6e6aeee52da 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json index fa99273ad5b..691353a8a71 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json index 4342297ebc8..4891b9c2797 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json index 626b4fe9362..03aa212c457 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json index 3247169e4a9..bbb52e92d67 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json index 43a6d703c8f..9ab374bde5c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json index 9129247beb0..9e7fb11a4ef 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json index 6818911b758..bb01d9a887e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json index a31011cab97..79ee4a35aa4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json index 076baa11764..8eeab3d4959 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json index f51d43b623f..8079368f2bd 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json index ddb874a9a2e..dda72d670c1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/ulv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/ulv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/ulv/side", "top": "gtceu:block/casings/voltage/ulv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json index 559758e2d25..47b5e0aff7b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json index c55fb015dbf..459596ee63d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json index ca77188de2c..28e2f3bb55f 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json index 12b23ef7c47..be0b20243e6 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json index 72bc14ca481..9971133b00d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json index 138b988221c..6909e2c6298 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json index 08e7fc03221..27c5ef7053e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json index ce04ed537f4..3502846e076 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json index a1f5472b57f..3cf2adee71e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json index 9d55ae1578d..d0daad4c252 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json index 426efc13a2e..0715bae4101 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json index b127e36e25c..375c995de3b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json index e71d63fbb0c..e66063bf712 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json index d57a78f94a5..4067d8ad8d7 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json index 855793f8358..52eae135edb 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json index db0f2f01172..fa1d93c3df5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json index 670228619a9..3b839155667 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uv/side", "top": "gtceu:block/casings/voltage/uv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json index af241085359..18c1b5172e4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json index 8db8895e1da..097e33dff78 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json index 0a97997cef1..0d418890885 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json index 7651338cda6..9fb7773afed 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json index 1f994eae90b..f6c93f15c71 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json index 3df12901a49..23510926a16 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json index 2e617e987d4..6377fea136e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json index 849c9296b06..5b9c97c5905 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json index 77ebb4d2b8a..f2a61d8112d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json index 94810240aaf..dd83959ec9a 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json index 1ef5492c8d3..dbbfd2c68d8 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json index 4d700eadac6..70c95b9abf2 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json index 8fb21208a3e..4050b75da17 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json index 865f5c5d9dc..21f7efebca4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json index 345367d9f56..5c9dec3b981 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json index 34632455722..24631965390 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json index 4d2d49b9d1d..20f13202ac4 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/uxv_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/uxv/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/uxv/side", "top": "gtceu:block/casings/voltage/uxv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json index 8dbb1a47c72..284f4be5aa1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_16a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json index 80ebb3c2f1c..4e393f33ee9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_1a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json index 8e87c12755e..3151b477bc2 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_4a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json index 7f1432676e4..3dcdacae0ad 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_8a_energy_converter.json @@ -9,8 +9,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_out_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,8 +24,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/converter/converter_native_in", + "overlay_out_io_emissive": "gtceu:block/overlay/converter/converter_native_in_emissive", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json index faadf4ef702..ae61d017bb5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_diode.json @@ -14,8 +14,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -28,8 +30,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -42,8 +46,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -56,8 +62,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -70,8 +78,10 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json index e38e0c5d516..6a8d3fe5631 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json index 0038a9264bb..303b95b7edc 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json index 5e131afbd5d..3927f45ef4c 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json index ced09b6b8c2..90a08f34d78 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_input_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json index b03ccaff473..b60823a6975 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_bus.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_item_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json index 8d4c4ad9fec..e5bb1f949d9 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch.json @@ -10,10 +10,10 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -22,10 +22,10 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json index 2b2cc2bf58d..a6d648d8df5 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_4x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_4x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_4x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json index adb81d41ddf..f374dd5281d 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_output_hatch_9x.json @@ -10,11 +10,12 @@ "variants": { "is_painted=false": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } @@ -22,11 +23,12 @@ }, "is_painted=true": { "model": { - "parent": "gtceu:block/overlay/2_layer/front_emissive_color_ring", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive_color_ring", "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_9x", + "overlay": "gtceu:block/overlay/machine/overlay_pipe_out_emissive", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch_half_px_out", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe_9x", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json index 5b358301cb7..ff3c1d3b07e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_16a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json index db18084a2af..8d505b57b07 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_1a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json index e2b1894965e..cc15ae67af1 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_2a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_2a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_2a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_8a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_8a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_8a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json index bd56b163ade..d7dc424ae6b 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/zpm_transformer_4a.json @@ -9,8 +9,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" @@ -23,8 +24,9 @@ "textures": { "bottom": "gtceu:block/casings/voltage/zpm/bottom", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_4a_out", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", - "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive", "overlay_out_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", "side": "gtceu:block/casings/voltage/zpm/side", "top": "gtceu:block/casings/voltage/zpm/top" diff --git a/src/main/resources/assets/gtceu/models/block/rubber_leaves.json b/src/generated/resources/assets/gtceu/models/block/rubber_leaves.json similarity index 100% rename from src/main/resources/assets/gtceu/models/block/rubber_leaves.json rename to src/generated/resources/assets/gtceu/models/block/rubber_leaves.json diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java index 019f0679d87..7f771960908 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/BuilderBase.java @@ -5,6 +5,7 @@ import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.kubejs.generator.DataJsonGenerator; +import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; @@ -19,7 +20,7 @@ public BuilderBase(ResourceLocation id) { public void generateDataJsons(DataJsonGenerator generator) {} - public void generateAssetJsons(AssetJsonGenerator generator) {} + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) {} public void generateLang(LangEventJS lang) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index a5195b06096..bd3adc5d099 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -242,25 +242,29 @@ public MachineBuilder overlayTieredHullModel(ResourceLocation overla } public MachineBuilder colorOverlayTieredHullModel(String overlay) { - return colorOverlayTieredHullModel(overlay, null); + return colorOverlayTieredHullModel(overlay, null, null); } public MachineBuilder colorOverlayTieredHullModel(String overlay, + @Nullable String pipeOverlay, @Nullable String emissiveOverlay) { ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + pipeOverlay); ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); - return colorOverlayTieredHullModel(overlayTex, emissiveOverlayTex); + return colorOverlayTieredHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { - return colorOverlayTieredHullModel(overlay, null); + return colorOverlayTieredHullModel(overlay, null, null); } public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); - return model(createColorOverlayTieredHullMachineModel(overlay, emissiveOverlay)); + return model(createColorOverlayTieredHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } public MachineBuilder overlaySteamHullModel(String name) { @@ -273,25 +277,29 @@ public MachineBuilder overlaySteamHullModel(ResourceLocation overlay } public MachineBuilder colorOverlaySteamHullModel(String overlay) { - return colorOverlaySteamHullModel(overlay, null); + return colorOverlaySteamHullModel(overlay, null, null); } public MachineBuilder colorOverlaySteamHullModel(String overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable String emissiveOverlay) { ResourceLocation overlayTex = new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + overlay); + ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : + new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + pipeOverlay); ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : new ResourceLocation(registrate.getModid(), "block/overlay/machine/" + emissiveOverlay); - return colorOverlaySteamHullModel(overlayTex, emissiveOverlayTex); + return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { - return colorOverlaySteamHullModel(overlay, null); + return colorOverlaySteamHullModel(overlay, null, null); } public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); - return model(createColorOverlaySteamHullMachineModel(overlay, emissiveOverlay)); + return model(createColorOverlaySteamHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } public MachineBuilder workableTieredHullModel(ResourceLocation workableModel) { @@ -437,7 +445,7 @@ protected DEFINITION createDefinition() { } @Override - public void generateAssetJsons(AssetJsonGenerator generator) { + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { super.generateAssetJsons(generator); KJSCallWrapper.generateAssetJsons(generator, this, this.value); } @@ -591,7 +599,7 @@ protected static class BlockBuilderWrapper { .color(() -> () -> IMachineBlock::colorTinted) .initialProperties(() -> Blocks.DISPENSER) .properties(BlockBehaviour.Properties::noLootTable) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> RenderType::cutout) .exBlockstate(builder.blockModel != null ? builder.blockModel : createMachineModel(builder.model)) .properties(builder.blockProp) .onRegister(b -> Arrays.stream(builder.abilities).forEach(a -> a.register(builder.tier, b))); @@ -626,20 +634,23 @@ protected static class ItemBuilderWrapper { protected static final class KJSCallWrapper { - public static void generateAssetJsons(AssetJsonGenerator generator, + public static void generateAssetJsons(@Nullable AssetJsonGenerator generator, MachineBuilder builder, D definition) { if (builder.model() == null && builder.blockModel() == null) return; final ResourceLocation id = definition.getId(); - // Fake a data provider for the GT model builders - var context = new DataGenContext<>(definition::getBlock, definition.getName(), id); - if (builder.blockModel() != null) { - builder.blockModel().accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + // if generator is null, we're making the block models through GT + if (generator == null) { + // Fake a data provider for the GT model builders + var context = new DataGenContext<>(definition::getBlock, definition.getName(), id); + if (builder.blockModel() != null) { + builder.blockModel().accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } else { + GTMachineModels.createMachineModel(builder.model()).accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + } } else { - GTMachineModels.createMachineModel(builder.model()).accept(context, RUNTIME_BLOCKSTATE_PROVIDER); + generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/").toString())); } - - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/").toString())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index acfc208b47b..bc78ec0f230 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -231,8 +231,10 @@ public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay) { } @Override - public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay, @Nullable String emissiveOverlay) { - return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, emissiveOverlay); + public MultiblockMachineBuilder colorOverlayTieredHullModel(String overlay, + @Nullable String pipeOverlay, + @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override @@ -242,8 +244,9 @@ public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation ove @Override public MultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { - return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, emissiveOverlay); + return (MultiblockMachineBuilder) super.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override @@ -309,14 +312,17 @@ public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay) { } @Override - public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay, @Nullable String emissiveOverlay) { - return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, emissiveOverlay); + public MultiblockMachineBuilder colorOverlaySteamHullModel(String overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable String emissiveOverlay) { + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override public MultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { - return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, emissiveOverlay); + return (MultiblockMachineBuilder) super.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java index 945b47e4c4b..3f8c67b78bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -1,9 +1,7 @@ package com.gregtechceu.gtceu.client.model.machine; -import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; -import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -14,43 +12,37 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.ModelData; import com.mojang.blaze3d.vertex.PoseStack; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; -public interface IMachineRendererModel extends IBlockEntityRendererBakedModel { +public interface IMachineRendererModel { MachineDefinition getDefinition(); - @ApiStatus.NonExtendable - @Override - default @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, - @NotNull RandomSource rand, @NotNull ModelData data, - @Nullable RenderType renderType) { - return Collections.emptyList(); - } - + @OnlyIn(Dist.CLIENT) default @NotNull List getRenderQuads(@Nullable T machine, @Nullable BlockAndTintGetter level, @Nullable BlockPos pos, @Nullable BlockState blockState, @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { - return getQuads(blockState, side, rand, modelData, renderType); + return Collections.emptyList(); } + @OnlyIn(Dist.CLIENT) void render(T machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay); + @OnlyIn(Dist.CLIENT) default void renderByItem(ItemStack stack, ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource buffer, int packedLight, int packedOverlay) {} @@ -62,66 +54,16 @@ default boolean shouldRender(T machine, Vec3 cameraPos) { return Vec3.atCenterOf(machine.self().getPos()).closerThan(cameraPos, this.getViewDistance()); } + default int getViewDistance() { + return 64; + } + default AABB getRenderBoundingBox(T machine) { BlockPos pos = machine.self().getPos(); return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); } - // region default impls - - @Override - default BlockEntityType getBlockEntityType() { - return getDefinition().getBlockEntityType(); - } - - @ApiStatus.NonExtendable - @SuppressWarnings("unchecked") - @Override - default void render(@NotNull BlockEntity blockEntity, float partialTick, - @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, - int packedLight, int packedOverlay) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; - if (machineBE.getDefinition() != getDefinition()) return; - - this.render((T) machineBE.getMetaMachine(), partialTick, - poseStack, buffer, packedLight, packedOverlay); - } - - @ApiStatus.NonExtendable - @SuppressWarnings("unchecked") - @Override - default boolean shouldRenderOffScreen(@NotNull BlockEntity blockEntity) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) - return IBlockEntityRendererBakedModel.super.shouldRenderOffScreen(blockEntity); - if (machineBE.getDefinition() != getDefinition()) - return IBlockEntityRendererBakedModel.super.shouldRenderOffScreen(blockEntity); - - return this.shouldRenderOffScreen((T) machineBE.getMetaMachine()); - } - - @ApiStatus.NonExtendable - @SuppressWarnings("unchecked") - @Override - default boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) - return IBlockEntityRendererBakedModel.super.shouldRender(blockEntity, cameraPos); - if (machineBE.getDefinition() != getDefinition()) - return IBlockEntityRendererBakedModel.super.shouldRender(blockEntity, cameraPos); - - return this.shouldRender((T) machineBE.getMetaMachine(), cameraPos); - } - - @ApiStatus.NonExtendable - @SuppressWarnings("unchecked") - @Override - default AABB getRenderBoundingBox(BlockEntity blockEntity) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) - return IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); - if (machineBE.getDefinition() != getDefinition()) - return IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); - - return this.getRenderBoundingBox((T) machineBE.getMetaMachine()); + default boolean isCustomRenderer() { + return false; } - - // endregion } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index d4773607797..97c44302242 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.client.model.machine; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid; @@ -8,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.client.model.BaseBakedModel; +import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; import com.gregtechceu.gtceu.client.model.SpriteCapturer; import com.gregtechceu.gtceu.client.model.TextureOverrideModel; import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; @@ -37,6 +39,8 @@ import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -60,7 +64,7 @@ import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, - IMachineRendererModel { + IMachineRendererModel, IBlockEntityRendererBakedModel { public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); @@ -460,4 +464,30 @@ public boolean shouldRender(MetaMachine machine, Vec3 cameraPos) { } return false; } + + @Override + public int getViewDistance() { + int distance = 0; + if (dynamicRenders.isEmpty()) return distance; + + for (DynamicRender model : dynamicRenders) { + distance = Math.max(distance, model.getViewDistance()); + } + return distance; + } + + @Override + public BlockEntityType getBlockEntityType() { + return getDefinition().getBlockEntityType(); + } + + @Override + public void render(@NotNull BlockEntity blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, + int packedLight, int packedOverlay) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + if (machineBE.getDefinition() != getDefinition()) return; + + this.render(machineBE.getMetaMachine(), partialTick, poseStack, buffer, packedLight, packedOverlay); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java index e0d4b3d5db9..562066bc62c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModelLoader.java @@ -9,11 +9,9 @@ import com.gregtechceu.gtceu.client.model.machine.variant.MultiVariantModel; import com.gregtechceu.gtceu.client.model.machine.variant.VariantState; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; -import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderManager; import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.renderer.block.model.*; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.client.resources.model.UnbakedModel; @@ -22,11 +20,9 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.Property; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.ModelEvent; import net.minecraftforge.client.model.ExtendedBlockModelDeserializer; import net.minecraftforge.client.model.geometry.IGeometryLoader; import net.minecraftforge.common.util.TransformationHelper; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import com.google.common.base.Splitter; @@ -69,26 +65,8 @@ public class MachineModelLoader implements IGeometryLoader private static final Splitter EQUAL_SPLITTER = Splitter.on('=').limit(2); private static final UnbakedModel MISSING_MARKER = new BasicUnbakedModel(); - private static final Map>> DYNAMIC_RENDERERS = new HashMap<>(); - private MachineModelLoader() {} - @SubscribeEvent - public static void loadDynamicModels(ModelEvent.ModifyBakingResult event) { - if (DYNAMIC_RENDERERS.isEmpty()) return; - - Map models = event.getModels(); - for (var entry : DYNAMIC_RENDERERS.entrySet()) { - ResourceLocation machineId = entry.getKey(); - for (DynamicRender renderer : entry.getValue()) { - String rendererName = renderer.getType().getId().getPath(); - - String fakeModelPath = DynamicRenderManager.MODEL_ID_FORMATTER.apply(machineId.getPath(), rendererName); - models.put(machineId.withPath(fakeModelPath), renderer); - } - } - } - @Override public @Nullable UnbakedMachineModel read(JsonObject json, JsonDeserializationContext context) throws JsonParseException { @@ -168,7 +146,6 @@ public static void loadDynamicModels(ModelEvent.ModifyBakingResult event) { .getOrThrow(false, LOGGER::error); dynamicRenders.add(render); } - DYNAMIC_RENDERERS.put(machineId, dynamicRenders); } // CTM info etc. diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java index 44e05895cc3..22f87c63a89 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/overlays/EnergyIOOverlay.java @@ -12,30 +12,42 @@ public class EnergyIOOverlay { public static final EnergyIOOverlay ENERGY_IN_1A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in"); + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_in", + "block/overlay/machine/overlay_energy_1a_in_emissive"); public static final EnergyIOOverlay ENERGY_IN_2A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in"); + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_in", + "block/overlay/machine/overlay_energy_2a_in_emissive"); public static final EnergyIOOverlay ENERGY_IN_4A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in"); + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_in", + "block/overlay/machine/overlay_energy_4a_in_emissive"); public static final EnergyIOOverlay ENERGY_IN_8A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in"); + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_in", + "block/overlay/machine/overlay_energy_8a_in_emissive"); public static final EnergyIOOverlay ENERGY_IN_16A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in"); + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_in", + "block/overlay/machine/overlay_energy_16a_in_emissive"); public static final EnergyIOOverlay ENERGY_IN_64A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in"); + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_in", + "block/overlay/machine/overlay_energy_64a_in_emissive"); public static final EnergyIOOverlay ENERGY_OUT_1A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out"); + "block/overlay/machine/overlay_energy_1a_tinted", "block/overlay/machine/overlay_energy_1a_out", + "block/overlay/machine/overlay_energy_1a_out_emissive"); public static final EnergyIOOverlay ENERGY_OUT_2A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out"); + "block/overlay/machine/overlay_energy_2a_tinted", "block/overlay/machine/overlay_energy_2a_out", + "block/overlay/machine/overlay_energy_2a_out_emissive"); public static final EnergyIOOverlay ENERGY_OUT_4A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out"); + "block/overlay/machine/overlay_energy_4a_tinted", "block/overlay/machine/overlay_energy_4a_out", + "block/overlay/machine/overlay_energy_4a_out_emissive"); public static final EnergyIOOverlay ENERGY_OUT_8A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out"); + "block/overlay/machine/overlay_energy_8a_tinted", "block/overlay/machine/overlay_energy_8a_out", + "block/overlay/machine/overlay_energy_8a_out_emissive"); public static final EnergyIOOverlay ENERGY_OUT_16A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out"); + "block/overlay/machine/overlay_energy_16a_tinted", "block/overlay/machine/overlay_energy_16a_out", + "block/overlay/machine/overlay_energy_16a_out_emissive"); public static final EnergyIOOverlay ENERGY_OUT_64A = new EnergyIOOverlay( - "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out"); + "block/overlay/machine/overlay_energy_64a_tinted", "block/overlay/machine/overlay_energy_64a_out", + "block/overlay/machine/overlay_energy_64a_out_emissive"); public static final Int2ObjectMap IN_OVERLAYS_FOR_AMP = Util.make(new Int2ObjectArrayMap<>(6), map -> { @@ -63,9 +75,12 @@ public class EnergyIOOverlay { private final ResourceLocation tintedPart; @Getter private final ResourceLocation ioPart; + @Getter + private final ResourceLocation ioPartEmissive; - public EnergyIOOverlay(String tintedPart, String ioPart) { + public EnergyIOOverlay(String tintedPart, String ioPart, String ioPartEmissive) { this.tintedPart = GTCEu.id(tintedPart); this.ioPart = GTCEu.id(ioPart); + this.ioPartEmissive = GTCEu.id(ioPartEmissive); } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java index 76f0efd81be..bec9ee74e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/FacadeCoverRenderer.java @@ -188,7 +188,7 @@ public void renderCover(List quads, Direction side, RandomSource rand Direction attachedSide = coverBehavior.attachedSide; BakedModel model = Minecraft.getInstance().getBlockRenderer().getBlockModel(state); - ModelData extraData = model.getModelData(level, BlockPos.ZERO, state, modelData); + ModelData extraData = model.getModelData(level, pos, state, modelData); List facadeQuads = model.getQuads(state, attachedSide, rand, extraData, renderType); facadeQuads = new LinkedList<>(facadeQuads); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index 32a81d59694..8dbef2db4bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -44,16 +44,16 @@ default void renderCovers(List quads, @NotNull ICoverable coverable, var cover = coverable.getCoverAtSide(face); if (cover != null) { if (thickness > 0 && cover.shouldRenderPlate()) { - double min = thickness; - double max = 1d - thickness; + double min = thickness + 0.01; + double max = 0.99 - thickness; var normal = face.getNormal(); var cube = new AABB( - normal.getX() > 0 ? max : 0.001, - normal.getY() > 0 ? max : 0.001, - normal.getZ() > 0 ? max : 0.001, - normal.getX() >= 0 ? 0.999 : min, - normal.getY() >= 0 ? 0.999 : min, - normal.getZ() >= 0 ? 0.999 : min); + normal.getX() > 0 ? max : 0.01, + normal.getY() > 0 ? max : 0.01, + normal.getZ() > 0 ? max : 0.01, + normal.getX() >= 0 ? 0.99 : min, + normal.getY() >= 0 ? 0.99 : min, + normal.getZ() >= 0 ? 0.99 : min); if (side == null) { // render back quads.add(FaceQuad.builder(face.getOpposite(), COVER_BACK_PLATE[0]) .cube(cube).cubeUV().bake()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java index 780132d81cb..358e2ab7a8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java @@ -2,7 +2,6 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; -import com.gregtechceu.gtceu.client.model.BaseBakedModel; import com.gregtechceu.gtceu.client.model.machine.IMachineRendererModel; import com.gregtechceu.gtceu.client.model.machine.MachineModel; @@ -11,7 +10,7 @@ import lombok.Setter; import org.jetbrains.annotations.NotNull; -public abstract class DynamicRender> extends BaseBakedModel +public abstract class DynamicRender> implements Comparable>, IMachineRendererModel { public static final Codec> CODEC = DynamicRenderManager.TYPE_CODEC diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java index cb0bbcab46a..fb5e254216e 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FusionRingRender.java @@ -96,11 +96,6 @@ private void renderLightRing(FusionReactorMachine machine, float partialTicks, P r, g, b, alpha, axis); } - @Override - public boolean useAmbientOcclusion() { - return false; - } - @Override public boolean shouldRenderOffScreen(FusionReactorMachine machine) { return machine.recipeLogic.isWorking() || delta > 0; @@ -115,6 +110,4 @@ public int getViewDistance() { public AABB getRenderBoundingBox(FusionReactorMachine machine) { return new AABB(machine.getPos()).inflate(getViewDistance() / 2.0D); } - - public static void initType() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index 998b48f011b..20e4672d50a 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -34,12 +34,13 @@ public class StaticFaceBakery { public static final AABB COVER_OVERLAY = new AABB(-.008f, -.008f, -.008f, 1.008f, 1.008f, 1.008f); - public static final int VERTEX_INT_SIZE = 8; + private static final int VERTEX_INT_SIZE = 8; private static final float RESCALE_22_5 = 1.0F / (float) Math.cos((float) (Math.PI / 8)) - 1.0F; private static final float RESCALE_45 = 1.0F / (float) Math.cos((float) (Math.PI / 4)) - 1.0F; - public static final int VERTEX_COUNT = 4; + private static final int VERTEX_COUNT = 4; + private static final int POSITION_INDEX = 0; private static final int COLOR_INDEX = 3; - public static final int UV_INDEX = 4; + private static final int UV_INDEX = 4; /** * bake a quad of specific face. @@ -208,9 +209,9 @@ private static void bakeVertex(int[] vertexData, int vertexIndex, Direction faci private static void fillVertex(int[] vertexData, int vertexIndex, Vector3f face, TextureAtlasSprite sprite, BlockFaceUV blockFaceUV) { int i = vertexIndex * VERTEX_INT_SIZE; - vertexData[i] = Float.floatToRawIntBits(face.x()); - vertexData[i + 1] = Float.floatToRawIntBits(face.y()); - vertexData[i + 2] = Float.floatToRawIntBits(face.z()); + vertexData[i + POSITION_INDEX] = Float.floatToRawIntBits(face.x()); + vertexData[i + POSITION_INDEX + 1] = Float.floatToRawIntBits(face.y()); + vertexData[i + POSITION_INDEX + 2] = Float.floatToRawIntBits(face.z()); vertexData[i + COLOR_INDEX] = 0xffffffff; vertexData[i + UV_INDEX] = Float.floatToRawIntBits( sprite.getU(blockFaceUV.getU(vertexIndex) * 0.999 + blockFaceUV.getU((vertexIndex + 2) % 4) * 0.001)); @@ -318,23 +319,24 @@ private static void recalculateWinding(int[] vertices, Direction direction) { FaceInfo faceInfo = FaceInfo.fromFacing(direction); for (int vert1 = 0; vert1 < 4; ++vert1) { - int e1 = 8 * vert1; + int e1 = vert1 * VERTEX_INT_SIZE; FaceInfo.VertexInfo vertexInfo = faceInfo.getVertexInfo(vert1); float x1 = shape[vertexInfo.xFace]; float y1 = shape[vertexInfo.yFace]; float z1 = shape[vertexInfo.zFace]; - vertices[e1] = Float.floatToRawIntBits(x1); - vertices[e1 + 1] = Float.floatToRawIntBits(y1); - vertices[e1 + 2] = Float.floatToRawIntBits(z1); + vertices[e1 + POSITION_INDEX] = Float.floatToRawIntBits(x1); + vertices[e1 + POSITION_INDEX + 1] = Float.floatToRawIntBits(y1); + vertices[e1 + POSITION_INDEX + 2] = Float.floatToRawIntBits(z1); for (int vert2 = 0; vert2 < 4; ++vert2) { - int e2 = 8 * vert2; - float x2 = Float.intBitsToFloat(verticesCopy[e2]); - float y2 = Float.intBitsToFloat(verticesCopy[e2 + 1]); - float z2 = Float.intBitsToFloat(verticesCopy[e2 + 2]); + int e2 = vert2 * VERTEX_INT_SIZE; + float x2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX]); + float y2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX + 1]); + float z2 = Float.intBitsToFloat(verticesCopy[e2 + POSITION_INDEX + 2]); + if (Mth.equal(x1, x2) && Mth.equal(y1, y2) && Mth.equal(z1, z2)) { - vertices[e1 + 4] = verticesCopy[e2 + 4]; - vertices[e1 + 4 + 1] = verticesCopy[e2 + 4 + 1]; + vertices[e1 + UV_INDEX] = verticesCopy[e2 + UV_INDEX]; + vertices[e1 + UV_INDEX + 1] = verticesCopy[e2 + UV_INDEX + 1]; } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index 043ed94bdfe..e8c35c03a89 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -737,7 +737,9 @@ public static ItemColor leavesItemColor() { .block("rubber_leaves", LeavesBlock::new) .initialProperties(() -> Blocks.OAK_LEAVES) .lang("Rubber Leaves") - .exBlockstate(GTModels.createModelBlockState(GTCEu.id("block/rubber_leaves"))) + .blockstate((ctx, prov) -> { + prov.simpleBlock(ctx.get(), prov.models().leaves(ctx.getName(), prov.blockTexture(ctx.get()))); + }) .loot((table, block) -> table.add(block, table.createLeavesDrops(block, GTBlocks.RUBBER_SAPLING.get(), RUBBER_LEAVES_DROPPING_CHANCE))) .tag(BlockTags.LEAVES, BlockTags.MINEABLE_WITH_HOE) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 48d47000a8e..d8ee6825b54 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -539,7 +539,7 @@ public class GTMachines { } }) .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumTankRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumTankRender))) .hasBER(true) .register(); @@ -557,7 +557,7 @@ public class GTMachines { } }) .model(createBasicMachineModel(GTCEu.id("block/machine/template/quantum/creative_container")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumChestRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumChestRender))) .hasBER(true) .register(); @@ -603,7 +603,7 @@ public class GTMachines { .langValue(VNF[tier] + " Input Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.IMPORT_ITEMS) - .colorOverlayTieredHullModel("overlay_pipe_in", OVERLAY_ITEM_HATCH) + .colorOverlayTieredHullModel("overlay_pipe_in_emissive", null, OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) @@ -617,7 +617,7 @@ public class GTMachines { .langValue(VNF[tier] + " Output Bus") .rotationState(RotationState.ALL) .abilities(PartAbility.EXPORT_ITEMS) - .colorOverlayTieredHullModel("overlay_pipe_out", OVERLAY_ITEM_HATCH) + .colorOverlayTieredHullModel("overlay_pipe_out_emissive", null, OVERLAY_ITEM_HATCH) .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.universal.tooltip.item_storage_capacity", (1 + Math.min(9, tier)) * (1 + Math.min(9, tier)))) @@ -626,37 +626,37 @@ public class GTMachines { ALL_TIERS); public final static MachineDefinition[] FLUID_IMPORT_HATCH = registerFluidHatches( - "input_hatch", "Input Hatch", "overlay_pipe_in", "fluid_hatch.import", + "input_hatch", "Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_4X = registerFluidHatches( - "input_hatch_4x", "Quadruple Input Hatch", "overlay_pipe_in_4x", "fluid_hatch.import", + "input_hatch_4x", "Quadruple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_IMPORT_HATCH_9X = registerFluidHatches( - "input_hatch_9x", "Nonuple Input Hatch", "overlay_pipe_in_9x", "fluid_hatch.import", + "input_hatch_9x", "Nonuple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_9X); public final static MachineDefinition[] FLUID_EXPORT_HATCH = registerFluidHatches( - "output_hatch", "Output Hatch", "overlay_pipe_out", "fluid_hatch.export", + "output_hatch", "Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_1X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_4X = registerFluidHatches( - "output_hatch_4x", "Quadruple Output Hatch", "overlay_pipe_out_4x", "fluid_hatch.export", + "output_hatch_4x", "Quadruple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_4X); public final static MachineDefinition[] FLUID_EXPORT_HATCH_9X = registerFluidHatches( - "output_hatch_9x", "Nonuple Output Hatch", "overlay_pipe_out_9x", "fluid_hatch.export", + "output_hatch_9x", "Nonuple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_9X); @@ -818,7 +818,7 @@ public class GTMachines { .machine("steam_input_bus", holder -> new SteamItemBusPartMachine(holder, IN)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_IMPORT_ITEMS) - .colorOverlaySteamHullModel("overlay_pipe_in", OVERLAY_ITEM_HATCH) + .colorOverlaySteamHullModel("overlay_pipe_in_emissive", null, OVERLAY_ITEM_HATCH) .langValue("Steam Input Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.import.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), @@ -830,7 +830,7 @@ public class GTMachines { .machine("steam_output_bus", holder -> new SteamItemBusPartMachine(holder, OUT)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_EXPORT_ITEMS) - .colorOverlaySteamHullModel("overlay_pipe_out", OVERLAY_ITEM_HATCH) + .colorOverlaySteamHullModel("overlay_pipe_out_emissive", null, OVERLAY_ITEM_HATCH) .langValue("Steam Output Bus") .tooltips(Component.translatable("gtceu.machine.item_bus.export.tooltip"), Component.translatable("gtceu.machine.steam_bus.tooltip"), diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index f71c0f993d2..21b1605e0d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -134,7 +134,7 @@ public static void init() {} .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_chemical_bath")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::makeRecipeFluidAreaRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_CENTRIFUGE = REGISTRATE @@ -195,7 +195,7 @@ public static void init() {} .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), GTCEu.id("block/multiblock/gcym/large_mixer")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::makeRecipeFluidAreaRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); public final static MultiblockMachineDefinition LARGE_ELECTROLYZER = REGISTRATE diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index cb1c33acb0b..169fd3dbad2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -196,16 +196,25 @@ public static Pair registerSteamMachines(S return Pair.of(lowTier, highTier); } - public static MachineDefinition[] registerFluidHatches(String name, String displayname, String overlayTexture, - String tooltip, IO io, int initialCapacity, int slots, + public static MachineDefinition[] registerFluidHatches(String name, String displayName, String tooltip, + IO io, int initialCapacity, int slots, int[] tiers, PartAbility... abilities) { + final String pipeOverlay; + if (slots >= 9) { + pipeOverlay = "overlay_pipe_9x"; + } else if (slots >= 4) { + pipeOverlay = "overlay_pipe_4x"; + } else { + pipeOverlay = null; + } + final String ioOverlay = io == OUT ? "overlay_pipe_out_emissive" : "overlay_pipe_in_emissive"; final String emissiveOverlay = slots > 4 ? OVERLAY_FLUID_HATCH_HALF_PX_TEX : OVERLAY_FLUID_HATCH_TEX; return registerTieredMachines(name, (holder, tier) -> new FluidHatchPartMachine(holder, tier, io, initialCapacity, slots), (tier, builder) -> { - builder.langValue(VNF[tier] + ' ' + displayname) + builder.langValue(VNF[tier] + ' ' + displayName) .rotationState(RotationState.ALL) - .colorOverlayTieredHullModel(overlayTexture, emissiveOverlay) + .colorOverlayTieredHullModel(ioOverlay, pipeOverlay, emissiveOverlay) .abilities(abilities) .tooltips(Component.translatable("gtceu.machine." + tooltip + ".tooltip")) .allowCoverOnFront(true); @@ -427,21 +436,21 @@ public static MachineDefinition registerDrum(Material material, int capacity, St return definition; } - public static MachineDefinition[] registerQuantumTanks(String tank_type, int... tiers) { + public static MachineDefinition[] registerQuantumTanks(String name, int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); var register = REGISTRATE.machine( - GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + tank_type, + GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, MachineDefinition::new, (holder) -> new QuantumTankMachine(holder, tier, maxAmount), MetaMachineBlock::new, QuantumTankMachineItem::new, MetaMachineBlockEntity::new) - .langValue(toEnglishName(tank_type) + " " + LVT[tier]) + .langValue(toEnglishName(name) + " " + LVT[tier]) .blockProp(BlockBehaviour.Properties::dynamicShape) .rotationState(RotationState.ALL) .allowExtendedFacing(true) .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_tank")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumTankRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumTankRender))) .hasBER(true) .tooltipBuilder(TANK_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_tank.tooltip"), @@ -455,17 +464,17 @@ public static MachineDefinition[] registerQuantumTanks(String tank_type, int... return definitions; } - public static MachineDefinition[] registerQuantumChests(String chest_type, int... tiers) { - return registerTieredMachines(chest_type, + public static MachineDefinition[] registerQuantumChests(String name, int... tiers) { + return registerTieredMachines(name, (holder, tier) -> new QuantumChestMachine(holder, tier, tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), - (tier, builder) -> builder.langValue(toEnglishName(chest_type) + " " + LVT[tier]) + (tier, builder) -> builder.langValue(toEnglishName(name) + " " + LVT[tier]) .blockProp(BlockBehaviour.Properties::dynamicShape) .rotationState(RotationState.ALL) .allowExtendedFacing(true) .model(createTieredHullMachineModel(GTCEu.id("block/machine/template/quantum/quantum_chest")) .andThen( - b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createQuantumChestRender))) + b -> b.addDynamicRenderer(DynamicRenderHelper::createQuantumChestRender))) .hasBER(true) .tooltipBuilder(CHEST_TOOLTIPS) .tooltips(Component.translatable("gtceu.machine.quantum_chest.tooltip"), @@ -583,7 +592,7 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(texture, GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name))) - .andThen(b -> b.addDynamicRenderer(() -> () -> DynamicRenderHelper.makeBoilerPartRender(firebox, casing)))) + .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper.makeBoilerPartRender(firebox, casing)))) .tooltips( Component.translatable("gtceu.multiblock.large_boiler.max_temperature", maxTemperature + 274, maxTemperature), diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index c365c541dee..ff7393046d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -114,7 +114,7 @@ public class GTMultiMachines { .recipeType(GTRecipeTypes.PRIMITIVE_BLAST_FURNACE_RECIPES) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_primitive_bricks"), GTCEu.id("block/multiblock/primitive_blast_furnace")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createPBFLavaRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createPBFLavaRender))) .hasBER(true) .appearanceBlock(CASING_PRIMITIVE_BRICKS) .pattern(definition -> FactoryBlockPattern.start() @@ -638,7 +638,7 @@ public class GTMultiMachines { .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/steam_oven")) .andThen(b -> b.addDynamicRenderer( - () -> () -> DynamicRenderHelper.makeBoilerPartRender( + () -> DynamicRenderHelper.makeBoilerPartRender( BoilerFireboxType.BRONZE_FIREBOX, CASING_BRONZE_BRICKS)))) .register(); @@ -731,7 +731,7 @@ public class GTMultiMachines { .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(FusionReactorMachine.getCasingType(tier).getTexture(), GTCEu.id("block/multiblock/fusion_reactor")) - .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper::createFusionRingRender))) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createFusionRingRender))) .hasBER(true) .register(), LuV, ZPM, UV); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index b95cf976c9a..c1891d5109e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -78,10 +78,10 @@ public class GTMachineModels { public static final ResourceLocation LP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_bronze"); public static final ResourceLocation HP_STEAM_HULL_MODEL = GTCEu.id("block/casings/steam/bricked_steel"); - public static final ResourceLocation OVERLAY_MODEL = GTCEu.id("block/overlay/front"); - public static final ResourceLocation OVERLAY_COLOR_RING_MODEL = GTCEu.id("block/overlay/front_color_ring"); - public static final ResourceLocation OVERLAY_EMISSIVE_MODEL = GTCEu.id("block/overlay/2_layer/front_emissive"); - public static final ResourceLocation OVERLAY_EMISSIVE_COLOR_RING_MODEL = GTCEu.id("block/overlay/2_layer/front_emissive_color_ring"); + public static final ResourceLocation HATCH_PART_MODEL = GTCEu.id("block/machine/template/part/hatch_machine"); + public static final ResourceLocation HATCH_PART_COLOR_RING_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_color_ring"); + public static final ResourceLocation HATCH_PART_EMISSIVE_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_emissive"); + public static final ResourceLocation HATCH_PART_EMISSIVE_COLOR_RING_MODEL = GTCEu.id("block/machine/template/part/hatch_machine_emissive_color_ring"); // spotless:on // region generic models @@ -123,10 +123,12 @@ public static MachineBuilder.ModelInitializer createOverlayTieredHullMachineMode } public static MachineBuilder.ModelInitializer createColorOverlayTieredHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { return (ctx, prov, builder) -> { builder.forAllStatesModels(state -> { - BlockModelBuilder model = colorOverlayHullModel(overlay, emissiveOverlay, state, prov.models()); + BlockModelBuilder model = colorOverlayHullModel(overlay, pipeOverlay, emissiveOverlay, state, + prov.models()); return tieredHullTextures(model, builder.getOwner().getTier()); }); @@ -177,10 +179,12 @@ public static MachineBuilder.ModelInitializer createOverlaySteamHullMachineModel } public static MachineBuilder.ModelInitializer createColorOverlaySteamHullMachineModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { return (ctx, prov, builder) -> { builder.forAllStatesModels(state -> { - BlockModelBuilder model = colorOverlayHullModel(overlay, emissiveOverlay, state, prov.models()); + BlockModelBuilder model = colorOverlayHullModel(overlay, pipeOverlay, emissiveOverlay, state, + prov.models()); steamCasingTextures(model, state.getOptionalValue(SteamMachine.STEEL_PROPERTY).orElse(false)); return model; }); @@ -364,6 +368,11 @@ public static MachineBuilder.ModelInitializer createChargerModel() { public static final ResourceLocation CONVERTER_FE_IN = GTCEu.id("block/overlay/converter/converter_native_in"); public static final ResourceLocation CONVERTER_FE_OUT = GTCEu.id("block/overlay/converter/converter_native_out"); + public static final ResourceLocation CONVERTER_FE_IN_EMISSIVE = GTCEu + .id("block/overlay/converter/converter_native_in_emissive"); + public static final ResourceLocation CONVERTER_FE_OUT_EMISSIVE = GTCEu + .id("block/overlay/converter/converter_native_out_emissive"); + public static MachineBuilder.ModelInitializer createConverterModel(int amperage) { return (ctx, prov, builder) -> { final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(amperage); @@ -373,12 +382,17 @@ public static MachineBuilder.ModelInitializer createConverterModel(int amperage) .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) .texture("overlay_in_io", energyIn.getIoPart()) .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_in_io_emissive", energyIn.getIoPartEmissive()) + .texture("overlay_out_io_emissive", CONVERTER_FE_OUT_EMISSIVE) .texture("overlay_out_io", CONVERTER_FE_OUT); tieredHullTextures(euToFeModel, builder.getOwner().getTier()); + BlockModelBuilder feToEuModel = prov.models().nested() .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) .texture("overlay_in_io", energyOut.getIoPart()) .texture("overlay_in_tinted", energyOut.getTintedPart()) + .texture("overlay_in_io_emissive", energyOut.getIoPartEmissive()) + .texture("overlay_out_io_emissive", CONVERTER_FE_IN_EMISSIVE) .texture("overlay_out_io", CONVERTER_FE_IN); tieredHullTextures(feToEuModel, builder.getOwner().getTier()); @@ -417,8 +431,10 @@ public static MachineBuilder.ModelInitializer createDiodeModel() { BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) + .texture("overlay_in_io_emissive", energyIn.getIoPartEmissive()) .texture("overlay_in_io", energyIn.getIoPart()) .texture("overlay_in_tinted", energyIn.getTintedPart()) + .texture("overlay_out_io_emissive", energyOut.getIoPartEmissive()) .texture("overlay_out_io", energyOut.getIoPart()) .texture("overlay_out_tinted", energyOut.getTintedPart()); tieredHullTextures(model, builder.getOwner().getTier()); @@ -441,8 +457,9 @@ public static MachineBuilder.ModelInitializer createTransformerModel(int baseAmp BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(TRANSFORMER_LIKE)) .texture("overlay_in_io", frontFace.getIoPart()) + .texture("overlay_in_io_emissive", frontFace.getIoPartEmissive()) .texture("overlay_in_tinted", frontFace.getTintedPart()) - .texture("overlay_out_io", otherFace.getIoPart()) + .texture("overlay_out_io_emissive", otherFace.getIoPartEmissive()) .texture("overlay_out_tinted", otherFace.getTintedPart()); tieredHullTextures(model, builder.getOwner().getTier()); return model; @@ -550,7 +567,7 @@ public static MachineBuilder.ModelInitializer createMaintenanceModel(ResourceLoc } // spotless:off - public static final ResourceLocation HPCA_PART_MODEL = GTCEu.id("block/machine/template/hpca_part_machine"); + public static final ResourceLocation HPCA_PART_MODEL = GTCEu.id("block/machine/template/part/hpca_part_machine"); public static final ResourceLocation COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/computer_casing/"); public static final ResourceLocation ADVANCED_COMPUTER_CASING_TEXTURE = GTCEu.id("block/casings/hpca/advanced_computer_casing/"); @@ -703,19 +720,23 @@ public static ConfiguredModel[] addWorkableOverlays(WorkableOverlays overlays, R return ConfiguredModel.builder().modelFile(model).build(); } - public static BlockModelBuilder colorOverlayHullModel(ResourceLocation overlayTexture, - @Nullable ResourceLocation emissiveOverlayTexture, + public static BlockModelBuilder colorOverlayHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay, MachineRenderState state, BlockModelProvider models) { ResourceLocation parent; if (state.getOptionalValue(IPaintable.IS_PAINTED_PROPERTY).orElse(false)) { - parent = emissiveOverlayTexture != null ? OVERLAY_EMISSIVE_COLOR_RING_MODEL : OVERLAY_COLOR_RING_MODEL; + parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_COLOR_RING_MODEL : HATCH_PART_COLOR_RING_MODEL; } else { - parent = emissiveOverlayTexture != null ? OVERLAY_EMISSIVE_MODEL : OVERLAY_MODEL; + parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_MODEL : HATCH_PART_MODEL; } BlockModelBuilder model = models.nested().parent(models.getExistingFile(parent)) - .texture("overlay", overlayTexture); - if (emissiveOverlayTexture != null) { - model.texture("overlay_emissive", emissiveOverlayTexture); + .texture("overlay", overlay); + if (emissiveOverlay != null) { + model.texture("overlay_emissive", emissiveOverlay); + } + if (pipeOverlay != null) { + model.texture("overlay_pipe", pipeOverlay); } return model; } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java index 430c4aaaf2c..879daf6d2bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java @@ -33,6 +33,7 @@ public String getRefMapperConfig() { addModCompatMixin("ftbchunks"); addModCompatMixin("xaerominimap"); addModCompatMixin("xaeroworldmap"); + addModCompatMixin("kubejs"); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java index daa07fa51f0..1307d144649 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.client.renderer.item.TagPrefixItemRenderer; import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; import com.gregtechceu.gtceu.common.data.models.GTModels; +import com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -42,6 +43,10 @@ public abstract class ModelManagerMixin { ArmorItemRenderer.reinitModels(); SurfaceRockRenderer.reinitModels(); GTModels.registerMaterialFluidModels(); + + if (GTCEu.Mods.isKubeJSLoaded()) { + GregTechKubeJSPlugin.generateMachineBlockModels(); + } GTCEu.LOGGER.info("GregTech Model loading took {}ms", System.currentTimeMillis() - startTime); } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java new file mode 100644 index 00000000000..f0b755f15a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java @@ -0,0 +1,22 @@ +package com.gregtechceu.gtceu.core.mixins.kubejs; + +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; + +import dev.latvian.mods.kubejs.forge.KubeJSForge; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.function.Supplier; + +@Mixin(value = KubeJSForge.class, remap = false) +public class KubeJSForgeMixin { + + @Redirect(method = "", + at = @At(value = "INVOKE", + target = "Lnet/minecraftforge/fml/DistExecutor;safeRunWhenOn(Lnet/minecraftforge/api/distmarker/Dist;Ljava/util/function/Supplier;)V")) + private void gtceu$unsafeRunWhenOnPleaseAndThankYou(Dist dist, Supplier toRun) { + DistExecutor.unsafeRunWhenOn(dist, () -> () -> toRun.get().run()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java index 494b2282a46..27284c95f96 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/model/builder/MachineModelBuilder.java @@ -170,8 +170,8 @@ public static JsonObject configuredModelToJSON(ConfiguredModel model, boolean in * * @param render The {@link DynamicRender dynamic render} to add */ - public MachineModelBuilder addDynamicRenderer(Supplier>> render) { - this.dynamicRenders.add(render.get().get()); + public MachineModelBuilder addDynamicRenderer(Supplier> render) { + this.dynamicRenders.add(render.get()); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java index 5c9d3856317..bb5522a00f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicResourcePack.java @@ -75,6 +75,18 @@ public static void clearClient() { CONTENTS.clearData(); } + public static void addResource(ResourceLocation location, JsonElement obj) { + addResource(location, obj.toString().getBytes(StandardCharsets.UTF_8)); + } + + public static void addResource(ResourceLocation location, byte[] data) { + if (ConfigHolder.INSTANCE.dev.dumpAssets) { + Path parent = GTCEu.getGameDir().resolve("gtceu/dumped/assets"); + writeJson(location, null, parent, data); + } + CONTENTS.addToData(location, data); + } + public static void addBlockModel(ResourceLocation loc, JsonElement obj) { ResourceLocation l = getBlockModelLocation(loc); byte[] modelBytes = obj.toString().getBytes(StandardCharsets.UTF_8); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 70d22de9b74..c141da29bda 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -68,6 +68,7 @@ import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; +import com.gregtechceu.gtceu.data.pack.GTDynamicResourcePack; import com.gregtechceu.gtceu.data.recipe.CraftingComponent; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; @@ -206,23 +207,28 @@ public void generateDataJsons(DataJsonGenerator generator) { GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateDataJsons(generator)); } - public static RuntimeBlockStateProvider RUNTIME_BLOCKSTATE_PROVIDER = null; + // Fake a data provider for the GT model builders so we don't need to handle this ourselves in any way :3 + public static RuntimeBlockStateProvider RUNTIME_BLOCKSTATE_PROVIDER = new RuntimeBlockStateProvider( + GTRegistration.REGISTRATE, new PackOutput(KubeJSPaths.DIRECTORY), + (loc, json) -> { + if (!loc.getPath().endsWith(".json")) { + loc = loc.withSuffix(".json"); + } + GTDynamicResourcePack.addResource(loc, json); + }); + + public static void generateMachineBlockModels() { + GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> { + try { + builderBase.generateAssetJsons(null); + } catch (IllegalStateException ignored) {} + }); + GregTechKubeJSPlugin.RUNTIME_BLOCKSTATE_PROVIDER.run(); + } @Override public void generateAssetJsons(AssetJsonGenerator generator) { - // Fake a data provider for the GT model builders so we don't need to handle this ourselves in any way :3 - RUNTIME_BLOCKSTATE_PROVIDER = new RuntimeBlockStateProvider(GTRegistration.REGISTRATE, - new PackOutput(KubeJSPaths.DIRECTORY), - (loc, json) -> { - if (loc.getPath().endsWith(".json")) { - loc = loc.withPath(p -> p.substring(0, p.length() - 5)); - } - generator.json(loc, json); - }); - GTRegistryInfo.ALL_BUILDERS.forEach(builderBase -> builderBase.generateAssetJsons(generator)); - - RUNTIME_BLOCKSTATE_PROVIDER = null; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 6b7eb98d8c3..40fe737db52 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -14,19 +14,23 @@ import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import lombok.Setter; import lombok.experimental.Accessors; +import org.jetbrains.annotations.Nullable; @Accessors(fluent = true, chain = true) public class KJSSteamMachineBuilder extends BuilderBase { @Setter - public volatile boolean hasHighPressure = true; + public volatile boolean hasLowPressure = true, hasHighPressure = true; @Setter public volatile SteamCreationFunction machine = SimpleSteamMachine::new; @Setter public volatile SteamDefinitionFunction definition = (isHP, def) -> def.tier(isHP ? 1 : 0); - private volatile MachineDefinition hp = null; + + private volatile MachineBuilder lowPressureBuilder = null, highPressureBuilder = null; + private volatile MachineDefinition hpValue = null; public KJSSteamMachineBuilder(ResourceLocation id) { super(id); @@ -34,19 +38,21 @@ public KJSSteamMachineBuilder(ResourceLocation id) { @Override public MachineDefinition register() { - MachineBuilder lowPressureBuilder = GTRegistration.REGISTRATE.machine( - String.format("lp_%s", this.id.getPath()), - holder -> machine.create(holder, false)); - lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) - .tier(0) - .recipeModifier(SimpleSteamMachine::recipeModifier) - .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) - .workableSteamHullModel(false, id.withPrefix("block/machines/")); - definition.apply(false, lowPressureBuilder); - var lowPressure = lowPressureBuilder.register(); + if (hasLowPressure) { + this.lowPressureBuilder = GTRegistration.REGISTRATE.machine( + String.format("lp_%s", this.id.getPath()), + holder -> machine.create(holder, false)); + lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) + .tier(0) + .recipeModifier(SimpleSteamMachine::recipeModifier) + .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .workableSteamHullModel(false, id.withPrefix("block/machines/")); + definition.apply(false, lowPressureBuilder); + value = lowPressureBuilder.register(); + } if (hasHighPressure) { - MachineBuilder highPressureBuilder = GTRegistration.REGISTRATE.machine( + this.highPressureBuilder = GTRegistration.REGISTRATE.machine( String.format("hp_%s", this.id.getPath()), holder -> machine.create(holder, true)); highPressureBuilder.langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) @@ -55,21 +61,39 @@ public MachineDefinition register() { .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) .workableSteamHullModel(true, id.withPrefix("block/machines/")); definition.apply(true, highPressureBuilder); - hp = highPressureBuilder.register(); + hpValue = highPressureBuilder.register(); } - return value = lowPressure; + return value != null ? value : hpValue; + } + + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + if (this.lowPressureBuilder != null) { + this.lowPressureBuilder.generateAssetJsons(generator); + } + if (this.highPressureBuilder != null) { + this.highPressureBuilder.generateAssetJsons(generator); + } } @Override public void generateLang(LangEventJS lang) { super.generateLang(lang); - lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); - if (hp != null) { - lang.add(GTCEu.MOD_ID, hp.getDescriptionId(), hp.getLangValue()); + if (value != null) { + lang.add(GTCEu.MOD_ID, value.getDescriptionId(), value.getLangValue()); + } + if (hpValue != null) { + lang.add(GTCEu.MOD_ID, hpValue.getDescriptionId(), hpValue.getLangValue()); } } + @Override + public MachineDefinition get() { + return value != null ? value : hpValue; + } + @FunctionalInterface public interface SteamCreationFunction { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index b772a74378c..487f95b503d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -20,6 +20,7 @@ import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.BiFunction; @@ -57,7 +58,7 @@ public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machi } @Override - public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { super.generateAssetJsons(generator); for (int tier : this.tiers) { MachineBuilder builder = this.builders[tier]; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index d0dbb6d9af2..fa3c762d8d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -17,6 +17,7 @@ import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Locale; @@ -44,7 +45,7 @@ public KJSTieredMultiblockBuilder(ResourceLocation id, TieredCreationFunction ma } @Override - public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { super.generateAssetJsons(generator); for (int tier : this.tiers) { MultiblockMachineBuilder builder = this.builders[tier]; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java index b01ff855356..fe7c7b2c9f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java @@ -12,6 +12,7 @@ import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -57,7 +58,7 @@ public void generateDataJsons(@NotNull DataJsonGenerator generator) { } @Override - public void generateAssetJsons(@NotNull AssetJsonGenerator generator) { + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { tieredBuilder.generateAssetJsons(generator); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index c6d2cf71db4..feb4f2331d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -13,9 +13,11 @@ import net.minecraft.resources.ResourceLocation; import dev.latvian.mods.kubejs.client.LangEventJS; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -45,6 +47,12 @@ public KJSWrappingMultiblockBuilder definition(KJSTieredMultiblockBuilder.Defini return this; } + @Override + public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { + super.generateAssetJsons(generator); + tieredBuilder.generateAssetJsons(generator); + } + @Override public void generateLang(@NotNull LangEventJS lang) { super.generateLang(lang); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java index d2bf2777f9e..0a58a4276c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/built/KJSTagPrefix.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.integration.kjs.built; +import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; @@ -24,15 +25,21 @@ public KJSTagPrefix(String name) { public static KJSTagPrefix oreTagPrefix(String name) { return new KJSTagPrefix(name) - .prefixTagPath("ores/%s/%s") .defaultTagPath("ores/%s") .prefixOnlyTagPath("ores_in_ground/%s") .unformattedTagPath("ores") .materialIconType(MaterialIconType.ore) .unificationEnabled(true) + .blockConstructor(OreBlock::new) .generationCondition(hasOreProperty); } + @Override + public KJSTagPrefix blockConstructor(BlockConstructor blockConstructor) { + super.blockConstructor(blockConstructor); + return this; + } + @Override public KJSTagPrefix defaultTagPath(String path) { return this.defaultTagPath(path, false); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java index 7125b63eb81..e6e7c50d4c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/data/RuntimeExistingFileHelper.java @@ -10,6 +10,8 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraftforge.common.data.ExistingFileHelper; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; import org.jetbrains.annotations.NotNull; import java.io.FileNotFoundException; @@ -28,6 +30,8 @@ public class RuntimeExistingFileHelper extends ExistingFileHelper { public static final RuntimeExistingFileHelper INSTANCE = new RuntimeExistingFileHelper(); + protected final Multimap generated = HashMultimap.create(); + protected RuntimeExistingFileHelper() { super(Collections.emptySet(), Collections.emptySet(), false, null, null); } @@ -51,7 +55,7 @@ protected ResourceLocation getLocation(ResourceLocation base, String prefix, Str @Override public boolean exists(ResourceLocation loc, PackType packType) { - return true; + return generated.get(packType).contains(loc) || getManager(packType).getResource(loc).isPresent(); } @Override @@ -60,7 +64,9 @@ public void trackGenerated(ResourceLocation loc, IResourceType type) { } @Override - public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) {} + public void trackGenerated(ResourceLocation loc, PackType packType, String suffix, String prefix) { + this.generated.put(packType, getLocation(loc, prefix, suffix)); + } @Override public Resource getResource(ResourceLocation loc, PackType packType, diff --git a/src/main/resources/assets/gtceu/models/block/computer_casing.json b/src/main/resources/assets/gtceu/models/block/computer_casing.json index bde8cee512e..c1546bd79c7 100644 --- a/src/main/resources/assets/gtceu/models/block/computer_casing.json +++ b/src/main/resources/assets/gtceu/models/block/computer_casing.json @@ -1,25 +1,13 @@ { - "parent": "block/block", + "parent": "block/orientable_with_bottom", "textures": { "particle": "#side", + "south": "#back", + "bottom": "gtceu:block/casings/hpca/computer_casing/bottom", "top": "gtceu:block/casings/hpca/computer_casing/top", "front": "gtceu:block/casings/hpca/computer_casing/front", "back": "gtceu:block/casings/hpca/computer_casing/back", "side": "gtceu:block/casings/hpca/computer_casing/side" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "texture": "#bottom", "cullface": "down" }, - "up": { "texture": "#top", "cullface": "up" }, - "north": { "texture": "#front", "cullface": "north" }, - "south": { "texture": "#back", "cullface": "south" }, - "west": { "texture": "#side", "cullface": "west" }, - "east": { "texture": "#side", "cullface": "east" } - } - } - ] + } } diff --git a/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json index ffc84d19d35..a947b062dd7 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json +++ b/src/main/resources/assets/gtceu/models/block/machine/large_miner_active.json @@ -1,7 +1,7 @@ { "parent": "gtceu:block/machine/template/cube_all/sided", "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in" + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe" }, "elements": [ { @@ -46,7 +46,7 @@ "from": [ 0, 0, 16 ], "to": [ 16, -16, 32 ], "faces": { - "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "down" } + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "down" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json index a4ed4b44d28..9531074ca92 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_input_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay": "gtceu:block/overlay/machine/overlay_pipe", "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json index ac78fb16806..9531074ca92 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/dual_output_hatch.json @@ -1,7 +1,7 @@ { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe", "overlay_emissive": "gtceu:block/overlay/machine/overlay_dual_hatch" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json index 2ec76854c12..5931befe7c9 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json index 7fb34dbe35a..a999c1576e6 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_16a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json index 4f2728cb396..dde0d7be917 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_4a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json index 60ece75e5f3..aa9f019bcf6 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_input_hatch_64a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_in", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_in_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_in_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json index 4fe025e4248..fd733b7b6c2 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_2a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_2a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json index a600fdd0d6f..2955f4fa761 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_16a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_16a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_16a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_16a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_16a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_16a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json index c096bd42e82..7f84a0143f1 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_4a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_4a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_4a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_4a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_4a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_4a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json index 6f54bf2e834..95e582f2955 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/energy_output_hatch_64a.json @@ -1,7 +1,45 @@ { "parent": "gtceu:block/overlay/2_layer/tinted/front", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_energy_64a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_64a_tinted" - } + "overlay_tint": "gtceu:block/overlay/machine/overlay_energy_64a_tinted", + "overlay_in": "gtceu:block/overlay/machine/overlay_energy_64a_in", + "overlay_out_emissive": "gtceu:block/overlay/machine/overlay_energy_64a_out_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tint", "cullface": "north", "tintindex": 2 } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json index 00323340941..32aff8650d3 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/fluid_passthrough_hatch.json @@ -2,10 +2,11 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_fluid_hatch_input": "gtceu:block/overlay/machine/overlay_fluid_hatch_input", "overlay_fluid_hatch_output": "gtceu:block/overlay/machine/overlay_fluid_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" }, "elements": [ { @@ -21,16 +22,26 @@ } }, { - "from": [ -0.002, 0, -0.002 ], - "to": [ 16.002, 16, 16.002 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } } }, { - "from": [ -0.004, 0, -0.004 ], - "to": [ 16.004, 16, 16.004 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_input", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_fluid_hatch_output", "cullface": "south" } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json index fead829d98f..5f8e4612daa 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/item_passthrough_hatch.json @@ -2,10 +2,11 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe", + "overlay_pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", "overlay_item_hatch_input": "gtceu:block/overlay/machine/overlay_item_hatch_input", "overlay_item_hatch_output": "gtceu:block/overlay/machine/overlay_item_hatch_output", - "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + "overlay_pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" }, "elements": [ { @@ -21,16 +22,26 @@ } }, { - "from": [ -0.002, 0, -0.002 ], - "to": [ 16.002, 16, 16.002 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe", "cullface": "south" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_in", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_pipe_out", "cullface": "south" } } }, { - "from": [ -0.004, 0, -0.004 ], - "to": [ 16.004, 16, 16.004 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_input", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_item_hatch_output", "cullface": "south" } diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json index f9b598d7dc0..a8ef933babf 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_source_hatch.json @@ -1,7 +1,46 @@ { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "credit": "Made with Blockbench", + "parent": "block/block", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_source", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } + "overlay_laser": "gtceu:block/overlay/machine/overlay_laser_base", + "overlay_laser_source": "gtceu:block/overlay/machine/overlay_laser_source", + "overlay_laser_source_emissive": "gtceu:block/overlay/machine/overlay_laser_source_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_source", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_source_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json index 321d713a420..cf63be221a6 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/laser_target_hatch.json @@ -1,7 +1,46 @@ { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "credit": "Made with Blockbench", + "parent": "block/block", "textures": { - "overlay": "gtceu:block/overlay/machine/overlay_laser_target", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_laser_tinted" - } + "overlay_laser": "gtceu:block/overlay/machine/overlay_laser_base", + "overlay_laser_target": "gtceu:block/overlay/machine/overlay_laser_target", + "overlay_laser_target_emissive": "gtceu:block/overlay/machine/overlay_laser_target_emissive" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_target", "cullface": "north" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_laser_target_emissive", "cullface": "north" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json index 888891d70f9..f47920c6990 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json +++ b/src/main/resources/assets/gtceu/models/block/machine/part/pump_hatch.json @@ -1,11 +1,11 @@ { - "parent": "gtceu:block/overlay/2_layer/front_emissive", + "parent": "gtceu:block/machine/template/part/hatch_machine_emissive", "textures": { "bottom": "gtceu:block/casings/pump_deck/bottom", "top": "gtceu:block/casings/pump_deck/top", "side": "#top", - "overlay": "gtceu:block/overlay/machine/overlay_pipe_out", + "overlay": "gtceu:block/overlay/machine/overlay_pipe", "overlay_emissive": "gtceu:block/overlay/machine/overlay_fluid_hatch" } } \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json new file mode 100644 index 00000000000..29f956e853a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine.json @@ -0,0 +1,36 @@ +{ + "parent": "gtceu:block/overlay/front", + "textures": { + "overlay_pipe": "gtceu:block/overlay/machine/overlay_pipe" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json new file mode 100644 index 00000000000..4ebf302f607 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_color_ring.json @@ -0,0 +1,45 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine", + "textures": { + "overlay_color": "gtceu:block/overlay/machine/overlay_color" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json new file mode 100644 index 00000000000..8310a3f292f --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive.json @@ -0,0 +1,42 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json new file mode 100644 index 00000000000..92b4f71d6b6 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/part/hatch_machine_emissive_color_ring.json @@ -0,0 +1,51 @@ +{ + "parent": "gtceu:block/machine/template/part/hatch_machine_color_ring", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "texture": "#overlay_pipe", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_emissive", "cullface": "north", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.04 ], + "to": [ 16, 16, -0.04 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "texture": "#overlay_color", "cullface": "north", "tintindex": 9 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/part/hpca_part_machine.json similarity index 100% rename from src/main/resources/assets/gtceu/models/block/machine/template/hpca_part_machine.json rename to src/main/resources/assets/gtceu/models/block/machine/template/part/hpca_part_machine.json diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json index c02f2f1a781..473f06c3bcd 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pipeline_endpoint_machine.json @@ -6,8 +6,9 @@ "top": "gtceu:block/casings/voltage/lv/top", "side": "gtceu:block/casings/voltage/lv/side", - "pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in", - "pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out" + "pipe": "gtceu:block/overlay/machine/overlay_pipe", + "pipe_in": "gtceu:block/overlay/machine/overlay_pipe_in_emissive", + "pipe_out": "gtceu:block/overlay/machine/overlay_pipe_out_emissive" }, "elements": [ { @@ -23,8 +24,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#pipe_in", "rotation": 0, "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#pipe_out", "rotation": 0, "cullface": "south" }, @@ -35,23 +36,33 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe", "cullface": "south" } + } + }, + { + "from": [ -0.03, -0.03, -0.03 ], + "to": [ 16.03, 16.03, 16.03 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 0, "cullface": "up", "tintindex": -101 }, "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 180, "cullface": "down", "tintindex": -101 }, "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 90, "cullface": "west", "tintindex": -101 }, - "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 270, "cullface": "east", "tintindex": -101 } + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_emissive", "rotation": 270, "cullface": "east", "tintindex": -101 }, + "north": { "uv": [0, 0, 16, 16], "texture": "#pipe_in", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#pipe_out", "cullface": "south", "tintindex": -101 } } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.03, -0.03, -0.03 ], + "to": [ 16.03, 16.03, 16.03 ], "faces": { - "north": { "texture": "#hatch_in", "cullface": "north" }, - "south": { "texture": "#hatch_out", "cullface": "south" } + "north": { "uv": [0, 0, 16, 16], "texture": "#hatch_in", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#hatch_out", "cullface": "south" } } } ] diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json index 0ec079cff71..fb5c39bd191 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/pump_machine.json @@ -25,8 +25,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], "faces": { "up": { "uv": [0, 0, 16, 16], "texture": "#screen", "cullface": "up" }, "down": { "uv": [0, 0, 16, 16], "texture": "#hatch", "cullface": "down" }, @@ -36,8 +36,8 @@ } }, { - "from": [ 0, 16, 0 ], - "to": [ 16, 16.004, 16 ], + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json index b25cde6da73..aeb94496198 100644 --- a/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json +++ b/src/main/resources/assets/gtceu/models/block/machine/template/transformer_like_machine.json @@ -8,8 +8,10 @@ "side": "gtceu:block/casings/voltage/lv/side", "overlay_in_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_in_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_in_emissive", "overlay_in_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", - "overlay_out_io": "gtceu:block/overlay/converter/converter_native_out", + "overlay_out_io": "gtceu:block/overlay/machine/overlay_energy_1a_out", + "overlay_out_io_emissive": "gtceu:block/overlay/machine/overlay_energy_1a_out_emissive", "overlay_out_tinted": "gtceu:block/void" }, "elements": [ @@ -26,8 +28,8 @@ } }, { - "from": [ -0.002, -0.002, -0.002 ], - "to": [ 16.002, 16.002, 16.002 ], + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_io", "cullface": "north" }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io", "cullface": "south" }, @@ -38,8 +40,22 @@ } }, { - "from": [ -0.004, -0.004, -0.004 ], - "to": [ 16.004, 16.004, 16.004 ], + "from": [ -0.04, -0.04, -0.04 ], + "to": [ 16.04, 16.04, 16.04 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_io_emissive", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_io_emissive", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_in_tinted", "cullface": "north", "tintindex": 2 }, "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_out_tinted", "cullface": "south", "tintindex": 3 }, diff --git a/src/main/resources/assets/gtceu/models/block/miner_pipe.json b/src/main/resources/assets/gtceu/models/block/miner_pipe.json index 3f9e57f58b2..7f3fd5602c6 100644 --- a/src/main/resources/assets/gtceu/models/block/miner_pipe.json +++ b/src/main/resources/assets/gtceu/models/block/miner_pipe.json @@ -1,7 +1,7 @@ { "parent": "block/block", "textures": { - "particle": "gtceu:block/pipe/miner_pipe", + "particle": "#side", "side": "gtceu:block/pipe/miner_pipe", "end": "gtceu:block/pipe/pipe_normal_in" }, @@ -10,12 +10,12 @@ "from": [4, 0, 4], "to": [12, 16, 12], "faces": { - "up": {"texture": "#end", "cullface": "up"}, - "down": {"texture": "#end", "cullface": "down"}, - "north": {"texture": "#side", "cullface": "north"}, - "south": {"texture": "#side", "cullface": "south"}, - "west": {"texture": "#side", "cullface": "west"}, - "east": {"texture": "#side", "cullface": "east"} + "up": { "texture": "#end", "cullface": "up" }, + "down": { "texture": "#end", "cullface": "down" }, + "north": { "texture": "#side" }, + "south": { "texture": "#side" }, + "west": { "texture": "#side" }, + "east": { "texture": "#side" } } } ] diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/converter/converter_native_in_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..d240dc7dc20d6c5e2a50c4576f026c5edd37917b GIT binary patch literal 400 zcmV;B0dM|^P)LlQByJK@f$%l~fnfh4Xg*L#lKE`$Miz8>|FLk-|!U zfZ%@+ENxQC*(Q)~tJJ|NcOq$mXqmA{ZoR!bNs(79Z`qm0yxAEgBAkL2fKsaVFic}l z`6W(kK_YTE8gTh^Ax*q0phUz~(C_yF&{{W&=6Mc)wblu=szK*Bf$Z42d&jgL9|S!X zlci_H6VO_-W6O2-Rsk4e$g+%rKW^@&T3rkF4g1QzVT$UQHl}OPT4RiH!p0bQ+b0dv zSi&FzP-lhG>($(q)|gyE`A2F!2!jY~E!J9Rq2OT<@y@1h0S;d^MScE!U`(@x=lP!n zr%;}QBuN;iv8>l?LLlQC|>Fc^hDSI(RTA;l~VjBFmcLPsQeiFWJSp(|TY z(S-~20G-GQU|_+PP?yX^`a6Iv#|dKK4bhYG`{lit-%3Py1R6jo)qC+hn{||5_WRzD zh+H27_?k{-i01-IM4|(0EdW(j4T^g20jTRb3g~?3y=jD|8596mmt`kPN1&=IXc|_# zodR&qVT>X0&0-En?!F$hG zYkrr@_=WBDP&$*M*TK3h)xAaP;MOXqIa8jW?Kub-6~)avkU~9ro&N#f&YPDP3bvyF O0000&e=(85N>2Bj|xm#48i2rAED`uVix zpI{J|U)9Uhz30of&7UEedm(cw?}BXhw%K*QK|=03?B_j;OHmaRbg67+U|6?Wdgr4| zyCjAS+jtveZ?>N-JHrr=@^m?eaq~>Wi0^gp(q{EXe3~Q1kWe^7>d>mHhkN!&L?=p^ z=&BT6QMh@wZ%JylQ)7A0uZcbfS=X~3xF4~cRr=Ov^D7)n3V;7RIdhG4w!-5H%BLSG sZ@4ebx@lgb#13uE7op4c|37Aac1MBonw3}7fWBn#boFyt=akR{02qREAOHXW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_16a_out_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..fe23a50e3416e5b92dd39861961fa41aa65ed237 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP;j@W zi(`mI@6q7hyv+szwS5zA9-NxF;E>Sb6uxVo*F4NPg=DA3rm|m-(c<~1CgeJ=B!XqA+MsFm8%u1Rf`Y4e&pY^uN7w(dJCmn(gAPE-CF28GvBlY>&$94(EU zv3$Xim>{9I35WM)&QUt}^PI$iy-gdHq)$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_1a_in_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..b1331e3a8fc320d5068129857beb787e79e596d9 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%y*O z#WBR9H~G*1|MtwP4V_AN4s?>k%{Giw6lNmi)#h~lLb;NR-WPhZmf3}q`zme=gcBz ZhSF)$rQV-?^MUpe<-Xe4PLN|KH!VH~sd1ck#pO?tdLb#KexQl$b5k#+ZM9-|{=G8yK9~ tZXA)2*l>i&?x>5a^2&qa@tV`M;bw z)+|x6+L*AWb&bx+CDFHya(N;f7@W?9|848BTHyX=PiTX<>+Obh@534W*KTL@6mVE8 z(wV+iM6d6PQTUYGHpdHRDR>6YXlLvzrxwVBw^4YI-X-Bddn3i~z&J47a!PC{xWt~$(69A1;HxU2; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_4a_out_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..93770a2ba113703f977b3021b201d7a4ff5634fe GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP%zok z#WBR9H~G*1|MtwP4V_ANn-4LFl{9{?s;Xc<`r(qQn@HpT|Nj?1DBiW}|HY#T6?11v zwaL^Tc4(YCcLO7T-M=H53}%+Usvh24A1{$4adE|gbLTe1#mdS}ygTe~DWM4fF0nyo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_in_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..1671526e24e218df252a26b04beae5ddb51c4893 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkQ1G&+ zi(`mIZ}Ol2|LvJo8#EJ7_>P~{`G(U{yM`CMa9N7KmN>o7gUrinR-U_jH#eOG{I0 k`~Kek&{0Wt8*?TGKhCV;A5U*s1HH%K>FVdQ&MBb@0POa7UH||9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_64a_out_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..c2eefe8a32fbedbf6344d2346b825d1c7d8e1274 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkQ1FbW zi(`mI@7dtJT!#!K_IzPqqtJB0$$FWr*K|8q_4yYA#pM^ATdIFCyg<-;%B}e|e3JqK z6)!pNf9df~&r&bZrNuJ&Oc3)1l^cbAOb3pcY~*7~aXq-~i0$(yRdOzu6EdQ6R=?Wl z@1me2v)IG>v?7n^s}Pps7yLKRDG=So*SziEp+b?gO{~XmsQOqZ`Z!4egs@r?;EjM$1(Bi67+Sgt4ZkN2Y+Oe;Hjn4e4vy)pgWD+C9cI^v) e{pR`pk9^NhdVX~Cy3hpl7lWs(pUXO@geCy*V{u_5!EvF!25Rcidk1{{07vWb|s^ z{{i!zQNo0kl@&z|BXV9y-W2+ufsujX$B!Qje0;nNKYsjV`1$h}0}~@7!@qz37}z=3 p8Giow$*?SZ3nNwo$N>YNnE>ICo+Kl~hPD6z002ovPDHLkV1lablyCq5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_energy_8a_out_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca311b8966fe0a7fc0612c537a537b3cf465ae3 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkQ1GRv zi(`mI@73Uqd`%8Kwc&j1!ffiib&Zbs6C3xJU-5K4;$Ps{yVE7fVS}Gg*P}(eN@eJnw50FtB99I=j&rG+x3bmja`SbY*ueCaDD!J}^b^2GG^B28?B~zZ=n(lbO_s_Z8cV33ndmuuIeyZ`|+#6=^R5Jle!yySv>2HrEoetG)?Oc z{ra&c^s3=S@kIK;Uv`=iv_Dnn_JeZ4V=O z6M*1_ZI_ho(Q7>syho+kxR?ZZn3Hs7d`p!0@anw$9JZv%hhMU?v9YzW%YQg2WWX?c v{{27yd~Yxqiiu6RaBLZ;q(R>^RyKweFO_QSby$u8UBck$>gTe~DWM4f=G;T0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_laser_target_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..69dcb38e5ce57ffcc15ce3222452fbc0fa132240 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP_WU{ z#WBR9H~G*1|MtwP4V_ANn-4LFl`y{lS*Fo=Nc$*ndUv6xfzPJ7=R2-5u(7eV<$AVD zZtQG-|KR{fArEtc**7`Y-g!ycZfn{e@iMbAavWnf;1PH{>A*^f*)nb7akbTq>GnSw z?w74$JHVi4FKpt_fsSGDboFyt=akR{09C$1 AX#fBK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_4x.png index 65b8ba68a2641f17bc94e0e582dbc158e570f6f0..8bd50cf86d6e7cd0f679a17e7f2c6eb193728705 100644 GIT binary patch delta 360 zcmV-u0hj*Y0)qpPB!2;OQb$4o*~u(_00004XF*Lt006O%3;baP0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00009a7bBm001r{001r{0eGc9 zb^rhX>`6pHR5(xFkV}rjFc3taKY)c|EF>1(f-G}zE|P0x8Gk@VmXn^vhzyM~2bif{ zb-SLb4S!zd-E>_i&N;T*EwxtWc_xH_h>&weL^z#JT(8$9=idRl-HsR|YufMk02~en zHCF&*zQKLpFCk+LkH-Um%jL4XSp`^Y)zVsvF?!~`ifDjy4uF&r03yO>vmwTah_EJw ze^s658Sg#TT4APXTEGCcRs~pXFpeVt$Kw(2J;N~k1U^ns4L&~zpp>F~2tj#;d)?W# zEx+l0zbmf*DJ9P5GuB#i&V&#sr4T~kcDvCu4bSJ3f2J?T1xLyhV#6r_00006qGD=O3us;I0vBIAwfp*$U}jW-H5Oa+pHza`qIqzej zNPmi=DAZcZXf#4Zh%w@vLsjwKqpBAmJY|fLG))l^LHMhIfKzII{;B-1+jAg(7LPR*9&ooWLX0v%g7#yOiq8fWC+W9!= z-Y00E^>(`j=slR%>vdOC*Y$gYEX!Cfml$L4-s7C3X&Rh!R8_@vI^}-9_Y9K%|Ct^% W!G-_81RQ?=0000=c9B!2;OQb$4o*~u(_00004XF*Lt006O%3;baP0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00009a7bBm001r{001r{0eGc9 zb^rhYut`KgR9Hvtmdlc&FcgNrB#0M88q0;gi4X2WxfCy@g@14|3n~am>}E65Rl~O; z$sswHoF8Ch3&3Wx0pM^r^q!^r zCjTaZZ^1k7dR0&45zvk{ypnk7YmG?G||7r;FEtKAaO#6ajF% z-2h0_6cHiIGJoK8_)qXUp!MhKbR%<7#+X_I9M)Q_6|~lb;RK}=N@+v{V+=tMyy?St49Y;W=4DxOy1l93vw21x%7JL`vW5y$reo zB2wS#$z+038l@D*7(@hXrIi_|y5LhM49dXiRMmLBUQ?E3U31qN=kpmDCf`3+!X`lw zv}!9-zD4es&1SvxjzJmN?RNFEF{U+!VUat$4s;_LBCkzctNQr8U&ACxfLG*Ba@`+~ wt8Jd=ttav2asevY26#LkeBz&HU}R+E4;wdfoB!3BTNLh0L01m_e01m_fl`9S#0003ZNklZ8+*$7Mlh|{r2zsD9jM76NVyPsGpu}-G1!N@UPJG?EdLobrd;)>*XM=6q zMmeK>-)CoIpRItxS}OpAqyX5((LIfIUE>fSxm#$PlN9INE`QeuK@b7woB)un>x85f zMIj_*nkE4tWm)>1q*p8&f$gpyWk0))Nbe#HVvO@UhQWIPfXwrJm|JV(n()#2&lK67il_v(H8#eGbI#}L3H68)3qepP45|5%LLsxFtgh0x#d1+xDMM*S`NE`@(8@7n! z7){d3t!tA(a& zRI62*%_h}q70a@y)oL^v4HQ)&ilW0i(6v0C=TR({kWx~qROoa%R4NtpLjLeuP!xsp zrE#Q`NEs7`AplVnA%wtp0}R7R1SI05lmJ{`xW=y=ci3I6lQT4grrVkOs+Q%qAv=JiA%Vyi(wc84^Bm$yaz9Q_#9ri|4kr~ z2Oh*o>aF{@pXCxAq&&DZGQ-=?-vH7cjJ{$rs!S&WQXb^Be5MCNRl0lN25zPY#bGlw z#FPi?_0>!do__L~?jF?Jdzl{8hDN%3VEIm_2kZ5f?jG#5b{K#4G1Qzm@IcL}bfOMR zOFvU{E@lUm%VqSN!%T{E0}oDBoxBHcefc`JZ?WCnr0F+k2kqWG2s;7qy!ak)Ob_mE zEoXWFboU^P{Y(#{u#*~M$^%7FGd<9Bt-A+7*v|Bz@B7=HV>f}AR`oS!dXQvn|jpIfxzwa!w<80HBouhf6361yX zKLU>Ff$dxUc~Hoi{du4svOnnC1Krg7^FVfFZypFuW%kM}!{#U(jWw3;-0uFr@J|oc ze%NEnXkptnu diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_in_4x.png deleted file mode 100644 index 297f1f8278e42d9226d8d44dcdc26844237f9d57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1193 zcmV;a1XlZrP)*fRE@i;;VHWn6%(oj6WvMh8>&)-}aB7{KE6oe25cM#FTBoYZ!Rime;8zBVA zWD>`5Xc;~m_zJ!=P!xrx>K3GwNa>NyX7f*1Rh5kGU>HX64y2R-Tpzv0ugmv%IKM#1 z&}n?JicHEy*n(6lRXiXTi*f75ZB$joucVwhHc}gb zL-ciESr#3&odE}O*E93Kl=eVV^r9ZL?w%{{!2@$8??GV~s;ZK&B#2R)ac4tU@T&@_#$-A%^F$C;YClMhKIlg!S}Qde1D+Jl`;D(^v|OscA~v^7`S zgH3ClmN(9#h19$UO~Wy=BFpsj&(x(Z6%UBTVnl9Upk2Lq>cNSsqxaz5Z{EVp?6CG| zg-4lfcAeewJaDrP@4xgR@Pr=RU!5uH0Z`fl*UJ?3V9lKi9AaQzP!w(7cLN~=dPFbn zf#dFyNF-=Rr+ltUM3)&I|FjuJSxsH|Ggggt`1mJ@NK#sw36RrPhiE9OOaL zTqPP!`TioObzJJ`JsA49m-h1=G*`D^3!C59XIM|Ik(JrQd7!I0AB}tpJfR0>X6K)I zP!WpyJSdzO4&{NS={^q%gZA?v&_T|FefI}1A7Wl8^kDD2AhWVO4=jC^-tJzWk3P%t z_9D~w?v|bx_Ij{5vB|1oVVWi_(fH~6!Lh7=cYkmuR6%o18`VY?W+uf?f8J*0vmIXt z2ks9B1_t;;tS~V#fs~TAH_vlUY4rshxKGTzspmY%>^kM|6J6KM?-SQDK@S4+f>y9k z-1{lpgR572%HJmnPx$7ATsMc_C+?(8u8&@$uCkux?InI&xKE>5#{MAvRfrXJhdFx< z!!W3En*ZHCIhzsR}1e_xEN|FP&Y|^dNv?VIE&}=46GCMPynX&zQkAwa5 zcs#aec07Tq@{6oldmQ`u_j~rd@8|dY18S@7|7?`E@zSMBza*ls5)qVAP)b2-4Q2*2 zLqs4VP)fmZ94MudZDAN93_}2bh`{qaG@DI0j&t+s)vG_rp3BMgDmwW$0dxR#t6ZT{ zYEx^ytF_MkKG%VG=gy^{?Qd&W?Fa;bz;!&h+MU{W=flK5V8*tf!TqG;M%oo5D}a|e;y)&+qZ9nneoaiuYj5H)?05u zL~!}?WiT_2y7vH%x@9Q`0uz8h5YaQOkp7(Riply>_XuD@Tb*0Z0j(U6qU3-VE?j_! zpxtgK>&%RHyA2UZ*6k7u13-%Vf35>-&N@gF`uwEuD$BO@j|LziY@OBtW}aCW5!||U zD~W-0pQqQE8CR}cfiWie|02bKnCn0g1ksn;0qMzIFt5+E`;aD((98ub+ya8=$HE@8 zsL!)8VVzmT<~)cTC`}9XIWxl;Gxc4=a{#Gu8!A#zG;ts=2ADZ{E~H~XM4+^)=D>!x z0i_j~|CL<1F{ZHJ?ca8vFfbqxihc2-TT5y5M(y*BMgXh1@6 zoZ{1zI$&*H#24Ki!UD+Tu3FfEYy@BY(HC*z570Tjj|aU^;12`z?hOC{jkV|yqzObo z=o=V6c4EvRA^5(3ItLn!2DH|j;n;A)qoJ@s7$5<_03^D<0Ze@o01^d~=*me5#EOY% zQ$&sycEIyIIF7UX=Fk7uX|-BiqA1x2!v>n+Ikc3*j^j*qfz1tl--qw}XfzsdT^Gif zO{2^%Gv8U*0j>2-t##?`v#1f#5r8{HbhGloYOAfb+CGz3^MO%c^V;|q-fIfwCOxP5P*najE0Ed`t|EmI^g#0+fzE>@bGXddv3e! z_-^Sh>p&Q{fXcn{^wsCJPTM;JVS!SeXSfmT=(i`?5#lpDQ0jrL!Hnh!saBu+TStj)I%P&u9L#vpW4TLN3 zffu)4f^rnz<_~hOut*!)zwdl_2VkJZr({I71t@;1*^?E;K$aI+C%_DF1xBPuM~~Ii zGoXkO=ElJ|tR~MX{$~%qC?m2lASRM%OFM89^r4I@yvp=rH;)mRAOuMTKF}Zc=kkG~ zbrC`6SL6fT;bSPRrmm`tl+DCNRX%X%{@Wl;7<{{f;geCkUBDs3ABF${?pg!DQ{n>> zfQc|n^8m5BUnpV#OaMJ4KG6RoI<3}vcbi^}`9PHK*<7&Z1GUvwTWy~StNB1FANbC% zzP_zJy%U5!SPZm^l2jlby2qq`!14i!zY9!&!Ke=jz`Z}na(uw?^bToilKpL0lYB98 z!qyMOe83L&5y&PfL(g-U;{z{jeI80H-1^PCUqvzQ>p{PaDcg2O5Eo;Ef?{5u=e5w;wXJHD%$D)k6D(3ckRC;MwF@Cx{x%#NKXIU} z&$G`5`*}Qi1Ys=C2gaeF6rrS_aA_WpcFJD4-M>403^11G13}yZBFMe!dF;5~?*j}3 zfme8rQa;cd9fLIR`1LNvPkfLjC`Gw^Ksl+xx0sIJz1s(bu@Zt+v`~`|MiH2TJ+C58wE~c4N)m8HG;} za)^_0AA?aJAsd_o0|4@L`GC9T?kGn!l|;jLr0u%{48@dNKd@3h5K0Ke3V;9gLE(^1 znPjWX2Shl@2N%f!v)e24fd_+50w|an*REZg;Q@9%s|~HX0xIx-~yj zVq?GIn~}XD&hl0yfE7`yPLZJ6N0LIz#iB}cXmC?2dp!@n|lBQ_nnjF z90-yYz})E1ixEdT5LBoiSd0(200GSn4-HpicWV#3n|pASgZ0Kbgk|~qfw_DDllKc? z^8p58z6oIg`|`i#10&zZUH@o`4=AN-K2Te2wbl0NwVDr<@`2ZX@wIKo(>r?`&!O2^ z$A)(n8}0^J1Y`^ROJIY7AALpf3Hw}m8E45uTI%m+ND3DSffKgqqq zdCSW9fIVr^*m0T{SjCiP0!#A&otl53=r+v8L^?KB#s`vuggNyCmY%Jg56p}9qUS=R z*;pMPurZL==SB4cmFFKAC!^=ZHAH340}%nq3hD=JC6#@`rFlU51}2s`G(wP4fXF0_iAAdiBe%LTio9<}+}$hvQKfy-^qaeh+s)xC;SR&j*mI zAB<@(gatwZ#B&vZA1WC{n{k1r7H5!C(Lg;TfFL zfwK7t(+ViBejuGahk>c43$pVQ=H>lmS+NOBwf76M^Aqmx@6Yf7s||Dc09WJ#+4%_< z(SuVl61Tvq9mpzMd%#8CFR^Hfma?3s=Sm(lKE9KzjYD^MRSZU9h03^8AE( zd?1ezW%+2QA$&#Hyh1oC|%go45Swf16kZgryFWDtT)+9Sw z!YfPmEh*|7>fMgt_s@GAzwf_yj^mlR=f1A{ysqoK&*wg#YbM&%_$(_kA2Ssd6|26U zwmIdKjdD3KF;L#QdNwkts94tgEv?DsC?9|)(Zdn%h69lOJaGV=FW!-g%J+RyGM(D&r5UVbnj;-wccw-?7Um%k=@rscq`b~J){@e%nUQ7l@dF1=D zPPXX1ezUXbfeY)~3K=_Gi<{rSo9unr=v)T~i$fxrGd^yA_^x(GEjIT{rvZMWD9Gl? z>Q40bVzk+Z#T^fpI$=xIM{klg?VMlmNbPz9>v)n&2s$S(*Sn)e7B>Tzvg?Dx>WlU} zt_NP)TmE6yK7m)wopBSp*A^hVeL`dX16RjPjOyxZIhlyn;NG}Ew|n7x3Atay^4IF5 z{Jvkh*X{A)hWU)Qs^{bowqtHCuGQk3^6r%WdXjk3{_c!@>?+6H&T`=1M1X(QkX`Kq zE4{oI@a<>!=J~fzZ7@7u6?>T=VlN*9UC)bdTFVZ*wxf3L?&JICdwj zexI{MU6x#;rIs^n??=Pke6LQDsY!Zn^^%Te?|y?>0LR|?*YCf1gDjsS@hfhgE!(!} z@~xJ{-=3&O$X*)$61Z*KyJ>foYkf%LZ@rt{kr4!@;-r&7~g{Kg}?yz;;( z$dGyX^wv`MtdLQ6dG*I3lv2zYD4(HZmqfg+RTS%<^Rk0;MX!siQA)*x?gR5|15Wl6 z;`Mnt1&SxEmJ#I7y{;aYYd#BoohQwh0a_KY^YfUS%6{|MkL}~}EVGyV?pa;9SW4c8 z4URQ94UJd0jU$(y&9&zW_)fR=^mQxs-K7>Q7(92bX!NPywfCUPi7OvJE&Gh^+LUvp zR~XjUeGeY!Jv*>rAz5##UeHpMFKj598$S!nLRX)bDz>AhN~?2xmTOB|>-FoJ_B3|A zFY$n9PPBygL}4PacH#Mz5UZ7>nh4t;B{d)8I_Txb)y=9WbG~VP3@#ZxZlz-EqmsC0 z**5wvo{wd@RYzgRFWQ7zz{(`CY>*F`R(C$1M{VS>P50o)r*wkJk;>Ap>h2l;GnIL{ zAaY=qQ&Fl?|I*Eh01*x$Ou*Yw1YDb%-p_S9q=M$$k@EGYeRWc~V=sO0zVX7PYKg3- zF59M@YKPUG-?j{~w1cNxY(@|lAAif`tF5*gG?QW|GH`*zA3XOsf7>c&RcP_$T(qQ1 zErDYz)U4KSwVcn5|N6u2JLR`tGE>t?<9+gQ`B282;FgnhLV}4&E;YG1<0}pD`Q+`D z;3x^f4oxe!IDN73-xB-7BiUO8KFX56TB@kTS#uwe^eIz3Z|gUFpXW%{H`mH!i3~Hz zPnIeD5R0z(kX`EYvMnxxqTDf0Xz|nT=|N=T5TAyom}M^HltzPRTu^mp;>3Pwhqp`r z^=4!KB3cepoe!5fN!P3jO^y_vr3nZq9-ro?cGW1V?|#!Bl$X{CtDZ3YTFTK=I3StX zW0a@ZR$orLvfMa+x^AYX1etVu_uh@uBYK{Lccdp7zV%HpMn!RdVyBzy($T_J-KoOdFVTO`B8jR`yAHCQv1^Az6kqE@Jp`aazYxD^|$x zPFebi73;DwftsD_Y?b0?1zLmmxm%Ts>K~q|X4mI0_!eq0%prrf`(feH;3sn`i>3D8?O%r1IIr1Ly zQAQ++p_f&>haF?6dh3&IVlcmv$Zo=6Q|_ znavI1kdx1;Nq8w337lI!|NcQJacBYNC3l)eRi-7h@q>cp@TY0{pXD1}ebd3&c1D8r5E zX5v=_ZzlzRp@(t$YmXxHxOiiI%<|^Vsri57HpD$^fkkhD(lU*whtA$3XkO;&s>Fij zo43Ib2WL8?>ybXQnNedA{U46SQ2~PI&(e0?N^G+^BbnC8zNPIwO#jL@&{DtB?JEbi z&=KzgeRz*v@{akWv{P|pw!TT;RTvjIg+dLBu1Gp!<*|)Q1s%h6!J$Cy`PU5_kLQ^p zN?$!xUdeLgElSE1<0&&9|MK2kqY39*1 zf>YPP90pEUa9o}g{cW&;##W6mA}n)Juf}Uray5aGe5r@;iCSdD_KmXKnithUyx60* zt;gQ^(J1m7xE00QXsjEOc@y4gyo`Njn#+`D$a=RkD(YehD@Qh?#L0wY#WFQ(u?hc~ zp7?WGY9nVv&eNQ*<|y?L{9G-Ky&NjooD5CTABLU23mJY4yUMNT&XN#2v>2HYsb+-F z9~D0-cCHyU<_SlCC7Z3rg+{k(HcW^$eG1~EcT33S=WoC6uaKSmxhVk?ovZ$4(-_l| zHN}=dsf(cEVuxw77jTSyv_S^yz5O_NntPpC!MZZ`TH;ZJgQ`B=x zHSRXH;IIMLucIsHl)u=0c>)yE&=(RA{JINqpST{0Rn`^R;{!#PEwkTS2_$fy z_0HW9(YPXMXI&5ca*9DUb$iOzdf-NZn7J4>VM5RJ_zi|OJ>`YhyEL)_h=e0zJnEXm>I zvaZUoNJc&mGEuk0{`C3c-npvs8g+kDyYAe}+K-1=YYWE)wbq6ig1)5XhDg|#af}B! zTnqluTy-+Ie0s*Dtq)noPH^}Az)&C`(({N30X(Bs_5*L!o=^Yc-RY@?qo69iLNsyO zK@_F!{E4gkJ+7lMD)jg($GAyXv>g?TnzZ`!wuf+D55(JVIc8p^uf!tPxvP$xIkm9J zJ~;R+q@062>g-Qt4OEdKjIPEmCJ)$T znL~%GI&(;TH23Y__vb%fvb7VxdyZ>1YosX7q($t4R%!A~LeQPC7>Ks@!$&?_7fg8! zPJU0i<>AmABTakvYV>b=?R1L*(&7(wnT}7tjQ+-f=;dVq?j;RS;kK%4Eug{Yc+|sQ zsnGIwn?J4*sJ32zcOg}6MCIsFJ*^Vs;3HW~X`cQ!FaG9b^QiLKvD#2GRWB#q*UQ}X zOY+V1*}XLVxgIjCLcKW7_x@E3gX)`AnNoU6_ow8lSx}Jz;ubrJp_)s5-irn0tZ|k5 zDudi(P)3`Uw^*sh+50n?QG}}S?GUoX=j2%ZBe<$5YRv)h>n{~bUu~h(NLA`VEp)=w zCw{!T-B5j{PRCh7ra$z={gFEf3f%pwCoQCEx))0@jMef zdMsCT`{|$Ueh}*ID`Rm(@8dE0ooCZjBeYrKkaI%?tJE`1r< zvrmPoW(@2dK;Sm&u?V+pTkU`C&27 zi;oqD0=`gB&(3Dg1I50}NtQ*ePgV)9t{_(?sLy1*fl7m^o&5*SiA|$V*Ge(i_pnlj zMTr0uI+NqGMO9mekb!}9F&i?gq>xxOn3H^iI7c_6sgT2ityQsrVJ>JIEZrfsuDo8Q z&m$T8Lcgk4vb7BPX>VhpvrBVdGrLuvqn1T0fdE8P}ximP?>l@0;{45suGZEA0eCDDcmZYvHuBWMIpg*Gi8u>?V@r&`D@GX$R99nG^+iws2sknd;7f3G zCn0>1z(ZUFWqdF#2Lv3tkX?~LYa>&DmIo0BfXYH;!5|%9{1pgLjTxXy#5y9(wRL|% zP`)97&SbJDLQc-d$4AyjLDqxlBqy(|tSkqH$Uz_=iU)|~=T1iXg4{``4j_JFXyZs2 zB1O-54|l);CJOE0O-2HN6g%Me{0N>#Mt{J&lYX&4;X}?B#XMAo@N z0r{2Ce_cVcq%_fT<~WjvHxYx=xq@>ipZY7rS$!kZKM)Q|a>5fl4~wFZ_qSkJ%pZQ9 z-bA-UA1p===Y}ItKuMJRgKa@jilGpTI?yQv`EZ_63qp&C zLy)PfCI=wc>`2`Zi*hBMDg%DQ2Z~=Tj0EYe*1X~xZw{?0KlPa5h%>h zASBck9QH5}W!+B`#u?@AgrnTwzXbLBJpR9I78s_agvR2qAQV&)27)SLp&(^PES9q0 z@(PX^MHn24{<+_Opp!ft$v!9|PSc4}DWw{UfDWqxNE~u3`S)CWoN)&Pf+6xCup$Vo zURIg^qaY*^nszm9ZaO)FD{=JCsRAvc8cH<3|QM1}+AD^>bxZRJ4}*+M1Tu zP0Pbbk5OHL*7a4vjN%HJBj5-rgB!yPK%X|2wG^0U<;z5xGz65;$~|vhMjEOBt76}z zi?o|&%A*^u=ZoNP>T%)BXV#0gZfOwD^^`_FDtE7)`d-Dj)>JFJH}@cUWoc>2y47nf zNVo{r!kb`j?W%v5&J~2>Ev>BFaZgpb3}B)OUJIhaW>H_&=LnyBxH6$bN1d_rO+g`9 z5)iII84C%0R~Y8KDX%B_jFEA#qVAUU$EmW=pKiE6LBK5nt* zBfUVYW^o~#4!f=E^(GO&bWR<1bA!))TXjaMl3<}Y_Vly7*N;YOy#kBg0NNIDhc!~2 zWhxuobOHosK#goJ7GR2UM%>J~=(`-_QxZ0l0O1X;mCpvzMIzlKsXeHOf0aDDyg<`S4ZP47(4U6=;`NAtKdqi7OClM!+!+T4&-vyRR zQY4NPM>0CIZX;%A!b?7F8~Qtd>c?s#*dDzKYtQbdEg8uF+^|YEK)!2j9T1{>@E}KM zD>gPCsnKD6e7Y~EYa0-(l|5uzFpvMw@2w!ICE zo~!4{mf6A|6%n#|`t5r@9RbqDmZZIG zs<3Ln=eJ>zwx`~XS@LvnN(+Cm@=rnpCR8!6B8ZN;xI* z6~v9d1&I>}3LHV=g5b;*swh%>EFrf#t)dEvMvj!o_|Vd*0k5<6?(7Z+Vr$oqvo;Ns zpghTkm9@`r$C}U1dvNAM#4i>X7qwv+*tU&QiYSV390#p6p68*pW_o&>wY9b0eP%pC zCX?Z7+Xg^RO#u*j9>TJ4%4I|*!$*xqqJl&MAp|0m;e*{>0G5`PP)f0}v4P&%;qKfV zVqzkZKqfAvM0*}l6k(bsN-3057={7BZ`<3LX5u%K6&QwrbQ~&`3PBL`5|qnjlu~SO zZVoJBqJmbdg|MvN%|Q?(5*b3ElsdTrVcV>)uOp?w!ooW!rKr_v_`Xk8%7I5nR3L=F zDiqLKqjf|WhP_{xQqns5TZdMlwFY3dRAPT;hhM5y-jEVY2>u8|4z# zy2#6y@h)D(aU6W#$8j8*%_iAw7NgxBSjh8u-SO{ufKrgl5gi`#X)c$jU~~_(=KHHx z5h79aF&=a}Lp`wa`E(ELVv$Ozl-Sbq^YedQ@9#sQFua0Rt3_sZHeocWSLA(knCCxBQ_n`IgA)iGNI*K^h++<>0556oEkW%7#-nj>7 zCQjdjZ}WMgb{lD$Xks2*xPW^3lF!pTa7rcKU0nqRJ@~NGN%uh7_D~NDA<{jFJdc%? zmBdEsdQg1wWMB~oJn-xF#9KLjMtJMSjdTyx!2v%$dW4h)H*YQ^JTPzH#yon1A6tPC zg2;7y9>ismQsUR^=^g|J2Yeic*f9@mAqcc)Yi|#?&%^-_zM7jm_u$OM>3i^9r9$Ys z1kaukHJgOvdZ2@V_wL^Z{-y`s)2Bl{0Mb3sN)7eEuT}>Zaj;*Ia^P&x-IdPKcPCa5 zwcA6_2Q#*P@+0(n(BCh-IWse+2h}QBDJfVMh3nTbvf1?W!MO)#F;3ruZ*n>8YuB&~ z1)@%ecCChb@nUojgkkXhg9pHo2a}U*Y;BG1LD*`&ng`Nx5+20+h0#2)tb_+~6JFVa zoMEK*3vmzn`-M>J@jNiMws^Z#!n$<}ztQ05-QDp$_`&yaG8vlrJlWaVa}WNL@z2f= zq~l;;xq>k{N$9#9K7Pz6Z=NA;k8e$f4l?LmLPFw#6xhhd^$=vFiGJTYoESuK??FI~cKH2Ae%=l3uieSYvo ze10%9gI_HE-_Hks0*#W=AV%nf0ssI24rN$LW=%~1DgXcg2mk;800000(o>TF0000< KMNUMnLSTX?8vsxM diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta deleted file mode 100644 index 97596ba8176..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_4x.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation":{ - "frametime":2 - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png b/src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_pipe_out_9x.png deleted file mode 100644 index c6a450497f08c920b57e29f1d83c73ec54b9c1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2708 zcmV;F3TyR=P)Fae(em zXbWN+0ROsiBWZiBHAE!w z2YcQ<=Hp|C2!0bq(9Zp429TJkHuoXc+1$_A!(CA4=U@Qnbmjw)ARdjz0Bmn>Lqu@> z`gMp1_V)I`%(!7{=*g2O5D{!`ZGoB5KRSXCK`k%mmoX0j5kaCT{y3%2`p#>L^P?m5 zkB*YAJa-L{=YdQOFf(r6ya^FOx7$sQnHk+~7b21z+fSbvT+sg00R+JqfJ}!gIQKjZ zA!PtC^Te@;;PK#?CYuifq6_L`9h1j)N)b^z8?w+lrCe)S5>oQ!bxv$eG~_I|i?=gt_A&;aoL z{Kpi(3ye+k_`Kes4FKD#W(JV<;NONJ`1~A$@4mzNt5@hV<3C{t0BD=`^@%_LhRhg> zfB_5*fY4k!Gk`{;0nhVRhawyh4Hy6uft8BCP5%av`7J>5(VoXdv??MmX9f@i0es)z z_}$^*L8sGsO)D#)_ufNv`7)v?N@78`32bZ_h9SZ*M5EC_v)P2!dR1w?!OUOI48Zfe zN1o>ucAr^|h+YEtl87EvzFBRx)mGa(X|+BupFYrNfSS#*Ypp&2tpO3B)dG})Xbl+- zG1Qv>*lI0EAHZarFg8z;t_Oa>dhAXaHDRnh!w2jtw`o)xEpB3+72p z=#x)A8RLeQF)?!-rkB+Rf~!~K8aO;Gtc5f;w12;N{ygRp8yn?nKvL{D&j-?a!B~@2 z(uj=W>5c(;8ex_n3=BmpuMZdi_U5x{Lq`J6e+I{ zG(Y$N9ufZDY);h!vOYh3_z-MjiMaq+Q=JYJ5hM(AW50B)=yHaWC@MF1oSwL}({MXG zJGuD-u3liHW7}k&#FEtn3Wpb@^9L+fTwY#Ies=)`W`e88iUFAU z|7i}FrypJN{c->jeSmq48}9DzPUVKy2kb~`|9>t3mdS)KUc~yq^6~`hDe9KCMy_1D z293#dfVpeH^#R-FTIokh1wYZ1Mf-V1=KZJr(<65ZhV7)%7O*P9Q3H5Y(8!nt~Y3(A%}amJGqFcJLq z_1tF^12B|4uf3b74?C?UcX-J1GUvwTW#;Y)%rl8KJd>^KfToU{dFD;AXsSmV$f88T$laoIPCpIXuh3Erf==B%O@#I6h4QaJz)(9%=12Cak zUff^w@P+6D(a{kYfEZ%3y}do52iW5@H+1P(X<{-uI)Vp)+wF-G&oX;j8Gzda%#2&N zZcT7Odz_U&z(6%_XcG{!+IX5ThzKGxZ8tZ7G@Z6L&C4Ii(g)mol-37q7EB%kp4KZ` zN-b`Ef!oG;>kF)Aly<@*n~NP!>-%Zl;0Hz{Dz6Wi5iqR}xH%)%2ej7M-`^k82ihhT zygYy$eIQRSOxH}O*Mkt1&mXV=?2WB=r;pS6fCba-^rm}>yacq{jbp{p2w=v=*Ixr>c0|Gu@Vo`)5191@ z9uX8#vbTVZ4PcHfg>&i0Li7PkO#ZR97PoyEg1`NCJoH*wiH{98aDV&Bg9jD$0UPz? zXahyD;zINR8I8d5W*P7O`}dO>Q>}I3+Vh3ba}GmLss`M-;jGfT=PCn8lhdsI2Snbi zFGzF4%KCtf>+?!D?Xxg_z& zp4Jc8fM19{kT>pU^$gbuE3GfE`oPa0J{;2r$b2iM@WYQjiX)?y6;QJYeR2YQdWy5b z0ME?*7OoE@OZdz&faJV3`hfkP?>~QFc^P34#QMO;AJ_UoZMD@_+yB4S`ar4u2}!AV zpF$!uuUv`Om$%y>-;Wt|7($<%VEFVYh5-M5Vfzn=Bnj&_92iB%vJVMW z+@BDp8jDJql~b^={Rzd~z}`5m52TMX_a8uo{Rz`cJf`*i^lz2-ACSQS0^nDNhoD9S zs@;ZKS^^J;h>U9f^2G}<$GfsdA`9Ms;QX8eV36!xYu6ZHJYOK$vk(j3f8ft~`ws*G z{0~2jtNQBII)9+H+A7(90jG_QW;ZQFfB*mh4rN$LW=%~1DgXcg2mk;800000(o>TF O0000 Date: Sun, 13 Jul 2025 10:30:09 +0300 Subject: [PATCH 153/270] update KubeJS (#3404) --- gradle/forge.versions.toml | 4 ++-- .../gtceu/core/mixins/GTMixinPlugin.java | 1 - .../core/mixins/kubejs/KubeJSForgeMixin.java | 22 ------------------- src/main/resources/gtceu.mixins.json | 1 - 4 files changed, 2 insertions(+), 26 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 787efcd3c96..1b12edb6bd4 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -8,8 +8,8 @@ jei = "15.20.0.105" rei = "12.1.785" emi = "1.1.13+1.20.1" ae2 = "15.0.18" -kubejs = "2001.6.4-build.120" -rhino = "2001.2.3-build.6" +kubejs = "2001.6.5-build.16" +rhino = "2001.2.3-build.10" architectury = "9.2.14" clothconfig = "11.1.136" theoneprobe = "1.20.1-10.0.1-3" diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java index 879daf6d2bd..430c4aaaf2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/GTMixinPlugin.java @@ -33,7 +33,6 @@ public String getRefMapperConfig() { addModCompatMixin("ftbchunks"); addModCompatMixin("xaerominimap"); addModCompatMixin("xaeroworldmap"); - addModCompatMixin("kubejs"); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java deleted file mode 100644 index f0b755f15a2..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/kubejs/KubeJSForgeMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins.kubejs; - -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; - -import dev.latvian.mods.kubejs.forge.KubeJSForge; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import java.util.function.Supplier; - -@Mixin(value = KubeJSForge.class, remap = false) -public class KubeJSForgeMixin { - - @Redirect(method = "", - at = @At(value = "INVOKE", - target = "Lnet/minecraftforge/fml/DistExecutor;safeRunWhenOn(Lnet/minecraftforge/api/distmarker/Dist;Ljava/util/function/Supplier;)V")) - private void gtceu$unsafeRunWhenOnPleaseAndThankYou(Dist dist, Supplier toRun) { - DistExecutor.unsafeRunWhenOn(dist, () -> () -> toRun.get().run()); - } -} diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index cd6d8810424..85b791ac899 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -64,7 +64,6 @@ "forge.PartialNBTIngredientAccessor", "forge.StrictNBTIngredientAccessor", "jei.FluidHelperMixin", - "kubejs.KubeJSForgeMixin", "ldlib.SyncUtilsMixin", "registrate.AbstractRegistrateAccessor", "registrate.RegistrateDataProviderAccessor", From 2e250ae6090a5f57f7bfeb16a0a0f13b04cddedb Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 13 Jul 2025 12:05:49 +0300 Subject: [PATCH 154/270] fix remapping issue (#3406) --- .../gtceu/client/model/machine/IMachineRendererModel.java | 2 +- .../gtceu/client/model/machine/MachineModel.java | 7 ++++++- .../gtceu/client/renderer/machine/DynamicRender.java | 4 ++-- .../renderer/machine/impl/BoilerMultiPartRender.java | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java index 3f8c67b78bb..3b95701b5cd 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/IMachineRendererModel.java @@ -63,7 +63,7 @@ default AABB getRenderBoundingBox(T machine) { return new AABB(pos.offset(-1, 0, -1), pos.offset(2, 2, 2)); } - default boolean isCustomRenderer() { + default boolean isBlockEntityRenderer() { return false; } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 97c44302242..7f275ac32a9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -400,9 +400,14 @@ private List renderPartOverrides(MachineModel controllerModel, IMulti @Override public boolean isCustomRenderer() { + return isBlockEntityRenderer(); + } + + @Override + public boolean isBlockEntityRenderer() { if (dynamicRenders.isEmpty()) return false; for (DynamicRender render : dynamicRenders) { - if (render.isCustomRenderer()) return true; + if (render.isBlockEntityRenderer()) return true; } return false; } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java index 358e2ab7a8b..1b667158a47 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRender.java @@ -35,7 +35,7 @@ public int compareTo(@NotNull DynamicRender o) { } @Override - public boolean isCustomRenderer() { - return IMachineRendererModel.super.isCustomRenderer(); + public boolean isBlockEntityRenderer() { + return true; } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index e1dcea968e7..363ca1ed080 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -93,7 +93,7 @@ public boolean shouldRender(LargeBoilerMachine machine, Vec3 cameraPos) { } @Override - public boolean isCustomRenderer() { + public boolean isBlockEntityRenderer() { return false; } From 92a0a9fb35c3e5044df4b04afb63ee01761200c3 Mon Sep 17 00:00:00 2001 From: iouter <62897714+iouter@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:34:37 +0800 Subject: [PATCH 155/270] Update zh_cn.json 1.20 (#3346) --- .../resources/assets/gtceu/lang/zh_cn.json | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/zh_cn.json b/src/main/resources/assets/gtceu/lang/zh_cn.json index 51d8d55298d..6a5bd373443 100644 --- a/src/main/resources/assets/gtceu/lang/zh_cn.json +++ b/src/main/resources/assets/gtceu/lang/zh_cn.json @@ -139,10 +139,10 @@ "block.gtceu.casing_grate": "栅格机械方块", "block.gtceu.causality_hazard_sign_block": "因果律危害警示方块", "block.gtceu.charcoal_pile_igniter": "木炭堆点火器", - "block.gtceu.chiseled_dark_concrete": "錾制深色混凝土", - "block.gtceu.chiseled_light_concrete": "錾制淡色混凝土", - "block.gtceu.chiseled_marble": "錾制大理岩", - "block.gtceu.chiseled_red_granite": "錾制红花岗岩", + "block.gtceu.chiseled_dark_concrete": "雕纹深色混凝土", + "block.gtceu.chiseled_light_concrete": "雕纹淡色混凝土", + "block.gtceu.chiseled_marble": "雕纹大理岩", + "block.gtceu.chiseled_red_granite": "雕纹红花岗岩", "block.gtceu.clean_machine_casing": "洁净不锈钢机械方块", "block.gtceu.cleaning_maintenance_hatch": "超净维护仓", "block.gtceu.cleanroom": "超净间", @@ -1703,6 +1703,15 @@ "block.surface_rock": "地表岩石(%s)", "button.gtceu.mark_as_depleted.name": "标记为枯竭", "button.gtceu.toggle_waypoint.name": "切换路径点", + "command.gtceu.cape.give.failed": "没有解锁新的披风", + "command.gtceu.cape.give.success.multiple": "为%2$s名玩家解锁了%1$s件披风", + "command.gtceu.cape.give.success.single": "为%2$s解锁了%1$s件披风", + "command.gtceu.cape.take.failed": "没有可以被移除的披风", + "command.gtceu.cape.take.success.multiple": "为%2$s名玩家移除了%1$s件披风", + "command.gtceu.cape.take.success.single": "为%2$s移除了%1$s件披风", + "command.gtceu.cape.use.failed": "%s无法使用披风%s,因为他没有此披风(或者此披风不存在)!", + "command.gtceu.cape.use.success": "%s已装备披风%s", + "command.gtceu.cape.use.success.none": "%s不再装备披风", "command.gtceu.dump_data.success": "已将注册表%2$s中的%1$s个资源转储到%3$s", "command.gtceu.medical_condition.get": "玩家%s有以下疾病:", "command.gtceu.medical_condition.get.element": "症状【%s】§r:%s分%s秒", @@ -1716,6 +1725,7 @@ "config.gtceu.option.allUniqueStoneTypes": "所有独特石头类型", "config.gtceu.option.animationTime": "动画时间", "config.gtceu.option.armorHud": "盔甲HUD", + "config.gtceu.option.batchDuration": "批处理持续时间", "config.gtceu.option.bedrockOreDistance": "基岩矿石距离", "config.gtceu.option.bedrockOreDropTagPrefix": "基岩矿石掉落Tag", "config.gtceu.option.borderColor": "边框颜色", @@ -1725,6 +1735,8 @@ "config.gtceu.option.casingsPerCraft": "每次合成机械方块数量", "config.gtceu.option.cleanMultiblocks": "多方块结构是否洁净", "config.gtceu.option.client": "客户端", + "config.gtceu.option.coloredTieredMachineOutline": "彩色电力机器轮廓", + "config.gtceu.option.coloredWireOutline": "彩色线缆轮廓", "config.gtceu.option.compat": "兼容", "config.gtceu.option.debug": "调试", "config.gtceu.option.debugWorldgen": "矿石位置Debug模式", @@ -2312,9 +2324,12 @@ "gtceu.gui.content.chance_boosted_logic": "当前等级概率:%s%%(%s)", "gtceu.gui.content.chance_nc": "§c不会被消耗§r", "gtceu.gui.content.chance_nc_short": "§c不消耗§r", + "gtceu.gui.content.chance_no_boost": "概率:%s%%", + "gtceu.gui.content.chance_no_boost_logic": "概率:%s%%(%s)", "gtceu.gui.content.chance_tier_boost_minus": "奖励概率:- %s%%/电压等级", "gtceu.gui.content.chance_tier_boost_plus": "奖励概率:+ %s%%/电压等级", "gtceu.gui.content.count_range": "%s-%sx", + "gtceu.gui.content.fluid_range": "%s-%smB", "gtceu.gui.content.per_tick": "§a每刻(tick)消耗/产生§r", "gtceu.gui.content.tips.per_second_short": "§a/秒§r", "gtceu.gui.content.tips.per_tick_short": "§a/刻(tick)§r", @@ -2517,6 +2532,8 @@ "gtceu.machine.available_recipe_map_4.tooltip": "可用配方类型:%s,%s,%s,%s", "gtceu.machine.basic.input_from_output_side.allow": "允许从输出面输入:", "gtceu.machine.basic.input_from_output_side.disallow": "禁止从输出面输入:", + "gtceu.machine.batch_disabled": "批处理已禁用", + "gtceu.machine.batch_enabled": "批处理已启用", "gtceu.machine.bedrock_ore_miner.depletion": "§b损耗率:§f%s%%", "gtceu.machine.bedrock_ore_miner.description": "§7钻掘基岩之下的叠叠矿石。", "gtceu.machine.bedrock_ore_miner.production": "§e产量乘数:§f%dx,超频后%fx", @@ -3159,6 +3176,7 @@ "gtceu.multiblock.active_transformer.max_input": "§a最大输入:§f%s EU/t", "gtceu.multiblock.active_transformer.max_output": "§c最大输出:§f%s EU/t", "gtceu.multiblock.assembly_line.description": "装配线是由5到16“片”组成的大型多方块结构。理论上,它是一个大型组装机,用于生产高级元件。", + "gtceu.multiblock.batch_enabled": "批处理模式:已启用(%sx)", "gtceu.multiblock.blast_furnace.max_temperature": "热容:%s", "gtceu.multiblock.central_monitor.height": "屏幕高度:%d", "gtceu.multiblock.central_monitor.height_modify": "调整高度:%d", @@ -3186,7 +3204,9 @@ "gtceu.multiblock.cracking_unit.energy": "耗能:%s%%", "gtceu.multiblock.data_bank.description": "数据库是一个用于在多个装配线间分享研究数据的多方块结构。此外,它也能让装配线读取数据模块里更复杂的研究数据。", "gtceu.multiblock.data_bank.providing": "提供数据。", - "gtceu.multiblock.dimension": "§e维度:§r%sx%sx%s", + "gtceu.multiblock.dimension": "§e尺寸:§r%sx%sx%s", + "gtceu.multiblock.dimensions.0": "尺寸:", + "gtceu.multiblock.dimensions.1": " §c§l长§r:%s,§a§l高§r:%s,§9§l宽§r:%s ", "gtceu.multiblock.distillation_tower.description": "蒸馏塔是一种用于蒸馏不同石油及其副产品的多方块结构。", "gtceu.multiblock.distillation_tower.distilling_fluid": "正在蒸馏%s", "gtceu.multiblock.electric_blast_furnace.description": "电力高炉是一种用来熔炼合金、熔化金属或冶炼矿石的多方块结构。也可用于获取高级的合金和金属,例如铝、不锈钢、钛或硅岩合金。", @@ -3401,7 +3421,6 @@ "gtceu.polarizer": "两极磁化机", "gtceu.primitive_blast_furnace": "土高炉", "gtceu.pyrolyse_oven": "热解炉", - "gtceu.recipe.amperage": "电流:%s", "gtceu.recipe.category.arc_furnace_recycling": "电弧炉:等离子回收", "gtceu.recipe.category.chem_dyes": "化学浸洗机:化学染色", "gtceu.recipe.category.extractor_recycling": "流体提取机:重熔回收", @@ -3420,8 +3439,9 @@ "gtceu.recipe.duration": "耗时:%s秒", "gtceu.recipe.environmental_hazard": "§c区域内必须有%s", "gtceu.recipe.environmental_hazard.reverse": "§c区域内必须没有%s", - "gtceu.recipe.eu": "耗能功率:%s EU/t", - "gtceu.recipe.eu_inverted": "产能功率:%s EU/t", + "gtceu.recipe.eu": "耗能功率:%sA @ %s", + "gtceu.recipe.eu.total": "%s EU/t", + "gtceu.recipe.eu_inverted": "产能功率:%sA @ %s", "gtceu.recipe.eu_to_start": "启动耗能:%sEU%s", "gtceu.recipe.explosive": "爆炸物:%s", "gtceu.recipe.max_eu": "最大功率:%s EU", @@ -3431,6 +3451,8 @@ "gtceu.recipe.temperature": "温度:%sK", "gtceu.recipe.total": "总计:%s EU", "gtceu.recipe.total_computation": "算力:%s CWU", + "gtceu.recipe.total_eu": "总功率:%s EU/t", + "gtceu.recipe.voltage": "耗能功率:%sA @ %s", "gtceu.recipe_logic.condition_fails": "条件不足", "gtceu.recipe_logic.insufficient_fuel": "燃料不足", "gtceu.recipe_logic.insufficient_in": "需要输入", @@ -3682,6 +3704,10 @@ "item.gtceu.aluminium_fluid_cell": "%s铝单元", "item.gtceu.anvil_casting_mold": "模具(砧)", "item.gtceu.anvil_casting_mold.tooltip": "§7用来制作砧的模具", + "item.gtceu.armor.boots": "%s靴子", + "item.gtceu.armor.chestplate": "%s胸甲", + "item.gtceu.armor.helmet": "%s头盔", + "item.gtceu.armor.leggings": "%s护腿", "item.gtceu.ash_dust": "灰烬", "item.gtceu.axe_extruder_mold.tooltip": "§7用来制作斧的模头", "item.gtceu.ball_casting_mold": "模具(球)", From 4d1aa4a6b586d2d7bc148457d69d335a0b43b705 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 13 Jul 2025 18:08:40 +0300 Subject: [PATCH 156/270] Fix ModernFix dynamic resources compatibility (#3409) --- dependencies.gradle | 2 + gradle/forge.versions.toml | 2 + gradle/scripts/resources.gradle | 1 + .../java/com/gregtechceu/gtceu/GTCEu.java | 4 + .../com/gregtechceu/gtceu/api/GTValues.java | 1 + .../gtceu/client/model/PipeModel.java | 4 +- .../client/model/machine/MachineModel.java | 23 ++---- .../renderer/cover/ICoverableRenderer.java | 7 +- .../renderer/cover/IOCoverRenderer.java | 2 +- .../renderer/cover/SimpleCoverRenderer.java | 2 +- .../machine/impl/BoilerMultiPartRender.java | 2 +- .../gtceu/client/util/ModelUtils.java | 79 +++++++++++++------ .../core/mixins/client/ModelManagerMixin.java | 4 + .../modernfix/GTModernFixIntegration.java | 55 +++++++++++++ src/main/templates/META-INF/mods.toml | 10 +++ 15 files changed, 149 insertions(+), 49 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java diff --git a/dependencies.gradle b/dependencies.gradle index e500b001ec5..b12609ec1f0 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -42,6 +42,7 @@ dependencies { modCompileOnly(forge.shimmer) modCompileOnly(forge.embeddium) modCompileOnly(forge.oculus) + modCompileOnly(forge.modernfix) // Teams modCompileOnly(forge.ftblibrary) @@ -69,6 +70,7 @@ dependencies { modLocalRuntime(forge.jade) modLocalRuntime(forge.ae2) modLocalRuntime(forge.spark) + modLocalRuntime(forge.modernfix) // Runtime Recipe Viewers - uncomment whichever one you want to use // modLocalRuntime(forge.emi) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 1b12edb6bd4..9caf060e359 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -27,6 +27,7 @@ ccTweaked = "1.114.3" jade = "11.6.3" embeddium = "0.3.31+mc1.20.1" oculus = "1.20.1-1.8.0" +modernfix = "DdUByV9S" # 5.24.1+mc1.20.1 ## cursemaven ## worldStripper = "4578579" @@ -81,6 +82,7 @@ ftbchunks = { module = "dev.ftb.mods:ftb-chunks-forge", version.ref = jade = { module = "maven.modrinth:jade", version.ref = "jade" } embeddium = { module = "maven.modrinth:embeddium", version.ref = "embeddium" } oculus = { module = "maven.modrinth:oculus", version.ref = "oculus" } +modernfix = { module = "maven.modrinth:modernfix", version.ref = "modernfix" } cc-tweaked-core-api = { module = "cc.tweaked:cc-tweaked-1.20.1-core-api", version.ref = "ccTweaked" } diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index a1fef724a0c..6d7b42eef76 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -46,6 +46,7 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources emi_version : forge.versions.emi.get(), top_version : forge.versions.theoneprobe.get(), jade_version : forge.versions.jade.get(), + modernfix_version : forge.versions.modernfix.get(), mod_license : mod_license, mod_name : mod_name, mod_description : mod_description, diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index ba02ab27193..b572a9f53db 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -190,6 +190,10 @@ public static boolean isShimmerLoaded() { return isModLoaded(GTValues.MODID_SHIMMER); } + public static boolean isModernFixLoaded() { + return isModLoaded(GTValues.MODID_MODERNFIX); + } + public static boolean isJAVDLoaded() { return isModLoaded(GTValues.MODID_JAVD); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index e84d9d1c023..061c7f68b34 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -119,6 +119,7 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { MODID_CURIOS = "curios", MODID_AE2WTLIB = "ae2wtlib", MODID_SHIMMER = "shimmer", + MODID_MODERNFIX = "modernfix", MODID_JOURNEYMAP = "journeymap", MODID_XAEROS_MINIMAP = "xaerominimap", MODID_XAEROS_WORLDMAP = "xaeroworldmap", diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java index e831842bbe7..efdff6bb28b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/PipeModel.java @@ -136,13 +136,13 @@ public PipeModel(float thickness, Supplier sideTexture, Suppli } if (!isRestrictorInitialized) { - ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { initializeRestrictor(event.getAtlas()::getSprite); }); isRestrictorInitialized = true; } - ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { TextureAtlas atlas = event.getAtlas(); sideSprite = atlas.getSprite(sideTexture.get()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 7f275ac32a9..aed640d0a01 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -15,7 +15,6 @@ import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; -import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.client.util.StaticFaceBakery; import com.gregtechceu.gtceu.common.data.models.GTModels; @@ -74,7 +73,6 @@ public final class MachineModel extends BaseBakedModel implements ICoverableRend private static @Nullable TextureAtlasSprite fluidOutputOverlaySprite; private static @Nullable TextureAtlasSprite itemOutputOverlaySprite; private static @Nullable TextureAtlasSprite blankSprite; - private static boolean overlaysInitialized = false; public static final Map> TEXTURE_REMAPS = Util.make(new HashMap<>(), map -> { var all = List.of("all"); @@ -133,22 +131,13 @@ public MachineModel(MachineDefinition definition, for (DynamicRender render : this.dynamicRenders) { render.setParent(this); } + } - if (!overlaysInitialized) { - ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { - spriteCapturer.getCapturedMaterials().clear(); - - TextureAtlas atlas = event.getAtlas(); - - pipeOverlaySprite = atlas.getSprite(PIPE_OVERLAY); - fluidOutputOverlaySprite = atlas.getSprite(FLUID_OUTPUT_OVERLAY); - itemOutputOverlaySprite = atlas.getSprite(ITEM_OUTPUT_OVERLAY); - blankSprite = atlas.getSprite(GTModels.BLANK_TEXTURE); - - ICoverableRenderer.initSprites(atlas::getSprite); - }); - overlaysInitialized = true; - } + public static void initSprites(TextureAtlas atlas) { + pipeOverlaySprite = atlas.getSprite(PIPE_OVERLAY); + fluidOutputOverlaySprite = atlas.getSprite(FLUID_OUTPUT_OVERLAY); + itemOutputOverlaySprite = atlas.getSprite(ITEM_OUTPUT_OVERLAY); + blankSprite = atlas.getSprite(GTModels.BLANK_TEXTURE); } @SuppressWarnings("deprecation") diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index 8dbef2db4bb..aac37b2f697 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -8,10 +8,10 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.phys.AABB; @@ -23,7 +23,6 @@ import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.function.Function; public interface ICoverableRenderer { @@ -31,8 +30,8 @@ public interface ICoverableRenderer { TextureAtlasSprite[] COVER_BACK_PLATE = new TextureAtlasSprite[1]; @OnlyIn(Dist.CLIENT) - static void initSprites(Function atlas) { - COVER_BACK_PLATE[0] = atlas.apply(GTCEu.id("block/material_sets/dull/wire_side")); + static void initSprites(TextureAtlas atlas) { + COVER_BACK_PLATE[0] = atlas.getSprite(GTCEu.id("block/material_sets/dull/wire_side")); } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java index 1c7cd06c2cc..28f0c8d5cc9 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IOCoverRenderer.java @@ -46,7 +46,7 @@ public IOCoverRenderer(@Nullable ResourceLocation overlay, @Nullable ResourceLocation invertedOverlay, @Nullable ResourceLocation emissiveOverlay, @Nullable ResourceLocation invertedEmissiveOverlay) { - ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { var atlas = event.getAtlas(); if (overlay != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java index 9ce622e6f78..472597cafcd 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/SimpleCoverRenderer.java @@ -34,7 +34,7 @@ public SimpleCoverRenderer(ResourceLocation texture) { } public SimpleCoverRenderer(ResourceLocation texture, ResourceLocation emissiveTexture) { - ModelUtils.registerAtlasStitchedEventListener(InventoryMenu.BLOCK_ATLAS, event -> { + ModelUtils.registerAtlasStitchedEventListener(false, InventoryMenu.BLOCK_ATLAS, event -> { var atlas = event.getAtlas(); sprite = atlas.getSprite(texture); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index 363ca1ed080..842164e53e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -71,7 +71,7 @@ public BoilerMultiPartRender(BlockState fireboxIdle, BlockState fireboxActive, B this.fireboxActive = fireboxActive; this.casing = casing; - ModelUtils.registerBakeEventListener(event -> { + ModelUtils.registerBakeEventListener(true, event -> { this.fireboxIdleModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxIdle)); this.fireboxActiveModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxActive)); this.casingModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.casing)); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java index 567881509d8..29c79b0d2f4 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -2,28 +2,36 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.client.model.machine.MachineModel; +import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; +import com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration; import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.*; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.RegisterClientReloadListenersEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import org.jetbrains.annotations.NotNull; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,7 +41,7 @@ public class ModelUtils { private ModelUtils() {} - private static final List> EVENT_LISTENERS = new ArrayList<>(); + private static final List EVENT_LISTENERS = new ArrayList<>(); public static List getBakedModelQuads(BakedModel model, BlockAndTintGetter level, BlockPos pos, BlockState state, Direction side, RandomSource rand) { @@ -54,34 +62,54 @@ public static String getPropertyValueString(Map.Entry, Comparable return property.getName() + ": " + valueString; } - public static void registerAtlasStitchedEventListener(AssetEventListener.AtlasStitched listener) { - EVENT_LISTENERS.add(listener); + public static void registerAtlasStitchedEventListener(boolean removeOnReload, + AssetEventListener.AtlasStitched listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); } - public static void registerAtlasStitchedEventListener(final ResourceLocation atlasLocation, + public static void registerAtlasStitchedEventListener(boolean removeOnReload, final ResourceLocation atlasLocation, final AssetEventListener.AtlasStitched listener) { - EVENT_LISTENERS.add((AssetEventListener.AtlasStitched) event -> { + registerAtlasStitchedEventListener(removeOnReload, event -> { if (event.getAtlas().location().equals(atlasLocation)) { listener.accept(event); } }); } - public static void registerBakeEventListener(AssetEventListener.ModifyBakingResult listener) { - EVENT_LISTENERS.add(listener); + public static void registerBakeEventListener(boolean removeOnReload, + AssetEventListener.ModifyBakingResult listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); } - public static void registerAddModelsEventListener(AssetEventListener.RegisterAdditional listener) { - EVENT_LISTENERS.add(listener); + public static void registerAddModelsEventListener(boolean removeOnReload, + AssetEventListener.RegisterAdditional listener) { + EVENT_LISTENERS.add(new EventListenerHolder(listener, removeOnReload)); } - @SuppressWarnings("unchecked") + @SubscribeEvent(priority = EventPriority.HIGH) + public static void registerReloadListener(RegisterClientReloadListenersEvent event) { + event.registerReloadListener(new ResourceManagerReloadListener() { + + @Override + public void onResourceManagerReload(@NotNull ResourceManager resourceManager) { + EVENT_LISTENERS.removeIf(EventListenerHolder::removeOnReload); + } + }); + } + + @SuppressWarnings({ "unchecked", "deprecation" }) @SubscribeEvent(priority = EventPriority.LOWEST) public static void onAtlasStitched(TextureStitchEvent.Post event) { + TextureAtlas atlas = event.getAtlas(); + if (atlas.location() == TextureAtlas.LOCATION_BLOCKS) { + MachineModel.initSprites(atlas); + ICoverableRenderer.initSprites(atlas); + } + for (var listener : EVENT_LISTENERS) { - Class eventClass = listener.eventClass(); + Class eventClass = listener.listener.eventClass(); if (eventClass != null && eventClass.isInstance(event)) { - ((AssetEventListener) listener).accept(event); + ((AssetEventListener) listener.listener).accept(event); } } } @@ -89,8 +117,18 @@ public static void onAtlasStitched(TextureStitchEvent.Post event) { @SuppressWarnings("unchecked") @SubscribeEvent(priority = EventPriority.LOWEST) public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { - // Unwrap all machine models from the LDLib CTM models so we don't need to be as aggressive with mixins. - // Also, the caching they have stops our models from updating properly. + for (var listener : EVENT_LISTENERS) { + Class eventClass = listener.listener.eventClass(); + if (eventClass != null && eventClass.isInstance(event)) { + ((AssetEventListener) listener.listener).accept(event); + } + } + + // don't process the CTM model unwrapping here if modernfix dynamic resources is enabled + if (GTCEu.Mods.isModernFixLoaded() && GTModernFixIntegration.isDynamicResourcesEnabled()) return; + + // Unwrap all machine models from LDLib CTM models so we don't need to be as aggressive with mixins + // Also, the caching they have stops our models from updating properly for (var entry : event.getModels().entrySet()) { BakedModel model = entry.getValue(); if (!(model instanceof CustomBakedModel ctmModel)) { @@ -100,23 +138,18 @@ public static void onModifyBakingResult(ModelEvent.ModifyBakingResult event) { entry.setValue(machine); } } - - for (var listener : EVENT_LISTENERS) { - Class eventClass = listener.eventClass(); - if (eventClass != null && eventClass.isInstance(event)) { - ((AssetEventListener) listener).accept(event); - } - } } @SuppressWarnings("unchecked") @SubscribeEvent(priority = EventPriority.LOWEST) public static void onRegisterAdditional(ModelEvent.RegisterAdditional event) { for (var listener : EVENT_LISTENERS) { - Class eventClass = listener.eventClass(); + Class eventClass = listener.listener.eventClass(); if (eventClass != null && eventClass.isInstance(event)) { - ((AssetEventListener) listener).accept(event); + ((AssetEventListener) listener.listener).accept(event); } } } + + private record EventListenerHolder(AssetEventListener listener, boolean removeOnReload) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java index 1307d144649..24605160b28 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ModelManagerMixin.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.client.renderer.item.ToolItemRenderer; import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin; +import com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -47,6 +48,9 @@ public abstract class ModelManagerMixin { if (GTCEu.Mods.isKubeJSLoaded()) { GregTechKubeJSPlugin.generateMachineBlockModels(); } + if (GTCEu.Mods.isModernFixLoaded()) { + GTModernFixIntegration.setAsLast(); + } GTCEu.LOGGER.info("GregTech Model loading took {}ms", System.currentTimeMillis() - startTime); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java b/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java new file mode 100644 index 00000000000..a36f05bde92 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/modernfix/GTModernFixIntegration.java @@ -0,0 +1,55 @@ +package com.gregtechceu.gtceu.integration.modernfix; + +import com.gregtechceu.gtceu.client.model.machine.MachineModel; + +import com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.*; +import net.minecraft.resources.ResourceLocation; + +import lombok.Getter; +import org.embeddedt.modernfix.ModernFixClient; +import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration; +import org.jetbrains.annotations.ApiStatus; + +import java.util.function.Function; + +public class GTModernFixIntegration implements ModernFixClientIntegration { + + private static GTModernFixIntegration INSTANCE = null; + @Getter + private static boolean dynamicResourcesEnabled = false; + + @ApiStatus.Internal + public GTModernFixIntegration() { + INSTANCE = this; + } + + public static void setAsLast() { + if (INSTANCE != null) { + ModernFixClient.CLIENT_INTEGRATIONS.remove(INSTANCE); + } else { + INSTANCE = new GTModernFixIntegration(); + } + ModernFixClient.CLIENT_INTEGRATIONS.add(INSTANCE); + } + + @Override + public void onDynamicResourcesStatusChange(boolean enabled) { + dynamicResourcesEnabled = enabled; + } + + @Override + public BakedModel onBakedModelLoad(ResourceLocation location, UnbakedModel baseModel, + BakedModel originalModel, ModelState state, ModelBakery bakery, + Function textureGetter) { + if (originalModel instanceof CustomBakedModel ctmModel) { + // Unwrap all machine models from LDLib CTM models so we don't need to be as aggressive with mixins + if (ctmModel.getParent() instanceof MachineModel machineModel) { + return machineModel; + } + } + return originalModel; + } +} diff --git a/src/main/templates/META-INF/mods.toml b/src/main/templates/META-INF/mods.toml index c77d25b4bff..898c3c7b3b5 100644 --- a/src/main/templates/META-INF/mods.toml +++ b/src/main/templates/META-INF/mods.toml @@ -13,6 +13,9 @@ logoFile = "icon.png" displayURL = "${mod_url}" credits = "GregoriusT, Mr_Touchyou, Zerrens for making GregTech and textures, the GT5u authors and maintainers for providing the original code, and the community." +[mods."modernfix:integration"] +client_entrypoint = "com.gregtechceu.gtceu.integration.modernfix.GTModernFixIntegration" + [[dependencies.${mod_id}]] modId = "forge" mandatory = true @@ -86,3 +89,10 @@ mandatory = false versionRange = "[${jade_version},)" ordering = "NONE" side = "BOTH" + +[[dependencies.${mod_id}]] +modId = "modernfix" +mandatory = false +versionRange = "[${modernfix_version},)" +ordering = "BEFORE" +side = "BOTH" \ No newline at end of file From 57a22b718f9c3702667c56c3263e8ec1196c5680 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 13 Jul 2025 09:08:50 -0600 Subject: [PATCH 157/270] Fix Batch Mode chance rolls (#3411) --- .../gtceu/api/machine/multiblock/MultiblockDisplayText.java | 4 ++-- src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java | 1 + .../java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java index d3e8c0eacf0..57c599480e3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java @@ -357,7 +357,7 @@ public Builder addOutputLines(GTRecipe recipe) { int count = stack.getCount(); double countD = count; if (item.chance < item.maxChance) { - countD = countD * recipe.parallels * + countD = countD * recipe.parallels * recipe.batchParallels * function.getBoostedChance(item, recipeTier, chanceTier) / item.maxChance; count = countD < 1 ? 1 : (int) Math.round(countD); } @@ -378,7 +378,7 @@ public Builder addOutputLines(GTRecipe recipe) { int amount = stack.getAmount(); double amountD = amount; if (fluid.chance < fluid.maxChance) { - amountD = amountD * recipe.parallels * + amountD = amountD * recipe.parallels * recipe.batchParallels * function.getBoostedChance(fluid, recipeTier, chanceTier) / fluid.maxChance; amount = amountD < 1 ? 1 : (int) Math.round(amountD); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index 81f0b88f1b0..ce79fbe0edd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -135,6 +135,7 @@ public GTRecipe copy(ContentModifier modifier, boolean modifyDuration) { } copied.ocLevel = ocLevel; copied.parallels = parallels; + copied.batchParallels = batchParallels; return copied; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index c8e7889d637..80faa13bbd7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -103,7 +103,7 @@ private void fillContentMatchList(Map, List> entrie if (!chancedContents.isEmpty()) { var cache = this.chanceCaches.get(cap); chancedContents = logic.roll(chancedContents, function, recipeTier, chanceTier, cache, - recipe.parallels); + recipe.parallels * recipe.batchParallels); for (Content cont : chancedContents) { contentList.add(cont.content); From c46eb840f8c2598131884c60fc1603a0c36e48a5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 13 Jul 2025 15:51:02 +0000 Subject: [PATCH 158/270] RELEASE for 1.20.1 [no-snapshot] (#3412) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 203 ++++++++++++++++++++++++++++++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 204 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cee4e15c1e..3708e516f60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,208 @@ # ChangeLog +## Version [v7.0.0](https://github.com/GregTechCEu/GregTech-Modern/compare/v1.6.4-1.20.1...v7.0.0-1.20.1) +### Added + +- Add more plasmas and plasma turbine fuels by @omergunr100 in [#2974](https://github.com/GregTechCEu/GregTech-Modern/pull/2974) +- Send chat message when new ore veins are prospected by @JuiceyBeans in [#2902](https://github.com/GregTechCEu/GregTech-Modern/pull/2902) +- GameStages Recipe Conditions by @YoungOnionMC in [#2900](https://github.com/GregTechCEu/GregTech-Modern/pull/2900) +- Add FTB Quests recipe condition by @JuiceyBeans in [#2895](https://github.com/GregTechCEu/GregTech-Modern/pull/2895) +- Various Pipe Model changes by @YoungOnionMC in [#2984](https://github.com/GregTechCEu/GregTech-Modern/pull/2984) +- Add Heracles recipe condition by @JuiceyBeans in [#2904](https://github.com/GregTechCEu/GregTech-Modern/pull/2904) +- Add KJS Shaped Recipe Schema with GT Tool Symbols by @krossgg in [#3041](https://github.com/GregTechCEu/GregTech-Modern/pull/3041) +- Add recipes for crushing corals into calcite by @Miner239 in [#3087](https://github.com/GregTechCEu/GregTech-Modern/pull/3087) +- Add charge line to armor tooltip by @stivosha in [#3096](https://github.com/GregTechCEu/GregTech-Modern/pull/3096) +- Add special behaviors to the Large Maceration Tower by @YoungOnionMC in [#2968](https://github.com/GregTechCEu/GregTech-Modern/pull/2968) +- Add JADE info for the conversion mode of the Energy Converter by @NegaNote in [#3099](https://github.com/GregTechCEu/GregTech-Modern/pull/3099) +- Port Bauxite Processing from 1.12 by @GirixK in [#3126](https://github.com/GregTechCEu/GregTech-Modern/pull/3126) +- Remove Extruder Mold (Long Rod) by @GirixK in [#3190](https://github.com/GregTechCEu/GregTech-Modern/pull/3190) +- implement real XOR chance logic (replaces old, which is renamed FIRST) by @NegaNote in [#3187](https://github.com/GregTechCEu/GregTech-Modern/pull/3187) +- Add a block tag for surface indicators by @YoungOnionMC in [#3151](https://github.com/GregTechCEu/GregTech-Modern/pull/3151) +- Fix Electronic Circuit Recipe by @cewlboi in [#3133](https://github.com/GregTechCEu/GregTech-Modern/pull/3133) +- Adds Fluid Stack capability to Research Entries by @YoungOnionMC in [#3106](https://github.com/GregTechCEu/GregTech-Modern/pull/3106) +- Remove muffler hatch requirement from Large Brewing Vat by @GirixK in [#3231](https://github.com/GregTechCEu/GregTech-Modern/pull/3231) +- Add the Ender Fluid Link cover by @Arborsm in [#3024](https://github.com/GregTechCEu/GregTech-Modern/pull/3024) +- Make screwdriver able to invert buses by @jurrejelle in [#3235](https://github.com/GregTechCEu/GregTech-Modern/pull/3235) +- Add pattern dimensions to all Multiblock Controllers by @YoungOnionMC in [#3240](https://github.com/GregTechCEu/GregTech-Modern/pull/3240) +- Make tank widgets able to display the contents of the tank in the tooltip separately from the overlay by @GirixK in [#3221](https://github.com/GregTechCEu/GregTech-Modern/pull/3221) +- Add API for using custom blocks/items in es by @screret in [#3251](https://github.com/GregTechCEu/GregTech-Modern/pull/3251) +- Add Capes by @screret in [#3242](https://github.com/GregTechCEu/GregTech-Modern/pull/3242) +- Add recipes to oxidise and wax copper decorative blocks in the chem bath by @htmlcsjs in [#3263](https://github.com/GregTechCEu/GregTech-Modern/pull/3263) +- Add a tag for valid cleanroom doors by @jurrejelle in [#3264](https://github.com/GregTechCEu/GregTech-Modern/pull/3264) +- Feature: colour machine/cable highlights based on tier by @omergunr100 in [#3067](https://github.com/GregTechCEu/GregTech-Modern/pull/3067) +- add material armors by @screret in [#2656](https://github.com/GregTechCEu/GregTech-Modern/pull/2656) +- Batch Mode by @YoungOnionMC in [#3292](https://github.com/GregTechCEu/GregTech-Modern/pull/3292) +- Add color based input seperation by @jurrejelle in [#3237](https://github.com/GregTechCEu/GregTech-Modern/pull/3237) +- Add Visual Overlay for Colored Hatches by @YoungOnionMC in [#3313](https://github.com/GregTechCEu/GregTech-Modern/pull/3313) +- Use Super and Quantum Tanks as cells by @jurrejelle in [#3305](https://github.com/GregTechCEu/GregTech-Modern/pull/3305) +- Add initial computercraft support by @MatthiasMann in [#3310](https://github.com/GregTechCEu/GregTech-Modern/pull/3310) +- add CC support for getting a machine's recipe progress and turning them on/off by @MatthiasMann in [#3323](https://github.com/GregTechCEu/GregTech-Modern/pull/3323) +- Multi Amp Recipes by @YoungOnionMC in [#3299](https://github.com/GregTechCEu/GregTech-Modern/pull/3299) +- Implement Ranged Fluid Outputs (V3) by @DilithiumThoride in [#3269](https://github.com/GregTechCEu/GregTech-Modern/pull/3269) +- Clean Up EMI GUI for MultiAmp by @Ghostipedia in [#3384](https://github.com/GregTechCEu/GregTech-Modern/pull/3384) + +### Fixed + +- Fix advanced armor unlocalized name by @YoungOnionMC in [#2962](https://github.com/GregTechCEu/GregTech-Modern/pull/2962) +- Fix harder paper recipes consuming fluid container by @Spicierspace153 in [#2963](https://github.com/GregTechCEu/GregTech-Modern/pull/2963) +- Fix NPE in AssemblyLineMachine by @YoungOnionMC in [#2983](https://github.com/GregTechCEu/GregTech-Modern/pull/2983) +- Fix fertilizer interaction by @omergunr100 in [#2937](https://github.com/GregTechCEu/GregTech-Modern/pull/2937) +- Fix deepslate/tuff ore sounds by @Pyritie in [#2967](https://github.com/GregTechCEu/GregTech-Modern/pull/2967) +- Fix various issues with Long Distance Pipelines by @omergunr100 in [#2938](https://github.com/GregTechCEu/GregTech-Modern/pull/2938) +- Fix cover overlays to prevent Z-fighting by @omergunr100 in [#2976](https://github.com/GregTechCEu/GregTech-Modern/pull/2976) +- Fix Miner Pipe block breaking logic by @omergunr100 in [#2854](https://github.com/GregTechCEu/GregTech-Modern/pull/2854) +- Fix cover overlay renderer NPE by @omergunr100 in [#2987](https://github.com/GregTechCEu/GregTech-Modern/pull/2987) +- Fix ItemBusPartMachine incorrectly disabling circuit slot by @krossgg in [#2991](https://github.com/GregTechCEu/GregTech-Modern/pull/2991) +- Fix not being able to interact with prospector UI when no map mods were installed by @Pumpkin7266 in [#3002](https://github.com/GregTechCEu/GregTech-Modern/pull/3002) +- Fix rotor holder renderer by @omergunr100 in [#2973](https://github.com/GregTechCEu/GregTech-Modern/pull/2973) +- Fix recently connected pipes not transfering fluid/items from machines/busses/hatches by @PrototypeTrousers in [#3014](https://github.com/GregTechCEu/GregTech-Modern/pull/3014) +- Fix NC Items being used in decomp by @YoungOnionMC in [#3018](https://github.com/GregTechCEu/GregTech-Modern/pull/3018) +- Fix Tool charging resetting block break progress by @YoungOnionMC in [#2966](https://github.com/GregTechCEu/GregTech-Modern/pull/2966) +- Fix jade crashing when ae2 isn't installed by @omergunr100 in [#3019](https://github.com/GregTechCEu/GregTech-Modern/pull/3019) +- Fix consuming inputs when matching recipe by @Ghostipedia in [#3028](https://github.com/GregTechCEu/GregTech-Modern/pull/3028) +- Fix tags and incorrect lang by @krossgg in [#3030](https://github.com/GregTechCEu/GregTech-Modern/pull/3030) +- Fix crafting component issues by @krossgg in [#3037](https://github.com/GregTechCEu/GregTech-Modern/pull/3037) +- Fix turbines not being put into creative tab by @krossgg in [#3042](https://github.com/GregTechCEu/GregTech-Modern/pull/3042) +- Fix arm not swinging for certain wrench interactions by @YoungOnionMC in [#3032](https://github.com/GregTechCEu/GregTech-Modern/pull/3032) +- Fix Pyrolyse Oven double tooltip by @GirixK in [#3045](https://github.com/GregTechCEu/GregTech-Modern/pull/3045) +- Fix various divide by zero errors in material class by @YoungOnionMC in [#3048](https://github.com/GregTechCEu/GregTech-Modern/pull/3048) +- Fix Prussian Blue Voiding 75% of Input Chlorine by @Ghostipedia in [#3053](https://github.com/GregTechCEu/GregTech-Modern/pull/3053) +- Fix a bunch of visual bugs by @omergunr100 in [#2988](https://github.com/GregTechCEu/GregTech-Modern/pull/2988) +- fix KJS machine recipes erroring if user added multiple recipe conditions of different types by @screret in [#3074](https://github.com/GregTechCEu/GregTech-Modern/pull/3074) +- Fix LCE Obstruction when placed vertically by @YoungOnionMC in [#3062](https://github.com/GregTechCEu/GregTech-Modern/pull/3062) +- Fix issues and add QOL by @YoungOnionMC in [#3049](https://github.com/GregTechCEu/GregTech-Modern/pull/3049) +- Fix GT Tool issue with EMI Crafting Fill by @krossgg in [#3043](https://github.com/GregTechCEu/GregTech-Modern/pull/3043) +- Fix cover slot by @omergunr100 in [#3068](https://github.com/GregTechCEu/GregTech-Modern/pull/3068) +- Fix Coke Oven Hatches getting stuck after Coke Oven gets backfilled by @PrototypeTrousers in [#3059](https://github.com/GregTechCEu/GregTech-Modern/pull/3059) +- Fix distinctness not being preserved by @omergunr100 in [#3016](https://github.com/GregTechCEu/GregTech-Modern/pull/3016) +- FIx PVA Recipe to only be in the LCR by @kdcjxbsdnbgfdg in [#3051](https://github.com/GregTechCEu/GregTech-Modern/pull/3051) +- Fix steam multiblocks failing to open UI by @nutant233 in [#3021](https://github.com/GregTechCEu/GregTech-Modern/pull/3021) +- Fix EU to FE conversion by using actually transferred energy amount by @rischiopoco in [#2969](https://github.com/GregTechCEu/GregTech-Modern/pull/2969) +- Fix issues with StoneTypeEntry and variant ores by @krossgg in [#3075](https://github.com/GregTechCEu/GregTech-Modern/pull/3075) +- Fixed corrupted texture in Distillation Tower recipe. by @nutant233 in [#3083](https://github.com/GregTechCEu/GregTech-Modern/pull/3083) +- Fix recipe naming by @vdegans in [#3076](https://github.com/GregTechCEu/GregTech-Modern/pull/3076) +- Rename palladium substation -> palladium substation casing by @JuiceyBeans in [#3069](https://github.com/GregTechCEu/GregTech-Modern/pull/3069) +- Fix typo in recipe name by @a-a-GiTHuB-a-a in [#3027](https://github.com/GregTechCEu/GregTech-Modern/pull/3027) +- Refactor ItemMaterialData and fix addon recipes load order by @nutant233 in [#3031](https://github.com/GregTechCEu/GregTech-Modern/pull/3031) +- Limit the rate of mob crushing by @YoungOnionMC in [#3127](https://github.com/GregTechCEu/GregTech-Modern/pull/3127) +- Fix Multiblock Pattern slot widgets not showing tooltips by @krossgg in [#3125](https://github.com/GregTechCEu/GregTech-Modern/pull/3125) +- Fix Cleanroom Tier Bug by @YoungOnionMC in [#3152](https://github.com/GregTechCEu/GregTech-Modern/pull/3152) +- Fix only multiblocks autogenerating the language values with KubeJS by @screret in [#3203](https://github.com/GregTechCEu/GregTech-Modern/pull/3203) +- Fix first hit on a Quantum Chest always inserting all items by @screret in [#3204](https://github.com/GregTechCEu/GregTech-Modern/pull/3204) +- fix all miners having some level of fortune unintentionally by @screret in [#3200](https://github.com/GregTechCEu/GregTech-Modern/pull/3200) +- remove unnecessary nbt clearing from custom item fluid handlers by @screret in [#3201](https://github.com/GregTechCEu/GregTech-Modern/pull/3201) +- Fixed large boiler explodes when loading the world by @nutant233 in [#3022](https://github.com/GregTechCEu/GregTech-Modern/pull/3022) +- Fix Large Boilers exploding when throttle is too low by @Ricky-fight in [#3064](https://github.com/GregTechCEu/GregTech-Modern/pull/3064) +- Change Substation Casing color to match Palladium's color by @GirixK in [#3227](https://github.com/GregTechCEu/GregTech-Modern/pull/3227) +- Make thorium and magnesite ores obtainable again by @BoomerBoxer in [#3234](https://github.com/GregTechCEu/GregTech-Modern/pull/3234) +- Fix the lighter model referencing a nonexistent texture by @JuiceyBeans in [#3257](https://github.com/GregTechCEu/GregTech-Modern/pull/3257) +- Add back isSameAxis() to RelativeDirection by @NegaNote in [#3260](https://github.com/GregTechCEu/GregTech-Modern/pull/3260) +- Fix KJS recipe types' slot overlays not working by @JuiceyBeans in [#3258](https://github.com/GregTechCEu/GregTech-Modern/pull/3258) +- Remove unused shader by @GirixK in [#3262](https://github.com/GregTechCEu/GregTech-Modern/pull/3262) +- Fix GTRecipeBuilder ranged item outputs by @DilithiumThoride in [#3268](https://github.com/GregTechCEu/GregTech-Modern/pull/3268) +- Fix Multiblock Tanks functioning when unformed by @nutant233 in [#3271](https://github.com/GregTechCEu/GregTech-Modern/pull/3271) +- fix magnetic tools crashing the server when is immutable by @Spicierspace153 in [#3288](https://github.com/GregTechCEu/GregTech-Modern/pull/3288) +- Fix cover behavior on busses and hatches by @jurrejelle in [#3287](https://github.com/GregTechCEu/GregTech-Modern/pull/3287) +- Fix Recipe Runner Error Reporting by @YoungOnionMC in [#3296](https://github.com/GregTechCEu/GregTech-Modern/pull/3296) +- Clarify GTRecipeBuilder's error messages and fix the issues #3268 had by @screret in [#3293](https://github.com/GregTechCEu/GregTech-Modern/pull/3293) +- fix KubeJS machine recipes crashing if multiple conditions of different types are added by @screret in [#3302](https://github.com/GregTechCEu/GregTech-Modern/pull/3302) +- fix research holder items crashing if the research recipe's only output is a fluid by @screret in [#3301](https://github.com/GregTechCEu/GregTech-Modern/pull/3301) +- Fix Creative Energy Container not having an outline by @YoungOnionMC in [#3309](https://github.com/GregTechCEu/GregTech-Modern/pull/3309) +- fix per-tick CWU outputs being handled as negative values by @screret in [#3311](https://github.com/GregTechCEu/GregTech-Modern/pull/3311) +- Fix armor charging causing a crash if the offhand item is switched repeatedly by @PSR2144-3933 in [#3322](https://github.com/GregTechCEu/GregTech-Modern/pull/3322) +- Remove shouldSearchContent by @jurrejelle in [#3334](https://github.com/GregTechCEu/GregTech-Modern/pull/3334) +- Fix BedrockFluidDefinition losing data on world load by @MatthiasMann in [#3336](https://github.com/GregTechCEu/GregTech-Modern/pull/3336) +- Fix batch mode showing in the wrong multis by @Pumpkin7266 in [#3345](https://github.com/GregTechCEu/GregTech-Modern/pull/3345) +- Fix the quantum tank fluid render being offset in the inventory by @screret in [#3372](https://github.com/GregTechCEu/GregTech-Modern/pull/3372) +- Fix LCR recipemap tooltips by @Spicierspace153 in [#3373](https://github.com/GregTechCEu/GregTech-Modern/pull/3373) +- add the other standard tags to dough and wheat by @screret in [#3367](https://github.com/GregTechCEu/GregTech-Modern/pull/3367) +- Clean up unused and/or useless mixins by @screret in [#3359](https://github.com/GregTechCEu/GregTech-Modern/pull/3359) +- Fix Material Decomp being wrong for some recipes by @YoungOnionMC in [#3382](https://github.com/GregTechCEu/GregTech-Modern/pull/3382) +- Fix facades coloring grass etc. with the underlying block's color by @screret in [#3392](https://github.com/GregTechCEu/GregTech-Modern/pull/3392) +- Fix Jade Structure forming info by @YoungOnionMC in [#3400](https://github.com/GregTechCEu/GregTech-Modern/pull/3400) +- Fix ModernFix dynamic resources compatibility by @screret in [#3409](https://github.com/GregTechCEu/GregTech-Modern/pull/3409) +- Fix Batch Mode chance rolls by @YoungOnionMC in [#3411](https://github.com/GregTechCEu/GregTech-Modern/pull/3411) + +### Changed + +- Adds onEntitySwing to IinteractionItem for left click interactions by @Spicierspace153 in [#2930](https://github.com/GregTechCEu/GregTech-Modern/pull/2930) +- Change environmental hazards config to off by default by @omergunr100 in [#2978](https://github.com/GregTechCEu/GregTech-Modern/pull/2978) +- Update zh_cn.json by @iouter in [#2929](https://github.com/GregTechCEu/GregTech-Modern/pull/2929) +- Update zh_tw.json by @IamNotBrianZ in [#2934](https://github.com/GregTechCEu/GregTech-Modern/pull/2934) +- Refactor TagKey creations calls to use static constants instead by @JuiceyBeans in [#2970](https://github.com/GregTechCEu/GregTech-Modern/pull/2970) +- Allow multiblocks to disable circuit slots on parts by @omergunr100 in [#2960](https://github.com/GregTechCEu/GregTech-Modern/pull/2960) +- Refactor JourneyMap integration by @omergunr100 in [#2877](https://github.com/GregTechCEu/GregTech-Modern/pull/2877) +- Change error logging for KJS recipes and add missing builder method by @omergunr100 in [#2977](https://github.com/GregTechCEu/GregTech-Modern/pull/2977) +- Refactor misc by @omergunr100 in [#2958](https://github.com/GregTechCEu/GregTech-Modern/pull/2958) +- Change Singleblock Miner to have an output face by @omergunr100 in [#2910](https://github.com/GregTechCEu/GregTech-Modern/pull/2910) +- Add GT tool specific tags for crafting by @GirixK in [#2810](https://github.com/GregTechCEu/GregTech-Modern/pull/2810) +- Fix Fluid Cell material properties by @YoungOnionMC in [#2927](https://github.com/GregTechCEu/GregTech-Modern/pull/2927) +- Change tag to be plural by @omergunr100 in [#2990](https://github.com/GregTechCEu/GregTech-Modern/pull/2990) +- Change electric Wire Cutter IDs to be consistent with the unpowered version by @GirixK in [#2782](https://github.com/GregTechCEu/GregTech-Modern/pull/2782) +- Removes some item bloat by @YoungOnionMC in [#2994](https://github.com/GregTechCEu/GregTech-Modern/pull/2994) +- Refactor Crafting Components by @krossgg in [#2713](https://github.com/GregTechCEu/GregTech-Modern/pull/2713) +- Refactor Item Decomposition information system by @YoungOnionMC in [#2591](https://github.com/GregTechCEu/GregTech-Modern/pull/2591) +- Improve TagPrefix-based Recipe Generation by @TechLord22 in [#2616](https://github.com/GregTechCEu/GregTech-Modern/pull/2616) +- Refactor machine ownership to use player uuid by @omergunr100 in [#2905](https://github.com/GregTechCEu/GregTech-Modern/pull/2905) +- Distinct Fluid Behaviour and Recipe Runner Refactor by @YoungOnionMC in [#2544](https://github.com/GregTechCEu/GregTech-Modern/pull/2544) +- remove brine process by @screret in [#2634](https://github.com/GregTechCEu/GregTech-Modern/pull/2634) +- Allow Unbreaking and Mending on electric tools by @omergunr100 in [#2985](https://github.com/GregTechCEu/GregTech-Modern/pull/2985) +- Refactor GTTools ui logic and add tree felling switch for axes by @omergunr100 in [#2857](https://github.com/GregTechCEu/GregTech-Modern/pull/2857) +- Disallow covers on the front of Singleblock Machines by @omergunr100 in [#2830](https://github.com/GregTechCEu/GregTech-Modern/pull/2830) +- Rename to . by @tomprince in [#2737](https://github.com/GregTechCEu/GregTech-Modern/pull/2737) +- Various Nitpick Changes by @YoungOnionMC in [#2683](https://github.com/GregTechCEu/GregTech-Modern/pull/2683) +- Helper methods for Team Ownership by @YoungOnionMC in [#3017](https://github.com/GregTechCEu/GregTech-Modern/pull/3017) +- Add extended facing to single-block machines by @omergunr100 in [#2823](https://github.com/GregTechCEu/GregTech-Modern/pull/2823) +- Refactor supplier memoizer by @omergunr100 in [#3004](https://github.com/GregTechCEu/GregTech-Modern/pull/3004) +- Improve visuals of Muffler Smoke VFX And Make Respect Particle Options by @Ghostipedia in [#3061](https://github.com/GregTechCEu/GregTech-Modern/pull/3061) +- Refactor ItemMaterialData#registerMaterialInfoItems to not use var-args by @TechLord22 in [#3057](https://github.com/GregTechCEu/GregTech-Modern/pull/3057) +- delete unused MufflerParticleOptions class by @screret in [#3073](https://github.com/GregTechCEu/GregTech-Modern/pull/3073) +- Refactor torch placement behaviour to check if offhand is empty by @JuiceyBeans in [#3047](https://github.com/GregTechCEu/GregTech-Modern/pull/3047) +- Refactor item decorators to item decorators instead of using a mixin by @omergunr100 in [#3079](https://github.com/GregTechCEu/GregTech-Modern/pull/3079) +- Refactor magnet recipes to have an empty blacklist filter by @omergunr100 in [#3066](https://github.com/GregTechCEu/GregTech-Modern/pull/3066) +- Refactor TOP / Jade Energy Provider to handle BigInteger by @mrquentin in [#3071](https://github.com/GregTechCEu/GregTech-Modern/pull/3071) +- Change steam & bronze machine casing russian translations by @vdegans in [#3077](https://github.com/GregTechCEu/GregTech-Modern/pull/3077) +- Refactor ItemMaterialData and fix addon recipes load order by @nutant233 in [#3031](https://github.com/GregTechCEu/GregTech-Modern/pull/3031) +- Clean up tag generation by @screret in [#3093](https://github.com/GregTechCEu/GregTech-Modern/pull/3093) +- Update zh_cn.json by @iouter in [#3104](https://github.com/GregTechCEu/GregTech-Modern/pull/3104) +- Add BigInteger support to Energy Detector Covers by @mrquentin in [#3081](https://github.com/GregTechCEu/GregTech-Modern/pull/3081) +- Translated using Weblate (Russian) for 1.20.1 by @marisathewitch in [#3145](https://github.com/GregTechCEu/GregTech-Modern/pull/3145) +- Remove block property by @krossgg in [#3135](https://github.com/GregTechCEu/GregTech-Modern/pull/3135) +- Update zh_cn.json by @iouter in [#3143](https://github.com/GregTechCEu/GregTech-Modern/pull/3143) +- Update zh_tw.json (1.20.1) by @IamNotBrianZ in [#3166](https://github.com/GregTechCEu/GregTech-Modern/pull/3166) +- Remove redundant headers by @YoungOnionMC in [#3156](https://github.com/GregTechCEu/GregTech-Modern/pull/3156) +- Reduce auto boxing/unboxing by @krossgg in [#3124](https://github.com/GregTechCEu/GregTech-Modern/pull/3124) +- Removes the overclock configurator by @YoungOnionMC in [#3183](https://github.com/GregTechCEu/GregTech-Modern/pull/3183) +- Add a struct for research data to replace the generic pair by @screret in [#3209](https://github.com/GregTechCEu/GregTech-Modern/pull/3209) +- Remove Armor Mixin for damaging armor and use Forge methods instead by @screret in [#3205](https://github.com/GregTechCEu/GregTech-Modern/pull/3205) +- backport a better version of by @screret in [#3206](https://github.com/GregTechCEu/GregTech-Modern/pull/3206) +- Refactor gtceu.universal.x Lang Key by @YoungOnionMC in [#3150](https://github.com/GregTechCEu/GregTech-Modern/pull/3150) +- use instead of calling manually by @screret in [#3208](https://github.com/GregTechCEu/GregTech-Modern/pull/3208) +- Update zh_cn.json by @iouter in [#3244](https://github.com/GregTechCEu/GregTech-Modern/pull/3244) +- fix all the lighter and TNT logic being terribly jank. by @screret in [#3202](https://github.com/GregTechCEu/GregTech-Modern/pull/3202) +- Cleanroom Logic & Balance Tweaks by @YoungOnionMC in [#3182](https://github.com/GregTechCEu/GregTech-Modern/pull/3182) +- clean up RelativeDirection and rename its methods to be more consistent with vanilla by @screret in [#3198](https://github.com/GregTechCEu/GregTech-Modern/pull/3198) +- Item Capability initialization cleanup & pre-emptive potion bottle bugfixes by @screret in [#3207](https://github.com/GregTechCEu/GregTech-Modern/pull/3207) +- Sort ME2 stocking busses and hatches by amount by @jurrejelle in [#3259](https://github.com/GregTechCEu/GregTech-Modern/pull/3259) +- Fast ingredient by @nutant233 in [#3270](https://github.com/GregTechCEu/GregTech-Modern/pull/3270) +- Remove the simulated circuit inventory from the Pattern Buffer by @krossgg in [#3285](https://github.com/GregTechCEu/GregTech-Modern/pull/3285) +- Refactor parallel logic in pursuit of TPS by @krossgg in [#3088](https://github.com/GregTechCEu/GregTech-Modern/pull/3088) +- Clean up MapIngredient conversion and backport recipe handler fixes from 1.21 by @screret in [#3273](https://github.com/GregTechCEu/GregTech-Modern/pull/3273) +- clarify CapeRegistry's javadocs and add a KubeJS event for it by @screret in [#3324](https://github.com/GregTechCEu/GregTech-Modern/pull/3324) +- Clean up spray paint color handling by @screret in [#3325](https://github.com/GregTechCEu/GregTech-Modern/pull/3325) +- Stop sending neighbor updates for all active blocks in a multi by @screret in [#3326](https://github.com/GregTechCEu/GregTech-Modern/pull/3326) +- Update zh_tw.json by @IamNotBrianZ in [#3283](https://github.com/GregTechCEu/GregTech-Modern/pull/3283) +- Remove shouldSearchContent by @jurrejelle in [#3334](https://github.com/GregTechCEu/GregTech-Modern/pull/3334) +- Translated using Weblate (Russian) for 1.20.1 by @marisathewitch in [#3282](https://github.com/GregTechCEu/GregTech-Modern/pull/3282) +- Switch networking code to use forge SimpleChannel directly, instead of ldlib networking wrapper by @gustovafing in [#3332](https://github.com/GregTechCEu/GregTech-Modern/pull/3332) +- Remove LDLib renderer usage from machine models & allow them to be modified by resource packs by @screret in [#3275](https://github.com/GregTechCEu/GregTech-Modern/pull/3275) +- Bump GTM version from 1.7.0 to 7.0.0 for next Major Update by @Ghostipedia in [#3164](https://github.com/GregTechCEu/GregTech-Modern/pull/3164) +- Start Deprecation of Chance Boosting and Migrate to New Chance Rates by @WithersChat in [#3026](https://github.com/GregTechCEu/GregTech-Modern/pull/3026) +- Clean up unused and/or useless mixins by @screret in [#3359](https://github.com/GregTechCEu/GregTech-Modern/pull/3359) +- Fix facades coloring grass etc. with the underlying block's color by @screret in [#3392](https://github.com/GregTechCEu/GregTech-Modern/pull/3392) +- Update zh_cn.json 1.20 by @iouter in [#3346](https://github.com/GregTechCEu/GregTech-Modern/pull/3346) + + ## Version [v1.6.4](https://github.com/GregTechCEu/GregTech-Modern/compare/v1.6.3-1.20.1...v1.6.4-1.20.1) ### Added diff --git a/gradle.properties b/gradle.properties index b6ede03224c..13e78b4723c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 7.0.0 +mod_version = 7.0.1 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From fd868c5fae3109222117b50807b158006b2bd63e Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:54:07 -0400 Subject: [PATCH 159/270] Yeet Machete (#3423) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f2dd9df780c..2013fe1e709 100644 --- a/build.gradle +++ b/build.gradle @@ -96,7 +96,7 @@ tasks.withType(JavaCompile).configureEach { machete { // disable machete locally for faster builds - enabled = isCI + enabled = false // Only optimize reobf jars ignoredTasks.addAll("jar", "slimJar") additionalTasks.addAll("reobfJar", "reobfSlimJar") From 47e72fed2384ed8b70aa2355538138a3a88042cf Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 13 Jul 2025 17:57:48 -0600 Subject: [PATCH 160/270] [1.20.1] Update version name for published releases (#3421) --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d0845f67289..c0b179c8ceb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -103,7 +103,7 @@ jobs: files: | ./gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar ./!(gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar) - name: 'GregTechCEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' + name: 'GregTech CEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version: 'mc${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version-type: ${{ env.VERSION_TYPE }} changelog: ${{ inputs.release-body }} @@ -136,7 +136,7 @@ jobs: files: | ./gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar ./!(gtceu-${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}.jar) - name: 'GregTechCEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' + name: 'GregTech CEu ${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version: 'mc${{ env.MC_VERSION }}-${{ needs.build.outputs.ver }}' version-type: ${{ env.VERSION_TYPE }} changelog: ${{ inputs.release-body }} From 58fd89e43789083e6b5be26c4372b56daa090bad Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 14 Jul 2025 18:31:27 +0300 Subject: [PATCH 161/270] add proper support for using fluid tags in recipe inputs (#3312) --- .../recipe/FluidRecipeCapability.java | 2 +- .../gtceu/api/recipe/GTRecipeSerializer.java | 17 +- .../recipe/content/SerializerIngredient.java | 7 +- .../ingredient/FluidContainerIngredient.java | 2 +- .../recipe/ingredient/FluidIngredient.java | 167 ++++++++++-------- .../fluid/FluidStackMapIngredient.java | 2 +- .../fluid/FluidTagMapIngredient.java | 2 +- .../fluid/potion/PotionFluidHelper.java | 6 +- .../multiblock/steam/LargeBoilerMachine.java | 2 +- .../integration/kjs/GregTechKubeJSPlugin.java | 2 - .../kjs/recipe/GTRecipeSchema.java | 27 +-- .../recipe/components/GTRecipeComponents.java | 118 +++++++------ 12 files changed, 193 insertions(+), 161 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 3a70e594512..cbc11e3f18c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -414,7 +414,7 @@ public static FluidEntryList mapFluid(FluidIngredient ingredient) { FluidStackList fluids = new FluidStackList(); for (FluidIngredient.Value value : ingredient.values) { if (value instanceof FluidIngredient.TagValue tagValue) { - tags.add(tagValue.getTag(), amount, ingredient.getNbt()); + tags.add(tagValue.tag(), amount, ingredient.getNbt()); } else { fluids.addAll(value.getFluids().stream().map(fluid -> new FluidStack(fluid, amount, tag)).toList()); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java index a345b4c681f..207e8976058 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializer.java @@ -18,10 +18,8 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import dev.latvian.mods.kubejs.recipe.ingredientaction.IngredientAction; @@ -242,12 +240,15 @@ private static Codec makeCodec(boolean isKubeLoaded) { public static class KJSCallWrapper { - public static final Codec> INGREDIENT_ACTION_CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> { - JsonElement json = dynamic.convert(JsonOps.INSTANCE).getValue(); - return IngredientAction.parseList(json); - }, - list -> new Dynamic<>(JsonOps.INSTANCE, JsonNull.INSTANCE)); + public static final Codec> INGREDIENT_ACTION_CODEC = ExtraCodecs.JSON.xmap( + IngredientAction::parseList, + list -> { + JsonArray value = new JsonArray(); + for (IngredientAction action : list) { + value.add(action.toJson()); + } + return value; + }); public static List getIngredientActions(JsonObject json) { return IngredientAction.parseList(json.get("kubejs:actions")); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java index 4ce796cb31d..ea3af97e391 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/SerializerIngredient.java @@ -4,20 +4,17 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import com.google.gson.JsonElement; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; -import com.mojang.serialization.JsonOps; public class SerializerIngredient implements IContentSerializer { - public static final Codec CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> Ingredient.fromJson(dynamic.convert(JsonOps.INSTANCE).getValue()), - ingredient -> new Dynamic<>(JsonOps.INSTANCE, ingredient.toJson())); + public static final Codec CODEC = ExtraCodecs.JSON.xmap(Ingredient::fromJson, Ingredient::toJson); public static SerializerIngredient INSTANCE = new SerializerIngredient(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java index f8fc6fcebd3..b074573182f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidContainerIngredient.java @@ -47,7 +47,7 @@ public FluidContainerIngredient(FluidIngredient fluid) { public FluidContainerIngredient(FluidStack fluidStack) { this(FluidIngredient.of(TagUtil.createFluidTag(BuiltInRegistries.FLUID.getKey(fluidStack.getFluid()).getPath()), - fluidStack.getAmount())); + fluidStack.getAmount(), fluidStack.getTag())); } public FluidContainerIngredient(TagKey tag, int amount) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java index b84c0fe6840..ad272ab6ac0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/FluidIngredient.java @@ -7,31 +7,27 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; +import net.minecraft.util.ExtraCodecs; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.Fluids; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.fluids.FluidStack; import com.google.common.collect.Lists; import com.google.gson.*; import com.mojang.serialization.Codec; -import com.mojang.serialization.Dynamic; -import com.mojang.serialization.JsonOps; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Predicate; -import java.util.stream.Stream; -import java.util.stream.StreamSupport; +@SuppressWarnings("deprecation") public class FluidIngredient implements Predicate { - public static final Codec CODEC = Codec.PASSTHROUGH.xmap( - dynamic -> FluidIngredient.fromJson(dynamic.convert(JsonOps.INSTANCE).getValue()), - ingredient -> new Dynamic<>(JsonOps.INSTANCE, ingredient.toJson())); + public static final Codec CODEC = ExtraCodecs.JSON + .xmap(FluidIngredient::fromJson, FluidIngredient::toJson); public static final FluidIngredient EMPTY = new FluidIngredient(new Value[0], 0, null); public FluidIngredient.Value[] values; @@ -49,14 +45,30 @@ protected FluidIngredient(Value[] values, int amount, @Nullable CompoundTag nbt) this.nbt = nbt; } - public static FluidIngredient fromValues(Stream stream, int amount, - @Nullable CompoundTag nbt) { - FluidIngredient ingredient = new FluidIngredient(stream.toArray(Value[]::new), amount, nbt); - return ingredient.isEmpty() ? EMPTY : ingredient; + public static FluidIngredient fromValues(Value[] values, int amount, @Nullable CompoundTag nbt) { + if (values.length == 0) return EMPTY; + return new FluidIngredient(values, amount, nbt); + } + + public static FluidIngredient fromValues(List values, + int amount, @Nullable CompoundTag nbt) { + return fromValues(values.toArray(Value[]::new), amount, nbt); + } + + public static FluidIngredient fromValue(FluidIngredient.Value value, int amount, @Nullable CompoundTag nbt) { + return fromValues(new Value[] { value }, amount, nbt); + } + + private List getFluids() { + List fluids = new ArrayList<>(1); + for (Value value : this.values) { + fluids.addAll(value.getFluids()); + } + return fluids; } public void toNetwork(FriendlyByteBuf buffer) { - buffer.writeCollection(Arrays.asList(this.getStacks()), (buf, stack) -> stack.writeToPacket(buf)); + buffer.writeCollection(this.getFluids(), (buf, fluid) -> buf.writeId(BuiltInRegistries.FLUID, fluid)); buffer.writeVarInt(amount); buffer.writeNbt(nbt); } @@ -79,8 +91,7 @@ public JsonElement toJson() { } public FluidIngredient copy() { - return new FluidIngredient(values, this.amount, - this.nbt == null ? null : this.nbt.copy()); + return new FluidIngredient(values, this.amount, this.nbt == null ? null : this.nbt.copy()); } @Override @@ -186,18 +197,44 @@ public static FluidIngredient of() { return EMPTY; } - public static FluidIngredient of(int amount, Fluid... items) { - return FluidIngredient.of(Arrays.stream(items), amount, null); + public static FluidIngredient of(Fluid fluid, int amount) { + return of(fluid, amount, null); } - public static FluidIngredient of(FluidStack... stacks) { - return FluidIngredient.of(Arrays.stream(stacks).map(FluidStack::getFluid), - stacks.length == 0 ? 0 : stacks[0].getAmount(), stacks.length == 0 ? null : stacks[0].getTag()); + public static FluidIngredient of(Fluid fluid, int amount, @Nullable CompoundTag nbt) { + return FluidIngredient.fromValue(new FluidValue(fluid), amount, nbt); } - public static FluidIngredient of(Stream stacks, int amount, CompoundTag nbt) { - return FluidIngredient.fromValues( - stacks.filter(stack -> stack != null && !stack.isSame(Fluids.EMPTY)).map(FluidValue::new), amount, nbt); + public static FluidIngredient of(List fluids, int amount, @Nullable CompoundTag nbt) { + if (fluids.isEmpty()) return FluidIngredient.EMPTY; + if (fluids.size() == 1) return of(fluids.get(0), amount, nbt); + + List values = new ArrayList<>(); + for (Fluid fluid : fluids) { + values.add(new FluidValue(fluid)); + } + return FluidIngredient.fromValues(values, amount, nbt); + } + + public static FluidIngredient of(FluidStack stack) { + if (stack.isEmpty()) return FluidIngredient.EMPTY; + return FluidIngredient.fromValue(new FluidValue(stack.getFluid()), stack.getAmount(), stack.getTag()); + } + + public static FluidIngredient of(List stacks) { + if (stacks.isEmpty()) return FluidIngredient.EMPTY; + if (stacks.size() == 1) return of(stacks.get(0)); + + List values = new ArrayList<>(); + CompoundTag tag = null; + + for (FluidStack stack : stacks) { + if (!stack.isEmpty()) { + values.add(new FluidValue(stack.getFluid())); + if (tag == null) tag = stack.getTag(); + } + } + return FluidIngredient.fromValues(values, stacks.get(0).getAmount(), tag); } /** @@ -206,53 +243,60 @@ public static FluidIngredient of(Stream stacks, int amount, CompoundTag n * @param tag the tag key */ public static FluidIngredient of(TagKey tag, int amount) { - return FluidIngredient.fromValues(Stream.of(new FluidIngredient.TagValue(tag)), amount, null); + return FluidIngredient.fromValue(new TagValue(tag), amount, null); } - public static FluidIngredient of(TagKey tag, int amount, CompoundTag nbt) { - return FluidIngredient.fromValues(Stream.of(new FluidIngredient.TagValue(tag)), amount, nbt); + public static FluidIngredient of(TagKey tag, int amount, @Nullable CompoundTag nbt) { + return FluidIngredient.fromValue(new TagValue(tag), amount, nbt); } public static FluidIngredient fromNetwork(FriendlyByteBuf buffer) { - return FluidIngredient.fromValues( - buffer.readList(FluidStack::readFromPacket).stream().map(stack -> new FluidValue(stack.getFluid())), - buffer.readVarInt(), buffer.readNbt()); + List fluids = buffer.readList(buf -> buf.readById(BuiltInRegistries.FLUID)); + return FluidIngredient.of(fluids, buffer.readVarInt(), buffer.readNbt()); } public static FluidIngredient fromJson(@Nullable JsonElement json) { return FluidIngredient.fromJson(json, true); } - public static FluidIngredient fromJson(@Nullable JsonElement json, boolean allowAir) { + public static FluidIngredient fromJson(@Nullable JsonElement json, boolean allowEmpty) { if (json == null || json.isJsonNull()) { throw new JsonSyntaxException("Fluid ingredient cannot be null"); } - if (!json.isJsonObject()) { - throw new JsonSyntaxException("Expected fluid ingredient to be object"); - } JsonObject jsonObject = GsonHelper.convertToJsonObject(json, "ingredient"); if (GsonHelper.isObjectNode(jsonObject, "count_provider")) { return IntProviderFluidIngredient.fromJson(json); } + int amount = GsonHelper.getAsInt(jsonObject, "amount", 0); CompoundTag nbt = jsonObject.has("nbt") ? CraftingHelper.getNBT(jsonObject.get("nbt")) : null; + if (GsonHelper.isObjectNode(jsonObject, "value")) { - return FluidIngredient.fromValues( - Stream.of(FluidIngredient.valueFromJson(GsonHelper.getAsJsonObject(jsonObject, "value"))), amount, - nbt); + Value value = FluidIngredient.valueFromJson(GsonHelper.getAsJsonObject(jsonObject, "value")); + return FluidIngredient.fromValue(value, amount, nbt); } else if (GsonHelper.isArrayNode(jsonObject, "value")) { JsonArray jsonArray = GsonHelper.getAsJsonArray(jsonObject, "value"); - if (jsonArray.isEmpty() && !allowAir) { - throw new JsonSyntaxException("Fluid array cannot be empty, at least one item must be defined"); + if (jsonArray.isEmpty() && !allowEmpty) { + throw new JsonSyntaxException("Fluid array cannot be empty, at least one fluid must be defined"); + } + List values = new ArrayList<>(); + for (JsonElement e : jsonArray) { + values.add(FluidIngredient.valueFromJson(GsonHelper.convertToJsonObject(e, "fluid"))); + } + return FluidIngredient.fromValues(values, amount, nbt); + } else if (GsonHelper.isStringValue(jsonObject, "value")) { + String value = GsonHelper.getAsString(jsonObject, "value"); + if (value.startsWith("#")) { + ResourceLocation resourceLocation = new ResourceLocation(value.substring(1)); + TagKey tagKey = TagKey.create(Registries.FLUID, resourceLocation); + return FluidIngredient.fromValue(new TagValue(tagKey), amount, nbt); + } else { + Fluid fluid = BuiltInRegistries.FLUID.get(new ResourceLocation(value)); + return FluidIngredient.fromValue(new FluidValue(fluid), amount, nbt); } - return FluidIngredient - .fromValues( - StreamSupport.stream(jsonArray.spliterator(), false) - .map(jsonElement -> FluidIngredient - .valueFromJson(GsonHelper.convertToJsonObject(jsonElement, "fluid"))), - amount, nbt); + } else { + throw new JsonSyntaxException("expected 'value' to be an object, an array or a string."); } - throw new JsonSyntaxException("expected value to be either object or array."); } private static FluidIngredient.Value valueFromJson(JsonObject json) { @@ -261,12 +305,12 @@ private static FluidIngredient.Value valueFromJson(JsonObject json) { } if (json.has("fluid")) { Fluid fluid = BuiltInRegistries.FLUID.get(new ResourceLocation(GsonHelper.getAsString(json, "fluid"))); - return new FluidIngredient.FluidValue(fluid); + return new FluidValue(fluid); } if (json.has("tag")) { ResourceLocation resourceLocation = new ResourceLocation(GsonHelper.getAsString(json, "tag")); TagKey tagKey = TagKey.create(Registries.FLUID, resourceLocation); - return new FluidIngredient.TagValue(tagKey); + return new TagValue(tagKey); } throw new JsonParseException("A fluid ingredient entry needs either a tag or a fluid"); } @@ -278,14 +322,7 @@ public interface Value { JsonObject serialize(); } - public static class TagValue implements Value { - - @Getter - private final TagKey tag; - - public TagValue(TagKey tag) { - this.tag = tag; - } + public record TagValue(TagKey tag) implements Value { @Override public Collection getFluids() { @@ -302,20 +339,9 @@ public JsonObject serialize() { jsonObject.addProperty("tag", this.tag.location().toString()); return jsonObject; } - - @Override - public int hashCode() { - return tag.hashCode(); - } } - public static class FluidValue implements Value { - - public final Fluid fluid; - - public FluidValue(Fluid item) { - this.fluid = item; - } + public record FluidValue(Fluid fluid) implements Value { @Override public Collection getFluids() { @@ -328,11 +354,6 @@ public JsonObject serialize() { jsonObject.addProperty("fluid", BuiltInRegistries.FLUID.getKey(this.fluid).toString()); return jsonObject; } - - @Override - public int hashCode() { - return fluid.hashCode(); - } } public static final Comparator FLUID_COMPARATOR = Comparator.comparing(BuiltInRegistries.FLUID::getKey); @@ -345,7 +366,7 @@ public int compare(FluidIngredient.Value value1, FluidIngredient.Value value2) { if (!(value2 instanceof FluidIngredient.TagValue second)) { return 1; } - if (first.getTag() != second.getTag()) { + if (first.tag() != second.tag()) { return 1; } } else if (value1 instanceof FluidIngredient.FluidValue first) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java index be752c6f868..49c18543a8c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidStackMapIngredient.java @@ -30,7 +30,7 @@ public static List from(@NotNull FluidIngredient ingredie List ingredients = new ObjectArrayList<>(); for (FluidIngredient.Value value : ingredient.values) { if (value instanceof FluidIngredient.FluidValue fluidValue) { - FluidStack stack = new FluidStack(fluidValue.fluid, ingredient.getAmount(), ingredient.getNbt()); + FluidStack stack = new FluidStack(fluidValue.fluid(), ingredient.getAmount(), ingredient.getNbt()); ingredients.add(new FluidStackMapIngredient(stack, ingredient)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java index d0d02a8535a..20434811e8b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/ingredient/fluid/FluidTagMapIngredient.java @@ -25,7 +25,7 @@ public static List from(@NotNull FluidIngredient ingredie List ingredients = new ObjectArrayList<>(); for (FluidIngredient.Value value : ingredient.values) { if (value instanceof FluidIngredient.TagValue tagValue) { - ingredients.add(new FluidTagMapIngredient(tagValue.getTag())); + ingredients.add(new FluidTagMapIngredient(tagValue.tag())); } } return ingredients; diff --git a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java index 1cd4574deec..4b69bba7acd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/common/fluid/potion/PotionFluidHelper.java @@ -37,7 +37,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.stream.Stream; public class PotionFluidHelper { @@ -60,7 +59,8 @@ public static FluidIngredient potionIngredient(Potion potion, int amount) { public static FluidIngredient getPotionFluidIngredientFrom(Ingredient potion, int amount) { if (potion instanceof StrictNBTIngredientAccessor strict) { - return FluidIngredient.of(Stream.of(GTFluids.POTION.get()), amount, strict.getStack().getTag()); + return FluidIngredient.fromValue(new FluidIngredient.FluidValue(GTFluids.POTION.get()), + amount, strict.getStack().getTag()); } List fluids = new ArrayList<>(); @@ -70,7 +70,7 @@ public static FluidIngredient getPotionFluidIngredientFrom(Ingredient potion, in fluids.add(fluidStack); } } - return FluidIngredient.of(fluids.toArray(FluidStack[]::new)); + return FluidIngredient.of(fluids); } public static FluidStack getFluidFromPotionItem(ItemStack stack, int amount) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java index 43de48374a8..c437dc2778d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/steam/LargeBoilerMachine.java @@ -129,7 +129,7 @@ protected void updateCurrentTemperature() { steamGenerated = 0; } else if (maxDrain > 0) { // if maxDrain is 0 because throttle is too low, skip trying to make steam // drain water - var drainWater = List.of(FluidIngredient.of(maxDrain, Fluids.WATER)); + var drainWater = List.of(FluidIngredient.of(Fluids.WATER, maxDrain)); List> inputTanks = new ArrayList<>(); inputTanks.addAll(getCapabilitiesFlat(IO.IN, FluidRecipeCapability.CAP)); inputTanks.addAll(getCapabilitiesFlat(IO.BOTH, FluidRecipeCapability.CAP)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index c141da29bda..0dee394fa5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -282,7 +282,6 @@ public void registerRecipeComponents(RecipeComponentFactoryRegistryEvent event) event.register("extendedOutputItem", GTRecipeComponents.EXTENDED_OUTPUT); event.register("fluidIngredient", GTRecipeComponents.FLUID_INGREDIENT); - event.register("fluidIngredientOut", GTRecipeComponents.FLUID_INGREDIENT_OUT); } @Override @@ -485,7 +484,6 @@ public void registerTypeWrappers(ScriptType type, TypeWrappers typeWrappers) { if (o instanceof CharSequence str) return MedicalCondition.CONDITIONS.get(str.toString()); return null; }); - // jank because Rhino doesn't agree that it's an interface typeWrappers.registerSimple(IWorldGenLayer.RuleTestSupplier.class, o -> { if (o instanceof IWorldGenLayer.RuleTestSupplier supplier) return supplier; return () -> BlockStatePredicate.ruleTestOf(o); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index a6d0dd72582..acb6a78f081 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -683,7 +683,7 @@ public GTRecipeJS chancedTickInputLogic(RecipeCapability cap, ChanceLogic log public GTRecipeJS inputFluids(GTRecipeComponents.FluidIngredientJS... inputs) { for (var fluidIng : inputs) { - for (var stack : fluidIng.getIngredient().getStacks()) { + for (var stack : fluidIng.ingredient().getStacks()) { var mat = ChemicalHelper.getMaterial(stack.getFluid()); if (!mat.isNull()) { fluidMaterialStacks.add(new MaterialStack(mat, @@ -1091,14 +1091,18 @@ public JsonElement writeOutputItem(OutputItem value) { } @Override - public JsonElement writeInputFluid(InputFluid value) { - var fluid = ((FluidStackJS) value).getFluidStack(); - return FluidIngredient.of((int) fluid.getAmount(), fluid.getFluid()).toJson(); + public InputFluid readInputFluid(Object from) { + return GTRecipeComponents.FluidIngredientJS.of(from); } @Override - public InputFluid readInputFluid(Object from) { - return super.readInputFluid(from); + public JsonElement writeInputFluid(InputFluid value) { + if (value instanceof GTRecipeComponents.FluidIngredientJS ing) { + return ing.ingredient().toJson(); + } + + var fluid = ((FluidStackJS) value).getFluidStack(); + return FluidIngredient.of(fluid.getFluid(), (int) fluid.getAmount(), fluid.getTag()).toJson(); } @Override @@ -1108,13 +1112,14 @@ public OutputFluid readOutputFluid(Object from) { @Override public JsonElement writeOutputFluid(OutputFluid value) { - if (value instanceof FluidIngredient ingredient) { + if (value instanceof GTRecipeComponents.FluidIngredientJS ing) { + return ing.ingredient().toJson(); + } else if (value instanceof FluidIngredient ingredient) { return ingredient.toJson(); - } else if (value instanceof GTRecipeComponents.FluidIngredientJS ingredientJS) { - return ingredientJS.getIngredient().toJson(); } + var fluid = ((FluidStackJS) value).getFluidStack(); - return FluidIngredient.of((int) fluid.getAmount(), fluid.getFluid()).toJson(); + return FluidIngredient.of(fluid.getFluid(), (int) fluid.getAmount(), fluid.getTag()).toJson(); } } @@ -1184,7 +1189,7 @@ public JsonElement writeOutputFluid(OutputFluid value) { var outputs = map.get(FluidRecipeCapability.CAP); if (outputs != null && outputs.length > 0) { var output = GTRecipeComponents.FLUID_OUT.baseComponent().read(recipe, outputs[0].content); - var fluids = output.getIngredient().getStacks(); + var fluids = output.ingredient().getStacks(); if (fluids.length == 0) return null; var id = fluids[0].getFluid().builtInRegistryHolder().unwrapKey(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 3a58c5e223a..b98e40fde87 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -12,21 +12,26 @@ import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.nbt.Tag; +import net.minecraft.nbt.TagParser; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.util.GsonHelper; +import net.minecraft.world.level.material.Fluid; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidType; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; +import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.JsonOps; -import dev.latvian.mods.kubejs.fluid.FluidLike; -import dev.latvian.mods.kubejs.fluid.FluidStackJS; -import dev.latvian.mods.kubejs.fluid.InputFluid; -import dev.latvian.mods.kubejs.fluid.OutputFluid; +import dev.latvian.mods.kubejs.fluid.*; import dev.latvian.mods.kubejs.item.InputItem; import dev.latvian.mods.kubejs.item.OutputItem; import dev.latvian.mods.kubejs.recipe.*; @@ -34,8 +39,9 @@ import dev.latvian.mods.kubejs.typings.desc.DescriptionContext; import dev.latvian.mods.kubejs.typings.desc.TypeDescJS; import dev.latvian.mods.kubejs.util.ListJS; +import dev.latvian.mods.kubejs.util.UtilsJS; import dev.latvian.mods.rhino.mod.util.NBTUtils; -import lombok.Getter; +import org.jetbrains.annotations.Nullable; import java.util.*; @@ -228,7 +234,7 @@ public String toString() { @Override public String componentType() { - return "input_fluid"; + return "fluid_ingredient"; } @Override @@ -236,43 +242,11 @@ public Class componentClass() { return FluidIngredientJS.class; } - @Override - public ComponentRole role() { - return ComponentRole.INPUT; - } - @Override public boolean isInput(RecipeJS recipe, FluidIngredientJS value, ReplacementMatch match) { return match instanceof FluidLike m && value.matches(m); } - @Override - public JsonElement write(RecipeJS recipe, FluidIngredientJS value) { - return value.ingredient.toJson(); - } - - @Override - public FluidIngredientJS read(RecipeJS recipe, Object from) { - return FluidIngredientJS.of(from); - } - }; - public static final RecipeComponent FLUID_INGREDIENT_OUT = new RecipeComponent<>() { - - @Override - public String componentType() { - return "output_fluid"; - } - - @Override - public Class componentClass() { - return FluidIngredientJS.class; - } - - @Override - public ComponentRole role() { - return ComponentRole.OUTPUT; - } - @Override public boolean isOutput(RecipeJS recipe, FluidIngredientJS value, ReplacementMatch match) { return match instanceof FluidLike m && value.matches(m); @@ -375,7 +349,7 @@ public EnergyStack.WithIO read(RecipeJS recipe, Object from) { GTRecipeCapabilities.ITEM, true); public static final ContentJS FLUID_IN = new ContentJS<>(FLUID_INGREDIENT, GTRecipeCapabilities.FLUID, false); - public static final ContentJS FLUID_OUT = new ContentJS<>(FLUID_INGREDIENT_OUT, + public static final ContentJS FLUID_OUT = new ContentJS<>(FLUID_INGREDIENT, GTRecipeCapabilities.FLUID, true); public static final ContentJS EU_IN = new ContentJS<>(ENERGY_STACK, GTRecipeCapabilities.EU, false); @@ -410,13 +384,18 @@ public EnergyStack.WithIO read(RecipeJS recipe, Object from) { VALID_CAPS.putAll(event.getRegisteredKeys()); } - public static class FluidIngredientJS implements InputFluid, OutputFluid { + public record FluidIngredientJS(FluidIngredient ingredient) implements InputFluid, OutputFluid { - @Getter - private final FluidIngredient ingredient; + public FluidIngredientJS(FluidStack stack) { + this(FluidIngredient.of(stack)); + } - public FluidIngredientJS(FluidIngredient ingredient) { - this.ingredient = ingredient; + public FluidIngredientJS(TagKey tag, int amount, @Nullable CompoundTag nbt) { + this(FluidIngredient.of(tag, amount, nbt)); + } + + public FluidIngredientJS(Fluid fluid, int amount, @Nullable CompoundTag nbt) { + this(FluidIngredient.of(fluid, amount, nbt)); } @Override @@ -433,9 +412,11 @@ public FluidIngredientJS(FluidIngredient ingredient) { @Override public boolean matches(FluidLike other) { - if (other instanceof FluidStackJS fluidStack) { - return ingredient - .test(new FluidStack(fluidStack.getFluid(), (int) fluidStack.getAmount(), fluidStack.getNbt())); + if (other instanceof FluidStackJS stackJS) { + FluidStack stack = new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); + return ingredient.test(stack); + } else if (other instanceof FluidStack stack) { + return ingredient.test(stack); } return other.matches(this); } @@ -449,10 +430,40 @@ public static FluidIngredientJS of(Object o) { return new FluidIngredientJS(ingredient); } else if (o instanceof JsonElement json) { return new FluidIngredientJS(FluidIngredient.fromJson(json)); - } else if (o instanceof FluidStackJS fluidStackJS) { - return new FluidIngredientJS(FluidIngredient.of( - new FluidStack(fluidStackJS.getFluid(), (int) fluidStackJS.getAmount(), - fluidStackJS.getNbt()))); + } else if (o instanceof Tag nbt) { + JsonElement json = NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbt); + return new FluidIngredientJS(FluidIngredient.fromJson(json)); + } else if (o instanceof FluidStack stack) { + return new FluidIngredientJS(stack); + } else if (o instanceof FluidStackJS stackJS) { + return new FluidIngredientJS(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); + } else if (o instanceof CharSequence || o instanceof ResourceLocation) { + var s = o.toString(); + + if (s.isEmpty() || s.equals("-") || s.equals("empty") || s.equals("minecraft:empty")) { + return new FluidIngredientJS(FluidIngredient.EMPTY); + } + + boolean isTag = false; + if (s.startsWith("#")) { + s = s.substring(1); + isTag = true; + } + var split = s.split(" ", 3); + ResourceLocation id = new ResourceLocation(split[0]); + int amount = UtilsJS.parseInt(split.length >= 2 ? split[1] : "", FluidType.BUCKET_VOLUME); + CompoundTag nbt = null; + if (split.length == 3) { + try { + nbt = TagParser.parseTag(split[2]); + } catch (CommandSyntaxException ignored) {} + } + + if (isTag) { + return new FluidIngredientJS(TagKey.create(Registries.FLUID, id), amount, nbt); + } else { + return new FluidIngredientJS(BuiltInRegistries.FLUID.get(id), amount, nbt); + } } var list = ListJS.of(o); @@ -462,11 +473,10 @@ public static FluidIngredientJS of(Object o) { FluidStackJS stackJS = FluidStackJS.of(object); stacks.add(new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt())); } - return new FluidIngredientJS(FluidIngredient.of(stacks.toArray(FluidStack[]::new))); + return new FluidIngredientJS(FluidIngredient.of(stacks)); } else { FluidStackJS stackJS = FluidStackJS.of(o); - return new FluidIngredientJS(FluidIngredient - .of(new FluidStack(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()))); + return new FluidIngredientJS(stackJS.getFluid(), (int) stackJS.getAmount(), stackJS.getNbt()); } } } From 3cab7d90cd3164d63e20bc7038899110dd90750d Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:40:16 -0600 Subject: [PATCH 162/270] Remove machete (#3426) --- build.gradle | 9 --------- gradle/libs.versions.toml | 2 -- 2 files changed, 11 deletions(-) diff --git a/build.gradle b/build.gradle index 2013fe1e709..8b5dd0b1db2 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,6 @@ plugins { id 'idea' id 'maven-publish' alias libs.plugins.modDevGradle - alias libs.plugins.machete // automatic jar compressing on build //alias libs.plugins.shadow alias libs.plugins.spotless alias libs.plugins.lombok @@ -94,14 +93,6 @@ tasks.withType(JavaCompile).configureEach { options.compilerArgs << "-Aquiet=true" // Suppress mixin notes } -machete { - // disable machete locally for faster builds - enabled = false - // Only optimize reobf jars - ignoredTasks.addAll("jar", "slimJar") - additionalTasks.addAll("reobfJar", "reobfSlimJar") -} - lombok { version = "1.18.36" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5e34201eb9d..9c88b1e463d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,6 @@ parchment = "2023.09.03" # https://parchmentmc.org/docs/getting-started shadow = "8.3.5" spotless = "7.0.2" modDevGradle = "2.0.86" -machete = "2.0.1" lombok = "8.11" jetbrains-annotations = "26.0.1" mixin = "0.8.7" @@ -21,5 +20,4 @@ mixin = { module = "org.spongepowered:mixin", version.ref = "m modDevGradle = { id = "net.neoforged.moddev.legacyforge", version.ref = "modDevGradle" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } -machete = { id = "io.github.p03w.machete", version.ref = "machete" } lombok = { id = "io.freefair.lombok", version.ref = "lombok" } From e4ae91aba8d68561af3e1a7f0088d46cb7f35d42 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Tue, 15 Jul 2025 21:57:57 -0600 Subject: [PATCH 163/270] 7.0.2 Version Bump (#3443) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 13e78b4723c..8f963103283 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 7.0.1 +mod_version = 7.0.2 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From 840733af9039593ac4f2e9e6597241ad0cf87606 Mon Sep 17 00:00:00 2001 From: marisathewitch Date: Wed, 16 Jul 2025 07:58:49 +0400 Subject: [PATCH 164/270] Translated using Weblate (Russian) for 1.20.1 (#3440) --- .../resources/assets/gtceu/lang/ru_ru.json | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/resources/assets/gtceu/lang/ru_ru.json b/src/main/resources/assets/gtceu/lang/ru_ru.json index 3c6f765d7ec..1b2a17ceb91 100644 --- a/src/main/resources/assets/gtceu/lang/ru_ru.json +++ b/src/main/resources/assets/gtceu/lang/ru_ru.json @@ -749,7 +749,7 @@ "block.gtceu.steam_liquid_boiler.bronze": "Маленький жидкостный паровой котел", "block.gtceu.steam_machine_casing": "Корпус паровой машины", "block.gtceu.steam_output_bus": "Паровой выходной предметный люк", - "block.gtceu.steam_oven": "Паровая мультиплавильня", + "block.gtceu.steam_oven": "Паровая плавильня", "block.gtceu.steam_solid_boiler.bronze": "Маленький угольный паровой котел", "block.gtceu.steel_brick_casing": "Кирпичный корпус из кованого железа", "block.gtceu.steel_crate": "Стальной ящик", @@ -2123,8 +2123,8 @@ "gtceu.recipe.cleanroom_sterile.display_name": "Стерильная чистая комната", "gtceu.recipe.dimensions": "Измерение: %s", "gtceu.recipe.duration": "Длительность: %s сек", - "gtceu.recipe.eu": "Потребление: %s EU/т", - "gtceu.recipe.eu_inverted": "Производство: %s EU/т", + "gtceu.recipe.eu": "Потребление: %s A @ %s", + "gtceu.recipe.eu_inverted": "Производство: %s A @ %s", "gtceu.recipe.eu_to_start": "EU для запуска: %sEU%s", "gtceu.recipe.explosive": "Взрывчатка: %s", "gtceu.recipe.not_consumed": "Не расходуется", @@ -4330,7 +4330,7 @@ "material.gtceu.kanthal": "Кантал", "material.gtceu.kyanite": "Ционит", "material.gtceu.lanthanum": "Лантан", - "material.gtceu.lapis": "Лазурит", + "material.gtceu.lapis": "Лазуритит", "material.gtceu.lapotron": "Лапотрон", "material.gtceu.lava": "Лава", "material.gtceu.lazurite": "Лазурит", @@ -5571,5 +5571,15 @@ "config.gtceu.option.coloredWireOutline": "coloredWireOutline", "item.gtceu.armor.chestplate": "Нагрудник (%s)", "item.gtceu.armor.helmet": "Шлем (%s)", - "item.gtceu.armor.leggings": "Поножи (%s)" + "item.gtceu.armor.leggings": "Поножи (%s)", + "config.gtceu.option.batchDuration": "batchDuration", + "gtceu.gui.content.chance_no_boost": "Шанс: %s%%", + "gtceu.gui.content.chance_no_boost_logic": "Шанс: %s%% (%s)", + "gtceu.gui.content.fluid_range": "%s-%sмВ", + "gtceu.machine.batch_disabled": "Группирование выключено", + "gtceu.machine.batch_enabled": "Группирование включено", + "gtceu.multiblock.batch_enabled": "Группирование: включено (%sx)", + "gtceu.recipe.eu.total": "%s EU/т", + "gtceu.recipe.total_eu": "Общее исп.: %s EU/т", + "gtceu.recipe.voltage": "Исп.: %s A @ %s" } From cb6dab8c8b7567d414690f36e213bc1964ec5c58 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Tue, 15 Jul 2025 21:58:59 -0600 Subject: [PATCH 165/270] Fixes assembly lines finding items wrongly (#3442) --- .../machine/multiblock/electric/AssemblyLineMachine.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java index f43db85bffb..7764bfecd9a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/AssemblyLineMachine.java @@ -23,9 +23,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Collections; -import java.util.Comparator; -import java.util.Optional; +import java.util.*; public class AssemblyLineMachine extends WorkableElectricMultiblockMachine { @@ -74,7 +72,7 @@ private boolean checkItemInputs(@NotNull GTRecipe recipe) { .map(ItemStack.class::cast) .filter(s -> !s.isEmpty()) .findFirst()) - .dropWhile(Optional::isEmpty) + .filter(o -> !(o.isEmpty() || o.get().isEmpty())) .limit(inputsSize) .map(o -> o.orElse(ItemStack.EMPTY)) .toList(); @@ -105,7 +103,7 @@ private boolean checkFluidInputs(@NotNull GTRecipe recipe) { .map(FluidStack.class::cast) .filter(f -> !f.isEmpty()) .findFirst()) - .dropWhile(Optional::isEmpty) + .filter(o -> !(o.isEmpty() || o.get().isEmpty())) .limit(inputsSize) .map(o -> o.orElse(FluidStack.EMPTY)) .toList(); From c9d40b1262f8b565eab403d650050b9af1dff686 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:00:35 +0300 Subject: [PATCH 166/270] Fix dependency cycle error (#3449) --- src/main/templates/META-INF/mods.toml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/main/templates/META-INF/mods.toml b/src/main/templates/META-INF/mods.toml index 898c3c7b3b5..bfee19501a7 100644 --- a/src/main/templates/META-INF/mods.toml +++ b/src/main/templates/META-INF/mods.toml @@ -88,11 +88,4 @@ modId = "jade" mandatory = false versionRange = "[${jade_version},)" ordering = "NONE" -side = "BOTH" - -[[dependencies.${mod_id}]] -modId = "modernfix" -mandatory = false -versionRange = "[${modernfix_version},)" -ordering = "BEFORE" side = "BOTH" \ No newline at end of file From 43cab89e8bda2c39b385255d1b8d676ddbc2b663 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:07:45 +0300 Subject: [PATCH 167/270] Fix stone blocks requiring a stone pickaxe (#3450) --- .../gtceu/api/data/chemical/material/stack/MaterialEntry.java | 4 ++++ src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java index 7b63731b551..9f909b4784a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java @@ -30,6 +30,10 @@ public boolean isEmpty() { return this == NULL_ENTRY || material() == GTMaterials.NULL || tagPrefix().isEmpty(); } + public boolean isIgnored() { + return tagPrefix().isIgnored(material()); + } + @Override public String toString() { if (tagPrefix.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 30d46f78ca7..2e99b6c2db4 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -150,7 +150,7 @@ public static void generateGTDynamicTags(Map new ArrayList<>()).addAll(entries); } // Add tool tags - if (!entry.tagPrefix().miningToolTag().isEmpty()) { + if (!entry.isIgnored() && !entry.tagPrefix().miningToolTag().isEmpty()) { tagMap.computeIfAbsent(CustomTags.TOOL_TIERS[material.getBlockHarvestLevel()].location(), path -> new ArrayList<>()).addAll(entries); if (material.hasProperty(PropertyKey.WOOD)) { From 453ebbe0530eb6fcc4bba0d5b158bd7e1d4cb7a8 Mon Sep 17 00:00:00 2001 From: Madeline Vergani Date: Wed, 16 Jul 2025 23:29:26 +0200 Subject: [PATCH 168/270] Fix lighters and matches (#3454) --- .../gtceu/common/item/tool/behavior/LighterBehavior.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java index ebaae0ca6b4..72e07cc5c39 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LighterBehavior.java @@ -267,8 +267,8 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, */ private static boolean classImplementsOnCaughtFire(Class clazz) { if (!defaultsCacheInit) { - initCacheDefaults(); defaultsCacheInit = true; + initCacheDefaults(); } // first, check if class is cached if (IMPLS_CACHE.containsKey(clazz)) { From ac94f664b499b869881b7462fe91bfa515bafb24 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:33:58 +0300 Subject: [PATCH 169/270] Fix the cape registry not checking if the passed cape ID is valid (#3433) --- .../resources/assets/gtceu/lang/en_ud.json | 27 +---------------- .../resources/assets/gtceu/lang/en_us.json | 27 +---------------- .../gtceu/api/cosmetics/CapeRegistry.java | 27 ++++++++++++++--- .../cosmetics/event/RegisterGTCapesEvent.java | 1 - .../gtceu/common/commands/GTCommands.java | 14 +++++---- .../gtceu/data/lang/LangHandler.java | 30 +------------------ 6 files changed, 35 insertions(+), 91 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index fed6f89b963..3e5d47e1b4e 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1703,6 +1703,7 @@ "block.surface_rock": "ʞɔoᴚ ǝɔɐɟɹnS %s", "button.gtceu.mark_as_depleted.name": "pǝʇǝןdǝᗡ sɐ ʞɹɐW", "button.gtceu.toggle_waypoint.name": "ʇuıodʎɐM ǝןbbo⟘", + "command.gtceu.cape.failure.does_not_exist": "ʇsıxǝ ʇou sǝop %s ǝdɐƆ", "command.gtceu.cape.give.failed": "pǝʞɔoןun ǝɹǝʍ sǝdɐɔ ʍǝu oN", "command.gtceu.cape.give.success.multiple": "sɹǝʎɐןd %s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", "command.gtceu.cape.give.success.single": "%s ɹoɟ sǝdɐɔ %s pǝʞɔoןu∩", @@ -2190,32 +2191,6 @@ "gtceu.circuit_assembler": "ɹǝןqɯǝssⱯ ʇınɔɹıƆ", "gtceu.coke_oven": "uǝʌO ǝʞoƆ", "gtceu.combustion_generator": "ɹoʇɐɹǝuǝ⅁ uoıʇsnqɯoƆ", - "gtceu.command.copy.click_to_copy": "ʎdoɔ oʇ ʞɔıןƆ", - "gtceu.command.copy.copied_and_click": "uıɐbɐ ʎdoɔ oʇ ʞɔıןƆ ˙pɹɐoqdıןɔ oʇ pǝıdoɔ", - "gtceu.command.copy.copied_end": "pɹɐoqdıןɔ ǝɥʇ oʇ ]", - "gtceu.command.copy.copied_start": "[ pǝıdoƆ", - "gtceu.command.hand.electric": "%s :ʎɹǝʇʇɐᗺ sI ؛%d :ɹǝı⟘ - ∩Ǝ %d / %d :oɟuI ɔıɹʇɔǝןƎ", - "gtceu.command.hand.fluid": "%s :uıɐɹᗡ uɐƆ ؛%s :ןןıℲ uɐƆ ؛ᗺɯ %d / %d :oɟuI pınןℲ", - "gtceu.command.hand.fluid2": ":pI pınןℲ", - "gtceu.command.hand.groovy": "puɐɥ sb/9§ buısn ɹǝpısuoƆ", - "gtceu.command.hand.item_id": ")%d :ɐʇɐpɐʇǝW( %s :ɯǝʇI", - "gtceu.command.hand.material": ":pI ןɐıɹǝʇɐW", - "gtceu.command.hand.meta_item": ":pI ɯǝʇIɐʇǝW", - "gtceu.command.hand.no_item": "˙puɐɯɯoɔ sıɥʇ buıʇnɔǝxǝ ǝɹoɟǝq puɐɥ ɟɟo ɹo puɐɥ uıɐɯ uı buıɥʇǝɯos pןoɥ ʇsnɯ noʎ", - "gtceu.command.hand.not_a_player": "˙ɹǝʎɐןd ɐ ʎq ǝןqɐsn ʎןuo sı puɐɯɯoɔ sıɥ⟘", - "gtceu.command.hand.ore_prefix": ":xıɟǝɹd ǝɹO", - "gtceu.command.hand.tag_entries": ":sǝıɹʇuǝ bɐ⟘Ɛ§", - "gtceu.command.hand.tool_stats": "%s :ssɐןƆ sʇɐʇS ןoo⟘", - "gtceu.command.hand.usage": "puɐɥ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.recipecheck.begin": "˙˙˙ʞɔǝɥɔ ʇɔıןɟuoɔ ǝdıɔǝɹ buıʇɹɐʇS", - "gtceu.command.recipecheck.end": "oɟuı ǝɹoɯ ɹoɟ boן ɹǝʌɹǝs ǝɥʇ ʞɔǝɥƆ ˙sʇɔıןɟuoɔ ǝןqıssod %d punoɟ ʞɔǝɥɔ ʇɔıןɟuoɔ ǝdıɔǝᴚ", - "gtceu.command.recipecheck.end_no_conflicts": "¡punoɟ sʇɔıןɟuoɔ ǝdıɔǝɹ oN", - "gtceu.command.recipecheck.usage": "ʞɔǝɥɔǝdıɔǝɹ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.usage": ">ʞɔǝɥɔǝdıɔǝɹ/puɐɥ/uǝbpןɹoʍ< nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.worldgen.reload.failed": "˙sɹoɹɹǝ ɹoɟ ǝןosuoɔ ʞɔǝɥƆ ˙pǝןıɐɟ pɐoןǝɹ uǝbpןɹoM", - "gtceu.command.worldgen.reload.success": "˙bıɟuoɔ ɯoɹɟ pǝpɐoןǝɹ ʎןןnɟssǝɔɔns uǝbpןɹoM", - "gtceu.command.worldgen.reload.usage": "pɐoןǝɹ uǝbpןɹoʍ nǝɔʇb/ :ǝbɐs∩", - "gtceu.command.worldgen.usage": ">pɐoןǝɹ< uǝbpןɹoʍ nǝɔʇb/ :ǝbɐs∩", "gtceu.compressor": "ɹossǝɹdɯoƆ", "gtceu.cover.activity_detector.message_activity_inverted": "snʇɐʇS ʎʇıʌıʇɔⱯ pǝʇɹǝʌuI buıɹoʇıuoW", "gtceu.cover.activity_detector.message_activity_normal": "snʇɐʇS ʎʇıʌıʇɔⱯ ןɐɯɹoN buıɹoʇıuoW", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index bd853936d1a..8df976a50e9 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1703,6 +1703,7 @@ "block.surface_rock": "%s Surface Rock", "button.gtceu.mark_as_depleted.name": "Mark as Depleted", "button.gtceu.toggle_waypoint.name": "Toggle Waypoint", + "command.gtceu.cape.failure.does_not_exist": "Cape %s does not exist", "command.gtceu.cape.give.failed": "No new capes were unlocked", "command.gtceu.cape.give.success.multiple": "Unlocked %s capes for %s players", "command.gtceu.cape.give.success.single": "Unlocked %s capes for %s", @@ -2190,32 +2191,6 @@ "gtceu.circuit_assembler": "Circuit Assembler", "gtceu.coke_oven": "Coke Oven", "gtceu.combustion_generator": "Combustion Generator", - "gtceu.command.copy.click_to_copy": "Click to copy", - "gtceu.command.copy.copied_and_click": "copied to clipboard. Click to copy again", - "gtceu.command.copy.copied_end": "] to the clipboard", - "gtceu.command.copy.copied_start": "Copied [", - "gtceu.command.hand.electric": "Electric Info: %d / %d EU - Tier: %d; Is Battery: %s", - "gtceu.command.hand.fluid": "Fluid Info: %d / %d mB; Can Fill: %s; Can Drain: %s", - "gtceu.command.hand.fluid2": "Fluid Id:", - "gtceu.command.hand.groovy": "Consider using §6/gs hand", - "gtceu.command.hand.item_id": "Item: %s (Metadata: %d)", - "gtceu.command.hand.material": "Material Id:", - "gtceu.command.hand.meta_item": "MetaItem Id:", - "gtceu.command.hand.no_item": "You must hold something in main hand or off hand before executing this command.", - "gtceu.command.hand.not_a_player": "This command is only usable by a player.", - "gtceu.command.hand.ore_prefix": "Ore prefix:", - "gtceu.command.hand.tag_entries": "§3Tag entries:", - "gtceu.command.hand.tool_stats": "Tool Stats Class: %s", - "gtceu.command.hand.usage": "Usage: /gtceu hand", - "gtceu.command.recipecheck.begin": "Starting recipe conflict check...", - "gtceu.command.recipecheck.end": "Recipe conflict check found %d possible conflicts. Check the server log for more info", - "gtceu.command.recipecheck.end_no_conflicts": "No recipe conflicts found!", - "gtceu.command.recipecheck.usage": "Usage: /gtceu recipecheck", - "gtceu.command.usage": "Usage: /gtceu ", - "gtceu.command.worldgen.reload.failed": "Worldgen reload failed. Check console for errors.", - "gtceu.command.worldgen.reload.success": "Worldgen successfully reloaded from config.", - "gtceu.command.worldgen.reload.usage": "Usage: /gtceu worldgen reload", - "gtceu.command.worldgen.usage": "Usage: /gtceu worldgen ", "gtceu.compressor": "Compressor", "gtceu.cover.activity_detector.message_activity_inverted": "Monitoring Inverted Activity Status", "gtceu.cover.activity_detector.message_activity_normal": "Monitoring Normal Activity Status", diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java index fb04e0f0989..f22f708f052 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/CapeRegistry.java @@ -15,14 +15,17 @@ import net.minecraft.world.level.saveddata.SavedData; import net.minecraftforge.common.MinecraftForge; +import com.mojang.brigadier.exceptions.CommandSyntaxException; import dev.latvian.mods.kubejs.script.ScriptType; +import lombok.SneakyThrows; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; -@SuppressWarnings("DeprecatedIsStillUsed") +import static com.gregtechceu.gtceu.common.commands.GTCommands.ERROR_NO_SUCH_CAPE; + public class CapeRegistry extends SavedData { /** @@ -194,7 +197,11 @@ public static void registerFreeCape(ResourceLocation id, ResourceLocation textur * @param cape The cape to give * @see #removeCape(UUID, ResourceLocation) */ - public static boolean unlockCape(UUID owner, ResourceLocation cape) { + @SneakyThrows(CommandSyntaxException.class) + public static boolean unlockCape(UUID owner, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } Set capes = UNLOCKED_CAPES.computeIfAbsent(owner, CapeRegistry::makeSet); if (capes.contains(cape)) { return false; @@ -213,7 +220,11 @@ public static boolean unlockCape(UUID owner, ResourceLocation cape) { * @param cape The cape to take * @see #unlockCape(UUID, ResourceLocation) */ - public static boolean removeCape(UUID owner, ResourceLocation cape) { + @SneakyThrows(CommandSyntaxException.class) + public static boolean removeCape(UUID owner, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } if (FREE_CAPES.contains(cape)) { return false; } @@ -234,7 +245,11 @@ public static void clearMaps() { CURRENT_CAPES.clear(); } - public static void giveRawCape(UUID uuid, ResourceLocation cape) { + @SneakyThrows(CommandSyntaxException.class) + public static void giveRawCape(UUID uuid, @NotNull ResourceLocation cape) { + if (!CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } CURRENT_CAPES.put(uuid, cape); } @@ -244,7 +259,11 @@ public static void giveRawCape(UUID uuid, ResourceLocation cape) { * @param player The UUID of the player * @param cape The cape to set, or {@code null} to remove the current cape. */ + @SneakyThrows(CommandSyntaxException.class) public static boolean setActiveCape(UUID player, @Nullable ResourceLocation cape) { + if (cape != null && !CapeRegistry.ALL_CAPES.containsKey(cape)) { + throw ERROR_NO_SUCH_CAPE.create(cape.toString()); + } Set capes = UNLOCKED_CAPES.get(player); if (capes == null || cape != null && !capes.contains(cape)) { return false; diff --git a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java index 3d57594c13c..bdb805b56c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cosmetics/event/RegisterGTCapesEvent.java @@ -17,7 +17,6 @@ *
* This event is fired on the {@link MinecraftForge#EVENT_BUS}. **/ -@SuppressWarnings("deprecation") // why does JavaDoc not have an "internal" tag? public class RegisterGTCapesEvent extends Event { @ApiStatus.Internal diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index 40965eb8aad..14e31f25adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -38,6 +38,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.mojang.brigadier.suggestion.SuggestionProvider; import com.mojang.serialization.Codec; @@ -57,6 +58,9 @@ public class GTCommands { public static final SuggestionProvider NOT_OWNED_CAPES = (ctx, builder) -> { return SharedSuggestionProvider.suggestResource(findNotOwnedCapesFor(ctx), builder); }; + public static final DynamicCommandExceptionType ERROR_NO_SUCH_CAPE = new DynamicCommandExceptionType( + id -> Component.translatable("command.gtceu.cape.failure.does_not_exist", id)); + private static final SimpleCommandExceptionType ERROR_GIVE_FAILED = new SimpleCommandExceptionType( Component.translatable("command.gtceu.cape.give.failed")); private static final SimpleCommandExceptionType ERROR_TAKE_FAILED = new SimpleCommandExceptionType( @@ -165,12 +169,12 @@ public static void register(CommandDispatcher dispatcher, Co public static Collection findPlayersFrom(CommandContext ctx) throws CommandSyntaxException { // go through all variants of the used player target selectors to find the targeted players try { - return Collections.singleton(ctx.getSource().getPlayerOrException()); - } catch (CommandSyntaxException ignored) { + return EntityArgument.getPlayers(ctx, "targets"); + } catch (IllegalArgumentException | CommandSyntaxException e) { try { - return EntityArgument.getPlayers(ctx, "targets"); - } catch (CommandSyntaxException e) { return EntityArgument.getPlayers(ctx, "target"); + } catch (IllegalArgumentException | CommandSyntaxException ignored) { + return Collections.singleton(ctx.getSource().getPlayerOrException()); } } } @@ -274,7 +278,7 @@ private static int setActiveCape(CommandSourceStack source, ServerPlayer player, if (CapeRegistry.setActiveCape(player.getUUID(), cape)) { if (cape != null) { source.sendSuccess(() -> Component.translatable( - "command.gtceu.cape.use.success", player.getDisplayName(), cape), + "command.gtceu.cape.use.success", player.getDisplayName(), cape.toString()), true); } else { source.sendSuccess(() -> Component.translatable( diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 70c360f73e6..373f83a2412 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -133,6 +133,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("command.gtceu.place_vein.failure", "Failed to place vein %s at position %s"); provider.add("command.gtceu.place_vein.success", "Placed vein %s at position %s"); provider.add("command.gtceu.share_prospection_data.notification", "%s is sharing prospecting data with you!"); + provider.add("command.gtceu.cape.failure.does_not_exist", "Cape %s does not exist"); provider.add("command.gtceu.cape.give.failed", "No new capes were unlocked"); provider.add("command.gtceu.cape.give.success.multiple", "Unlocked %s capes for %s players"); provider.add("command.gtceu.cape.give.success.single", "Unlocked %s capes for %s"); @@ -1211,35 +1212,6 @@ public static void init(RegistrateLangProvider provider) { "A Reception Hatch is linked to a machine which cannot bridge"); provider.add("gtceu.multiblock.computation.not_enough_computation", "Machine needs more computation!"); - provider.add("gtceu.command.usage", "Usage: /gtceu "); - provider.add("gtceu.command.worldgen.usage", "Usage: /gtceu worldgen "); - provider.add("gtceu.command.worldgen.reload.usage", "Usage: /gtceu worldgen reload"); - provider.add("gtceu.command.worldgen.reload.success", "Worldgen successfully reloaded from config."); - provider.add("gtceu.command.worldgen.reload.failed", - "Worldgen reload failed. Check console for errors."); - provider.add("gtceu.command.hand.groovy", "Consider using §6/gs hand"); - provider.add("gtceu.command.hand.usage", "Usage: /gtceu hand"); - provider.add("gtceu.command.hand.item_id", "Item: %s (Metadata: %d)"); - provider.add("gtceu.command.hand.electric", "Electric Info: %d / %d EU - Tier: %d; Is Battery: %s"); - provider.add("gtceu.command.hand.fluid", "Fluid Info: %d / %d mB; Can Fill: %s; Can Drain: %s"); - provider.add("gtceu.command.hand.fluid2", "Fluid Id:"); - provider.add("gtceu.command.hand.material", "Material Id:"); - provider.add("gtceu.command.hand.ore_prefix", "Ore prefix:"); - provider.add("gtceu.command.hand.meta_item", "MetaItem Id:"); - provider.add("gtceu.command.hand.tag_entries", "§3Tag entries:"); - provider.add("gtceu.command.hand.tool_stats", "Tool Stats Class: %s"); - provider.add("gtceu.command.hand.not_a_player", "This command is only usable by a player."); - provider.add("gtceu.command.hand.no_item", - "You must hold something in main hand or off hand before executing this command."); - provider.add("gtceu.command.recipecheck.usage", "Usage: /gtceu recipecheck"); - provider.add("gtceu.command.recipecheck.begin", "Starting recipe conflict check..."); - provider.add("gtceu.command.recipecheck.end", - "Recipe conflict check found %d possible conflicts. Check the server log for more info"); - provider.add("gtceu.command.recipecheck.end_no_conflicts", "No recipe conflicts found!"); - provider.add("gtceu.command.copy.copied_and_click", "copied to clipboard. Click to copy again"); - provider.add("gtceu.command.copy.click_to_copy", "Click to copy"); - provider.add("gtceu.command.copy.copied_start", "Copied ["); - provider.add("gtceu.command.copy.copied_end", "] to the clipboard"); provider.add("gtceu.chat.cape", "§5Congrats: you just unlocked a new cape! See the Cape Selector terminal app to use it.§r"); provider.add("gtceu.universal.clear_nbt_recipe.tooltip", "§cThis will destroy all contents!"); From cf1df00a8cef17faa7106d06941835b793863ec8 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:34:10 +0300 Subject: [PATCH 170/270] Fix the model builder error some people were getting (#3434) --- .../common/data/models/GTMachineModels.java | 50 +------------------ .../mixins/forge/ModelBuilderAccessor.java | 15 ------ .../cube_2_layer/tinted_bot/bottom_top.json | 1 + src/main/resources/gtceu.mixins.json | 1 - 4 files changed, 3 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index c1891d5109e..ee970450332 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -26,30 +26,22 @@ import com.gregtechceu.gtceu.common.machine.electric.WorldAcceleratorMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; -import com.gregtechceu.gtceu.core.mixins.forge.ConfiguredModelListAccessor; -import com.gregtechceu.gtceu.core.mixins.forge.ModelBuilderAccessor; import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; import net.minecraft.Util; import net.minecraft.core.Direction; import net.minecraft.data.models.blockstates.*; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.util.GsonHelper; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.*; -import net.minecraftforge.common.data.ExistingFileHelper; import com.google.common.collect.ImmutableMap; -import com.google.gson.JsonObject; import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import org.jetbrains.annotations.Nullable; -import java.io.BufferedReader; -import java.io.IOException; import java.util.Locale; import static com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController.IS_FORMED_PROPERTY; @@ -646,28 +638,13 @@ public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceL } MachineDefinition definition = machineBlock.getDefinition(); - MachineModelBuilder builder = prov.models().getBuilder("block/machine/" + ctx.getName()) + String modelLocation = ctx.getId().withPrefix("block/machine/").toString(); + MachineModelBuilder builder = prov.models().getBuilder(modelLocation) .customLoader(MachineModelBuilder.begin(definition)); modelInitializer.configureModel(ctx, prov, builder); final BlockModelBuilder model = builder.end(); model.parent(prov.models().getExistingFile(prov.mcLoc("block/block"))); - BlockStateProvider.ConfiguredModelList modelList = null; - if (!builder.getModels().isEmpty()) { - modelList = builder.getModels().get(builder.partialState()); - } else if (!builder.getParts().isEmpty()) { - modelList = builder.getParts().get(0).models; - } - if (modelList != null) { - var models = ((ConfiguredModelListAccessor) modelList).gtceu$getModels(); - if (!models.isEmpty()) { - String texture = findParticleTexture(models.get(0).model, prov.getExistingFileHelper()); - if (texture != null) { - model.texture("particle", texture); - } - } - } - var generator = prov.multiVariantGenerator(block, Variant.variant().with(VariantProperties.MODEL, model.getLocation())); PropertyDispatch dispatch = GTBlockstateProvider.createFacingDispatch(definition); @@ -678,29 +655,6 @@ public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceL } // spotless:on - private static @Nullable String findParticleTexture(ModelFile modelFile, ExistingFileHelper existingFileHelper) { - if (modelFile instanceof ModelBuilderAccessor b) { - return b.gtceu$getTextures().get("particle"); - } else { - try { - Resource res = existingFileHelper.getResource(modelFile.getLocation(), - GTBlockstateProvider.MODEL.getPackType(), - GTBlockstateProvider.MODEL.getSuffix(), GTBlockstateProvider.MODEL.getPrefix()); - - try (BufferedReader reader = res.openAsReader()) { - JsonObject json = GsonHelper.parse(reader, true); - if (json.has("textures")) { - return GsonHelper.getAsString(json.getAsJsonObject("textures"), "particle", null); - } - } - } catch (IOException e) { - GTCEu.LOGGER.error("guh? couldn't find model at {} for particle textures", - modelFile.getUncheckedLocation(), e); - } - } - return null; - } - public static ConfiguredModel[] addWorkableOverlays(WorkableOverlays overlays, RecipeLogic.Status status, BlockModelBuilder model) { for (var entry : overlays.getTextures().entrySet()) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java deleted file mode 100644 index b7c856a4ce4..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/forge/ModelBuilderAccessor.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins.forge; - -import net.minecraftforge.client.model.generators.ModelBuilder; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -@Mixin(value = ModelBuilder.class, remap = false) -public interface ModelBuilderAccessor { - - @Accessor("textures") - Map gtceu$getTextures(); -} diff --git a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json index c51cacbb780..6eed860f8b3 100644 --- a/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json +++ b/src/main/resources/assets/gtceu/models/block/cube_2_layer/tinted_bot/bottom_top.json @@ -1,6 +1,7 @@ { "parent": "gtceu:block/cube_2_layer/tinted_bot/default", "textures": { + "particle": "#bot_side", "bot_down": "#bot_bottom", "bot_up": "#bot_top", "bot_north": "#bot_side", diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 85b791ac899..58c2301e3ad 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -59,7 +59,6 @@ "emi.FluidEmiStackMixin", "forge.ConfiguredModelBuilderAccessor", "forge.ConfiguredModelListAccessor", - "forge.ModelBuilderAccessor", "forge.IntersectionIngredientAccessor", "forge.PartialNBTIngredientAccessor", "forge.StrictNBTIngredientAccessor", From a52432826bfb5314332f2476c8e097d874905c8c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:34:23 +0300 Subject: [PATCH 171/270] Make all models' offsets be increments of 0.01 to alleviate Z-fighting (#3447) --- .../gtceu/models/block/overlay/2_layer/front.json | 8 ++++---- .../models/block/overlay/2_layer/front_emissive.json | 8 ++++---- .../overlay/2_layer/front_emissive_color_ring.json | 12 ++++++------ .../models/block/overlay/2_layer/tinted/front.json | 8 ++++---- .../models/block/overlay/2_layer/top_emissive.json | 8 ++++---- .../assets/gtceu/models/block/overlay/front.json | 4 ++-- .../gtceu/models/block/overlay/front_color_ring.json | 8 ++++---- .../gtceu/models/block/overlay/front_emissive.json | 4 ++-- .../block/overlay/front_emissive_color_ring.json | 8 ++++---- .../models/block/overlay/only/2_layer/front.json | 8 ++++---- .../block/overlay/only/2_layer/front_emissive.json | 8 ++++---- .../only/2_layer/front_emissive_color_ring.json | 12 ++++++------ .../gtceu/models/block/overlay/only/front.json | 4 ++-- .../models/block/overlay/only/front_color_ring.json | 8 ++++---- .../models/block/overlay/only/front_emissive.json | 4 ++-- .../overlay/only/front_emissive_color_ring.json | 8 ++++---- .../gtceu/models/block/overlay/top_emissive.json | 4 ++-- 17 files changed, 62 insertions(+), 62 deletions(-) diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json index 923354d7676..32333528901 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json index 3ba07e27f33..16f56a31538 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json index 7a022b57172..1a08e92a41d 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/front_emissive_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -33,8 +33,8 @@ } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json index 6edd7e47c53..7a0289f65d4 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/tinted/front.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_tinted", "cullface": "north", "tintindex": 2 } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json index 69d7233889a..69cacb2a5ae 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/2_layer/top_emissive.json @@ -14,15 +14,15 @@ } }, { - "from": [ 0, 16.004, 0 ], - "to": [ 16, 16.004, 16 ], + "from": [ 0, 16.01, 0 ], + "to": [ 16, 16.01, 16 ], "faces": { "up": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "up" } } }, { - "from": [ 0, 16.006, 0 ], - "to": [ 16, 16.006, 16 ], + "from": [ 0, 16.02, 0 ], + "to": [ 16, 16.02, 16 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front.json b/src/main/resources/assets/gtceu/models/block/overlay/front.json index 33015a6bf34..07d8a9cefaa 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front.json @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json index c463a37376a..aa1ecaf36af 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_color_ring.json @@ -17,15 +17,15 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json index 34c6d207e2e..c820c629195 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive.json @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json index 45d5a125902..189e32be404 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_emissive_color_ring.json @@ -17,8 +17,8 @@ } }, { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -26,8 +26,8 @@ } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json index ec94f7e0858..6de9477e886 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front", "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_2", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json index 31804576e1b..2b56f4ff3d2 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive.json @@ -2,15 +2,15 @@ "parent": "gtceu:block/overlay/only/front_emissive", "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json index c5d986292c9..17c37e3f125 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/2_layer/front_emissive_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.006 ], - "to": [ 16, 16, -0.006 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -21,8 +21,8 @@ } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json index 91d0c428efc..e671cebe65b 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json index 189d364f209..12e2093e7ab 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_color_ring.json @@ -5,15 +5,15 @@ }, "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "faces": { "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json index 97726fe9177..aea6c3ed2a5 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive.json @@ -2,8 +2,8 @@ "parent": "block/block", "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json index 7a6881a2b98..660210b722e 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/only/front_emissive_color_ring.json @@ -5,8 +5,8 @@ }, "elements": [ { - "from": [ 0, 0, -0.004 ], - "to": [ 16, 16, -0.004 ], + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 0, -0.008 ], - "to": [ 16, 16, -0.008 ], + "from": [ 0, 0, -0.02 ], + "to": [ 16, 16, -0.02 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { diff --git a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json index f69a5ddb70c..58f703ae352 100644 --- a/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json +++ b/src/main/resources/assets/gtceu/models/block/overlay/top_emissive.json @@ -14,8 +14,8 @@ } }, { - "from": [ 0, 16.004, 0 ], - "to": [ 16, 16.004, 16 ], + "from": [ 0, 16.01, 0 ], + "to": [ 16, 16.01, 16 ], "forge_data": { "block_light": 15, "sky_light": 15 }, "shade": false, "faces": { From 511765898756007d1ffa9dc17796918f59d49c89 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Wed, 16 Jul 2025 22:34:43 -0600 Subject: [PATCH 172/270] Fix Assembly Line trying to check circuit slots (#3444) --- .../gtceu/api/capability/recipe/IRecipeHandler.java | 2 -- .../api/machine/trait/NotifiableItemStackHandler.java | 3 --- .../machine/multiblock/electric/AssemblyLineMachine.java | 8 ++++++-- .../machine/multiblock/part/FluidHatchPartMachine.java | 2 +- .../machine/multiblock/part/ItemBusPartMachine.java | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java index debdf34eba8..69d2261afdc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/IRecipeHandler.java @@ -60,9 +60,7 @@ default boolean isDistinct() { * The main use of this is differentiating circuit inventories from item inventories * * @return {@code true} if this {@code IRecipeHandler} has content to be searched - * @deprecated since all contents should be searched. */ - @Deprecated(since = "7.0.0", forRemoval = true) default boolean shouldSearchContent() { return true; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java index 2b613b5b463..f59c2aa3e1f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableItemStackHandler.java @@ -45,9 +45,6 @@ public class NotifiableItemStackHandler extends NotifiableRecipeHandlerTrait container.getContents().stream() .filter(ItemStack.class::isInstance) .map(ItemStack.class::cast) .filter(s -> !s.isEmpty()) .findFirst()) - .filter(o -> !(o.isEmpty() || o.get().isEmpty())) + + .dropWhile(Optional::isEmpty) .limit(inputsSize) .map(o -> o.orElse(ItemStack.EMPTY)) .toList(); @@ -98,12 +101,13 @@ private boolean checkFluidInputs(@NotNull GTRecipe recipe) { if (fluidHandlers.size() < inputsSize) return false; var fluidInventory = fluidHandlers.stream() + .filter(IRecipeHandler::shouldSearchContent) .map(container -> container.getContents().stream() .filter(FluidStack.class::isInstance) .map(FluidStack.class::cast) .filter(f -> !f.isEmpty()) .findFirst()) - .filter(o -> !(o.isEmpty() || o.get().isEmpty())) + .dropWhile(Optional::isEmpty) .limit(inputsSize) .map(o -> o.orElse(FluidStack.EMPTY)) .toList(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index fd0a8719c1f..dc19d510e2f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -88,7 +88,7 @@ public FluidHatchPartMachine(IMachineBlockEntity holder, int tier, IO io, int in this.slots = slots; this.tank = createTank(initialCapacity, slots, args); this.circuitSlotEnabled = true; - this.circuitInventory = createCircuitItemHandler(io); + this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); } ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 2d989accdfc..8bb9992f24a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -83,7 +83,7 @@ public ItemBusPartMachine(IMachineBlockEntity holder, int tier, IO io, Object... super(holder, tier, io); this.inventory = createInventory(args); this.circuitSlotEnabled = true; - this.circuitInventory = createCircuitItemHandler(io); + this.circuitInventory = createCircuitItemHandler(io).shouldSearchContent(false); } ////////////////////////////////////// From bf8002bb6e898560fa44c79f004ffeb781841571 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:36:49 +0300 Subject: [PATCH 173/270] Fix singleblock generators' models not having the overlays (#3446) --- .../models/block/machine/hv_combustion.json | 16 ++--- .../models/block/machine/hv_gas_turbine.json | 16 ++--- .../block/machine/hv_steam_turbine.json | 16 ++--- .../models/block/machine/lv_combustion.json | 16 ++--- .../models/block/machine/lv_gas_turbine.json | 16 ++--- .../block/machine/lv_steam_turbine.json | 16 ++--- .../models/block/machine/mv_combustion.json | 16 ++--- .../models/block/machine/mv_gas_turbine.json | 16 ++--- .../block/machine/mv_steam_turbine.json | 16 ++--- .../common/data/models/GTMachineModels.java | 7 +-- .../gtceu/data/pack/GTDynamicDataPack.java | 2 +- .../machine/template/generator_machine.json | 61 +++++++++++++++++++ 12 files changed, 101 insertions(+), 113 deletions(-) create mode 100644 src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json index 9d669fddd7f..272ac046858 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_combustion.json @@ -5,11 +5,9 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -18,11 +16,9 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -31,11 +27,9 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" @@ -44,11 +38,9 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json index 7a3f7afa735..1ebd0e0fc5e 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_gas_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json index 5fd92721da7..18a4e532358 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/hv_steam_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/hv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/hv/side", "top": "gtceu:block/casings/voltage/hv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json index 7d34a2ce5c0..ac174b63bde 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_combustion.json @@ -5,11 +5,9 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -18,11 +16,9 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -31,11 +27,9 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" @@ -44,11 +38,9 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json index 623e8781bda..dd2e94ccff8 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_gas_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json index 210c1adea79..ad4ac9fbf93 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/lv_steam_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/lv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/lv/side", "top": "gtceu:block/casings/voltage/lv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json index 6e5edd8bb82..ddbe65c07e0 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_combustion.json @@ -5,11 +5,9 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -18,11 +16,9 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -31,11 +27,9 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" @@ -44,11 +38,9 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "overlay_top": "gtceu:block/generators/combustion/overlay_top_active", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json index 362044434b7..269157fd035 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_gas_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/gas_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json index 906a55ed626..21f4ba61468 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/mv_steam_turbine.json @@ -5,12 +5,10 @@ "variants": { "recipe_logic_status=idle": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -18,12 +16,10 @@ }, "recipe_logic_status=suspend": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -31,12 +27,10 @@ }, "recipe_logic_status=waiting": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } @@ -44,12 +38,10 @@ }, "recipe_logic_status=working": { "model": { - "parent": "gtceu:block/overlay/2_layer/tinted/front", + "parent": "gtceu:block/machine/template/generator_machine", "textures": { "bottom": "gtceu:block/casings/voltage/mv/bottom", - "overlay": "gtceu:block/overlay/machine/overlay_energy_1a_out", "overlay_side": "gtceu:block/generators/steam_turbine/overlay_side_active", - "overlay_tinted": "gtceu:block/overlay/machine/overlay_energy_1a_tinted", "side": "gtceu:block/casings/voltage/mv/side", "top": "gtceu:block/casings/voltage/mv/top" } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index ee970450332..3a55547ba70 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -286,6 +286,8 @@ public static MachineBuilder.ModelInitializer createSidedWorkableCasingMachineMo public static final String OVERLAY_ITEM_HATCH = "overlay_item_hatch"; // spotless:on + public static final ResourceLocation GENERATOR_MODEL = GTCEu.id("block/machine/template/generator_machine"); + public static MachineBuilder.ModelInitializer createSimpleGeneratorModel(ResourceLocation overlayDir) { return (ctx, prov, builder) -> { WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); @@ -293,10 +295,7 @@ public static MachineBuilder.ModelInitializer createSimpleGeneratorModel(Resourc builder.forAllStatesModels(state -> { RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); - BlockModelBuilder model = prov.models().nested() - .parent(prov.models().getExistingFile(GTCEu.id("block/overlay/2_layer/tinted/front"))) - .texture("overlay", ENERGY_OUT_1A.getIoPart()) - .texture("overlay_tinted", ENERGY_OUT_1A.getTintedPart()); + BlockModelBuilder model = prov.models().nested().parent(prov.models().getExistingFile(GENERATOR_MODEL)); tieredHullTextures(model, builder.getOwner().getTier()); addWorkableOverlays(overlays, status, model); diff --git a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java index 22201a1851e..cbf7560b4f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java +++ b/src/main/java/com/gregtechceu/gtceu/data/pack/GTDynamicDataPack.java @@ -88,7 +88,7 @@ public static void addRecipe(FinishedRecipe recipe) { /** * if subdir is null, no file ending is appended. - * + * * @param id the resource location of the file to be written. * @param subdir a nullable subdirectory for the data. * @param parent the parent folder where to write data to. diff --git a/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json b/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json new file mode 100644 index 00000000000..15ede585e4a --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/template/generator_machine.json @@ -0,0 +1,61 @@ +{ + "parent": "gtceu:block/machine/template/sided/sided", + "textures": { + "overlay_energy_io": "gtceu:block/overlay/machine/overlay_energy_1a_in", + "overlay_energy_tint": "gtceu:block/overlay/machine/overlay_energy_1a_tinted" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bottom", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#top", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#side", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#side", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#side", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#side", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ -0.01, -0.01, -0.01 ], + "to": [ 16.01, 16.01, 16.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front", "cullface": "north" }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back", "cullface": "south" }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top", "cullface": "up" }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom", "cullface": "down" }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "west" }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side", "cullface": "east" } + } + }, + { + "from": [ -0.02, -0.02, -0.02 ], + "to": [ 16.02, 16.02, 16.02 ], + "forge_data": { "block_light": 15, "sky_light": 15 }, + "shade": false, + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_front_emissive", "cullface": "north", "tintindex": -101 }, + "south": { "uv": [0, 0, 16, 16], "texture": "#overlay_back_emissive", "cullface": "south", "tintindex": -101 }, + "up": { "uv": [0, 0, 16, 16], "texture": "#overlay_top_emissive", "cullface": "up", "tintindex": -101 }, + "down": { "uv": [0, 0, 16, 16], "texture": "#overlay_bottom_emissive", "cullface": "down", "tintindex": -101 }, + "west": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "west", "tintindex": -101 }, + "east": { "uv": [0, 0, 16, 16], "texture": "#overlay_side_emissive", "cullface": "east", "tintindex": -101 } + } + }, + { + "from": [ 0, 0, -0.03 ], + "to": [ 16, 16, -0.03 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_energy_io", "cullface": "north" } + } + }, + { + "from": [ 0, 0, -0.04 ], + "to": [ 16, 16, -0.04 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay_energy_tint", "cullface": "north", "tintindex": 2 } + } + } + ] +} \ No newline at end of file From f65031f2f133f2e5adf904a1b6609578d75d0ded Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:39:02 +0300 Subject: [PATCH 174/270] Fix the multiblock preview page Z-fighting on most multiblocks (#3437) --- .../api/gui/widget/PatternPreviewWidget.java | 75 +++++++++++++------ 1 file changed, 52 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 89b8db9cef6..4fe58cdc3f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -31,6 +31,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -62,7 +63,8 @@ public class PatternPreviewWidget extends WidgetGroup { private boolean isLoaded; private static TrackedDummyWorld LEVEL; - private static BlockPos LAST_POS = new BlockPos(0, 50, 0); + private static final int REGION_SIZE = 512; + private static int LAST_OFFSET_INDEX = 0; private static final Map CACHE = new HashMap<>(); private final SceneWidget sceneWidget; private final DraggableScrollableWidgetGroup scrollableWidgetGroup; @@ -211,18 +213,14 @@ private void setupScene(MBPattern pattern) { Stream stream = pattern.blockMap.keySet().stream() .filter(pos -> layer == -1 || layer + pattern.minY == pos.getY()); if (pattern.controllerBase.isFormed()) { - LongSet set = pattern.controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", + LongSet modelDisabled = pattern.controllerBase.getMultiblockState().getMatchContext().getOrDefault( + "renderMask", LongSets.EMPTY_SET); - Set modelDisabled = set.stream().map(BlockPos::of).collect(Collectors.toSet()); if (!modelDisabled.isEmpty()) { - sceneWidget.setRenderedCore( - stream.filter(pos -> !modelDisabled.contains(pos)).collect(Collectors.toList()), null); - } else { - sceneWidget.setRenderedCore(stream.toList(), null); + stream = stream.filter(pos -> !modelDisabled.contains(pos.asLong())); } - } else { - sceneWidget.setRenderedCore(stream.toList(), null); } + sceneWidget.setRenderedCore(stream.toList(), null); } public static PatternPreviewWidget getPatternWidget(MultiblockMachineDefinition controllerDefinition) { @@ -306,10 +304,43 @@ private void onPosSelected(BlockPos pos, Direction facing) { } } - public static BlockPos locateNextRegion(int range) { - BlockPos pos = LAST_POS; - LAST_POS = LAST_POS.offset(range, 0, range); - return pos; + /** + * Finds the next section of the dummy preview level to place a multiblock at in a spiral pattern. + *

+ * This results in positions that are considerably closer to the world origin than + * the one it replaces, which did {@code prevPos.offset(500, 0, 500)}, + * which results in absurdly high offsets for the later multiblocks. + *

+ * The regions being closer to {@code (0,0)} means that Z-fighting should be less likely, + * since floating point inaccuracies won't be as large of a factor. + * + * @return the area to place the current multiblock at + */ + public static BlockPos locateNextRegion() { + int currentIndex = LAST_OFFSET_INDEX++; + + // Origin coordinates scaled back to the offset value, from global + int x = 0, z = 0; + if (currentIndex > 0) { + int v = (int) (Mth.sqrt(currentIndex + 0.25f) - 0.5f); + int nextV = v + 1; + int spiralBaseIndex = v * nextV; + // this is 1 or -1 depending on if v is odd or even + int flipFlop = (v & 1) * 2 - 1; + + int offset = flipFlop * nextV / 2; + x += offset; + z += offset; + + int cornerIndex = spiralBaseIndex + nextV; + if (currentIndex < cornerIndex) { + x -= flipFlop * (currentIndex - spiralBaseIndex + 1); + } else { + x -= flipFlop * nextV; + z -= flipFlop * (currentIndex - cornerIndex + 1); + } + } + return new BlockPos(x * REGION_SIZE, 50, z * REGION_SIZE); } @Override @@ -335,7 +366,7 @@ public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mous private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, HashSet blockDrops) { Map blockMap = new HashMap<>(); IMultiController controllerBase = null; - BlockPos multiPos = locateNextRegion(500); + BlockPos multiPos = locateNextRegion(); BlockInfo[][][] blocks = shapeInfo.getBlocks(); for (int x = 0; x < blocks.length; x++) { @@ -379,21 +410,19 @@ private MBPattern initializePattern(MultiblockShapeInfo shapeInfo, HashSet poses, IMultiController controllerBase) { + private void loadControllerFormed(Collection positions, IMultiController controllerBase) { BlockPattern pattern = controllerBase.getPattern(); if (pattern != null && pattern.checkPatternAt(controllerBase.getMultiblockState(), true)) { controllerBase.onStructureFormed(); } if (controllerBase.isFormed()) { - LongSet set = controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", + LongSet modelDisabled = controllerBase.getMultiblockState().getMatchContext().getOrDefault("renderMask", LongSets.EMPTY_SET); - Set modelDisabled = set.stream().map(BlockPos::of).collect(Collectors.toSet()); if (!modelDisabled.isEmpty()) { - sceneWidget.setRenderedCore( - poses.stream().filter(pos -> !modelDisabled.contains(pos)).collect(Collectors.toList()), null); - } else { - sceneWidget.setRenderedCore(poses, null); + positions = new HashSet<>(positions); + positions.removeIf(pos -> modelDisabled.contains(pos.asLong())); } + sceneWidget.setRenderedCore(positions, null); } else { GTCEu.LOGGER.warn("Pattern formed checking failed: {}", controllerBase.self().getDefinition()); } @@ -403,7 +432,7 @@ private Map gatherBlockDrops(Map bl Map partsMap = new Object2ObjectOpenHashMap<>(); for (Map.Entry entry : blocks.entrySet()) { BlockPos pos = entry.getKey(); - BlockState blockState = ((Level) PatternPreviewWidget.LEVEL).getBlockState(pos); + BlockState blockState = PatternPreviewWidget.LEVEL.getBlockState(pos); ItemStack itemStack = blockState.getBlock().getCloneItemStack(PatternPreviewWidget.LEVEL, pos, blockState); if (itemStack.isEmpty() && !blockState.getFluidState().isEmpty()) { @@ -446,7 +475,7 @@ public List getItemStack() { } } - private static class MBPattern { + public static class MBPattern { @NotNull final List> parts; From c51c98e5afe42491cd5efd2897dc8e432322f98a Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 17 Jul 2025 07:42:46 +0300 Subject: [PATCH 175/270] Fix part texture overrides replacing all uses of a sprite (#3448) --- gradle/scripts/moddevgradle.gradle | 2 + injected_interfaces/interfaces.json | 5 ++ .../gtceu/client/model/SpriteCapturer.java | 38 ------------ .../client/model/TextureOverrideModel.java | 25 ++++---- .../client/model/machine/MachineModel.java | 16 ++--- .../model/machine/UnbakedMachineModel.java | 9 +-- .../gtceu/client/util/GTQuadTransformers.java | 8 ++- .../gtceu/client/util/StaticFaceBakery.java | 2 +- .../gregtechceu/gtceu/core/IGTBakedQuad.java | 18 ++++++ .../core/mixins/client/BakedQuadMixin.java | 27 +++++++++ .../core/mixins/client/BlockModelMixin.java | 58 +++---------------- .../core/mixins/client/FaceBakeryMixin.java | 19 ++++++ src/main/resources/gtceu.mixins.json | 3 + 13 files changed, 106 insertions(+), 124 deletions(-) create mode 100644 injected_interfaces/interfaces.json delete mode 100644 src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index fea86c5ee76..36ef9021327 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -16,6 +16,8 @@ legacyForge { // This line is optional. Access Transformers are automatically detected accessTransformers = project.files('src/main/resources/META-INF/accesstransformer.cfg') + interfaceInjectionData = project.files('injected_interfaces/interfaces.json') + addModdingDependenciesTo(sourceSets.test) // addModdingDependenciesTo(sourceSets.extra) diff --git a/injected_interfaces/interfaces.json b/injected_interfaces/interfaces.json new file mode 100644 index 00000000000..9704941a618 --- /dev/null +++ b/injected_interfaces/interfaces.json @@ -0,0 +1,5 @@ +{ + "net/minecraft/client/renderer/block/model/BakedQuad": [ + "com/gregtechceu/gtceu/core/IGTBakedQuad" + ] +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java b/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java deleted file mode 100644 index ad344efc5c1..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/client/model/SpriteCapturer.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.gregtechceu.gtceu.client.model; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.Material; - -import lombok.Getter; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; - -public class SpriteCapturer implements Function { - - private final Function original; - @Getter - private final Map capturedMaterials = new HashMap<>(); - private final Map capturedNames = new HashMap<>(); - - public SpriteCapturer(Function original) { - this.original = original; - } - - public void captureMaterialName(Material material, String name) { - this.capturedNames.putIfAbsent(material, name); - } - - @Override - public TextureAtlasSprite apply(Material material) { - var sprite = original.apply(material); - - String materialName = capturedNames.get(material); - if (materialName != null) { - capturedMaterials.put(materialName, sprite); - capturedNames.remove(material); - } - return sprite; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java index 00c4903876d..652d19bbba8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/TextureOverrideModel.java @@ -25,9 +25,9 @@ public class TextureOverrideModel extends BakedModelWrappe @NotNull @Getter - protected final Map textureOverrides; + protected final Map textureOverrides; - public TextureOverrideModel(T child, Map textureOverrides) { + public TextureOverrideModel(T child, Map textureOverrides) { super(child); this.textureOverrides = textureOverrides; } @@ -43,21 +43,16 @@ public BakedModel getChild() { return retextureQuads(super.getQuads(state, side, rand, extraData, renderType), textureOverrides); } - public static Map resolveOverrides(Map overrides, - Map toOverride) { - Map textures = new HashMap<>(); - for (var entry : overrides.entrySet()) { - textures.put(toOverride.get(entry.getKey()), entry.getValue()); - } - return textures; - } - - public static List retextureQuads(List quads, - Map overrides) { + public static List retextureQuads(List quads, Map overrides) { List newQuads = new LinkedList<>(); for (BakedQuad quad : quads) { - TextureAtlasSprite original = quad.getSprite(); - TextureAtlasSprite replacement = overrides.get(original); + String textureKey = quad.gtceu$getTextureKey(); + if (textureKey == null || textureKey.isEmpty()) continue; + if (textureKey.charAt(0) == '#') { + textureKey = textureKey.substring(1); + } + + TextureAtlasSprite replacement = overrides.get(textureKey); if (replacement != null) { newQuads.add(GTQuadTransformers.setSprite(quad, replacement)); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index aed640d0a01..24d26aebb94 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.client.model.BaseBakedModel; import com.gregtechceu.gtceu.client.model.IBlockEntityRendererBakedModel; -import com.gregtechceu.gtceu.client.model.SpriteCapturer; import com.gregtechceu.gtceu.client.model.TextureOverrideModel; import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; import com.gregtechceu.gtceu.client.renderer.cover.ICoverableRenderer; @@ -102,7 +101,6 @@ public final class MachineModel extends BaseBakedModel implements ICoverableRend @Setter private TextureAtlasSprite particleIcon = null; - private final SpriteCapturer spriteCapturer; @Setter private Set replaceableTextures; @Setter @@ -112,14 +110,12 @@ public MachineModel(MachineDefinition definition, Map modelsByState, @Nullable MultiPartBakedModel multiPart, List> dynamicRenders, - SpriteCapturer spriteCapturer, ItemTransforms transforms, Transformation rootTransform, ModelState modelState, boolean isGui3d, boolean usesBlockLight, boolean useAmbientOcclusion) { this.definition = definition; this.modelsByState = modelsByState; this.multiPart = multiPart; this.dynamicRenders = dynamicRenders; - this.spriteCapturer = spriteCapturer; this.transforms = transforms; this.rootTransform = rootTransform; @@ -200,10 +196,10 @@ public TextureAtlasSprite getParticleIcon(@NotNull ModelData modelData) { public @NotNull List getQuads(@Nullable BlockState state, @Nullable Direction side, @NotNull RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { - // If there is a root transform, undo the ModelState transform, apply it, then - // re-apply the ModelState transform. - // This is necessary because of things like UV locking, which should only respond to the ModelState, and as such - // that is the only transform that should be applied during face bake. + // If there is a root transform, undo the ModelState transform, apply it, + // then re-apply the ModelState transform. + // This is necessary because of things like UV locking, which should only respond to the ModelState, + // and as such that is the only transform that should be applied during face bake. var postTransform = QuadTransformers.empty(); if (!rootTransform.isIdentity()) { postTransform = UnbakedGeometryHelper.applyRootTransform(modelState, rootTransform); @@ -382,9 +378,7 @@ private List renderPartOverrides(MachineModel controllerModel, IMulti (o1, o2) -> o1)); // actually process the sprite replacement - var replacementSprites = TextureOverrideModel.resolveOverrides(overrides, - this.spriteCapturer.getCapturedMaterials()); - return TextureOverrideModel.retextureQuads(originalQuads, replacementSprites); + return TextureOverrideModel.retextureQuads(originalQuads, overrides); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java index a331904c434..d6f806cf60c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/UnbakedMachineModel.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.client.model.machine; import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.client.model.SpriteCapturer; import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartBakedModel; import com.gregtechceu.gtceu.client.model.machine.multipart.MultiPartUnbakedModel; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; @@ -58,17 +57,15 @@ public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Material material = new Material(TextureAtlas.LOCATION_BLOCKS, entry.getValue()); textureOverrides.put(entry.getKey(), spriteGetter.apply(material)); } - final var spriteCapturer = new SpriteCapturer(spriteGetter); Map baseModels = new IdentityHashMap<>(); models.forEach((machineState, unbaked) -> { - baseModels.put(machineState, unbaked.bake(baker, spriteCapturer, modelState, modelLocation)); + baseModels.put(machineState, unbaked.bake(baker, spriteGetter, modelState, modelLocation)); }); MultiPartBakedModel multiPart = this.multiPart == null ? null : - this.multiPart.bake(baker, spriteCapturer, modelState, modelLocation); + this.multiPart.bake(baker, spriteGetter, modelState, modelLocation); - MachineModel model = new MachineModel(this.getDefinition(), baseModels, multiPart, - this.dynamicRenders, spriteCapturer, + MachineModel model = new MachineModel(this.getDefinition(), baseModels, multiPart, this.dynamicRenders, context.getTransforms(), context.getRootTransform(), modelState, context.isGui3d(), context.useBlockLight(), context.useAmbientOcclusion()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java index a601d17996b..fdfea07a48d 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/GTQuadTransformers.java @@ -60,8 +60,9 @@ public static BakedQuad setSprite(BakedQuad quad, TextureAtlasSprite sprite) { vertices[offset] = Float.floatToRawIntBits(u); vertices[offset + 1] = Float.floatToRawIntBits(v); } - return new BakedQuad(vertices, quad.getTintIndex(), quad.getDirection(), + BakedQuad newQuad = new BakedQuad(vertices, quad.getTintIndex(), quad.getDirection(), sprite, quad.isShade(), quad.hasAmbientOcclusion()); + return newQuad.gtceu$setTextureKey(quad.gtceu$getTextureKey()); } public static BakedQuad setColor(BakedQuad quad, int argbColor, boolean clearTintIndex) { @@ -70,12 +71,13 @@ public static BakedQuad setColor(BakedQuad quad, int argbColor, boolean clearTin quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); QuadTransformers.applyingColor(argbColor).processInPlace(copy); - return copy; + return copy.gtceu$setTextureKey(quad.gtceu$getTextureKey()); } public static BakedQuad copy(BakedQuad quad) { return new BakedQuad(quad.getVertices().clone(), quad.getTintIndex(), quad.getDirection(), - quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()); + quad.getSprite(), quad.isShade(), quad.hasAmbientOcclusion()) + .gtceu$setTextureKey(quad.gtceu$getTextureKey()); } private GTQuadTransformers() {} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java index 20e4672d50a..dd7b1c9a7c0 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/StaticFaceBakery.java @@ -139,7 +139,7 @@ public static BakedQuad bakeQuad(Vector3f posFrom, QuadTransformers.settingEmissivity(emissivity).processInPlace(quad); } - return quad; + return quad.gtceu$setTextureKey(face.texture); } public static BlockFaceUV recomputeUVs(BlockFaceUV uv, Direction facing, Transformation modelRotation) { diff --git a/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java b/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java new file mode 100644 index 00000000000..8cb853a080a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/IGTBakedQuad.java @@ -0,0 +1,18 @@ +package com.gregtechceu.gtceu.core; + +import net.minecraft.client.renderer.block.model.BakedQuad; + +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; + +public interface IGTBakedQuad { + + @ApiStatus.Internal + default BakedQuad gtceu$setTextureKey(@Nullable String key) { + return (BakedQuad) this; + } + + default @Nullable String gtceu$getTextureKey() { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java new file mode 100644 index 00000000000..ea2fadc9922 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BakedQuadMixin.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import com.gregtechceu.gtceu.core.IGTBakedQuad; + +import net.minecraft.client.renderer.block.model.BakedQuad; + +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +@Mixin(BakedQuad.class) +public class BakedQuadMixin implements IGTBakedQuad { + + @Unique + private String gtceu$textureKey = null; + + @Override + public BakedQuad gtceu$setTextureKey(@Nullable String key) { + this.gtceu$textureKey = key; + return (BakedQuad) (Object) this; + } + + @Override + public String gtceu$getTextureKey() { + return gtceu$textureKey; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java index 9f0ab39ecae..749e95c8a80 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/BlockModelMixin.java @@ -1,61 +1,19 @@ package com.gregtechceu.gtceu.core.mixins.client; -import com.gregtechceu.gtceu.client.model.SpriteCapturer; - +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.BlockElement; +import net.minecraft.client.renderer.block.model.BlockElementFace; import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.*; -import net.minecraft.resources.ResourceLocation; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import java.util.function.Function; -@Mixin(BlockModel.class) +@Mixin(value = BlockModel.class, priority = 1500) public class BlockModelMixin { - @Shadow - public String name; - @Unique - private final ThreadLocal gtceu$spriteCapturer = new ThreadLocal<>(); - - @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", - at = @At(value = "HEAD")) - private void gtceu$beforeBake(ModelBaker baker, BlockModel model, - Function spriteGetter, ModelState state, - ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteCapturer spriteCapturer) { - gtceu$spriteCapturer.set(spriteCapturer); - } - } - - @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/client/renderer/block/model/BlockModel;Ljava/util/function/Function;Lnet/minecraft/client/resources/model/ModelState;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/resources/model/BakedModel;", - at = @At(value = "RETURN")) - private void gtceu$afterBake(ModelBaker baker, BlockModel model, - Function spriteGetter, ModelState state, - ResourceLocation location, boolean guiLight3d, - CallbackInfoReturnable cir) { - if (spriteGetter instanceof SpriteCapturer) { - gtceu$spriteCapturer.remove(); - } - } - - @Inject(method = "getMaterial", at = @At(value = "RETURN")) - private void gtceu$captureMaterialNames(String name, CallbackInfoReturnable cir) { - Material material = cir.getReturnValue(); - if (material.texture().equals(MissingTextureAtlasSprite.getLocation())) { - return; - } - SpriteCapturer capturer = gtceu$spriteCapturer.get(); - if (capturer != null) { - capturer.captureMaterialName(material, name); - } + @ModifyReturnValue(method = "bakeFace", at = @At(value = "RETURN")) + private static BakedQuad gtceu$addQuadTextureKeyBlock(BakedQuad quad, BlockElement part, BlockElementFace face) { + return quad.gtceu$setTextureKey(face.texture); } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java new file mode 100644 index 00000000000..432126a3fba --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/FaceBakeryMixin.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.core.mixins.client; + +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.BlockElementFace; +import net.minecraft.client.renderer.block.model.FaceBakery; + +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(value = FaceBakery.class, priority = 1500) +public class FaceBakeryMixin { + + @ModifyReturnValue(method = "bakeQuad", at = @At(value = "RETURN")) + private BakedQuad gtceu$addQuadTextureKey(BakedQuad quad, Vector3f posFrom, Vector3f posTo, BlockElementFace face) { + return quad.gtceu$setTextureKey(face.texture); + } +} diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 58c2301e3ad..ef727aadff8 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -7,6 +7,8 @@ "plugin": "com.gregtechceu.gtceu.core.mixins.GTMixinPlugin", "client": [ "client.AbstractClientPlayerAccessor", + "client.FaceBakeryMixin", + "client.BakedQuadMixin", "client.BiomeColorsMixin", "client.BlockModelMixin", "client.ClientLevelAccessor", @@ -60,6 +62,7 @@ "forge.ConfiguredModelBuilderAccessor", "forge.ConfiguredModelListAccessor", "forge.IntersectionIngredientAccessor", + "forge.ModelBuilderAccessor", "forge.PartialNBTIngredientAccessor", "forge.StrictNBTIngredientAccessor", "jei.FluidHelperMixin", From 17b45d37bb8b5066ef9da21eb90ea30a42cd1586 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 17 Jul 2025 01:09:57 -0600 Subject: [PATCH 176/270] Fix mixin crash, cause one got deleted (#3459) --- src/main/resources/gtceu.mixins.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index ef727aadff8..6db6ed8524d 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -62,7 +62,6 @@ "forge.ConfiguredModelBuilderAccessor", "forge.ConfiguredModelListAccessor", "forge.IntersectionIngredientAccessor", - "forge.ModelBuilderAccessor", "forge.PartialNBTIngredientAccessor", "forge.StrictNBTIngredientAccessor", "jei.FluidHelperMixin", From ee42a457fefe8d3c0d3cb63b5c7e2d635ac20cdd Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Fri, 18 Jul 2025 00:23:52 -0600 Subject: [PATCH 177/270] Fix steam compressor progress bar being off by 1px (#3469) --- .../progress_bar_compress_bronze.png | Bin 269 -> 499 bytes .../progress_bar_compress_steel.png | Bin 283 -> 513 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_bronze.png index caa326fa089aaf22a7fc5b8d5ca89684e7fe94ae..15e5103861909b1235f368a19ed156d1db516a9d 100644 GIT binary patch delta 382 zcmeBW`pi6`u3n~kXKn^Q|6eBAGBar0<#L`f95Rk3G$P5-|0p=`OTN!{t6WAG8fJzOFj13qUK#T=h$+`ey)D$2a1ekyZGl5kGSy}*DP+f)w z1|Zor`+ph7cZ380nN^-Hjv*HQM=v_^9ai9B4NQ7h|Ge*EaB}%!wO5Na8~JN+6}_Gw zr;ynbRXy*ptmf_sX8cQ@a%NVz8m-Pqd-`m`m$RxWcUojN2Q-_wJ-xcw{_)4>Pb&6h zC~@v_n3TFi`;zF*xy!EJS;n{c{k>8?#fNH7X0$dam2mxS*;~(WrhvWjgsI~tkdr)J L{an^LB{Ts5?Gb0> delta 151 zcmV;I0BHa71C0WZet&vNL_t(IPtDRn4#OY}1yN$|f9Hz95& z(ipY&Jcm0{b|GyZNXrw_@QP$s(ag%1L()H&kZ==n%t8&)7?rJO|A@yr55#arq#S+9Y){BpmPWbHzCI?1QelD=q>jC0o$?%c@W!^CJz7r002ovPDHLk FV1mKVL#_Y- diff --git a/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png b/src/main/resources/assets/gtceu/textures/gui/progress_bar/progress_bar_compress_steel.png index a1ad6ae43e255ae0bf1ee2cddc2d8877a3d4938f..9799c7817cccde9b576e741ffcb258649e68746f 100644 GIT binary patch delta 339 zcmbQu)W|ZSuU?|WHKHUqKdq!Zu_%=xATcwqM9~kXKn^Q|6eBAGBar0<#L`f95Rk3G$P5-|0p=`OTN!{t6WAG8fJzOFj13qUK#T=h$+`ey)D$2a1ekyZGl5kGSy}*DP+f)w z1|Zor`+ph7cZ380nH8Qcjv*HQM=xCDVo~I92uxr8=KueS^=r8Uqx89%i|0R4aPpkE zQP;L-YnXg`+idGe&88FYC|weK*|AD8)HJt@)4YAcW2F>{))e8Yf0LtsGj# Date: Fri, 18 Jul 2025 00:25:01 -0600 Subject: [PATCH 178/270] Fix Magnetic dust to block skipping ebf steps (#3467) --- .../gtceu/data/recipe/generated/MaterialRecipeHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index 1de414dcf72..889f49ee282 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -642,7 +642,9 @@ private static void processBlock(@NotNull Consumer provider, @No .category(GTRecipeCategories.INGOT_MOLDING) .save(provider); - if (!material.hasProperty(PropertyKey.BLAST)) { + Material nonMagneticMaterial = material.hasFlag(IS_MAGNETIC) ? + material.getProperty(PropertyKey.INGOT).getSmeltingInto() : material; + if (!nonMagneticMaterial.hasProperty(PropertyKey.BLAST)) { ALLOY_SMELTER_RECIPES.recipeBuilder("alloy_smelt_" + material.getName() + "_dust_to_block") .inputItems(dust, material, (int) (materialAmount / M)) .notConsumable(GTItems.SHAPE_MOLD_BLOCK) From b31183632529d96457d3b833810ef643f9f07909 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:07:00 +0300 Subject: [PATCH 179/270] Make 1.21 releases be published as beta (#3463) --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c0b179c8ceb..0abf8609e54 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -95,7 +95,7 @@ jobs: MC_VERSION: ${{ inputs.branch == '1.21' && '1.21.1' || '1.20.1' }} LOADER: ${{ inputs.branch == '1.21' && 'neoforge' || 'forge' }} JAVA: ${{ inputs.branch == '1.21' && '21' || '17' }} - VERSION_TYPE: ${{ inputs.branch == '1.21' && 'alpha' || 'beta' }} + VERSION_TYPE: ${{ inputs.branch == '1.21' && 'beta' || 'beta' }} uses: Kir-Antipov/mc-publish@v3.3.0 with: modrinth-id: 7tG215v7 From cff3d1797be74e52dc5a1f2524927737bd3f42de Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Fri, 18 Jul 2025 07:37:46 -0400 Subject: [PATCH 180/270] Release Action for Forcing Release Label Type (#3473) --- .github/workflows/manage-pr-labels.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/manage-pr-labels.yml b/.github/workflows/manage-pr-labels.yml index 3ef69bcd1f6..eda3b8b99aa 100644 --- a/.github/workflows/manage-pr-labels.yml +++ b/.github/workflows/manage-pr-labels.yml @@ -25,10 +25,19 @@ jobs: labels: 'do not merge' exit_type: failure - - name: Check for Required Labels # require at least one of these labels + - name: Check for Required Type Labels # require at least one of these labels uses: mheap/github-action-required-labels@v5 with: mode: minimum count: 1 labels: 'type: feature, type: bugfix, type: refactor, type: translation, ignore changelog' exit_type: failure + + - name: Check for Required Release Label # require exactly one of these labels + uses: mheap/github-action-required-labels@v5 + with: + mode: exactly + count: 1 + labels: 'release: api - X.0.0, release: major - 0.X.0, releasee: Patch - 0.0.X, release: stale' + exit_type: failure + From 05b35f3ccf265708b6d88d31ccc5810c4b20d125 Mon Sep 17 00:00:00 2001 From: Ghostipedia Date: Fri, 18 Jul 2025 08:14:20 -0400 Subject: [PATCH 181/270] admin merge label now stops PR's from being mergable --- .github/workflows/manage-pr-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/manage-pr-labels.yml b/.github/workflows/manage-pr-labels.yml index eda3b8b99aa..aaf00d48484 100644 --- a/.github/workflows/manage-pr-labels.yml +++ b/.github/workflows/manage-pr-labels.yml @@ -22,7 +22,7 @@ jobs: with: mode: exactly count: 0 - labels: 'do not merge' + labels: 'do not merge, admin merge' exit_type: failure - name: Check for Required Type Labels # require at least one of these labels From 332aa45679740636e15c4313c378802d25693f71 Mon Sep 17 00:00:00 2001 From: Ghostipedia Date: Fri, 18 Jul 2025 08:15:00 -0400 Subject: [PATCH 182/270] Typo within the Release Label Check --- .github/workflows/manage-pr-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/manage-pr-labels.yml b/.github/workflows/manage-pr-labels.yml index aaf00d48484..d958382cf45 100644 --- a/.github/workflows/manage-pr-labels.yml +++ b/.github/workflows/manage-pr-labels.yml @@ -38,6 +38,6 @@ jobs: with: mode: exactly count: 1 - labels: 'release: api - X.0.0, release: major - 0.X.0, releasee: Patch - 0.0.X, release: stale' + labels: 'release: api - X.0.0, release: major - 0.X.0, release: Patch - 0.0.X, release: stale' exit_type: failure From 231ce51edcc17e80ab847400ba4f47d7190e3384 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Fri, 18 Jul 2025 21:37:24 -0600 Subject: [PATCH 183/270] Fix partSorter being wrong on certain directions (#3481) --- .../gtceu/api/pattern/util/RelativeDirection.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java index a050ef936ff..9e23eee4f08 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/util/RelativeDirection.java @@ -169,12 +169,12 @@ public Comparator getSorter(Direction frontDir, Direction upwardsDir, // Determined by Direction.Axis + Direction.AxisDirection return switch (sorterDirection) { - case UP -> Comparator.comparingInt(pos -> -pos.getY()); - case DOWN -> Comparator.comparingInt(BlockPos::getY); - case EAST -> Comparator.comparingInt(pos -> -pos.getX()); - case WEST -> Comparator.comparingInt(BlockPos::getX); + case UP -> Comparator.comparingInt(BlockPos::getY); + case DOWN -> Comparator.comparingInt(pos -> -pos.getY()); case NORTH -> Comparator.comparingInt(pos -> -pos.getZ()); + case EAST -> Comparator.comparingInt(BlockPos::getX); case SOUTH -> Comparator.comparingInt(BlockPos::getZ); + case WEST -> Comparator.comparingInt(pos -> -pos.getX()); }; } From d5ce6da7cc0176f6c6c1535650c7c78dcb856241 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 20 Jul 2025 22:16:22 +0300 Subject: [PATCH 184/270] Fix large boilers' parts being xray blocks (#3495) --- .../client/model/machine/MachineModel.java | 25 ++++++++++++------- .../machine/impl/BoilerMultiPartRender.java | 17 +++++++------ .../gtceu/client/util/ModelUtils.java | 5 ++++ 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 24d26aebb94..7cc58490bb1 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -339,25 +339,30 @@ public List remapReplaceableTextures(String key) { } private List renderPartOverrides(MachineModel controllerModel, IMultiController controller, - List originalQuads, IMultiPart part, Direction frontFacing, + List quads, IMultiPart part, Direction frontFacing, @Nullable Direction side, RandomSource rand, ModelData modelData, @Nullable RenderType renderType) { var overrides = controllerModel.textureOverrides; + List renderQuads = new LinkedList<>(); for (var render : controllerModel.getDynamicRenders()) { if (render instanceof IControllerModelRenderer controllerRenderer) { - controllerRenderer.renderPartModel(originalQuads, controller, part, frontFacing, side, + controllerRenderer.renderPartModel(renderQuads, controller, part, frontFacing, side, rand, modelData, renderType); - // assume the renderer drew the base model, and replace the override textures with empty ones - overrides = new HashMap<>(); - for (String key : this.replaceableTextures) { - overrides.put(key, blankSprite); + if (!renderQuads.isEmpty()) { + // assume the renderer drew the base model, and replace the override textures with empty ones + overrides = new HashMap<>(); + for (String key : this.replaceableTextures) { + overrides.put(key, blankSprite); + } + break; } - break; + } } if (overrides.isEmpty()) { - return originalQuads; + quads.addAll(renderQuads); + return quads; } // parse out valid overrides @@ -378,7 +383,9 @@ private List renderPartOverrides(MachineModel controllerModel, IMulti (o1, o2) -> o1)); // actually process the sprite replacement - return TextureOverrideModel.retextureQuads(originalQuads, overrides); + quads = TextureOverrideModel.retextureQuads(quads, overrides); + quads.addAll(renderQuads); + return quads; } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index 842164e53e4..afebf4eae8c 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -16,7 +16,6 @@ import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.BlockPos; @@ -69,13 +68,7 @@ public BoilerMultiPartRender(BoilerFireboxType fireboxType, Supplier { - this.fireboxIdleModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxIdle)); - this.fireboxActiveModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.fireboxActive)); - this.casingModel = event.getModels().get(BlockModelShaper.stateToModelLocation(this.casing)); - }); } @Override @@ -103,6 +96,16 @@ public boolean isBlockEntityRenderer() { public void renderPartModel(List quads, IMultiController controller, IMultiPart part, Direction frontFacing, @Nullable Direction side, RandomSource rand, @NotNull ModelData modelData, @Nullable RenderType renderType) { + if (this.fireboxIdleModel == null) { + this.fireboxIdleModel = ModelUtils.getModelForState(fireboxIdle); + } + if (this.fireboxActiveModel == null) { + this.fireboxActiveModel = ModelUtils.getModelForState(fireboxActive); + } + if (this.casingModel == null) { + this.casingModel = ModelUtils.getModelForState(casing); + } + BlockPos partPos = part.self().getPos(); MultiblockControllerMachine machine = controller.self(); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java index 29c79b0d2f4..8568412da98 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ModelUtils.java @@ -9,6 +9,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.Util; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.resources.model.*; @@ -48,6 +49,10 @@ public static List getBakedModelQuads(BakedModel model, BlockAndTintG return model.getQuads(state, side, rand, model.getModelData(level, pos, state, ModelData.EMPTY), null); } + public static BakedModel getModelForState(BlockState state) { + return Minecraft.getInstance().getBlockRenderer().getBlockModel(state); + } + public static String getPropertyValueString(Map.Entry, Comparable> entry) { Property property = entry.getKey(); Comparable value = entry.getValue(); From 763c130c759c294501c43872d1363c1f11122bc5 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 20 Jul 2025 22:16:42 +0300 Subject: [PATCH 185/270] Fix setting model properties' default values with KubeJS (#3497) --- .../registry/registrate/MachineBuilder.java | 19 +++++++++++++++++++ .../machine/KJSTieredMachineBuilder.java | 12 ++++++++++-- .../machine/KJSTieredMultiblockBuilder.java | 4 ++-- .../machine/KJSWrappingMachineBuilder.java | 14 +++++++++----- .../machine/KJSWrappingMultiblockBuilder.java | 13 ++++++++----- .../kjs/builders/machine/package-info.java | 7 +++++++ .../kjs/builders/package-info.java | 7 +++++++ 7 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index bd3adc5d099..fc81528f6dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -60,6 +60,7 @@ import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; +import dev.latvian.mods.rhino.util.RemapPrefixForJS; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; @@ -79,8 +80,10 @@ import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.integration.kjs.GregTechKubeJSPlugin.RUNTIME_BLOCKSTATE_PROVIDER; +@SuppressWarnings("unused") @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault +@RemapPrefixForJS("kjs$") @Accessors(chain = true, fluent = true) public class MachineBuilder extends BuilderBase { @@ -372,6 +375,22 @@ public > MachineBuilder modelProperty(Proper return this; } + // KJS helpers for model property defaults + // These don't need to be copied to the multiblock builder because KJS doesn't care about the return type downgrade + + public MachineBuilder kjs$modelPropertyBool(Property property, boolean defaultValue) { + return modelProperty(property, defaultValue); + } + + public MachineBuilder kjs$modelPropertyInt(Property property, int defaultValue) { + return modelProperty(property, defaultValue); + } + + public & Comparable> MachineBuilder kjs$modelPropertyEnum(Property property, + T defaultValue) { + return modelProperty(property, defaultValue); + } + @Tolerate public MachineBuilder modelProperties(Property... properties) { return this.modelProperties(List.of(properties)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 487f95b503d..2210944d74e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -43,11 +43,15 @@ public class KJSTieredMachineBuilder extends BuilderBase { public volatile Int2IntFunction tankScalingFunction = GTMachineUtils.defaultTankSizeFunction; @Setter public volatile boolean addDefaultTooltips = true; + @Setter + public volatile boolean addDefaultModel = true; public volatile BiFunction editableUI; public KJSTieredMachineBuilder(ResourceLocation id) { super(id); + this.addDefaultTooltips = false; + this.addDefaultModel = false; } public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machine, @@ -80,7 +84,7 @@ public void generateLang(@NotNull LangEventJS lang) { } @Override - public MachineDefinition @NotNull [] register() { + public @Nullable MachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + @@ -95,9 +99,12 @@ public void generateLang(@NotNull LangEventJS lang) { holder -> machine.create(holder, tier, tankScalingFunction)); builder.langValue("%s %s %s".formatted(VLVH[tier], toEnglishName(this.id.getPath()), VLVT[tier])) - .workableTieredHullModel(id.withPrefix("block/machines/")) .tier(tier); + if (this.addDefaultModel) { + builder.workableTieredHullModel(id.withPrefix("block/machines/")); + } this.definition.apply(tier, builder); + if (builder.recipeTypes() != null && builder.recipeTypes().length > 0) { GTRecipeType recipeType = builder.recipeTypes()[0]; if (this.editableUI != null && builder.editableUI() == null) { @@ -109,6 +116,7 @@ public void generateLang(@NotNull LangEventJS lang) { tankScalingFunction.applyAsInt(tier), true)); } } + this.builders[tier] = builder; definitions[tier] = builder.register(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index fa3c762d8d0..f2b4dc7aa65 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -56,7 +56,7 @@ public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { } @Override - public void generateLang(@NotNull LangEventJS lang) { + public void generateLang(LangEventJS lang) { super.generateLang(lang); for (int tier : tiers) { MultiblockMachineBuilder builder = this.builders[tier]; @@ -67,7 +67,7 @@ public void generateLang(@NotNull LangEventJS lang) { } @Override - public MultiblockMachineDefinition @NotNull [] register() { + public @Nullable MultiblockMachineDefinition @NotNull [] register() { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java index fe7c7b2c9f3..ef8eb45bb66 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java @@ -11,11 +11,11 @@ import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; +@SuppressWarnings("unused") public class KJSWrappingMachineBuilder extends BuilderBase { @HideFromJS @@ -52,8 +52,13 @@ public KJSWrappingMachineBuilder addDefaultTooltips(boolean addDefaultTooltips) return this; } + public KJSWrappingMachineBuilder addDefaultModel(boolean addDefaultModel) { + tieredBuilder.addDefaultModel(addDefaultModel); + return this; + } + @Override - public void generateDataJsons(@NotNull DataJsonGenerator generator) { + public void generateDataJsons(DataJsonGenerator generator) { tieredBuilder.generateDataJsons(generator); } @@ -63,13 +68,12 @@ public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { } @Override - public void generateLang(@NotNull LangEventJS lang) { - super.generateLang(lang); + public void generateLang(LangEventJS lang) { tieredBuilder.generateLang(lang); } @Override - public @NotNull MachineDefinition register() { + public MachineDefinition register() { tieredBuilder.register(); for (var def : tieredBuilder.get()) { if (def != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java index feb4f2331d6..113b517de61 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java @@ -14,9 +14,9 @@ import dev.latvian.mods.kubejs.client.LangEventJS; import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import dev.latvian.mods.kubejs.generator.DataJsonGenerator; import dev.latvian.mods.rhino.util.HideFromJS; import lombok.Getter; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -47,20 +47,23 @@ public KJSWrappingMultiblockBuilder definition(KJSTieredMultiblockBuilder.Defini return this; } + @Override + public void generateDataJsons(DataJsonGenerator generator) { + tieredBuilder.generateDataJsons(generator); + } + @Override public void generateAssetJsons(@Nullable AssetJsonGenerator generator) { - super.generateAssetJsons(generator); tieredBuilder.generateAssetJsons(generator); } @Override - public void generateLang(@NotNull LangEventJS lang) { - super.generateLang(lang); + public void generateLang(LangEventJS lang) { tieredBuilder.generateLang(lang); } @Override - public @NotNull MultiblockMachineDefinition register() { + public MultiblockMachineDefinition register() { tieredBuilder.register(); for (var def : tieredBuilder.get()) { if (def != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java new file mode 100644 index 00000000000..aec79b6b81d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.integration.kjs.builders.machine; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java new file mode 100644 index 00000000000..c9aaf70d6ab --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.gregtechceu.gtceu.integration.kjs.builders; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; From 563a442b4135fc510fec2f8d45c2e863e346f02e Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 20 Jul 2025 22:28:24 +0300 Subject: [PATCH 186/270] Make `MachineDefinition#recipeTypes` be nonnull (#3498) --- .../gtceu/api/machine/MachineDefinition.java | 3 +- .../registry/registrate/MachineBuilder.java | 42 +++++++++++++------ .../GTOreProcessingEmiCategory.java | 12 +++--- .../emi/recipe/GTRecipeEMICategory.java | 2 - .../jei/recipe/GTRecipeJEICategory.java | 2 - .../machine/KJSTieredMachineBuilder.java | 2 +- .../rei/recipe/GTRecipeREICategory.java | 2 - .../top/provider/MachineModeProvider.java | 13 +++--- 8 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index b6ef72d034a..fa7c66cc068 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -63,8 +63,7 @@ public class MachineDefinition implements Supplier { private Function machineSupplier; @Getter @Setter - @Nullable - private GTRecipeType[] recipeTypes; + private @NotNull GTRecipeType @NotNull [] recipeTypes; @Getter @Setter private int tier; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index fc81528f6dc..b97c4510d87 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -134,7 +134,7 @@ public class MachineBuilder extends Builde @Setter private NonNullConsumer> onBlockEntityRegister = NonNullConsumer.noop(); @Getter // getter for KJS - private @Nullable GTRecipeType @Nullable [] recipeTypes = null; + private @NotNull GTRecipeType @NotNull [] recipeTypes = new GTRecipeType[0]; @Getter @Setter // getter for KJS private int tier; @@ -203,6 +203,13 @@ public MachineBuilder(GTRegistrate registrate, String name, } public MachineBuilder recipeType(GTRecipeType type) { + // noinspection ConstantValue + if (type == null) { + GTCEu.LOGGER.error( + "Tried to set null recipe type on machine {}. Did you create the recipe type before this machine?", + this.id); + return this; + } this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); initRecipeMachineModelProperties(type); return this; @@ -210,16 +217,29 @@ public MachineBuilder recipeType(GTRecipeType type) { @Tolerate public MachineBuilder recipeTypes(GTRecipeType... types) { - for (GTRecipeType type : types) { - this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + List typeList = new ArrayList<>(); + Collections.addAll(typeList, this.recipeTypes); + + for (int i = 0; i < types.length; i++) { + GTRecipeType type = types[i]; + if (type != null) { + initRecipeMachineModelProperties(type); + typeList.add(type); + } else { + GTCEu.LOGGER.error( + "Tried to set null recipe type on machine {} (index {}). Did you create the recipe type before this machine?", + this.id, i); + } } - initRecipeMachineModelProperties(types); + this.recipeTypes = typeList.toArray(GTRecipeType[]::new); return this; } - protected void initRecipeMachineModelProperties(GTRecipeType... types) { - if (types.length > 0 && - Arrays.stream(types).noneMatch(type -> type == GTRecipeTypes.DUMMY_RECIPES)) { + protected void initRecipeMachineModelProperties(GTRecipeType type) { + if (type == GTRecipeTypes.DUMMY_RECIPES) { + return; + } + if (!modelProperties.containsKey(RecipeLogic.STATUS_PROPERTY)) { modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); } } @@ -547,11 +567,9 @@ public DEFINITION register() { definition.setRegressWhenWaiting(this.regressWhenWaiting); definition.setAllowCoverOnFront(this.allowCoverOnFront); - if (recipeTypes != null) { - for (GTRecipeType type : recipeTypes) { - if (type != null && type.getIconSupplier() == null) { - type.setIconSupplier(definition::asStack); - } + for (GTRecipeType type : recipeTypes) { + if (type.getIconSupplier() == null) { + type.setIconSupplier(definition::asStack); } } if (appearance == null) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java index 2837f0d6fdc..912d2a908e0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java @@ -44,13 +44,11 @@ public static void registerWorkStations(EmiRegistry registry) { CHEMICAL_BATH_RECIPES, ELECTROMAGNETIC_SEPARATOR_RECIPES, SIFTER_RECIPES }; for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() != null) { - for (GTRecipeType type : machine.getRecipeTypes()) { - for (GTRecipeType validType : validTypes) { - if (type == validType && !registeredMachines.contains(machine)) { - registry.addWorkstation(CATEGORY, EmiStack.of(machine.asStack())); - registeredMachines.add(machine); - } + for (GTRecipeType type : machine.getRecipeTypes()) { + for (GTRecipeType validType : validTypes) { + if (type == validType && !registeredMachines.contains(machine)) { + registry.addWorkstation(CATEGORY, EmiStack.of(machine.asStack())); + registeredMachines.add(machine); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java index 403c15e755b..ad817bea6cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeEMICategory.java @@ -44,9 +44,7 @@ public static void registerDisplays(EmiRegistry registry) { public static void registerWorkStations(EmiRegistry registry) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registry.addWorkstation(machineCategory(category), EmiStack.of(machine.asStack())); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java index d6b73dd1602..14488980e52 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeJEICategory.java @@ -63,9 +63,7 @@ public static void registerRecipes(IRecipeRegistration registration) { public static void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registration.addRecipeCatalyst(machine.asStack(), machineType(category)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 2210944d74e..d81218d2070 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -105,7 +105,7 @@ public void generateLang(@NotNull LangEventJS lang) { } this.definition.apply(tier, builder); - if (builder.recipeTypes() != null && builder.recipeTypes().length > 0) { + if (builder.recipeTypes().length > 0) { GTRecipeType recipeType = builder.recipeTypes()[0]; if (this.editableUI != null && builder.editableUI() == null) { builder.editableUI(this.editableUI.apply(this.id, recipeType)); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java index b9b318b68cb..8ef0565ca28 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeREICategory.java @@ -58,9 +58,7 @@ public static void registerDisplays(DisplayRegistry registry) { public static void registerWorkStations(CategoryRegistry registry) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeTypes() == null) continue; for (GTRecipeType type : machine.getRecipeTypes()) { - if (type == null) continue; for (GTRecipeCategory category : type.getCategories()) { if (!category.isXEIVisible() && !GTCEu.isDev()) continue; registry.addWorkstations(machineCategory(category), EntryStacks.of(machine.asStack())); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java index 7a292b409dd..8050bda6b7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/MachineModeProvider.java @@ -18,7 +18,6 @@ import mcjty.theoneprobe.api.IProbeInfo; import mcjty.theoneprobe.api.IProbeInfoProvider; import mcjty.theoneprobe.api.ProbeMode; -import org.jetbrains.annotations.Nullable; public class MachineModeProvider implements IProbeInfoProvider { @@ -31,16 +30,17 @@ public ResourceLocation getID() { public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { if (level.getBlockEntity(iProbeHitData.getPos()) instanceof MetaMachineBlockEntity blockEntity) { - @Nullable GTRecipeType[] recipeTypes = blockEntity.getMetaMachine().getDefinition().getRecipeTypes(); - if (recipeTypes != null && recipeTypes.length > 1) { + if (recipeTypes.length > 1) { if (blockEntity.getMetaMachine() instanceof IRecipeLogicMachine recipeLogicMachine) { GTRecipeType currentRecipeType = recipeLogicMachine.getRecipeType(); if (player.isShiftKeyDown()) { iProbeInfo.text(Component.translatable("gtceu.top.machine_mode")); + for (GTRecipeType recipeType : recipeTypes) { IProbeInfo horizontalPane = iProbeInfo.horizontal( iProbeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); + if (recipeType == currentRecipeType) { horizontalPane.text(ChatFormatting.BLUE + " > "); horizontalPane.text(CompoundText.create().important("%s.%s".formatted( @@ -52,11 +52,8 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player play } } } else { - iProbeInfo.text( - Component.translatable("gtceu.top.machine_mode") - .append(Component.translatable("%s.%s".formatted( - currentRecipeType.registryName.getNamespace(), - currentRecipeType.registryName.getPath())))); + iProbeInfo.text(Component.translatable("gtceu.top.machine_mode") + .append(Component.translatable(currentRecipeType.registryName.toLanguageKey()))); } } } From 3603b68a04d07f68edd9a25dcc6c8a3f1e3dc4d2 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 20 Jul 2025 22:31:14 +0300 Subject: [PATCH 187/270] Fix KJS-made generators using the wrong EU info tooltips (#3500) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../gtceu/integration/kjs/GregTechKubeJSPlugin.java | 4 ++-- .../kjs/builders/machine/KJSTieredMachineBuilder.java | 8 ++++++-- .../kjs/builders/machine/KJSWrappingMachineBuilder.java | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 0dee394fa5f..38e43df4647 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -163,7 +163,7 @@ public void init() { GTRegistryInfo.MACHINE.addType("simple", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, - SimpleTieredMachine.EDITABLE_UI_CREATOR)), + SimpleTieredMachine.EDITABLE_UI_CREATOR, false)), true); GTRegistryInfo.MACHINE.addType("custom", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id)), @@ -173,7 +173,7 @@ public void init() { GTRegistryInfo.MACHINE.addType("generator", KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, - SimpleGeneratorMachine.EDITABLE_UI_CREATOR)), + SimpleGeneratorMachine.EDITABLE_UI_CREATOR, true)), false); GTRegistryInfo.MACHINE.addType("multiblock", MultiblockMachineBuilder.class, KJSWrappingMultiblockBuilder::createKJSMulti, false); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index d81218d2070..148aa32b922 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -45,6 +45,8 @@ public class KJSTieredMachineBuilder extends BuilderBase { public volatile boolean addDefaultTooltips = true; @Setter public volatile boolean addDefaultModel = true; + @Setter + public volatile boolean isGenerator = false; public volatile BiFunction editableUI; @@ -55,10 +57,12 @@ public KJSTieredMachineBuilder(ResourceLocation id) { } public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machine, - BiFunction editableUI) { + BiFunction editableUI, + boolean isGenerator) { super(id); this.machine = machine; this.editableUI = editableUI; + this.isGenerator = isGenerator; } @Override @@ -113,7 +117,7 @@ public void generateLang(@NotNull LangEventJS lang) { if (tankScalingFunction != null && addDefaultTooltips) { builder.tooltips( GTMachineUtils.workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, - tankScalingFunction.applyAsInt(tier), true)); + tankScalingFunction.applyAsInt(tier), !isGenerator)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java index ef8eb45bb66..0efd04f3e62 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java @@ -57,6 +57,11 @@ public KJSWrappingMachineBuilder addDefaultModel(boolean addDefaultModel) { return this; } + public KJSWrappingMachineBuilder isGenerator(boolean isGenerator) { + tieredBuilder.isGenerator(isGenerator); + return this; + } + @Override public void generateDataJsons(DataJsonGenerator generator) { tieredBuilder.generateDataJsons(generator); From 9849b463c0a647d1541a589b97d52a511c790040 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 20 Jul 2025 15:50:36 -0400 Subject: [PATCH 188/270] Bump Version from 7.0.2 -> 7.1.0 (#3503) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8f963103283..a3f3bfe6a73 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 7.0.2 +mod_version = 7.1.0 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From 32ffda4e96e5232e5e15eecd6d8aa38d6c8ea5fa Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 20 Jul 2025 15:40:19 -0600 Subject: [PATCH 189/270] Fix overlay being backwards on certain orientations (#3482) --- .../gtceu/blockstates/active_transformer.json | 20 +++++++++---------- .../blockstates/alloy_blast_smelter.json | 20 +++++++++---------- .../gtceu/blockstates/assembly_line.json | 20 +++++++++---------- .../assets/gtceu/blockstates/coke_oven.json | 20 +++++++++---------- .../assets/gtceu/blockstates/cracker.json | 20 +++++++++---------- .../gtceu/blockstates/creative_chest.json | 20 +++++++++---------- .../gtceu/blockstates/creative_tank.json | 20 +++++++++---------- .../assets/gtceu/blockstates/data_bank.json | 16 +++++++-------- .../blockstates/electric_blast_furnace.json | 20 +++++++++---------- .../blockstates/ev_bedrock_ore_miner.json | 16 +++++++-------- .../blockstates/ev_fluid_drilling_rig.json | 20 +++++++++---------- .../gtceu/blockstates/ev_large_miner.json | 16 +++++++-------- .../gtceu/blockstates/ev_super_chest.json | 20 +++++++++---------- .../gtceu/blockstates/ev_super_tank.json | 20 +++++++++---------- .../extreme_combustion_engine.json | 20 +++++++++---------- .../gtceu/blockstates/gas_large_turbine.json | 20 +++++++++---------- .../high_performance_computation_array.json | 16 +++++++-------- .../blockstates/hv_bedrock_ore_miner.json | 16 +++++++-------- .../blockstates/hv_fluid_drilling_rig.json | 20 +++++++++---------- .../gtceu/blockstates/hv_super_chest.json | 20 +++++++++---------- .../gtceu/blockstates/hv_super_tank.json | 20 +++++++++---------- .../blockstates/implosion_compressor.json | 20 +++++++++---------- .../gtceu/blockstates/iv_large_miner.json | 16 +++++++-------- .../gtceu/blockstates/iv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/iv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/large_arc_smelter.json | 20 +++++++++---------- .../gtceu/blockstates/large_assembler.json | 20 +++++++++---------- .../gtceu/blockstates/large_autoclave.json | 20 +++++++++---------- .../gtceu/blockstates/large_brewer.json | 20 +++++++++---------- .../gtceu/blockstates/large_centrifuge.json | 20 +++++++++---------- .../blockstates/large_chemical_bath.json | 20 +++++++++---------- .../blockstates/large_chemical_reactor.json | 20 +++++++++---------- .../blockstates/large_circuit_assembler.json | 20 +++++++++---------- .../blockstates/large_combustion_engine.json | 20 +++++++++---------- .../gtceu/blockstates/large_cutter.json | 20 +++++++++---------- .../gtceu/blockstates/large_electrolyzer.json | 20 +++++++++---------- .../blockstates/large_electromagnet.json | 20 +++++++++---------- .../blockstates/large_engraving_laser.json | 20 +++++++++---------- .../gtceu/blockstates/large_extractor.json | 20 +++++++++---------- .../gtceu/blockstates/large_extruder.json | 20 +++++++++---------- .../blockstates/large_maceration_tower.json | 20 +++++++++---------- .../blockstates/large_material_press.json | 20 +++++++++---------- .../assets/gtceu/blockstates/large_mixer.json | 20 +++++++++---------- .../gtceu/blockstates/large_packer.json | 20 +++++++++---------- .../blockstates/large_sifting_funnel.json | 20 +++++++++---------- .../gtceu/blockstates/large_solidifier.json | 20 +++++++++---------- .../gtceu/blockstates/large_wiremill.json | 20 +++++++++---------- .../gtceu/blockstates/luv_fusion_reactor.json | 20 +++++++++---------- .../gtceu/blockstates/luv_large_miner.json | 16 +++++++-------- .../gtceu/blockstates/luv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/luv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/lv_super_chest.json | 20 +++++++++---------- .../gtceu/blockstates/lv_super_tank.json | 20 +++++++++---------- .../gtceu/blockstates/mega_blast_furnace.json | 20 +++++++++---------- .../blockstates/mega_vacuum_freezer.json | 20 +++++++++---------- .../gtceu/blockstates/multi_smelter.json | 20 +++++++++---------- .../blockstates/mv_bedrock_ore_miner.json | 16 +++++++-------- .../blockstates/mv_fluid_drilling_rig.json | 20 +++++++++---------- .../gtceu/blockstates/mv_super_chest.json | 20 +++++++++---------- .../gtceu/blockstates/mv_super_tank.json | 20 +++++++++---------- .../gtceu/blockstates/network_switch.json | 16 +++++++-------- .../gtceu/blockstates/opv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/opv_quantum_tank.json | 20 +++++++++---------- .../blockstates/plasma_large_turbine.json | 20 +++++++++---------- .../gtceu/blockstates/power_substation.json | 20 +++++++++---------- .../blockstates/primitive_blast_furnace.json | 20 +++++++++---------- .../gtceu/blockstates/pyrolyse_oven.json | 20 +++++++++---------- .../gtceu/blockstates/research_station.json | 16 +++++++-------- .../gtceu/blockstates/steam_grinder.json | 20 +++++++++---------- .../blockstates/steam_large_turbine.json | 20 +++++++++---------- .../assets/gtceu/blockstates/steam_oven.json | 20 +++++++++---------- .../blockstates/steel_multiblock_tank.json | 20 +++++++++---------- .../gtceu/blockstates/uev_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/uev_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/uhv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/uhv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/uiv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/uiv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/uv_fusion_reactor.json | 20 +++++++++---------- .../gtceu/blockstates/uv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/uv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/uxv_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/uxv_quantum_tank.json | 20 +++++++++---------- .../gtceu/blockstates/vacuum_freezer.json | 20 +++++++++---------- .../blockstates/wooden_multiblock_tank.json | 20 +++++++++---------- .../gtceu/blockstates/zpm_fusion_reactor.json | 20 +++++++++---------- .../gtceu/blockstates/zpm_quantum_chest.json | 20 +++++++++---------- .../gtceu/blockstates/zpm_quantum_tank.json | 20 +++++++++---------- .../resources/assets/gtceu/lang/en_ud.json | 1 + .../resources/assets/gtceu/lang/en_us.json | 1 + .../models/block/machine/coke_oven_hatch.json | 3 --- .../util/ExtendedBlockModelRotation.java | 20 +++++++++---------- 92 files changed, 872 insertions(+), 873 deletions(-) diff --git a/src/generated/resources/assets/gtceu/blockstates/active_transformer.json b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json index 9d9225245f1..eef9c45a4b4 100644 --- a/src/generated/resources/assets/gtceu/blockstates/active_transformer.json +++ b/src/generated/resources/assets/gtceu/blockstates/active_transformer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/active_transformer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/active_transformer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/active_transformer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/active_transformer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/active_transformer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/active_transformer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/active_transformer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/active_transformer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/active_transformer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/active_transformer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/active_transformer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json index ebe76577664..a5e78eaf811 100644 --- a/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json +++ b/src/generated/resources/assets/gtceu/blockstates/alloy_blast_smelter.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/alloy_blast_smelter" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/alloy_blast_smelter" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/alloy_blast_smelter" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/alloy_blast_smelter", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/alloy_blast_smelter", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/alloy_blast_smelter", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/assembly_line.json b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json index cd895b96783..f2a64f3b3ac 100644 --- a/src/generated/resources/assets/gtceu/blockstates/assembly_line.json +++ b/src/generated/resources/assets/gtceu/blockstates/assembly_line.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/assembly_line", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/assembly_line", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/assembly_line" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/assembly_line" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/assembly_line" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/assembly_line", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/assembly_line", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/assembly_line", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/assembly_line", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/assembly_line", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/assembly_line", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/coke_oven.json b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json index 5a0eecf97f5..ca5344538cc 100644 --- a/src/generated/resources/assets/gtceu/blockstates/coke_oven.json +++ b/src/generated/resources/assets/gtceu/blockstates/coke_oven.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/coke_oven", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/coke_oven", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/coke_oven" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/coke_oven" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/coke_oven" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/coke_oven", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/coke_oven", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/coke_oven", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/coke_oven", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/coke_oven", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/coke_oven", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/cracker.json b/src/generated/resources/assets/gtceu/blockstates/cracker.json index 1bf83e015f2..7d5945c3d45 100644 --- a/src/generated/resources/assets/gtceu/blockstates/cracker.json +++ b/src/generated/resources/assets/gtceu/blockstates/cracker.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/cracker", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/cracker", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/cracker" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/cracker" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/cracker" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/cracker", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/cracker", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/cracker", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/cracker", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/cracker", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/cracker", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_chest.json b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json index 0d6d32c1c01..2c974b92b35 100644 --- a/src/generated/resources/assets/gtceu/blockstates/creative_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/creative_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/creative_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/creative_tank.json b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json index f988df668ed..0fee3db96c1 100644 --- a/src/generated/resources/assets/gtceu/blockstates/creative_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/creative_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/creative_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/creative_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/creative_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/data_bank.json b/src/generated/resources/assets/gtceu/blockstates/data_bank.json index 8b23078cbb9..926f638ed37 100644 --- a/src/generated/resources/assets/gtceu/blockstates/data_bank.json +++ b/src/generated/resources/assets/gtceu/blockstates/data_bank.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/data_bank", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/data_bank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/data_bank" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/data_bank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/data_bank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/data_bank", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/data_bank", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/data_bank", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/data_bank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json index e872d572680..3d48c0cc562 100644 --- a/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json +++ b/src/generated/resources/assets/gtceu/blockstates/electric_blast_furnace.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/electric_blast_furnace", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/electric_blast_furnace", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/electric_blast_furnace" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/electric_blast_furnace" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/electric_blast_furnace" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/electric_blast_furnace", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/electric_blast_furnace", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/electric_blast_furnace", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/electric_blast_furnace", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/electric_blast_furnace", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/electric_blast_furnace", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json index 2900c324c51..0813015ba8b 100644 --- a/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/ev_bedrock_ore_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_bedrock_ore_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/ev_bedrock_ore_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_bedrock_ore_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_bedrock_ore_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json index 87a9f82cdaf..60696c43d2c 100644 --- a/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json +++ b/src/generated/resources/assets/gtceu/blockstates/ev_fluid_drilling_rig.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_fluid_drilling_rig" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/ev_fluid_drilling_rig" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_fluid_drilling_rig" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_fluid_drilling_rig", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json index 3f235666add..ff1f1161f36 100644 --- a/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/ev_large_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_large_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_large_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_large_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/ev_large_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_large_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_large_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_large_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_large_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_large_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json index 08764a8c3e2..d6eb4d20e65 100644 --- a/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/ev_super_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json index d57eac15ac3..7df483a4f4b 100644 --- a/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/ev_super_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/ev_super_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/ev_super_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/ev_super_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json index b6173a5be83..694c7eab010 100644 --- a/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json +++ b/src/generated/resources/assets/gtceu/blockstates/extreme_combustion_engine.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/extreme_combustion_engine" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/extreme_combustion_engine" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/extreme_combustion_engine" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/extreme_combustion_engine", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/extreme_combustion_engine", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/extreme_combustion_engine", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json index 74c91b70aac..c6139d92fde 100644 --- a/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json +++ b/src/generated/resources/assets/gtceu/blockstates/gas_large_turbine.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/gas_large_turbine", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/gas_large_turbine", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/gas_large_turbine" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/gas_large_turbine" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/gas_large_turbine" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/gas_large_turbine", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/gas_large_turbine", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/gas_large_turbine", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/gas_large_turbine", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/gas_large_turbine", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/gas_large_turbine", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json index 726e4fea094..e39725b168a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json +++ b/src/generated/resources/assets/gtceu/blockstates/high_performance_computation_array.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/high_performance_computation_array", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/high_performance_computation_array", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/high_performance_computation_array" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/high_performance_computation_array" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/high_performance_computation_array" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/high_performance_computation_array", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/high_performance_computation_array", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/high_performance_computation_array", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/high_performance_computation_array", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json index a68aa42b11c..c91c6a300e8 100644 --- a/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/hv_bedrock_ore_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_bedrock_ore_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/hv_bedrock_ore_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_bedrock_ore_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_bedrock_ore_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json index 30ac8330857..6ab1433dd13 100644 --- a/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json +++ b/src/generated/resources/assets/gtceu/blockstates/hv_fluid_drilling_rig.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_fluid_drilling_rig" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/hv_fluid_drilling_rig" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_fluid_drilling_rig" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_fluid_drilling_rig", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json index f1ceb32ac6b..c95883888b9 100644 --- a/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/hv_super_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json index fc06fdf5e1f..d4411ac23f7 100644 --- a/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/hv_super_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/hv_super_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/hv_super_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/hv_super_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json index ead002a3431..6c4eb6d5c1a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json +++ b/src/generated/resources/assets/gtceu/blockstates/implosion_compressor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/implosion_compressor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/implosion_compressor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/implosion_compressor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/implosion_compressor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/implosion_compressor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/implosion_compressor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/implosion_compressor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/implosion_compressor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/implosion_compressor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/implosion_compressor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/implosion_compressor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json index 533d0e5f3be..f4db9ed93f1 100644 --- a/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/iv_large_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_large_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_large_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_large_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/iv_large_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_large_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_large_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_large_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_large_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_large_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json index 74d0c493997..78534ddef62 100644 --- a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/iv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json index cf357812c60..b5947611ccf 100644 --- a/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/iv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/iv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/iv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/iv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json index a58302590ea..ad75bbd9202 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_arc_smelter.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_arc_smelter", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_arc_smelter", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_arc_smelter" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_arc_smelter" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_arc_smelter" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_arc_smelter", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_arc_smelter", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_arc_smelter", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_arc_smelter", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_arc_smelter", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_arc_smelter", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json index a6f22377181..9d2ce23a183 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_assembler.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_assembler.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_assembler", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_assembler", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_assembler" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_assembler" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_assembler" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_assembler", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_assembler", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_assembler", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_assembler", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_assembler", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_assembler", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json index 9b911c528e0..3d39a47fbc5 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_autoclave.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_autoclave", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_autoclave", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_autoclave" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_autoclave" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_autoclave" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_autoclave", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_autoclave", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_autoclave", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_autoclave", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_autoclave", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_autoclave", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_brewer.json b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json index b72ac244965..a190ee00ad7 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_brewer.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_brewer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_brewer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_brewer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_brewer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_brewer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_brewer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_brewer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_brewer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_brewer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_brewer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_brewer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_brewer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json index e9335c89f57..4aac4190995 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_centrifuge.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_centrifuge", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_centrifuge", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_centrifuge" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_centrifuge" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_centrifuge" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_centrifuge", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_centrifuge", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_centrifuge", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_centrifuge", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_centrifuge", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_centrifuge", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json index 624f76c25ec..5d09912515c 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_bath.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_bath", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_bath", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_bath" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_chemical_bath" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_bath" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_bath", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_bath", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_bath", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_bath", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_bath", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_bath", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json index be0c353a170..fdcb902fca6 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_chemical_reactor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_reactor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_reactor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_reactor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_chemical_reactor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_reactor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_reactor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_reactor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_reactor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_reactor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_chemical_reactor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_chemical_reactor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json index 15d4269a98c..8a5e7bbaac0 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_circuit_assembler.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_circuit_assembler", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_circuit_assembler", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_circuit_assembler" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_circuit_assembler" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_circuit_assembler" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_circuit_assembler", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_circuit_assembler", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_circuit_assembler", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_circuit_assembler", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_circuit_assembler", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_circuit_assembler", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json index 68f56e83911..7fdd9d4c30c 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_combustion_engine.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_combustion_engine", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_combustion_engine", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_combustion_engine" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_combustion_engine" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_combustion_engine" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_combustion_engine", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_combustion_engine", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_combustion_engine", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_combustion_engine", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_combustion_engine", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_combustion_engine", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_cutter.json b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json index fca9c31d76e..e47de3ea3ec 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_cutter.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_cutter.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_cutter", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_cutter", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_cutter" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_cutter" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_cutter" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_cutter", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_cutter", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_cutter", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_cutter", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_cutter", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_cutter", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json index 2441da5cbbd..a94b9f0aa01 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_electrolyzer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electrolyzer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electrolyzer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electrolyzer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_electrolyzer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electrolyzer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electrolyzer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electrolyzer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electrolyzer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electrolyzer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electrolyzer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electrolyzer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json index 3f81e9b374f..929665d6ba3 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_electromagnet.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electromagnet", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electromagnet", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electromagnet" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_electromagnet" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electromagnet" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electromagnet", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electromagnet", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electromagnet", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electromagnet", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_electromagnet", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_electromagnet", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json index a01ae63c05d..167f45bec63 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_engraving_laser.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_engraving_laser", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_engraving_laser", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_engraving_laser" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_engraving_laser" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_engraving_laser" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_engraving_laser", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_engraving_laser", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_engraving_laser", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_engraving_laser", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_engraving_laser", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_engraving_laser", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extractor.json b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json index b19da850494..893e6e98011 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_extractor.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_extractor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extractor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extractor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extractor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_extractor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extractor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extractor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extractor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extractor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extractor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extractor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extractor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_extruder.json b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json index 622efb1ad16..e3cbd7af1a0 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_extruder.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_extruder.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extruder", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extruder", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extruder" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_extruder" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extruder" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extruder", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extruder", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extruder", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extruder", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_extruder", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_extruder", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json index 2ab1f7b51d1..04932d5aeeb 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_maceration_tower.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_maceration_tower", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_maceration_tower", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_maceration_tower" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_maceration_tower" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_maceration_tower" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_maceration_tower", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_maceration_tower", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_maceration_tower", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_maceration_tower", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_maceration_tower", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_maceration_tower", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_material_press.json b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json index 799d88d4a96..5d65d7eb49e 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_material_press.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_material_press.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_material_press", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_material_press", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_material_press" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_material_press" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_material_press" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_material_press", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_material_press", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_material_press", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_material_press", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_material_press", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_material_press", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_mixer.json b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json index 47729dab7fb..8bb60bd8245 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_mixer.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_mixer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_mixer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_mixer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_mixer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_mixer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_mixer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_mixer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_mixer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_mixer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_mixer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_mixer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_mixer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_packer.json b/src/generated/resources/assets/gtceu/blockstates/large_packer.json index 08bd5374ade..a8d2e8d79ee 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_packer.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_packer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_packer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_packer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_packer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_packer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_packer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_packer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_packer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_packer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_packer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_packer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_packer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json index f72a5e4ef07..491961b0ab5 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_sifting_funnel.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_sifting_funnel", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_sifting_funnel", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_sifting_funnel" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_sifting_funnel" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_sifting_funnel" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_sifting_funnel", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_sifting_funnel", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_sifting_funnel", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_sifting_funnel", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_sifting_funnel", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_sifting_funnel", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json index 99689066205..bb931c2b043 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_solidifier.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_solidifier", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_solidifier", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_solidifier" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_solidifier" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_solidifier" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_solidifier", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_solidifier", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_solidifier", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_solidifier", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_solidifier", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_solidifier", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json index 865035d99a1..2553979b12d 100644 --- a/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json +++ b/src/generated/resources/assets/gtceu/blockstates/large_wiremill.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_wiremill", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_wiremill", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_wiremill" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/large_wiremill" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_wiremill" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_wiremill", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_wiremill", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_wiremill", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_wiremill", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/large_wiremill", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/large_wiremill", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json index e9a5f678fd1..e9c318805dc 100644 --- a/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json +++ b/src/generated/resources/assets/gtceu/blockstates/luv_fusion_reactor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_fusion_reactor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/luv_fusion_reactor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_fusion_reactor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_fusion_reactor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_fusion_reactor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_fusion_reactor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json index 99ab0b7da16..45a2d8bc2b5 100644 --- a/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/luv_large_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_large_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_large_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_large_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/luv_large_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_large_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_large_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_large_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_large_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_large_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json index e83fe73be4e..74882b02e30 100644 --- a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/luv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json index 5a61f616b3e..c10a5142587 100644 --- a/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/luv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/luv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/luv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/luv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json index caf3db5a739..d4027ba147d 100644 --- a/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/lv_super_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json index 0ea0c484da1..47d846e231d 100644 --- a/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/lv_super_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/lv_super_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/lv_super_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/lv_super_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json index 44f2ee1a162..8b32ec70922 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json +++ b/src/generated/resources/assets/gtceu/blockstates/mega_blast_furnace.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_blast_furnace", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_blast_furnace", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_blast_furnace" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/mega_blast_furnace" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_blast_furnace" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_blast_furnace", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_blast_furnace", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_blast_furnace", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_blast_furnace", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_blast_furnace", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_blast_furnace", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json index fbb01c46ea5..b6f268100a8 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json +++ b/src/generated/resources/assets/gtceu/blockstates/mega_vacuum_freezer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_vacuum_freezer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/mega_vacuum_freezer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_vacuum_freezer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_vacuum_freezer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_vacuum_freezer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mega_vacuum_freezer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json index 36a707de57b..9a0a93f4c83 100644 --- a/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json +++ b/src/generated/resources/assets/gtceu/blockstates/multi_smelter.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/multi_smelter", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/multi_smelter", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/multi_smelter" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/multi_smelter" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/multi_smelter" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/multi_smelter", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/multi_smelter", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/multi_smelter", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/multi_smelter", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/multi_smelter", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/multi_smelter", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json index 1cb73f76d46..314f7a08f3d 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json +++ b/src/generated/resources/assets/gtceu/blockstates/mv_bedrock_ore_miner.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_bedrock_ore_miner" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/mv_bedrock_ore_miner" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_bedrock_ore_miner" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_bedrock_ore_miner", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json index b168c3c7d3d..da1d03a2d6e 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json +++ b/src/generated/resources/assets/gtceu/blockstates/mv_fluid_drilling_rig.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_fluid_drilling_rig" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/mv_fluid_drilling_rig" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_fluid_drilling_rig" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_fluid_drilling_rig", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json index ceb555abf4f..96f6da8d960 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/mv_super_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json index 7d1a6ad970c..b5ef2d0e64b 100644 --- a/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/mv_super_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/mv_super_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/mv_super_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/mv_super_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/network_switch.json b/src/generated/resources/assets/gtceu/blockstates/network_switch.json index 35e7d69e7d1..2339dd756ea 100644 --- a/src/generated/resources/assets/gtceu/blockstates/network_switch.json +++ b/src/generated/resources/assets/gtceu/blockstates/network_switch.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/network_switch", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/network_switch", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/network_switch" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/network_switch" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/network_switch" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/network_switch", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/network_switch", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/network_switch", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/network_switch", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json index 7b5f918a84a..75624c6f5eb 100644 --- a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/opv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json index ffe213f236e..beebb68f6a4 100644 --- a/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/opv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/opv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/opv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/opv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json index 49feb0e61d3..2c36aaf2ace 100644 --- a/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json +++ b/src/generated/resources/assets/gtceu/blockstates/plasma_large_turbine.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/plasma_large_turbine", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/plasma_large_turbine", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/plasma_large_turbine" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/plasma_large_turbine" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/plasma_large_turbine" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/plasma_large_turbine", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/plasma_large_turbine", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/plasma_large_turbine", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/plasma_large_turbine", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/plasma_large_turbine", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/plasma_large_turbine", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/power_substation.json b/src/generated/resources/assets/gtceu/blockstates/power_substation.json index 0907f572b13..cb54226d5c2 100644 --- a/src/generated/resources/assets/gtceu/blockstates/power_substation.json +++ b/src/generated/resources/assets/gtceu/blockstates/power_substation.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/power_substation", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/power_substation", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/power_substation" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/power_substation" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/power_substation" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/power_substation", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/power_substation", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/power_substation", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/power_substation", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/power_substation", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/power_substation", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json index 2687132e730..23b31f1d044 100644 --- a/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json +++ b/src/generated/resources/assets/gtceu/blockstates/primitive_blast_furnace.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/primitive_blast_furnace" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/primitive_blast_furnace" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/primitive_blast_furnace" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/primitive_blast_furnace", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/primitive_blast_furnace", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/primitive_blast_furnace", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json index 66742491658..1b3e550db6a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json +++ b/src/generated/resources/assets/gtceu/blockstates/pyrolyse_oven.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/pyrolyse_oven", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/pyrolyse_oven", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/pyrolyse_oven" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/pyrolyse_oven" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/pyrolyse_oven" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/pyrolyse_oven", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/pyrolyse_oven", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/pyrolyse_oven", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/pyrolyse_oven", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/pyrolyse_oven", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/pyrolyse_oven", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/research_station.json b/src/generated/resources/assets/gtceu/blockstates/research_station.json index 7acb7082b2c..d01f0b952df 100644 --- a/src/generated/resources/assets/gtceu/blockstates/research_station.json +++ b/src/generated/resources/assets/gtceu/blockstates/research_station.json @@ -1,7 +1,7 @@ { "variants": { "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/research_station", "y": 90 }, @@ -15,12 +15,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/research_station", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/research_station" }, "facing=north,upwards_facing=north": { @@ -31,11 +31,11 @@ "model": "gtceu:block/machine/research_station" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/research_station" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/research_station", "y": 180 }, @@ -49,12 +49,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/research_station", "y": 180 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/research_station", "y": 270 }, @@ -68,7 +68,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/research_station", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json index 64917a002d8..1c3cebcb3bd 100644 --- a/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json +++ b/src/generated/resources/assets/gtceu/blockstates/steam_grinder.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_grinder", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_grinder", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_grinder" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/steam_grinder" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_grinder" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_grinder", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_grinder", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_grinder", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_grinder", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_grinder", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_grinder", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json index f4504406f87..fcc245b3924 100644 --- a/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json +++ b/src/generated/resources/assets/gtceu/blockstates/steam_large_turbine.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_large_turbine", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_large_turbine", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_large_turbine" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/steam_large_turbine" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_large_turbine" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_large_turbine", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_large_turbine", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_large_turbine", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_large_turbine", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_large_turbine", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_large_turbine", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/steam_oven.json b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json index f45eebff094..b484e015944 100644 --- a/src/generated/resources/assets/gtceu/blockstates/steam_oven.json +++ b/src/generated/resources/assets/gtceu/blockstates/steam_oven.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_oven", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_oven", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_oven" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/steam_oven" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_oven" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_oven", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_oven", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_oven", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_oven", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steam_oven", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steam_oven", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json index c9c82a8804f..9fd0d8dbd30 100644 --- a/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/steel_multiblock_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steel_multiblock_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/steel_multiblock_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steel_multiblock_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steel_multiblock_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steel_multiblock_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/steel_multiblock_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json index 7a098cb4201..49622e34a92 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uev_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json index 409ddd3725d..5670df108e4 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/uev_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uev_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uev_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uev_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json index f056e3b688f..bd544368abc 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uhv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json index 29e7f12ccd5..56ad8997441 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/uhv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uhv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uhv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json index fd9b90f0666..e03a7115f8a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uiv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json index 9ba43965458..7bf49e99838 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/uiv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uiv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uiv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json index 833c50e46f0..3c3bc086ce3 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json +++ b/src/generated/resources/assets/gtceu/blockstates/uv_fusion_reactor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_fusion_reactor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uv_fusion_reactor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_fusion_reactor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_fusion_reactor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_fusion_reactor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_fusion_reactor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json index 1b7815ad858..7ea6c8c401f 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json index a13f35c6a84..ecb663d3d53 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/uv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json index 9258f5031a0..1b6d98bcc86 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uxv_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json index a48145ac3aa..db88fff044a 100644 --- a/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/uxv_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/uxv_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/uxv_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json index 3084742bb52..19a856aeb86 100644 --- a/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json +++ b/src/generated/resources/assets/gtceu/blockstates/vacuum_freezer.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/vacuum_freezer", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/vacuum_freezer", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/vacuum_freezer" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/vacuum_freezer" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/vacuum_freezer" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/vacuum_freezer", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/vacuum_freezer", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/vacuum_freezer", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/vacuum_freezer", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/vacuum_freezer", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/vacuum_freezer", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json index 1c72b52afb4..10ed37aa4e2 100644 --- a/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/wooden_multiblock_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/wooden_multiblock_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/wooden_multiblock_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/wooden_multiblock_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/wooden_multiblock_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/wooden_multiblock_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/wooden_multiblock_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json index 9d642ff6b3a..a4b56a54f0d 100644 --- a/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_fusion_reactor.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_fusion_reactor" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/zpm_fusion_reactor" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_fusion_reactor" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_fusion_reactor", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_fusion_reactor", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_fusion_reactor", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json index d93d748b864..1203273aa37 100644 --- a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_chest.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_chest" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/zpm_quantum_chest" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_chest" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_chest", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_chest", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_chest", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json index 0889dbbaf8a..e31f2d56af0 100644 --- a/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json +++ b/src/generated/resources/assets/gtceu/blockstates/zpm_quantum_tank.json @@ -20,7 +20,7 @@ "x": 90 }, "facing=east,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 90 }, @@ -34,12 +34,12 @@ "y": 90 }, "facing=east,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 90 }, "facing=north,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_tank" }, "facing=north,upwards_facing=north": { @@ -50,11 +50,11 @@ "model": "gtceu:block/machine/zpm_quantum_tank" }, "facing=north,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_tank" }, "facing=south,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 180 }, @@ -68,12 +68,12 @@ "y": 180 }, "facing=south,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 180 }, "facing=up,upwards_facing=east": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_tank", "x": 270 }, @@ -87,12 +87,12 @@ "x": 270 }, "facing=up,upwards_facing=west": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_tank", "x": 270 }, "facing=west,upwards_facing=east": { - "gtceu:z": 90, + "gtceu:z": 270, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 270 }, @@ -106,7 +106,7 @@ "y": 270 }, "facing=west,upwards_facing=west": { - "gtceu:z": 270, + "gtceu:z": 90, "model": "gtceu:block/machine/zpm_quantum_tank", "y": 270 } diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 3e5d47e1b4e..d42ebada881 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1111,6 +1111,7 @@ "block.gtceu.substation_capacitor.tooltip_filled": "∩Ǝ %dɟ§ :ʎʇıɔɐdɐƆ ʎbɹǝuƎɔ§", "block.gtceu.superconducting_coil": "ʞɔoןᗺ ןıoƆ buıʇɔnpuoɔɹǝdnS", "block.gtceu.tempered_glass": "ssɐן⅁ pǝɹǝdɯǝ⟘", + "block.gtceu.test_render": "ɹǝpuǝᴚ ʇsǝ⟘", "block.gtceu.the_end_marker": "puƎ ǝɥ⟘", "block.gtceu.the_nether_marker": "ɹǝɥʇǝN ǝɥ⟘", "block.gtceu.titanium_crate": "ǝʇɐɹƆ ɯnıuɐʇı⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 8df976a50e9..898726a6860 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1111,6 +1111,7 @@ "block.gtceu.substation_capacitor.tooltip_filled": "§cEnergy Capacity: §f%d EU", "block.gtceu.superconducting_coil": "Superconducting Coil Block", "block.gtceu.tempered_glass": "Tempered Glass", + "block.gtceu.test_render": "Test Render", "block.gtceu.the_end_marker": "The End", "block.gtceu.the_nether_marker": "The Nether", "block.gtceu.titanium_crate": "Titanium Crate", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json index 4e7e67e2b2b..e4c7e5a2175 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/coke_oven_hatch.json @@ -2,9 +2,6 @@ "parent": "minecraft:block/block", "loader": "gtceu:machine", "machine": "gtceu:coke_oven_hatch", - "textures": { - "particle": "#all" - }, "variants": { "": { "model": "gtceu:block/machine/part/coke_oven_hatch" diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java index ed5e26fac7f..a6ddce39347 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ExtendedBlockModelRotation.java @@ -22,29 +22,29 @@ public enum ExtendedBlockModelRotation { DOWN_EAST(90, 0, 90), UP_SOUTH(270, 0, 0), - UP_WEST(270, 0, 90), + UP_WEST(270, 0, 270), UP_NORTH(270, 0, 180), - UP_EAST(270, 0, 270), + UP_EAST(270, 0, 90), NORTH_SOUTH(0, 0, 180), - NORTH_WEST(0, 0, 270), + NORTH_WEST(0, 0, 90), NORTH_NORTH(0, 0, 0), // Default - NORTH_EAST(0, 0, 90), + NORTH_EAST(0, 0, 270), SOUTH_SOUTH(0, 180, 180), - SOUTH_WEST(0, 180, 270), + SOUTH_WEST(0, 180, 90), SOUTH_NORTH(0, 180, 0), - SOUTH_EAST(0, 180, 90), + SOUTH_EAST(0, 180, 270), WEST_SOUTH(0, 270, 180), - WEST_WEST(0, 270, 270), + WEST_WEST(0, 270, 90), WEST_NORTH(0, 270, 0), - WEST_EAST(0, 270, 90), + WEST_EAST(0, 270, 270), EAST_SOUTH(0, 90, 180), - EAST_WEST(0, 90, 270), + EAST_WEST(0, 90, 90), EAST_NORTH(0, 90, 0), - EAST_EAST(0, 90, 90); + EAST_EAST(0, 90, 270); public static final ExtendedBlockModelRotation[] VALUES = values(); From a28039266122d485a3a611ed5463a476cb54b7af Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sun, 20 Jul 2025 15:41:57 -0600 Subject: [PATCH 190/270] Fix chad looking metallic (#3506) --- .../common/data/materials/UnknownCompositionMaterials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index a0021d08e57..3b82ac64e7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -443,7 +443,7 @@ public static void register() { Paper = new Material.Builder(GTCEu.id("paper")) .dust(0) - .color(0xFAFAFA).secondaryColor(0x878787).iconSet(FINE) + .color(0xF9F9F9).secondaryColor(0xECECEC).iconSet(DULL) .flags(GENERATE_PLATE, FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE, EXCLUDE_PLATE_COMPRESSOR_RECIPE) .buildAndRegister(); From 75474cb6330d92ae260cf0d2ab9dca3a4081b6c3 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 15:42:29 -0600 Subject: [PATCH 191/270] Add new Steam Grinder/Oven recipes with HP singleblocks (#3489) --- .../recipe/configurable/RecipeAddition.java | 106 +++++++++++++----- 1 file changed, 75 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java index 97e56301476..7d7b3c8bf90 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/configurable/RecipeAddition.java @@ -51,45 +51,89 @@ public static void init(Consumer provider) { private static void steelSteamMultiblocks(Consumer provider) { if (ConfigHolder.INSTANCE.machines.steelSteamMultiblocks) { - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", GTMultiMachines.STEAM_OVEN.asStack(), - "CGC", - "FMF", "CGC", 'F', GTBlocks.FIREBOX_STEEL.asStack(), 'C', GTBlocks.CASING_STEEL_SOLID.asStack(), - 'M', GTMachines.STEAM_FURNACE.right().asStack(), 'G', - new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_STEEL.asStack(), + 'C', GTBlocks.CASING_STEEL_SOLID.asStack(), + 'M', GTMachines.STEAM_FURNACE.right().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder", GTMultiMachines.STEAM_GRINDER.asStack(), - "CGC", "CFC", "CGC", 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), 'F', - GTMachines.STEAM_MACERATOR.right().asStack(), 'C', GTBlocks.CASING_STEEL_SOLID.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", GTMachines.STEAM_HATCH.asStack(), "BPB", - "BTB", "BPB", 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), 'P', - new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel), 'T', - GTMachines.STEEL_DRUM.asStack()); + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.right().asStack(), + 'C', GTBlocks.CASING_STEEL_SOLID.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", + GTMachines.STEAM_HATCH.asStack(), + "BPB", "BTB", "BPB", + 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), + 'P', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel), + 'T', GTMachines.STEEL_DRUM.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", - GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_IMPORT_BUS.asStack(), + "C", "H", + 'H', GTBlocks.STEEL_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", - GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.STEEL_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_EXPORT_BUS.asStack(), + "H", "C", + 'H', GTBlocks.STEEL_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); } else { - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven", GTMultiMachines.STEAM_OVEN.asStack(), - "CGC", - "FMF", "CGC", 'F', GTBlocks.FIREBOX_BRONZE.asStack(), 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), - 'M', GTMachines.STEAM_FURNACE.left().asStack(), 'G', - new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder", + // Doubled-up recipes to allow for either Low or High Pressure singleblock + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven_from_lp", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_BRONZE.asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), + 'M', GTMachines.STEAM_FURNACE.left().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_oven_from_hp", + GTMultiMachines.STEAM_OVEN.asStack(), + "CGC", "FMF", "CGC", + 'F', GTBlocks.FIREBOX_BRONZE.asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack(), + 'M', GTMachines.STEAM_FURNACE.right().asStack(), + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Invar)); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder_from_lp", GTMultiMachines.STEAM_GRINDER.asStack(), - "CGC", "CFC", "CGC", 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), 'F', - GTMachines.STEAM_MACERATOR.left().asStack(), 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", GTMachines.STEAM_HATCH.asStack(), "BPB", - "BTB", "BPB", 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), 'P', - new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze), 'T', - GTMachines.BRONZE_DRUM.asStack()); + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.left().asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_grinder_from_hp", + GTMultiMachines.STEAM_GRINDER.asStack(), + "CGC", "CFC", "CGC", + 'G', new MaterialEntry(TagPrefix.gear, GTMaterials.Potin), + 'F', GTMachines.STEAM_MACERATOR.right().asStack(), + 'C', GTBlocks.CASING_BRONZE_BRICKS.asStack()); + + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_hatch", + GTMachines.STEAM_HATCH.asStack(), + "BPB", "BTB", "BPB", + 'B', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), + 'P', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze), + 'T', GTMachines.BRONZE_DRUM.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_input_bus", - GTMachines.STEAM_IMPORT_BUS.asStack(), "C", "H", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_IMPORT_BUS.asStack(), + "C", "H", + 'H', GTBlocks.BRONZE_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_output_bus", - GTMachines.STEAM_EXPORT_BUS.asStack(), "H", "C", 'H', GTBlocks.BRONZE_HULL.asStack(), 'C', - Tags.Items.CHESTS_WOODEN); + GTMachines.STEAM_EXPORT_BUS.asStack(), + "H", "C", + 'H', GTBlocks.BRONZE_HULL.asStack(), + 'C', Tags.Items.CHESTS_WOODEN); } } From 9d42215dae5b4065a0aea72c5a9fd0dffcbce9ce Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:52:25 -0400 Subject: [PATCH 192/270] Add Minimum Threshold configuration for Stocking Hatches and Busses (#3483) Co-authored-by: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> --- .../resources/assets/gtceu/lang/en_ud.json | 7 +++ .../resources/assets/gtceu/lang/en_us.json | 7 +++ .../AutoStockingFancyConfigurator.java | 53 +++++++++++++++++++ .../gtceu/config/ConfigHolder.java | 2 +- .../gtceu/data/lang/MachineLang.java | 15 ++++++ .../ae2/machine/MEStockingBusPartMachine.java | 45 ++++++++++++---- .../machine/MEStockingHatchPartMachine.java | 47 ++++++++++++---- .../feature/multiblock/IMEStockingPart.java | 8 +++ 8 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index d42ebada881..720c6292c30 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2274,6 +2274,10 @@ "gtceu.fusion_reactor": "ɹoʇɔɐǝᴚ uoısnℲ", "gtceu.gas_collector": "ɹoʇɔǝןןoƆ sɐ⅁", "gtceu.gas_turbine": "ǝuıqɹn⟘ sɐ⅁", + "gtceu.gui.adv_stocking_config.min_fluid_count": "buıןןnԀ pǝʇɐɯoʇnⱯ ɹoɟ ǝzıS ʞɔɐʇS pınןℲ ɯnɯıuıW", + "gtceu.gui.adv_stocking_config.min_item_count": "buıןןnԀ pǝʇɐɯoʇnⱯ ɹoɟ ǝzıS ʞɔɐʇS ɯǝʇI ɯnɯıuıW", + "gtceu.gui.adv_stocking_config.ticks_per_cycle": "sǝʇɐpdn ʇsıן ɯǝʇı uǝǝʍʇǝq ʎɐןǝᗡ", + "gtceu.gui.adv_stocking_config.title": "buıʞɔoʇS ɔıʇɐɯoʇnⱯ ǝɹnbıɟuoƆ", "gtceu.gui.auto_output.name": "oʇnɐ", "gtceu.gui.charger_slot.tooltip.0": "ɹ§ʇoןS ɹǝbɹɐɥƆɟ§", "gtceu.gui.charger_slot.tooltip.1": "ɹ§sǝıɹǝʇʇɐq %s ɯoɹɟ ɹǝʍod sʍɐɹᗡㄥ§", @@ -2368,6 +2372,9 @@ "gtceu.gui.silktouch.enabled.0": "˙ǝןqɐsıᗡ oʇ ʞɔıןƆ :pǝןqɐuƎ ɥɔno⟘ ʞןıS", "gtceu.gui.silktouch.enabled.1": "˙ǝuıɥɔɐɯ ǝןpı uɐ sǝɹınbǝɹ buıɥɔʇıʍSㄥ§", "gtceu.gui.sort": "ʇɹoS", + "gtceu.gui.title.adv_stocking_config.min_fluid_count": "ʇunoƆ pınןℲ ˙uıW", + "gtceu.gui.title.adv_stocking_config.min_item_count": "ʇunoƆ ɯǝʇI ˙uıW", + "gtceu.gui.title.adv_stocking_config.ticks_per_cycle": "ǝןɔʎƆ ɹǝԀ sʞɔı⟘", "gtceu.gui.title_bar.back": "ʞɔɐᗺ", "gtceu.gui.title_bar.page_switcher": "sǝbɐԀ", "gtceu.gui.toggle_view.disabled": ")spınןℲ( ʍǝıΛ ǝןbbo⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 898726a6860..e4ea8841699 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2274,6 +2274,10 @@ "gtceu.fusion_reactor": "Fusion Reactor", "gtceu.gas_collector": "Gas Collector", "gtceu.gas_turbine": "Gas Turbine", + "gtceu.gui.adv_stocking_config.min_fluid_count": "Minimum Fluid Stack Size for Automated Pulling", + "gtceu.gui.adv_stocking_config.min_item_count": "Minimum Item Stack Size for Automated Pulling", + "gtceu.gui.adv_stocking_config.ticks_per_cycle": "Delay between item list updates", + "gtceu.gui.adv_stocking_config.title": "Configure Automatic Stocking", "gtceu.gui.auto_output.name": "auto", "gtceu.gui.charger_slot.tooltip.0": "§fCharger Slot§r", "gtceu.gui.charger_slot.tooltip.1": "§7Draws power from %s batteries§r", @@ -2368,6 +2372,9 @@ "gtceu.gui.silktouch.enabled.0": "Silk Touch Enabled: Click to Disable.", "gtceu.gui.silktouch.enabled.1": "§7Switching requires an idle machine.", "gtceu.gui.sort": "Sort", + "gtceu.gui.title.adv_stocking_config.min_fluid_count": "Min. Fluid Count", + "gtceu.gui.title.adv_stocking_config.min_item_count": "Min. Item Count", + "gtceu.gui.title.adv_stocking_config.ticks_per_cycle": "Ticks Per Cycle", "gtceu.gui.title_bar.back": "Back", "gtceu.gui.title_bar.page_switcher": "Pages", "gtceu.gui.toggle_view.disabled": "Toggle View (Fluids)", diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java new file mode 100644 index 00000000000..94620e8736c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/AutoStockingFancyConfigurator.java @@ -0,0 +1,53 @@ +package com.gregtechceu.gtceu.api.machine.fancyconfigurator; + +import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.common.data.GTItems; +import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.integration.ae2.machine.MEStockingBusPartMachine; +import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ItemStackTexture; +import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import net.minecraft.network.chat.Component; + +public class AutoStockingFancyConfigurator implements IFancyConfigurator { + + private IMEStockingPart machine; + + public AutoStockingFancyConfigurator(IMEStockingPart machine) { + this.machine = machine; + } + + @Override + public Component getTitle() { + return Component.translatable("gtceu.gui.adv_stocking_config.title"); + } + + @Override + public IGuiTexture getIcon() { + return new ItemStackTexture(GTItems.TOOL_DATA_STICK.asStack()); + } + + @Override + public Widget createConfigurator() { + var group = new WidgetGroup(0, 0, 90, 70); + + String suffix = machine instanceof MEStockingBusPartMachine ? "min_item_count" : "min_fluid_count"; + + group.addWidget(new LabelWidget(4, 2, "gtceu.gui.title.adv_stocking_config." + suffix)); + group.addWidget(new IntInputWidget(4, 12, 81, 14, machine::getMinStackSize, + machine::setMinStackSize).setMin(1) + .appendHoverTooltips(Component.translatable("gtceu.gui.adv_stocking_config." + suffix))); + group.addWidget(new LabelWidget(4, 36, "gtceu.gui.title.adv_stocking_config.ticks_per_cycle")); + group.addWidget(new IntInputWidget(4, 46, 81, 14, machine::getTicksPerCycle, + machine::setTicksPerCycle).setMin(ConfigHolder.INSTANCE.compat.ae2.updateIntervals) + .setHoverTooltips(Component.translatable("gtceu.gui.adv_stocking_config.ticks_per_cycle"))); + + return group; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 38863500cd3..ccabcdd1abe 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -200,7 +200,7 @@ public static class AE2CompatConfig { @Configurable @Configurable.Comment({ "The interval between ME Hatch/Bus interact ME network.", "It may cause lag if the interval is too small.", "Default: 2 sec" }) - @Configurable.Range(min = 1, max = 80) + @Configurable.Range(min = 1) // Do Not Set a Maximum, if someone wants >80 ticks let them. public int updateIntervals = 40; @Configurable diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index 3977f276a98..6ed58e54f27 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -801,6 +801,21 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.me.fluid_import.data_stick.name", "§oME Input Hatch Configuration Data"); + provider.add("gtceu.gui.title.adv_stocking_config.min_item_count", + "Min. Item Count"); + provider.add("gtceu.gui.title.adv_stocking_config.min_fluid_count", + "Min. Fluid Count"); + provider.add("gtceu.gui.adv_stocking_config.min_item_count", + "Minimum Item Stack Size for Automated Pulling"); + provider.add("gtceu.gui.adv_stocking_config.min_fluid_count", + "Minimum Fluid Stack Size for Automated Pulling"); + provider.add("gtceu.gui.title.adv_stocking_config.ticks_per_cycle", + "Ticks Per Cycle"); + provider.add("gtceu.gui.adv_stocking_config.ticks_per_cycle", + "Delay between item list updates"); + provider.add("gtceu.gui.adv_stocking_config.title", + "Configure Automatic Stocking"); + multiLang(provider, "gtceu.machine.rotor_holder.tooltip", "Rotor Holder for Multiblocks", "Holds Rotor in place so it will not fly away"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java index 864d93499c1..288dac498f5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingBusPartMachine.java @@ -1,12 +1,15 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemSlot; @@ -14,6 +17,7 @@ import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlotList; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.DropSaved; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -56,6 +60,17 @@ public class MEStockingBusPartMachine extends MEInputBusPartMachine implements I @Getter private boolean autoPull; + @Getter + @Setter + @Persisted + @DropSaved + private int minStackSize = 1; + @Getter + @Setter + @Persisted + @DropSaved + private int ticksPerCycle = 40; + @Setter private Predicate autoPullTest; @@ -98,8 +113,12 @@ public ManagedFieldHolder getFieldHolder() { @Override public void autoIO() { super.autoIO(); - if (autoPull && getOffsetTimer() % 100 == 0) { - refreshList(); + if (ticksPerCycle == 0) ticksPerCycle = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; // Emergency Check to + // Avoid Crash loops. + if (getOffsetTimer() % ticksPerCycle == 0) { + if (autoPull) { + refreshList(); + } syncME(); } } @@ -115,7 +134,7 @@ protected void syncME() { // Try to fill the slot var key = config.what(); long extracted = networkInv.extract(key, Long.MAX_VALUE, Actionable.SIMULATE, actionSource); - if (extracted > 0) { + if (extracted >= minStackSize) { slot.setStock(new GenericStack(key, extracted)); continue; } @@ -124,6 +143,11 @@ protected void syncME() { } } + @Override + public void attachSideTabs(TabsWidget sideTabs) { + sideTabs.setMainTab(this); // removes the cover configurator, it's pointless and clashes with layout. + } + @Override protected void flushInventory() { // no-op, nothing to send back to the network @@ -200,7 +224,6 @@ private void refreshList() { for (Object2LongMap.Entry entry : counter) { long amount = entry.getLongValue(); - if (!topItems.isEmpty() && amount < topItems.peek().getLongValue()) continue; AEKey what = entry.getKey(); if (amount <= 0) continue; @@ -211,12 +234,13 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(itemKey, amount))) continue; - - if (topItems.size() < CONFIG_SIZE) { - topItems.offer(entry); - } else if (amount > topItems.peek().getLongValue()) { - topItems.poll(); - topItems.offer(entry); + if (amount >= minStackSize) { + if (topItems.size() < CONFIG_SIZE) { + topItems.offer(entry); + } else if (amount > topItems.peek().getLongValue()) { + topItems.poll(); + topItems.offer(entry); + } } } @@ -251,6 +275,7 @@ private void refreshList() { public void attachConfigurators(ConfiguratorPanel configuratorPanel) { IMEStockingPart.super.attachConfigurators(configuratorPanel); super.attachConfigurators(configuratorPanel); + configuratorPanel.attachConfigurators(new AutoStockingFancyConfigurator(this)); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java index 8f16fbb9d87..8b07ee7ad05 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEStockingHatchPartMachine.java @@ -1,12 +1,15 @@ package com.gregtechceu.gtceu.integration.ae2.machine; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.fancy.TabsWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoStockingFancyConfigurator; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.item.IntCircuitBehaviour; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.ae2.machine.feature.multiblock.IMEStockingPart; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidSlot; @@ -15,6 +18,7 @@ import com.gregtechceu.gtceu.integration.ae2.utils.AEUtil; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.DropSaved; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -59,6 +63,18 @@ public class MEStockingHatchPartMachine extends MEInputHatchPartMachine implemen @Getter private boolean autoPull; + @Getter + @Setter + @Persisted + @DropSaved + private int minStackSize = 1; + + @Getter + @Setter + @Persisted + @DropSaved + private int ticksPerCycle = 40; + @Setter private Predicate autoPullTest; @@ -101,8 +117,12 @@ public ManagedFieldHolder getFieldHolder() { @Override public void autoIO() { super.autoIO(); - if (autoPull && getOffsetTimer() % 100 == 0) { - refreshList(); + if (ticksPerCycle == 0) ticksPerCycle = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; // Emergency Check to + // Avoid Crash loops. + if (getOffsetTimer() % ticksPerCycle == 0) { + if (autoPull) { + refreshList(); + } syncME(); } } @@ -116,7 +136,7 @@ protected void syncME() { // Try to fill the slot var key = config.what(); long extracted = networkInv.extract(key, Long.MAX_VALUE, Actionable.SIMULATE, actionSource); - if (extracted > 0) { + if (extracted >= minStackSize) { slot.setStock(new GenericStack(key, extracted)); continue; } @@ -125,6 +145,11 @@ protected void syncME() { } } + @Override + public void attachSideTabs(TabsWidget sideTabs) { + sideTabs.setMainTab(this); // removes the cover configurator, it's pointless and clashes with layout. + } + @Override protected void flushInventory() { // no-op, nothing to send back to the network @@ -183,8 +208,6 @@ private void refreshList() { for (Object2LongMap.Entry entry : counter) { long amount = entry.getLongValue(); - if (!topFluids.isEmpty() && amount < topFluids.peek().getLongValue()) continue; - AEKey what = entry.getKey(); if (amount <= 0) continue; @@ -195,12 +218,13 @@ private void refreshList() { // Ensure that it is valid to configure with this stack if (autoPullTest != null && !autoPullTest.test(new GenericStack(fluidKey, amount))) continue; - - if (topFluids.size() < CONFIG_SIZE) { - topFluids.offer(entry); - } else if (amount > topFluids.peek().getLongValue()) { - topFluids.poll(); - topFluids.offer(entry); + if (amount >= minStackSize) { + if (topFluids.size() < CONFIG_SIZE) { + topFluids.offer(entry); + } else if (amount > topFluids.peek().getLongValue()) { + topFluids.poll(); + topFluids.offer(entry); + } } } @@ -234,6 +258,7 @@ private void refreshList() { public void attachConfigurators(ConfiguratorPanel configuratorPanel) { IMEStockingPart.super.attachConfigurators(configuratorPanel); super.attachConfigurators(configuratorPanel); + configuratorPanel.attachConfigurators(new AutoStockingFancyConfigurator(this)); } //////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java index c54b79a102e..75515fcaaab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/multiblock/IMEStockingPart.java @@ -56,4 +56,12 @@ default void validateConfig() { } } } + + int getMinStackSize(); + + void setMinStackSize(int newSize); + + int getTicksPerCycle(); + + void setTicksPerCycle(int newSize); } From 7377fe7db4aba672efd67c4c93827704591ba529 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 15:53:27 -0600 Subject: [PATCH 193/270] Fix Liquid Boiler fuel values (#3490) --- .../com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java index 03a79ce1326..641d6437a9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/FuelRecipes.java @@ -46,12 +46,12 @@ public static void init(Consumer provider) { STEAM_BOILER_RECIPES.recipeBuilder("lava") .inputFluids(new FluidStack(Fluids.LAVA, 100)) - .duration(600 * 12) + .duration(100 * 12) .save(provider); STEAM_BOILER_RECIPES.recipeBuilder("creosote") .inputFluids(Creosote.getFluid(250)) - .duration(600 * 12) + .duration(250 * 12) .save(provider); // semi-fluid fuels, like creosote From 8d62a5d8ee7d84ec648a8b87036ae77be0d26ef4 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:00:30 -0600 Subject: [PATCH 194/270] Add file to ring crafting recipe with tools (#3478) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../gtceu/data/recipe/generated/PartsRecipeHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java index c8ba65badf2..69870c0a042 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java @@ -392,7 +392,7 @@ private static void processRing(@NotNull Consumer provider, @Not if (!material.hasFlag(NO_SMASHING)) { VanillaRecipeHelper.addShapedRecipe(provider, String.format("ring_%s", material.getName()), ChemicalHelper.get(ring, material), - "h ", " X", + "h ", "fX", 'X', new MaterialEntry(rod, material)); } else { EXTRUDER_RECIPES.recipeBuilder("extrude_" + material.getName() + "_dust_to_ring") From 0af6279f5ffcaf0b5328ec17294e55e3b6589179 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:06:01 -0600 Subject: [PATCH 195/270] Improve Steam Boiler info in Jade/TOP (#3505) --- .../resources/assets/gtceu/lang/en_ud.json | 6 +- .../resources/assets/gtceu/lang/en_us.json | 6 +- .../api/machine/steam/SteamBoilerMachine.java | 8 ++- .../gtceu/data/lang/MachineLang.java | 6 +- .../provider/SteamBoilerBlockProvider.java | 65 ++++++++++++++++--- .../top/provider/SteamBoilerInfoProvider.java | 58 +++++++++++++++-- 6 files changed, 122 insertions(+), 27 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 720c6292c30..63c0c9b6df8 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2522,9 +2522,9 @@ "gtceu.machine.bedrock_ore_miner.production": "pǝʞɔoןɔɹǝʌo xɟ% 'x%dɟ§ :ɹǝıןdıʇןnW uoıʇɔnpoɹԀǝ§", "gtceu.machine.block_breaker.speed_bonus": "%d%%ɟ§ :snuoᗺ pǝǝdSǝ§", "gtceu.machine.block_breaker.tooltip": "sdoɹp sʇı sʇɔǝןןoɔ puɐ ǝɔɐɟ ʇuoɹɟ uo ʞɔoןq sǝuıWㄥ§", - "gtceu.machine.boiler.info.cooling.down": "%sɹ§uʍop buıןooƆ6§", - "gtceu.machine.boiler.info.heating.up": "%sɹ§dn buıʇɐǝHɔ§", - "gtceu.machine.boiler.info.producing.steam": ")ɹǝʇɐʍ buıןıoq(ɐ§ ", + "gtceu.machine.boiler.info.cooling.down": "ɹ§buıןooƆ6§", + "gtceu.machine.boiler.info.heating.up": "ɹ§buıʇɐǝHɔ§", + "gtceu.machine.boiler.info.production.data": "ʇ/ᗺɯ ɐ§%s buıɔnpoɹԀɐ§", "gtceu.machine.buffer.tooltip": "spınןℲ puɐ sɯǝʇI ǝɹoʇs oʇ ɹǝɟɟnᗺ ןןɐɯS Ɐ", "gtceu.machine.canner.jei_description": ")sןןǝƆ pınןℲ ɹo sʇǝʞɔnᗺ ˙b˙ǝ( ɹǝuuɐƆ pınןℲ ǝɥʇ ɥʇıʍ sɹǝuıɐʇuoɔ pınןɟ ʎuɐ ʎʇdɯǝ puɐ ןןıɟ uɐɔ noʎ", "gtceu.machine.central_monitor.tooltip": "¿ɯooᗡ unɹ ʇı uɐɔ ʇnᗺ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index e4ea8841699..b4cee85ad3d 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2522,9 +2522,9 @@ "gtceu.machine.bedrock_ore_miner.production": "§eProduction Multiplier: §f%dx, %fx overclocked", "gtceu.machine.block_breaker.speed_bonus": "§eSpeed Bonus: §f%d%%", "gtceu.machine.block_breaker.tooltip": "§7Mines block on front face and collects its drops", - "gtceu.machine.boiler.info.cooling.down": "§9Cooling down§r%s", - "gtceu.machine.boiler.info.heating.up": "§cHeating up§r%s", - "gtceu.machine.boiler.info.producing.steam": " §a(boiling water)", + "gtceu.machine.boiler.info.cooling.down": "§9Cooling§r", + "gtceu.machine.boiler.info.heating.up": "§cHeating§r", + "gtceu.machine.boiler.info.production.data": "§aProducing %s§a mB/t", "gtceu.machine.buffer.tooltip": "A Small Buffer to store Items and Fluids", "gtceu.machine.canner.jei_description": "You can fill and empty any fluid containers with the Fluid Canner (e.g. Buckets or Fluid Cells)", "gtceu.machine.central_monitor.tooltip": "But can it run Doom?", diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java index 00f5a32b0fe..54ab1abc50a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamBoilerMachine.java @@ -193,7 +193,7 @@ protected void updateCurrentTemperature() { if (getOffsetTimer() % 10 == 0) { if (currentTemperature >= 100) { - int fillAmount = (int) (getBaseSteamOutput() * ((float) currentTemperature / getMaxTemperature()) / 2); + int fillAmount = (int) getTotalSteamOutput(); boolean hasDrainedWater = !waterTank.drainInternal(1, FluidAction.EXECUTE).isEmpty(); var filledSteam = 0L; if (hasDrainedWater) { @@ -250,6 +250,12 @@ private double getTemperaturePercent() { protected abstract long getBaseSteamOutput(); + /** Returns the current total steam output every 10 ticks. */ + public long getTotalSteamOutput() { + if (currentTemperature < 100) return 0; + return (long) (getBaseSteamOutput() * ((float) currentTemperature / getMaxTemperature()) / 2); + } + /** * Recipe Modifier for Steam Boiler Machines - can be used as a valid {@link RecipeModifier} *

diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index 6ed58e54f27..d8f2c1cd1aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -51,9 +51,9 @@ protected static void init(RegistrateLangProvider provider) { "§7Mines block on front face and collects its drops"); provider.add("gtceu.machine.block_breaker.speed_bonus", "§eSpeed Bonus: §f%d%%"); - provider.add("gtceu.machine.boiler.info.heating.up", "§cHeating up§r%s"); - provider.add("gtceu.machine.boiler.info.cooling.down", "§9Cooling down§r%s"); - provider.add("gtceu.machine.boiler.info.producing.steam", " §a(boiling water)"); + provider.add("gtceu.machine.boiler.info.heating.up", "§cHeating§r"); + provider.add("gtceu.machine.boiler.info.cooling.down", "§9Cooling§r"); + provider.add("gtceu.machine.boiler.info.production.data", "§aProducing %s§a mB/t"); /////////////////////////////////////////////////// // Standard Machines // diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java index 7d57cd8cec8..23152ef2ec6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/SteamBoilerBlockProvider.java @@ -3,10 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -33,21 +36,63 @@ protected SteamBoilerMachine getCapability(Level level, BlockPos blockPos) { @Override protected void write(CompoundTag data, SteamBoilerMachine capability, BlockAccessor block) { - data.putBoolean("heatingUp", capability.getRecipeLogic().isWorking()); - data.putBoolean("coolingDown", capability.getCurrentTemperature() > 0); - data.putBoolean("producingSteam", !capability.isHasNoWater() && capability.getCurrentTemperature() >= 100); + data.putBoolean("isBurning", capability.getRecipeLogic().isWorking()); + data.putBoolean("hasWater", !capability.isHasNoWater()); + data.putLong("steamProduction", capability.getTotalSteamOutput()); + data.putInt("currentTemperature", capability.getCurrentTemperature()); + data.putInt("maxTemperature", capability.getMaxTemperature()); } @Override protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, BlockAccessor block, BlockEntity blockEntity, IPluginConfig config) { - var producing = capData.getBoolean("producingSteam"); - if (capData.getBoolean("heatingUp")) { - tooltip.add(Component.translatable("gtceu.machine.boiler.info.heating.up", - producing ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : "")); - } else if (capData.getBoolean("coolingDown")) { - tooltip.add(Component.translatable("gtceu.machine.boiler.info.cooling.down", - producing ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : "")); + boolean isBurning = capData.getBoolean("isBurning"); + boolean hasWater = capData.getBoolean("hasWater"); + long production = capData.getLong("steamProduction"); + int temperature = capData.getInt("currentTemperature"); + int maxTemperature = capData.getInt("maxTemperature"); + + boolean makingSteam = hasWater && temperature >= 100; + + // Determine the first section + MutableComponent root; + if (isBurning && temperature < maxTemperature) { + // Heating up + root = Component.translatable("gtceu.machine.boiler.info.heating.up"); + } else if (!isBurning && temperature > 0) { + // Cooling down + root = Component.translatable("gtceu.machine.boiler.info.cooling.down"); + } else { + root = null; // neither heating nor cooling, is either max temperature or temperature of zero + } + + // Determine the second section + MutableComponent extra; + if (makingSteam) { + // Producing some amount of steam + extra = Component.translatable("gtceu.machine.boiler.info.production.data", + Component.literal(FormattingUtil.formatNumbers(production / 10)) + .withStyle(ChatFormatting.GREEN)); + if (root != null) { + // append some nice separation here to the root + extra = Component.literal(" | ").append(extra); + } + } else if (temperature > 0 && temperature < 100) { + // Still warming up (or cooling down) + extra = Component.literal(String.format(" (%s%%)", temperature)) + // Either heating up or cooling down + .withStyle(isBurning ? ChatFormatting.RED : ChatFormatting.BLUE); + } else { + // Nothing to add + extra = null; + } + + if (root != null && extra != null) { + tooltip.add(root.append(extra)); + } else if (root != null) { + tooltip.add(root); + } else if (extra != null) { + tooltip.add(extra); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java index 59e113a66a7..1ad3a5517f0 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/SteamBoilerInfoProvider.java @@ -3,10 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; @@ -33,13 +36,54 @@ protected void addProbeInfo(SteamBoilerMachine capability, IProbeInfo probeInfo, IProbeInfo horizontalPane = probeInfo .horizontal(probeInfo.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); - var producingSteam = !capability.isHasNoWater() && capability.getCurrentTemperature() >= 100; - if (capability.getRecipeLogic().isWorking()) { - horizontalPane.text("gtceu.machine.boiler.info.heating.up", - producingSteam ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : ""); - } else if (capability.getCurrentTemperature() > 0) { - horizontalPane.text("gtceu.machine.boiler.info.cooling.down", - producingSteam ? Component.translatable("gtceu.machine.boiler.info.producing.steam") : ""); + boolean isBurning = capability.getRecipeLogic().isWorking(); + boolean hasWater = !capability.isHasNoWater(); + long production = capability.getTotalSteamOutput(); + int temperature = capability.getCurrentTemperature(); + int maxTemperature = capability.getMaxTemperature(); + + boolean makingSteam = hasWater && temperature >= 100; + + // Determine the first section + MutableComponent root; + if (isBurning && temperature < maxTemperature) { + // Heating up + root = Component.translatable("gtceu.machine.boiler.info.heating.up"); + } else if (!isBurning && temperature > 0) { + // Cooling down + root = Component.translatable("gtceu.machine.boiler.info.cooling.down"); + } else { + root = null; // neither heating nor cooling, is either max temperature or temperature of zero + } + + // Determine the second section + MutableComponent extra; + if (makingSteam) { + // Producing some amount of steam + extra = Component.translatable("gtceu.machine.boiler.info.production.data", + Component.literal(FormattingUtil.formatNumbers(production / 10)) + .withStyle(ChatFormatting.GREEN)); + if (root != null) { + // append some nice separation here to the root + extra = Component.literal(" | ").append(extra); + } + } else if (temperature > 0 && temperature < 100) { + // Still warming up (or cooling down) + extra = Component.literal(String.format(" %s(%s%%)", + // Either heating up or cooling down + isBurning ? ChatFormatting.RED : ChatFormatting.BLUE, + temperature)); + } else { + // Nothing to add + extra = null; + } + + if (root != null && extra != null) { + horizontalPane.text(root.append(extra)); + } else if (root != null) { + horizontalPane.text(root); + } else if (extra != null) { + horizontalPane.text(extra); } } From 53f9e08f25d83dc1000ceb97d2b1ff5aea630c40 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:21:35 -0600 Subject: [PATCH 196/270] Fix default machine pausing behavior (#3460) --- .../com/gregtechceu/gtceu/api/machine/MetaMachine.java | 9 +-------- .../gtceu/api/machine/feature/IRecipeLogicMachine.java | 2 +- .../gregtechceu/gtceu/api/machine/trait/RecipeLogic.java | 3 ++- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 897a8a1f156..9c43d8c6dbf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -424,14 +424,7 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h var controllable = GTCapabilityHelper.getControllable(getLevel(), getPos(), gridSide); if (controllable == null) return InteractionResult.PASS; if (!isRemote()) { - if (!playerIn.isShiftKeyDown() || !controllable.isWorkingEnabled()) { - controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); - playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? - "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled")); - } else { - controllable.setSuspendAfterFinish(true); - playerIn.sendSystemMessage(Component.translatable("behaviour.soft_hammer.idle_after_cycle")); - } + controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); } return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index 83a53f754ce..a747474c32a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -131,7 +131,7 @@ default boolean shouldWorkingPlaySound() { ////////////////////////////////////// @Override default boolean isWorkingEnabled() { - return getRecipeLogic().isWorkingEnabled(); + return getRecipeLogic().isWorkingEnabled() && !getRecipeLogic().isSuspendAfterFinish(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 8b1f3f58c79..1b8bb482b4e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -116,6 +116,7 @@ public enum Status implements StringRepresentable { protected long totalContinuousRunningTime; @Persisted @Setter + @Getter protected boolean suspendAfterFinish = false; @Getter protected final Map, Object2IntMap> chanceCaches = makeChanceCaches(); @@ -406,7 +407,7 @@ public boolean isWorkingEnabled() { @Override public void setWorkingEnabled(boolean isWorkingAllowed) { if (!isWorkingAllowed) { - setStatus(Status.SUSPEND); + setSuspendAfterFinish(true); } else { if (lastRecipe != null && duration > 0) { setStatus(Status.WORKING); From 1b6341482c278cf814e27b1fc667a15fbcca063b Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:40:44 -0600 Subject: [PATCH 197/270] Allow steam machines, mufflers, and PBF to break snow (#3492) Co-authored-by: screret <68943070+screret@users.noreply.github.com> Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../machine/feature/IExhaustVentMachine.java | 36 ++++++++++----- .../common/data/machines/GTMultiMachines.java | 4 +- .../multiblock/part/MufflerPartMachine.java | 36 +++++++++++++++ .../PrimitiveBlastFurnaceMachine.java | 11 ++++- .../com/gregtechceu/gtceu/utils/GTUtil.java | 45 +++++++++++++++++++ 5 files changed, 118 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java index 69d1b2287f1..1d298a4060e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTDamageTypes; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -86,22 +87,35 @@ default boolean isVentingBlocked() { * @param pos the position of the machine */ default void tryDoVenting(@NotNull Level level, @NotNull BlockPos pos) { - if (isNeedsVenting() && !isVentingBlocked()) { - doVentingDamage(level, pos); + if (!isNeedsVenting()) return; - Direction ventingDirection = getVentingDirection(); - double posX = pos.getX() + 0.5 + ventingDirection.getStepX() * 0.6; - double posY = pos.getY() + 0.5 + ventingDirection.getStepY() * 0.6; - double posZ = pos.getZ() + 0.5 + ventingDirection.getStepZ() * 0.6; - createVentingParticles(level, posX, posY, posZ); + if (!isVentingBlocked()) { + performVenting(level, pos); + return; + } - if (ConfigHolder.INSTANCE.machines.machineSounds) { - playVentingSound(level, posX, posY, posZ); - } - markVentingComplete(); + BlockPos ventingPos = pos.relative(getVentingDirection()); + if (GTUtil.tryBreakSnow(level, ventingPos, level.getBlockState(ventingPos), false)) { + performVenting(level, pos); } } + private void performVenting(@NotNull Level level, @NotNull BlockPos pos) { + doVentingDamage(level, pos); + + Direction ventingDirection = getVentingDirection(); + double posX = pos.getX() + 0.5 + ventingDirection.getStepX() * 0.6; + double posY = pos.getY() + 0.5 + ventingDirection.getStepY() * 0.6; + double posZ = pos.getZ() + 0.5 + ventingDirection.getStepZ() * 0.6; + createVentingParticles(level, posX, posY, posZ); + + if (ConfigHolder.INSTANCE.machines.machineSounds) { + playVentingSound(level, posX, posY, posZ); + } + + markVentingComplete(); + } + /** * Damages entities upon venting * diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index ff7393046d2..3d67a12a75a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -119,10 +119,12 @@ public class GTMultiMachines { .appearanceBlock(CASING_PRIMITIVE_BRICKS) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "XXX", "XXX", "XXX") - .aisle("XXX", "X#X", "X#X", "X#X") + .aisle("XXX", "X&X", "X#X", "X#X") .aisle("XXX", "XYX", "XXX", "XXX") .where('X', blocks(CASING_PRIMITIVE_BRICKS.get())) .where('#', Predicates.air()) + .where('&', Predicates.air() + .or(Predicates.custom(bws -> GTUtil.isBlockSnow(bws.getBlockState()), null))) .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) .register(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java index a1cf1864790..aa7cc47d1fb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MufflerPartMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.gui.UITemplate; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMufflerMachine; @@ -12,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.LabelWidget; @@ -19,6 +21,7 @@ import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; @@ -26,6 +29,7 @@ import net.minecraftforge.items.ItemHandlerHelper; import lombok.Getter; +import org.jetbrains.annotations.MustBeInvokedByOverriders; import java.util.stream.IntStream; @@ -43,6 +47,8 @@ public class MufflerPartMachine extends TieredPartMachine implements IMufflerMac @Persisted private final CustomItemStackHandler inventory; + private TickableSubscription snowSubscription; + public MufflerPartMachine(IMachineBlockEntity holder, int tier) { super(holder, tier); this.recoveryChance = Math.max(1, tier * 10); @@ -88,6 +94,36 @@ public void clientTick() { } } + @Override + public void addedToController(IMultiController controller) { + super.addedToController(controller); + if (snowSubscription == null) { + this.snowSubscription = subscribeServerTick(null, this::tryBreakSnow); + } + } + + @MustBeInvokedByOverriders + @Override + public void removedFromController(IMultiController controller) { + super.removedFromController(controller); + if (controllers.isEmpty()) { + unsubscribe(snowSubscription); + snowSubscription = null; + } + } + + private void tryBreakSnow() { + if (getOffsetTimer() % 10 == 0) { + for (IMultiController controller : getControllers()) { + if (controller instanceof IRecipeLogicMachine recipeLogicMachine && + recipeLogicMachine.getRecipeLogic().isWorking()) { + BlockPos mufflerPos = getPos().relative(getFrontFacing()); + GTUtil.tryBreakSnow(getLevel(), mufflerPos, getLevel().getBlockState(mufflerPos), true); + } + } + } + } + ////////////////////////////////////// // ********** GUI ***********// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 2c155db3476..333e7ca8567 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.config.ConfigHolder; +import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; @@ -30,6 +31,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -91,7 +93,7 @@ public void onUnload() { public void onStructureFormed() { super.onStructureFormed(); IFluidRenderMulti.super.onStructureFormed(); - this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntities); + this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntitiesAndBreakSnow); } @Override @@ -198,8 +200,13 @@ public void animateTick(RandomSource random) { } } - private void hurtEntities() { + private void hurtEntitiesAndBreakSnow() { BlockPos middlePos = self().getPos().offset(getFrontFacing().getOpposite().getNormal()); getLevel().getEntities(null, new AABB(middlePos)).forEach(e -> e.hurt(e.damageSources().lava(), 3.0f)); + + if (getOffsetTimer() % 10 == 0) { + BlockState state = getLevel().getBlockState(middlePos); + GTUtil.tryBreakSnow(getLevel(), middlePos, state, true); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index f4792a1520d..3e8f210740c 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -24,6 +24,8 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BiomeTags; import net.minecraft.util.RandomSource; import net.minecraft.util.Tuple; @@ -34,6 +36,10 @@ import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SnowLayerBlock; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions; import net.minecraftforge.common.ForgeHooks; @@ -452,6 +458,45 @@ public static boolean canSeeSunClearly(Level world, BlockPos blockPos) { } else return world.isDay(); } + /** + * @param state the blockstate to check + * @return if the block is a snow layer or snow block + */ + public static boolean isBlockSnow(@NotNull BlockState state) { + return state.is(Blocks.SNOW) || state.is(Blocks.SNOW_BLOCK); + } + + /** + * Attempt to break a (single) snow layer at the given BlockPos. + * Will also turn snow blocks into snow layers at height 7. + * + * @return true if the passed IBlockState was valid snow block + */ + public static boolean tryBreakSnow(@NotNull Level level, @NotNull BlockPos pos, @NotNull BlockState state, + boolean playSound) { + boolean success = false; + if (state.is(Blocks.SNOW_BLOCK)) { + level.setBlock(pos, Blocks.SNOW.defaultBlockState().setValue(SnowLayerBlock.LAYERS, 7), + Block.UPDATE_ALL_IMMEDIATE); + success = true; + } else if (state.getBlock() == Blocks.SNOW) { + int layers = state.getValue(SnowLayerBlock.LAYERS); + if (layers == 1) { + level.destroyBlock(pos, false); + } else { + level.setBlock(pos, Blocks.SNOW.defaultBlockState().setValue(SnowLayerBlock.LAYERS, layers - 1), + Block.UPDATE_ALL_IMMEDIATE); + } + success = true; + } + + if (success && playSound) { + level.playSound(null, pos, SoundEvents.LAVA_EXTINGUISH, SoundSource.BLOCKS, 1.0f, 1.0f); + } + + return success; + } + public static void appendHazardTooltips(Material material, List tooltipComponents) { if (!ConfigHolder.INSTANCE.gameplay.hazardsEnabled || !material.hasProperty(HAZARD)) return; From 660ca0bcf4c8a7fd9222dede924fc76f4b4a6717 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:41:52 -0600 Subject: [PATCH 198/270] Change Tungstensteel Boiler front overlay to match the other 3 (#3488) --- .../overlay_front.png | Bin 5718 -> 831 bytes .../overlay_front_active.png | Bin 10058 -> 826 bytes .../overlay_front_active.png.mcmeta | 10 ---------- .../overlay_front_active_emissive.png | Bin 312 -> 391 bytes .../overlay_front_active_emissive.png.mcmeta | 10 ---------- .../overlay_front_emissive.png | Bin 219 -> 356 bytes .../overlay_front_paused.png | Bin 571 -> 503 bytes .../overlay_front_paused_emissive.png | Bin 569 -> 399 bytes 8 files changed, 20 deletions(-) delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png.mcmeta delete mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front.png index 729e656da0188cc3dcbf8dc0590175a2636a4972..8a0a9134784d5fbde6f680a1055d4b92b6c6d028 100644 GIT binary patch literal 831 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47@ISlodZ0bofQI#^3yVNQh^fZ zr%tr=V0M&fwO_obLurzTl34VLsf>Yw-n~s6T#9ZT?hoG`JK|8ryPMN&TGQHuhZieE z&92>wy1~`-fH5gOeQAbr;@@;-6%IieiD!?`?m2!&nnNbd_w?G=%%{&;Z|v-tHe>d6 zskjx(n-!e5yj(V0y4P*_3M;$!D*|8VMx=h+e{oVwneU2=E$(OLOcsw5l8ZY1T;x4h z`x#MN%^I~kuTQYH%1_Cg@*}kH*7Jr_JeD7C%qZ}P@DAS)c<@)F%a-t=5bEi*c(a@pmgfyM+y?|B>6Y}3#)yxAY}vHZus6+3te zQw@$9p3@TB_1^vO!S{K0uQ=3euC!$OdVb#bd%V221MYmH$6>t_!vt@1L_Hxu~bC zaeiCx2B(mCpp1#Dr;4%Ze^A63Ff0%PifI3Gy#u6pOM?7@|04kg+ZRf0KnczQkH}&M z25vzRW~@(%p9mC`C~=J_3C>R|DNig)We7;j%q!9Ja}7~2)iczykj{Ly0;r}ZHNrE^ z(^HFq1IS@zkYZ$IU<9(ffLI#J2BjqpMrN=$6Oe7l$OKMXQ9yQPI}2Dm3&;imeMv@! z7r-P3qtPs70P3H>&cFgxX<%e*z_VKeDLEygJ+TOEQr``uLqdZ+4Lo|YO&pPrQ zP~dP0OxY0d_22WgN_t+u#ntvLxZv@Zu`>0j^nr<2cxzmjNS;}k^20`R({}+yh8fb0 zJKr40ZMzoz{6~n`nd-^Rk3Q=##)MuybM4^=y@L|`Px9I48kU)7fNb=1^>bP0l+XkK D=P^2n literal 5718 zcmeH~dpuO>AIFCxxs^*QQq$-nHTPjI48{=3wM3Y3%$zY3b1^f_ps`YHuBl&9Dwo>Y z%`Ndti(*k*Otvkgh*pYj>r%_6rG95dwe|Y#KfPYR{jYhw&YW|e=li_B-|y%7p68q= z&Bx1CPuo-*27~FjyE$)x&I^@?mL~MS;?+9<2Ga*)#ztXj2JcY4^^UfocuDSErbt~o0nxT|$3o)hueM^{K)0&W!woG-%_*k62%KJb;}C)GnqhdVPX}!!1B~; z@9gltIgexDQ@=Yjkb8`3)Arrs^!oN>FFU8!qyI7}S8v_3SB9HHZ^rr?c6Z+h_E?n6MGT3eBcG&b?xk5j7$ai+<(^)R|@U|L*tmkHyrA(pfB(OKU!w3&GSlB6fK)el=4w9Xe9UgYSQ zJ4t2^Xwx!O?GWO1X;F7^o?wHd{aD3QD;JOZTDcy=jj}!MmuAwQ2fH#oT8-|>u4(@$ z+hmMcBYvg7excLg6SoRj;qw`MTuhix1;%v)rnib=TwGp$)hyRdd=~ zs}Xj6x0>1Y`5IMiWzPGUa~+muBMzqOSi%kXj;;MGgAZBUtR2t34Jw*T&8&5t_vv`i zJVi?xamF@JT;+RHt4QMrL+90-4lZMi(VVnQ+2e|5ouwR~t{>dRl3T86D|cqDIdjBl z?Y9pt*RArzo<4+M(>`{5JT{f~OG?K22DkYxn>U<&q&?*qdOEelIzN9W|2~6$f>X@R zKwh|imcFS^`m{K5KXt+meqkVW1+Mv516R{2cGiuP6N-uFWw(GV^qDio{bd8&x(1Wk zyT|bi7`KPdWWfQ_-~>*qffe=M@e$HjI5E?o>Rr zYSoFO&9nvNfl|{%;>ZCzWNSdLJbR76dq8HTFuDq+wm3GVs@wiB*45q7!O#mp1$*T_ zi}vZotv_2+QfhR}H`uc1R_SWq$Wml_pk~gim&ON7^0xY2Tr&{1E@F2@Y2&b6NaKQ7 z!Djd6+`2UtLPzm}e1|&6jO$0h5auZ3MoM5#jeno^{-GlCv(`4Tx;`-xFZ-Lbj=Y9X zHbv>)UG9K*t0}Zknu6IFoe!-P?lrAlIgBnfsefGeB7CR$VNea_U%$WDLBlMmJ>W{> zoJmVF9Vacx_UC+~uygw7hq)vA+j@fR;?+{_N>Rr8yF*Hos;irWa_wKv4R8BJa_HhY z^_){KBd!G(7#%|77k-*(2C+L)*8EJzKxCVnuOuzj-f zH|KA0<@0v+>M|GKlJcvUGd2j^8WAhZ$mI;hj>@AKD}gJ|D)sv<xBs=jn{hWzI6$yQjQqg{)n1rf5=iyuT8mOr#Cb<-Xvj~}5eUX}Q$ z?!`;9;i{Izf~D4?d*p|f=Y2-PYcm3``lNloZ!o>Yx4~hwsyQyBI;gaIk~*c+;=+qd zdrtWFz|ZO?E1i-uDJ4HNIVJmN85;%mc*nhFW{0lI^Qf>|LLNG=w&>vCymxyZ^yQy! zoljhMTs;|GGlNy%8@t=TrKWK|uRcb7Zo%&L<%176>K%pO5h+2_T1)O~qAG0jFU@0& z!06s}EVpdqqNnJ?Nq^$soKas`tMSIaufOLnk{l-L+%}|1BF){XICObve58M*|1Gs+ zWOUv!qUd7Di)kM8Ml|I@Z@%rG9u%g4hXPoFa1bTq386P53})vb69UXgPy!DJBe;Aj zVzj;y0q3%)hyZI(jHi$ea=32sB5-TGmmf1el1XME9PG92WE2R%10?`l#*5;MDKaWT z#ic;k%4ReIt}>BCQW4udec*I~2!s<*1QZ78BICy55cb+|I}wXb+2XwMJp#I;A~+I> zkb*`_rBaj>j}nL?&{#5=jK<*5I2;nPK#Jq|5F$sn4n86$d_1rig0!J^!Z3orWC>D2~|l!;(g|f#r$X|j1fhtY*|X8|)t>D1ksicrQ&VF{RA7DaVQ zAhQ4_NMa%JI6MJK0LU05fWzA$+0Z=*kg#kliTnx5oiCOEd?u(wL2wio;;;!=5{X45 zAqfN`gdkyvNB|p-Ly|~DA`!Gu_XBD_Uhs49V|Poq+zSP;q@a>*hB;Yf10G8!8w zkZ>FeMB+%+Y>W+_fXCU)qLlMMq4~H|5jYe^6`!ibCkl|T1tK05;lbs{$o}r|$)&_^eSd*=>1n6u-#Q$yN4~oQ4!6}(o3<^h3^{|+fjSvxl3Wv)BB0#i|AED|{ zP74J}1`-xf)+t0*wL`g3=pqo12t&N~H#;eATrp%3r>yw*HNO>% zp1qrW1fsaAE;w9OwiJLl>qHF1f-IFIXxwZUlLPQ0K5;QfwTxHQz#p#fK=JQEmaz?`#csY z2UH4(!C{dYYb4Ib4~wT@tSMLm5<{e5FbMSfgwe{U`a{Nc=>O5gPG#`PG60R6ZG)B< zXthFrT&~`0rj+qt{Jo!xf6)Vk{_5n5^!+N=SGm4OfiE)tT3uh|`XU9s$oOk@{omx$ z{(Hj%@}aLFDYTu5{KM*JXe*={zS-4TwJCy4(d)l~uI3Bf0>vb_ zxO=+Hd#qt?2H>c~*ci)TI2ivXD>|Uo8XOxqY zWxPBoTVavJS*U?{gnd$!W^C%LgVgJEyX!XDM)fLz-v}B9<$c9z&a_j<$H%vY5KLG&pQh_qRCIL{OF@@G36( z=S|gm$GVB*@=&~2zO8iBcZ12jdvW#wVeFI=(c{d@Zqru-!s{dZvFjCZ#48@KWJ|ff zk;#kyzzkNdSnp}z?`L3h=BRQ@3*Vsxx(c369Q~pNmQ|Hx4p$DjO0HGe!)}%(|~Hckols zX(e^$)~LOner?e4^w2r)1@5O!DmP?Qnj6;8gUas|B1vARiYi0BmH{mVZV7X!?Ig$X ea>(Mh8Lu_CDdkV`gh`pQ0Nh=?oGYBdlK%_h_Tn1= diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active.png index cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4..173f15cda603a849f4b8a3a71f72987c4a60f6d1 100644 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47@ISlodZ0bofQI#^3yVNQh^fZ zr%tr=V0M&fwO_obLurzTl34VLsf>Yw-n~s6T#9ZT?hoG`JK|8ryPMN&TGQHuhZieE z&92>wy1~`-fH5gOeQAbr;@@;-6%IieiD!?`?m2!&nnNbd_w?G=%%{&;Z|v-tHe>d6 zskjx(n-!e5yj(V0y4P*_3M;$!D*|8VMx=h+e{oVwneU2=E$(OLOcsw5l8ZY1T;x4h z`x#MN%^I~kuTQYH%1_Cg@*}kH*7Jr_JeD7C%qZ}P@DAS)c<@)F%a-t=5bEi*c(a@pmgfyM+y?|B>6Y}3#)yxAY}vHZus6+3te zQw@$9p3@TB_1^vO!S{K0uQ=3euC!$OdVb#bd%V221MYm6dHL$CqzPxVKwIV17F1gH@~2w(+&^W=Y<&ESOz2jpz0wkd>aUelF{r5}E*J CCNn$$ literal 10058 zcmeHsXH=6}*LJ9(BUQRIrAQzNB@n6*dXX+gfe->jI)vV&7paO0BGROa^dh}U8>&c` zB1M{10i}s=aOQbtW_|CUS?hcMP1d?|-}l+qx%S@I+2^dBlNencRZ21zG5`QTsji05 z$K9{sE-(o(?wiT-^bP>P;OJ*)g4IWQbGo{_*kT;foLFC1G$+~zV+#QI%)EJyac7fy z6!CMJ-h&X3a3pCmxJvACe!}s{M!k5m7Lv}W$@_#k2JmTkA(Y?yVy(68Oypuk_n~He z?WpGdxw`C;af z_5Q>1md`k-`z?Qpg@Z9Fv0uTf{8gDNs>b;v%aM7?q>uQ;!1boHZ{CdzEU@{I zn<%UDHolw>bwA%twz92T+>#?)kUJw3O1(1{DN1Rivrr!!8h#d^doFQ&_GMVU__bd9 zd2M|~+v1vCbXw=t+HfBK2npeV^YcTq!ZQazZM45Zz_(DcV_Kmo+JN|q$Tm5NO;M)8 z_hN4Pp-CRI1JE0}=Jy@-zORakH#wjZGM_C9ktM$|$rGC+uF<%{dR$Z#lAR1Hc;V3} zUN?KdZ>-;!mtuwp$~Ds#pVW77s+oLWlK0dcQzJg<$13X;#^xc?{B6SjT39-j3P*sS zYde#uPC91Q)HcKEn-t@oDdw}0@x8$}E!_zpC1fi4OB=UadPsr%8Q8A^1uwl$nXeY! zYus2hcW&PPCLL7FIP1{3S6BAaf4swceCc(HaEZLpa&Ao!H4TE#R6N%jLL_Kmga=?Z z5?xT#cwdAqPTNf`?M*hdWv~Mp#gXOHS+^_}cm*5n)HT$nTv&QOTzKLkI2WAbu9J6m z^~st4+(q_%^ZQjz^>?^xvL(h@w|j^R;w23hgCIlg^ILP%-GfmEjRG$+WJGdCi#igr z2fmbUo9tv1xIG@2khn>pgP1nXoa~U@voO(h$`2{+m8Sl27v|Ppuk_63>Q=SIgk(zV zWG1x)>cd)Xm50n)IFel>_nE^zgD{;^$D^%sQ_aLJyf^(S&!X%!`&Big0_tb`tXRGL9c?0$pj9r*`uQ3%;!;GKwk#hsX7=_ z)~ZQwRc&O?OV2VNksV~!a25JyR(z>Xx?(6lL>NOOq-;4dr;)e?y(RcoHWx|$Ta0F% z>)O!Q9fp3j5|#tkDb%J}Psv!K?{0<*3&|jJ6MIKVt*}WEsJc<`j+xi94wW562lF1+ zkm2NyZzIy*8k(JP(swG;Q;I_^#LZe8~doz{5UV2Vj?>GSeotUBgk5Qp? zz3*0bE=zA1(=zo&e|wsdhUw9-VVsyMOJQV6NEaORbC=tmvECeb3=usZUK|VZ2L=cM zAL!`1IN4o+`{t?-4tx5RjY7b=;PLm1*w-!&zuj%j2M&7eHo~lOp-wLXCDt{Z9FIv( zj`AAb3xn#fEQs;j3D(}($?4UC_0$TkJ7vWR?pEEW|Cjq<7#Wz9I?-FZyxhg1RM_d;%s?jJ_Tl_d1$YK z(-n?4tO!~U-c^8vz3+qv8<(EGs$i&6;(IVL6a#i(%d$0%?rxbAUv02TZcSF%04j=L zEORH5Zm_MxZ>u=f-E}Tg)vZe%G7&0&I+xhS9`WTlnCC%+7lji2EK|wbV?2QftIE1< zcdIG!C49oWA&@6$+r6^ZM`%|_ahYmYY)X-<_HzPL__z@gu*J9lWK*hGumsVWb7zLFu`b*s+c~4RM z%EA1Vm1izWK_QI3);;Sz+Gdz3lrgXEqXJEWVFb_U4Paq0RS60Bj`r@WWPrvi%uI$Z z|J!EzDysQMqS|W2v5FZqy{0U@j2&4AJ@byDGm>eLnC0ZV?Q>i4?Sch#0Vk4ysz9u! z=7BsA__&flG_^#zY(G2B7w@@bZa1$Ct4gC6Mam3GNLP{*_F;FO?&J*lV?_fdv#qy1 zI=Kj?XBH<{j1A?%A1axrnZSdL!mLvG*TsxAT=>dErrrVd)EI`G<=6M>+1LiHH4-N{ zgTo>`NX04^{O8=wy7zY>{51Z=Zl>YBf`$*1H0r0UZ6(tr$GhbOMgMv>`ubOOD1hGZdxzF3+Qn5jtuH;Tch^IM&f{L>+bVvSKU#26$t=nmL`-;1&@fbfjEx7ddxf#$&t6e* zw$v2tx8W)ck?*(z(*N3H3Z{7{no#knq=sh)YzkaFgr!x>*NmwTECe+KA9b(sIg&nk zM)BcI{@gh?yXD2#@RQ^Oe^+NYebKQNFGpGX^!qFd*b2eaP&|@-L<4r^i?5yl{$v`w zd-_^5tCZk;G@LwOX=rs7--Pto7r~DureqRp>vdiRr;fL&4gi$UMA7Q%r}vy4quF*G z{MoHF`H$CAclxOPB2D86AFeOjD}vyY2}6?j98<3fOj@0>G&i`dGF62MWLpKCWB>ys zzI1mvVJXB2c3rY_k)34$`(6%)D1Vlbr2IBj@W>#L2w8)d<)ckq>hn`f&CXnpWphgd zZ@eLHg4x*-oMsMbM^?14H0k?(!DtFWP>%+&PU*BoIIX+YO`N~4szVc4CIabrkIY} zyA_38%0LKQ*pIgJ2}9UE3iov#(_WXrSDAQytr9~>Yg!*k2TW~LZ8M)$LG-t`o<1Ou zt|?R}D^6I*W+F}^j>W)bU)wdCIwPEohC%9lyo`<;Uhsa?pooaH+}2d(h-IE{BtI*` zSs{-!X+pN=n}&&>ghx>Ik}h+08WL^02$ICKBywjVrCnLdSt*S_lP29Yx%S}za1ZU0 z+;<%awHUJ&eN(Gd=F9oLmSGdm;vEbw=RK3M6KYn0A-SE@JqccP=6_=IF8I}6OxycX zjFe4<$;?5thst}h|$SC_4wf&#@$I!-e zz2}dKBxUBCd6MNduQHIumfN9T8Hxy)IYxM9nXn5rGHpG|FE1Bir_bjI(^1TtK?NzA zv2J&&Vmt6kDDXDU!)9!AKG~Q9&Paz4GWQr)-d|Lu`}n^~{HEme2_Qy`J{l(>CRA0R zZoj?PieSCZjURo}!YOSE{l0qWAX-6pna}2ea^EngLL-4S_uK?t{3;t+#qm{ z7JC@`Bd5F2q%+N`=CowdtGWj}lej$RZZPKM*~G}0%0Ht(d0(yLL0>i=!R^`t&^H2v z_HWln%pdO|3}4vrSc#XragBPp0cB~U4`=kXgt6{ZnVoc_!K;}juZ>u;BVJq^6`#Is zlDygDbkpidMH-g6uZ4$Lcv$IzuSuwTTMz?`7KAH?%})xoO4Y=>3(>`?NMj27G`~ES^hp z98?e3(-_Q>wN)L3oF`Dnd?Cog1{ zaoHa-`urVPv}S4T(_=P2pBx!L`ZkGyW9(70*=_l&zBGd&s0O^!zI9$uy#bv6WA641 zIz*87M+5sX{*iCgDwrWzl4Cwq<{_caoaLj+D%R6E+xU&i`ACwuZ_*U0J9J)}rjKA& z+HFzmU^aoGMN<7^!?MEC!q;}Bj;6YI8(41;WvLgi!&#KR@FP_)@Ij5zNDF(a@<42L zL6Ryt!JDiLDLr9!VkAvENqfKzcKAKMZN>>o?d)m9rU7CU1P!JY5)7@BUkm@-5vfQP z!Wq%7m9&+WYjT5aWvW3-e)&q|>9BWS_0R*AQ4CRhD03?7OYYe(y>XBSi>YohydnJ! z;kiR2SrpE3o^2gAiS36Y+?8Cb4CB)Wql%CXpXlzJgp@K6Qhc-AH-@^wcdvhR^l4q* z_4ET!ycVp{eC~&c{QjV(5uZ}x#fyEJ6&KpuygHK=1A;#_Uu5Hf7r{!`N4#g{*29I} z+ZT9p;ae>5KIWe`&U3BeHS(*BQh{H=V{^N=K0zu!_h{Tiv?t}fl-PgJ`JucCpOw3heUj8S_5?Zz$3Dh9aaES2 zsb=|Nk)06Bb4!Bg>Z7zZ;@+ur%7ls}rq2}L!i{&7&bu`0j|t^Ag-Fd~;2%g#f~h|n zCe4P$U44*6PGUH~Y@TS4o&DJ&|DrFd-|JPgvR8D$*`sorq%l93D&czFF2{kW+~hbc zE?)A=(^{>!mHCgR+OK_HGf!8J=!}*&A+1%Yvwcg9TGUv$Hmm`Ac z+rtS$6iU92{IqyLvKXWw;dRA;Y6~Ex6{ad<8bWBd=~+l=oS#5d=fy!z?_~qEx>BGS zz;nmjr!9u0m}9pj(GPi)y>g(_e&l*HT&WI0pD@07O}{?;ZOp-at|jf6(KKuMYf>{` z1Gi|syQn*F=kq;JbSt(Z%)RZ zPYsx&T-KwI$b3{nZm%j!nM}QN&k1%U=CCBHzLDvpv$adYNi>l?s{FC^W%kpuMDd_S z)Tv?7tF+A9Qq>H+O^IAVaOSZDLK#UN=t#^`GI3Xq9bKT^Z9~OV;PM^)=o&7SCxaHn zd@m*`DOSVUpZRa`B~h2J9eRuwaM>^I=Fq5L`OO-EadcNb1s)3vi?WZO;8m?-gA0nT zC(|E_eO6Bxz9syrZAF=H8_s3J8(;&OO0?Z9y&L`!(aWqx$xg9O%9&1e)r#k9NZQ^P zKCU^svYlH^zzLI7s=65`5I3#8{8k+{H2IJMFeBHPd~Vvc7D8xqmDI3)<2+qRtu`&X zU)F|0fdX~gT~?32;6c2#oe2+sd*kRVfp&k!ZwTyJ+7^!OrMRkl<>X~+!fY$m>^;N4 z$NI!1PrO>J%y~(X3On(OSz{%+ZU`E3A~g5gR6A^C*_t%xHPs`mRwE`y3%`Gsc04yD ziT*ihtE=bP>9lfSG!Zha%g!?DfTO?9HtJh_WD~)?Tfw@U(qU(B=Q6NQe@yBz``96a zr9P|u-u`YdtEV=3hMTq#?#XA ze*4iasW>$&wyJ?Gb@}`#@er6vw+O)1|0e*jDxgO#J@O&px4W{uZQS_vvFmgbT+%Do zq7n(l$Ch(D0OikaPFbD{wL3ly&$iebm*x!~tup}ecI6v?RGaRDA2o>ci$DIRDWDhC z;p$~hHdatk898e~Tv~5&-8+?T7%wDwC4Byc=T>+_MQE*Dm%JonetH4Hp#phX+`WPt znD`NUpy~bEud*;A9}SuycZ&Fz7|o0mCTzC?KPW?WWA`c1okcsy*s-`vS+BI-24%P7 z{E6OZw%dYV1H+esi4Tn*4%Z(&AOPK|VQt~c8>U)py}_B0k-WMF37KDt54GYu*686! zjxu#_tn7()lwEyJRUG4c*q+{%o^mdOO?0@$m`Ftws~4EBGvZjGWu@ME&mjEw#HA0k1mpA1v99Y6p8UN}ZcNmpG-=|AVLxYO1bfyuIJoeFGS zmgbtug52AjU0h0@m7IcIdarfE$+C^@$JhF~`&Mo!rX_njFmQnS>Bba9FUJ<^waD*QcKAN5GJ9S1P4G({|2D*e0(cy|Y& zbi2VuErC93L*&VW@1m#q_*d$QPL1d0XU-%80q$c)tHhF$gev_h&8z!6^E>kwvLAMK zf$1>!y5g;KC*1is3kG)%ZlbLPN4Yo&BW+x)(ZW7XuDEk@06<3G#}$ckKw~+r(RLVT zS?=A&R&Gv=jV$*aac!`+s}kBCqvq$1Ht^FiMEN2N&JzqA9aC82GU>#(+O|*46m0aA>oMOUa!eEfH55^11El0*F<8EUM*GH)Q zL4kXd<+jISUEv}k-rnBA-lD=T?sg&&DJdxtFjNEz1>q1N4_{|2(g)=1!E;IRI|l;o zfpW*VVlghxoR^$PYZp(fEH^jK&iSACoLsfF|4Z-e@rMdHJw$wvt|Aa&u!xhB$X|PS zV3oaaB!2|-zxMDj#QmKhqL21)@pMO_mA%l;Sf0O9sH$u0{+Ho0B|D6h>#wA6;{DB; z4eGx*S5J4xUl<#d2-*?tgd_F9#RvHt9*eR4Q>?$mc4_&Q&R+w;x%)5w-_ZZb{TCRA z($ayHWVep?Vx{gS!t&6*pEVmZM+0*AwgCWKVZGc5yiUyH@Lc!uv;-XLq zF)0`r@+Zg`?e2jqxJyn5SQsky%VL9qtKb-sxWd6WA??s2uFiJ9441|#of@w#Zi{~GFHw@%3tNpDf9cFs9`*C2;a+!|D)y&&~CrK{XPX8 zF~3ZloWIHzjzs*ZP!Jdf2ZOmq{zzEla#sH*V;PbEM-!P}fWIsQxPHI4 z;g%QNY9;dDZ)ey0RWKGUS4>k zb3y00Mj%#QTN(J7h=rbrlT)Ne8UVmAQb*h}RO{JJ8Frw%Mc*SY+Ndru7yrgcj}W6w zRKXrhKO^Y3w>kb(K~^9(hh%B`wW>%gUvu#%?OXet(eit$lN=1ex}p>okmi0GhvSMv@(M!&#VqEK=RTfE#91=06AczI$IKye}{p+=E%RFAXP$l7;Ee}OaJ8}Wd` zrER7y`jRZUps)~1CKT@-4^wsu+7qi23j)OCGyUsZt(Hh?5>p0HZ_@j+n(q57*1+_+zEw1gaO^D%KmqNfI8vk<)!fl zAEJ1uI2L--cxn=AEH2uknUfX!RP90;gDgrWSyv9E?oM`@J)C&XUks6zeZ%OPL<_!i zgfYFA5*9sjKTkfK-n`BkHP>+DxX|)gUtqm9X>~$Z+AWix+{gWp$@J;|`Iz0;6Sjn9 z-6G>c!<#AnpBK!hWT3)DjjBY-g2hW&q6`mR_kZour&i>JML4ANAUm z;b)ZXX!k%|&#bF+f$TE)_#l#U2fQL70(Y)*K0-phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo`rPgs}(>s+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMvmbx}Ze zW;+X5JPXJM0Z&Orh8N5T8qHD$pwt9*1{R=710!Pt#sv^lK{m23fS5D|$OZu>pt($7 zl|hykKo(S&p@9KNHn)Ap-G+UuW&@dKo-U3d7XHZ+tUNsdQj9lx|2s$CICy@uM%9c3 zCN~ov@JgI{U@vfpp{G~JO<+N`lILd+CLSJ!6NmZ!C>gNM0Ga0L>gTe~DWM4fM7d3Z delta 277 zcmV+w0qXvT1GoZ^7aTAM1^@s67+?BV00006VoOIv0KWjg0KfhSGm4Qu7=H(JNliru z<^l>6DhvN@>9PO-0L4i}K~zY`?UbsD;EkA_&FaIqc@Mqe9Ao%zsZBI~Yib7FlioJjXfZX!io+bvw z9-!$TFkQ_M#SwC>p9F*_F>cf#sV2~&9zctOI; z^8kR%6y-&`^MD2zoq?Mx4`^y}MeTX;d9m_b@I0U>6oXQ`^FS0pGk=2z?bo&E!IyBs b`~w&6y|;t(+H8%-00000NkvXXu0mjfBc^$) diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta deleted file mode 100644 index cfcef74876f..00000000000 --- a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_active_emissive.png.mcmeta +++ /dev/null @@ -1,10 +0,0 @@ -{ - "animation": { - "frametime": 16, - "frames": [ - 0, - 1, - 2 - ] - } -} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_emissive.png index 0486a073200cbdd7ea5c25aafd12fc79ca526154..e1ea0b2d79288098a1c55332bd53e8b7c32d2217 100644 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>QL70(Y)*K0-phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo`rPgs}(>s+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMvmbx}Ze zW;+X5JPXJM0Z&Orh8N5T8qHD$pwt9*1{R=710!Pt#sv^lK{m23fS5D|$OZu>pt($7 zl|hykKo(S&p@9KNHn)Ap-G+UuW&@eRo-U3d7XHZ+tcw#wdYB9n5`e)Yz`(fNr6w6D O&EVI4TtE=n(-o1POBa1PiD>}r?^#1`P Z0E#Xv5m5fX=js3e002ovPDHLkV1k?lNy7jD diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused.png index 901e9e1e126f760029b545ab5778d0651e726e6f..bca74d28f46f1ad6a5f9c9045f361cfe184759c0 100644 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}@0G|-o1zV2y&)Jb&)Kk_tzpZzJQ%F1myRnI@r;4%Z{~JJK3>f|cl`^b+ z_>2Qc@s&q9iy!t)x7$D3u`~ zF*C13&(AeP!Bo#s&q6x$)e4}RZK)BSX`Y^13?SoK8Kf9l85n^qFCdnNvOzx6U}Of1 zGXdF#j7(skMgiHG?JQvNEFc>MJS7_0NEhG1T>cktTM>b0?2~uGBhv%$>z52xZALA)odU$%G1R$L?bx&tRvq61rC?M zlnnu2|20KWjg{s=RQ00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-{r3KK68e|Y4L0005VNkl@@6$Wy+;gN0|GLyOGr6h*vv+++Sof$dE=yinxjlX#WqdCCt$IzQWdX?L%#OkJ-8PjdVJNVHk9FJ9KtCwA<}JN3g66 vhG9$r!X|KlVQ940i8J31sMqU?|Dt{Y@?NQTvS1ba00000NkvXXu0mjf=!W&u diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/generator/large_tungstensteel_boiler/overlay_front_paused_emissive.png index f18b9aa38996663d172c29d334a3e325a2dc0d2f..9335e01fc4a8a9669e3e63547d3b6cfcd5827c0d 100644 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>QL70(Y)*K0-phSslL`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo`rPgs}(>s+fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMvmbx}Ze zW;+X5JPXJM0Z&Orh8N5T8qHD$pwt9*1{R=710!Pt#sv^lK{m23fS5D|$OZu>pt($7 zl|hykKo(S&p@9KNHn)Ap-G+UuW&@dao-U3d7XHZ+tUNsdQj9lx|2s$CICy@uM%9c3 zCN~ov@JcLs@Sm6M%8VcUPY-9PI9TvF%#vsnaO-C>IdFi1VQ(St9pN~@7YOg;ueZPiWs7#T`Cl(fJ6e6iGBlCm_S_+1ELc%Lnjtg z7AmHy5)*s^SYbd#iIo8%3IrBFA(hg^cK-M>7>9-ki4E@Z&U-rN+;gM{|9VscN~IEx zlLcTne;i_(CIH=T56|;Be+FzT=K2A=*om>37&uOrdacGnJ^&yD-oDSUbb1Nbb+Ijv z$M=!rM`7jauf<~n5n&-8u(^)R=V7-At9L@Bl*02oE?tPpCtML+}(go zD#lX=T5EPcXIZ(@9mjjuv?$Mk>$;4L4A?nRe~v@=?G5lc)+OX9ig>owmDwW&HrJ8E zb48wS2Lj-E9)1wg{@zlbnjh6*Fr4mEtyWmB7I^aTm|Q$pKOn4 From 79a01fe4792c2fa27497a897f5815070e300c43e Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:59:54 -0600 Subject: [PATCH 199/270] Fix transformer recipes + move some to assembler only (#3452) --- .../data/materials/ElementMaterials.java | 4 +- .../data/materials/HigherDegreeMaterials.java | 3 +- .../recipe/misc/MetaTileEntityLoader.java | 25 ++----- .../MetaTileEntityMachineRecipeLoader.java | 67 +++++++++++++++++++ 4 files changed, 76 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index 0eac38be8a3..d006d0cd977 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -257,8 +257,8 @@ public static void register() { .ingot() .liquid(new FluidBuilder().temperature(1099)) .color(0x20FFFF).secondaryColor(0x429393).iconSet(METALLIC) - .appendFlags(STD_METAL, GENERATE_LONG_ROD, GENERATE_FINE_WIRE, GENERATE_SPRING, GENERATE_FOIL, - GENERATE_FRAME) + .appendFlags(STD_METAL, GENERATE_LONG_ROD, GENERATE_FINE_WIRE, GENERATE_SPRING, GENERATE_SPRING_SMALL, + GENERATE_FOIL, GENERATE_FRAME) .element(GTElements.Eu) .cableProperties(V[UHV], 2, 32) .fluidPipeProperties(7750, 300, true) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index b7b7b80dabe..ae1b67b4aaa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -102,7 +102,8 @@ public static void register() { .ingot(0) .liquid(new FluidBuilder().temperature(1400)) .color(0xc55252).secondaryColor(0xC80000).iconSet(METALLIC) - .appendFlags(STD_METAL, GENERATE_FINE_WIRE, GENERATE_BOLT_SCREW, DISABLE_DECOMPOSITION) + .appendFlags(STD_METAL, GENERATE_FINE_WIRE, GENERATE_BOLT_SCREW, GENERATE_SPRING_SMALL, + DISABLE_DECOMPOSITION) .components(Copper, 1, Redstone, 4) .cableProperties(GTValues.V[0], 1, 0) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index ee9fc86faf6..e4c3284a629 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -863,26 +863,11 @@ public static void init(Consumer provider) { registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.LuV, GTMachines.DIODE.length), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.ADVANCED_SMD_DIODE, 'P', PLATE, 'C', CABLE_QUAD); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.ULV, GTValues.MV), " CC", - "TH ", " CC", 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.MV, GTValues.UHV), "WCC", - "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_2A, GTValues.ULV, GTValues.MV), " CC", "TH ", " CC", - 'C', CABLE_DOUBLE, 'T', CABLE_TIER_UP_DOUBLE, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_2A, GTValues.MV, GTValues.UHV), "WCC", "TH ", "WCC", - 'W', POWER_COMPONENT, 'C', CABLE_DOUBLE, 'T', CABLE_TIER_UP_DOUBLE, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_4A, GTValues.ULV, GTValues.MV), " CC", "TH ", " CC", - 'C', CABLE_QUAD, 'T', CABLE_TIER_UP_QUAD, 'H', HULL); - registerMachineRecipe(provider, - ArrayUtils.subarray(GTMachines.HI_AMP_TRANSFORMER_4A, GTValues.MV, GTValues.UHV), "WCC", "TH ", "WCC", - 'W', POWER_COMPONENT, 'C', CABLE_QUAD, 'T', CABLE_TIER_UP_QUAD, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.POWER_TRANSFORMER, GTValues.ULV, GTValues.MV), - " CC", "TH ", " CC", 'C', CABLE_HEX, 'T', CABLE_TIER_UP_HEX, 'H', HULL); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.POWER_TRANSFORMER, GTValues.MV, GTValues.UHV), - "WCC", "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE_HEX, 'T', CABLE_TIER_UP_HEX, 'H', HULL); + // Decomposition info handled by the assembler recipe + registerMachineRecipe(provider, false, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.ULV, GTValues.MV), + " CC", "TH ", " CC", 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); + registerMachineRecipe(provider, false, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.MV, GTValues.IV), + "WCC", "TH ", "WCC", 'W', POWER_COMPONENT, 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); registerMachineRecipe(provider, GTMachines.BATTERY_BUFFER_4, "WTW", "WMW", 'M', HULL, 'W', WIRE_QUAD, 'T', Tags.Items.CHESTS_WOODEN); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java index e41015622cb..c364c53af52 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.world.item.ItemStack; @@ -311,6 +312,72 @@ public static void init(Consumer provider) { .EUt(VA[UV])) .duration(1000).EUt(VA[UHV]).save(provider); + // Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var transformer = TRANSFORMER[tier]; + if (transformer == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES.recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_transformer") + .inputItems(GTCraftingComponents.HULL.get(tier)) + .inputItems(GTCraftingComponents.CABLE_TIER_UP.get(tier)) + .inputItems(GTCraftingComponents.CABLE.get(tier), 4) + .outputItems(transformer) + // Lower-tier recipes faster because they have crafting table equivalents + .duration(tier < IV ? 20 : 100) + .EUt(tier < GTValues.IV ? VA[LV] : VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + + // Hi-Amp (2x) Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var hiAmp = HI_AMP_TRANSFORMER_2A[tier]; + var lowAmp = TRANSFORMER[tier]; + if (hiAmp == null || lowAmp == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES + .recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_hi_amp_2a_transformer") + .inputItems(lowAmp) + .inputItems(GTCraftingComponents.CABLE_TIER_UP_DOUBLE.get(tier)) + .inputItems(GTCraftingComponents.CABLE_DOUBLE.get(tier), 4) + .outputItems(hiAmp) + .duration(100).EUt(VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + + // Hi-Amp (4x) Transformers + for (int tier = 0; tier < TRANSFORMER.length; tier++) { + var hiAmp = HI_AMP_TRANSFORMER_4A[tier]; + var lowAmp = TRANSFORMER[tier]; + if (hiAmp == null || lowAmp == null) continue; + + GTRecipeBuilder b = ASSEMBLER_RECIPES + .recipeBuilder(VN[tier].toLowerCase(Locale.ROOT) + "_hi_amp_4a_transformer") + .inputItems(lowAmp) + .inputItems(GTCraftingComponents.CABLE_TIER_UP_QUAD.get(tier)) + .inputItems(GTCraftingComponents.CABLE_QUAD.get(tier), 4) + .outputItems(hiAmp) + .duration(100).EUt(VA[tier]) + .addMaterialInfo(true); + + if (tier >= MV) { + b.inputItems(GTCraftingComponents.POWER_COMPONENT.get(tier), 2); + } + + b.save(provider); + } + // Power Transformers for (int tier = 0; tier < POWER_TRANSFORMER.length; tier++) { var hatch = POWER_TRANSFORMER[tier]; From ccb98ffc499a0b2490a3a6aadd82d7ed39b5d4b2 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:01:05 -0600 Subject: [PATCH 200/270] Fixes for #3460 (#3507) --- src/generated/resources/assets/gtceu/lang/en_ud.json | 3 +-- src/generated/resources/assets/gtceu/lang/en_us.json | 3 +-- .../java/com/gregtechceu/gtceu/api/machine/MetaMachine.java | 2 ++ .../gtceu/api/machine/feature/IRecipeLogicMachine.java | 2 +- .../gregtechceu/gtceu/api/machine/trait/RecipeLogic.java | 6 ++++-- .../java/com/gregtechceu/gtceu/data/lang/LangHandler.java | 2 +- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 63c0c9b6df8..f3610526b68 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -91,8 +91,8 @@ "behaviour.setting.output.direction.tooltip": "%s :uoıʇɔǝɹıp ʇndʇno %s", "behaviour.soft_hammer": "sǝuıɥɔɐW sǝʇɐʌıʇɔɐǝᗡ puɐ sǝʇɐʌıʇɔⱯ", "behaviour.soft_hammer.disabled": "pǝןqɐsıᗡ buıʞɹoM", + "behaviour.soft_hammer.disabled_cycle": "ǝןɔʎɔ ʇuǝɹɹnɔ ɹǝʇɟɐ pǝןqɐsıᗡ buıʞɹoM", "behaviour.soft_hammer.enabled": "pǝןqɐuƎ buıʞɹoM", - "behaviour.soft_hammer.idle_after_cycle": "ǝןɔʎɔ ʇuǝɹɹnɔ ɹǝʇɟɐ ǝuıɥɔɐɯ ǝsnɐԀ", "behaviour.wrench": "ʞɔıןɔʇɥbıᴚ uo sʞɔoןᗺ sǝʇɐʇoᴚ", "block.filter_casing.tooltip": "ʇuǝɯuoɹıʌuǝ ㄥ§ǝǝɹℲ-ǝןɔıʇɹɐԀɐ§ ɐ sǝʇɐǝɹƆ", "block.gtceu.acid_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH pıɔⱯ", @@ -1111,7 +1111,6 @@ "block.gtceu.substation_capacitor.tooltip_filled": "∩Ǝ %dɟ§ :ʎʇıɔɐdɐƆ ʎbɹǝuƎɔ§", "block.gtceu.superconducting_coil": "ʞɔoןᗺ ןıoƆ buıʇɔnpuoɔɹǝdnS", "block.gtceu.tempered_glass": "ssɐן⅁ pǝɹǝdɯǝ⟘", - "block.gtceu.test_render": "ɹǝpuǝᴚ ʇsǝ⟘", "block.gtceu.the_end_marker": "puƎ ǝɥ⟘", "block.gtceu.the_nether_marker": "ɹǝɥʇǝN ǝɥ⟘", "block.gtceu.titanium_crate": "ǝʇɐɹƆ ɯnıuɐʇı⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index b4cee85ad3d..6c60a8bc53b 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -91,8 +91,8 @@ "behaviour.setting.output.direction.tooltip": "%s output direction: %s", "behaviour.soft_hammer": "Activates and Deactivates Machines", "behaviour.soft_hammer.disabled": "Working Disabled", + "behaviour.soft_hammer.disabled_cycle": "Working Disabled after current cycle", "behaviour.soft_hammer.enabled": "Working Enabled", - "behaviour.soft_hammer.idle_after_cycle": "Pause machine after current cycle", "behaviour.wrench": "Rotates Blocks on Rightclick", "block.filter_casing.tooltip": "Creates a §aParticle-Free§7 environment", "block.gtceu.acid_hazard_sign_block": "Acid Hazard Sign Block", @@ -1111,7 +1111,6 @@ "block.gtceu.substation_capacitor.tooltip_filled": "§cEnergy Capacity: §f%d EU", "block.gtceu.superconducting_coil": "Superconducting Coil Block", "block.gtceu.tempered_glass": "Tempered Glass", - "block.gtceu.test_render": "Test Render", "block.gtceu.the_end_marker": "The End", "block.gtceu.the_nether_marker": "The Nether", "block.gtceu.titanium_crate": "Titanium Crate", diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index 9c43d8c6dbf..b8e43be3b12 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -425,6 +425,8 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h if (controllable == null) return InteractionResult.PASS; if (!isRemote()) { controllable.setWorkingEnabled(!controllable.isWorkingEnabled()); + playerIn.sendSystemMessage(Component.translatable(controllable.isWorkingEnabled() ? + "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled_cycle")); } return InteractionResult.sidedSuccess(playerIn.level().isClientSide); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index a747474c32a..83a53f754ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -131,7 +131,7 @@ default boolean shouldWorkingPlaySound() { ////////////////////////////////////// @Override default boolean isWorkingEnabled() { - return getRecipeLogic().isWorkingEnabled() && !getRecipeLogic().isSuspendAfterFinish(); + return getRecipeLogic().isWorkingEnabled(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 1b8bb482b4e..a30a656ec3d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -360,6 +360,9 @@ public void setStatus(Status status) { if (this.status == Status.WORKING) { this.totalContinuousRunningTime = 0; } + if (status == Status.SUSPEND && suspendAfterFinish) { + suspendAfterFinish = false; + } machine.notifyStatusChanged(this.status, status); this.status = status; setRenderState(getRenderState().setValue(STATUS_PROPERTY, status)); @@ -401,7 +404,7 @@ public boolean isSuspend() { } public boolean isWorkingEnabled() { - return !isSuspend(); + return !isSuspend() && !isSuspendAfterFinish(); } @Override @@ -450,7 +453,6 @@ public void onRecipeFinish() { } else { if (suspendAfterFinish) { setStatus(Status.SUSPEND); - suspendAfterFinish = false; } else { setStatus(Status.IDLE); waitingReason = recipeCheck.reason(); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 373f83a2412..84ba9e9b271 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -753,7 +753,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("behaviour.soft_hammer", "Activates and Deactivates Machines"); provider.add("behaviour.soft_hammer.enabled", "Working Enabled"); provider.add("behaviour.soft_hammer.disabled", "Working Disabled"); - provider.add("behaviour.soft_hammer.idle_after_cycle", "Pause machine after current cycle"); + provider.add("behaviour.soft_hammer.disabled_cycle", "Working Disabled after current cycle"); provider.add("behaviour.lighter.tooltip.description", "Can light things on fire"); provider.add("behaviour.lighter.tooltip.usage", "Shift-right click to open/close"); provider.add("behaviour.lighter.fluid.tooltip", "Can light things on fire with Butane or Propane"); From 72d4fbc61255124738898ed960e5824d4ba23fb8 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:16:28 -0600 Subject: [PATCH 201/270] Machine Powerfail Pausing (#3461) --- .../gtceu/api/machine/trait/RecipeLogic.java | 23 +++++++++---- .../gtceu/api/recipe/ActionResult.java | 16 +++++---- .../gtceu/api/recipe/RecipeHelper.java | 8 ++--- .../gtceu/api/recipe/RecipeRunner.java | 34 +++++++------------ .../electric/DistillationTowerMachine.java | 9 +++-- .../electric/research/DataBankMachine.java | 5 +-- .../common/machine/trait/CleanroomLogic.java | 7 +--- .../gtceu/config/ConfigHolder.java | 5 --- 8 files changed, 49 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index a30a656ec3d..ee3e8886853 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -14,7 +14,6 @@ import com.gregtechceu.gtceu.api.recipe.RecipeHelper; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.sound.AutoReleasedSound; -import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; @@ -114,6 +113,8 @@ public enum Status implements StringRepresentable { @Persisted @Getter protected long totalContinuousRunningTime; + protected int runAttempt = 0; + protected int runDelay = 0; @Persisted @Setter @Getter @@ -189,7 +190,11 @@ public void serverTick() { if (!isSuspend()) { if (!isIdle() && lastRecipe != null) { if (progress < duration) { - handleRecipeWorking(); + if (runDelay > 0) { + runDelay--; + } else { + handleRecipeWorking(); + } } if (progress >= duration) { onRecipeFinish(); @@ -263,6 +268,12 @@ public void handleRecipeWorking() { totalContinuousRunningTime++; } else { setWaiting(handleTick.reason()); + runAttempt++; + if (runAttempt > 5) { + runAttempt = 0; + setStatus(Status.SUSPEND); + } + runDelay = runAttempt * 10; } } else { setWaiting(conditionResult.reason()); @@ -274,11 +285,7 @@ public void handleRecipeWorking() { protected void regressRecipe() { if (progress > 0 && machine.regressWhenWaiting()) { - if (ConfigHolder.INSTANCE.machines.recipeProgressLowEnergy) { - this.progress = 1; - } else { - this.progress = Math.max(1, progress - 2); - } + this.progress = 1; } } @@ -432,6 +439,8 @@ public boolean isActive() { public void onRecipeFinish() { machine.afterWorking(); if (lastRecipe != null) { + runAttempt = 0; + runDelay = 0; consecutiveRecipes++; handleRecipeIO(lastRecipe, IO.OUT); if (machine.alwaysTryModifyRecipe()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java index 8d4f795f70f..84e6ed42afa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.recipe; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; + import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; @@ -8,17 +10,17 @@ * @param isSuccess is action success * @param reason if fail, fail reason */ -public record ActionResult(boolean isSuccess, @Nullable Component reason) { +public record ActionResult(boolean isSuccess, @Nullable Component reason, @Nullable RecipeCapability capability) { - public final static ActionResult SUCCESS = new ActionResult(true, null); - public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null); + public final static ActionResult SUCCESS = new ActionResult(true, null, null); + public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null, null); public final static ActionResult PASS_NO_CONTENTS = new ActionResult(true, - Component.translatable("gtceu.recipe_logic.no_contents")); + Component.translatable("gtceu.recipe_logic.no_contents"), null); public final static ActionResult FAIL_NO_CAPABILITIES = new ActionResult(false, - Component.translatable("gtceu.recipe_logic.no_capabilities")); + Component.translatable("gtceu.recipe_logic.no_capabilities"), null); - public static ActionResult fail(@Nullable Component component) { - return new ActionResult(false, component); + public static ActionResult fail(@Nullable Component component, @Nullable RecipeCapability capability) { + return new ActionResult(false, component, capability); } public Component reason() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index acbd8ba23be..07491a2489d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -220,7 +220,7 @@ public static ActionResult handleRecipe(IRecipeCapabilityHolder holder, GTRecipe RecipeRunner runner = new RecipeRunner(recipe, io, isTick, holder, chanceCaches, simulated); var result = runner.handle(contents); - if (result.isSuccess() || result.capability() == null) return result.result(); + if (result.isSuccess() || result.capability() == null) return result; if (!simulated) { GTCEu.LOGGER.warn("IO {} Error while handling recipe {} outputs for {}", @@ -228,7 +228,7 @@ public static ActionResult handleRecipe(IRecipeCapabilityHolder holder, GTRecipe } String key = "gtceu.recipe_logic.insufficient_" + (io == IO.IN ? "in" : "out"); return ActionResult.fail(Component.translatable(key) - .append(": ").append(result.capability().getName())); + .append(": ").append(result.capability().getName()), result.capability()); } public static ActionResult matchContents(IRecipeCapabilityHolder holder, GTRecipe recipe) { @@ -254,7 +254,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } else if (!condition.check(recipe, recipeLogic)) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.condition_fails") .append(": ") - .append(condition.getTooltips())); + .append(condition.getTooltips()), null); } } @@ -269,7 +269,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } if (!passed) { - return ActionResult.fail(component); + return ActionResult.fail(component, null); } } return ActionResult.SUCCESS; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 80faa13bbd7..e1e71c97a99 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -13,7 +13,6 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -23,16 +22,7 @@ import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; -class RecipeRunner { - - record RecipeHandlingResult(ActionResult result, @Nullable RecipeCapability capability) { - - public static RecipeHandlingResult SUCCESS = new RecipeHandlingResult(ActionResult.SUCCESS, null); - - public boolean isSuccess() { - return result.isSuccess(); - } - } +public class RecipeRunner { private final GTRecipe recipe; private final IO io; @@ -57,11 +47,11 @@ public RecipeRunner(GTRecipe recipe, IO io, boolean isTick, } @NotNull - public RecipeHandlingResult handle(Map, List> entries) { + public ActionResult handle(Map, List> entries) { fillContentMatchList(entries); if (searchRecipeContents.isEmpty()) { - return new RecipeHandlingResult(ActionResult.PASS_NO_CONTENTS, null); + return ActionResult.PASS_NO_CONTENTS; } return this.handleContents(); @@ -114,15 +104,15 @@ private void fillContentMatchList(Map, List> entrie } } - private RecipeHandlingResult handleContents() { + private ActionResult handleContents() { var result = handleContentsInternal(io); return result; } - private RecipeHandlingResult handleContentsInternal(IO capIO) { - if (recipeContents.isEmpty()) return RecipeHandlingResult.SUCCESS; + private ActionResult handleContentsInternal(IO capIO) { + if (recipeContents.isEmpty()) return ActionResult.SUCCESS; if (!capabilityProxies.containsKey(capIO)) { - return new RecipeHandlingResult(ActionResult.FAIL_NO_CAPABILITIES, null); + return ActionResult.FAIL_NO_CAPABILITIES; } List handlers = capabilityProxies.getOrDefault(capIO, Collections.emptyList()); @@ -144,7 +134,7 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { handler.handleRecipe(io, recipe, recipeContents, false); } recipeContents.clear(); - return RecipeHandlingResult.SUCCESS; + return ActionResult.SUCCESS; } } @@ -163,24 +153,24 @@ private RecipeHandlingResult handleContentsInternal(IO capIO) { } } if (!found) continue; - if (simulated) return RecipeHandlingResult.SUCCESS; + if (simulated) return ActionResult.SUCCESS; // Start actually removing items, keep track of the remaining items for this RecipeHandlerGroup copiedRecipeContents = recipeContents; for (RecipeHandlerList handler : handlerListEntry.getValue()) { copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, false); if (copiedRecipeContents.isEmpty()) { recipeContents.clear(); - return RecipeHandlingResult.SUCCESS; + return ActionResult.SUCCESS; } } } for (var entry : recipeContents.entrySet()) { if (entry.getValue() != null && !entry.getValue().isEmpty()) { - return new RecipeHandlingResult(ActionResult.FAIL_NO_REASON, entry.getKey()); + return ActionResult.fail(null, entry.getKey()); } } - return new RecipeHandlingResult(ActionResult.FAIL_NO_REASON, null); + return ActionResult.FAIL_NO_REASON; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index d487b752415..2e9fed6be14 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -219,10 +219,9 @@ private ActionResult matchDTRecipe(GTRecipe recipe) { } if (!applyFluidOutputs(recipe, FluidAction.SIMULATE)) { - return ActionResult - .fail(Component.translatable("gtceu.recipe_logic.insufficient_out") - .append(": ") - .append(FluidRecipeCapability.CAP.getName())); + return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") + .append(": ") + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP); } return ActionResult.SUCCESS; @@ -269,7 +268,7 @@ protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") .append(": ") - .append(FluidRecipeCapability.CAP.getName())); + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP); } private boolean applyFluidOutputs(GTRecipe recipe, FluidAction action) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java index 6ce8c20ee13..f8f1c104b55 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/DataBankMachine.java @@ -163,8 +163,9 @@ public void tick() { if (consumed == energyToConsume) { getRecipeLogic().setStatus(RecipeLogic.Status.WORKING); } else { - getRecipeLogic().setWaiting(Component.translatable("gtceu.recipe_logic.insufficient_in") - .append(": ").append(EURecipeCapability.CAP.getName())); + getRecipeLogic() + .setWaiting(Component.translatable("gtceu.recipe_logic.insufficient_in") + .append(": ").append(EURecipeCapability.CAP.getName())); } } } else { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java index 9f17bb636ac..dd83079f14a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CleanroomLogic.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.machine.multiblock.electric.CleanroomMachine; -import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -70,11 +69,7 @@ public void serverTick() { // drain the energy if (!consumeEnergy()) { if (progress > 0 && machine.regressWhenWaiting()) { - if (ConfigHolder.INSTANCE.machines.recipeProgressLowEnergy) { - this.progress = 1; - } else { - this.progress = Math.max(1, progress - 2); - } + this.progress = 1; } // the cleanroom does not have enough energy, so it looses cleanliness diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index ccabcdd1abe..3fa2d589ed8 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -407,11 +407,6 @@ public static class OreVeinConfigs { public static class MachineConfigs { - @Configurable - @Configurable.Comment({ "Whether insufficient energy supply should reset Machine recipe progress to zero.", - "If true, progress will reset.", "If false, progress will decrease to zero with 2x speed", - "Default: true" }) - public boolean recipeProgressLowEnergy = true; @Configurable @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", From 81c7192300b48b7653699ac8c0ea287ec1109b19 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:47:58 -0600 Subject: [PATCH 202/270] Adjust default configs (#3508) --- .../gtceu/config/ConfigHolder.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 3fa2d589ed8..a15ab3da9ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -57,8 +57,8 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Change the recipe of Rods in the Lathe to 1 Rod and 2 Small Piles of Dust, instead of 2 Rods.", - "Default: false" }) - public boolean harderRods = false; // default false + "Default: true" }) + public boolean harderRods = true; // default true @Configurable @Configurable.Comment({ "Whether to make crafting recipes for Bricks, Firebricks, Nether Bricks, and Coke Bricks harder.", @@ -94,8 +94,8 @@ public static class RecipeConfigs { public boolean nerfPaperCrafting = true; // default true @Configurable @Configurable.Comment({ "Recipes for items like Iron Doors, Trapdoors, Anvil" + - " require Iron Plates, Rods, and more.", "Default: false" }) - public boolean hardAdvancedIronRecipes = false; // default false + " require Iron Plates, Rods, and more.", "Default: true" }) + public boolean hardAdvancedIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make coloring blocks like Concrete or Glass harder.", "Default: false" }) public boolean hardDyeRecipes = false; // default false @@ -127,8 +127,8 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Whether tools should have enchants or not. Like the flint sword getting fire aspect.", - "Default: true" }) - public boolean enchantedTools = true; + "Default: false" }) + public boolean enchantedTools = false; } public static class CompatibilityConfigs { @@ -204,9 +204,9 @@ public static class AE2CompatConfig { public int updateIntervals = 40; @Configurable - @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 1.0AE/t" }) - @Configurable.DecimalRange(min = 0.0, max = 10.0) - public double meHatchEnergyUsage = 1.0; + @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 4.0AE/t" }) + @Configurable.DecimalRange(min = 0.0, max = Integer.MAX_VALUE) + public double meHatchEnergyUsage = 4.0; } public static class MinimapCompatConfig { @@ -219,12 +219,12 @@ public static class MinimapCompatConfig { @Configurable @Configurable.Comment({ "The radius, in blocks, that picking up a surface rock will search for veins in.", "-1 to disable.", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int surfaceRockProspectRange = 24; @Configurable @Configurable.Comment({ "The radius, in blocks, that clicking an ore block will search for veins in.", "-1 to disable", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int oreBlockProspectRange = 24; @Configurable @@ -410,8 +410,8 @@ public static class MachineConfigs { @Configurable @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", - "Default: false" }) - public boolean requireGTToolsForBlocks = false; + "Default: true" }) + public boolean requireGTToolsForBlocks = true; @Configurable @Configurable.Comment({ "Whether machines explode in rainy weather or when placed next to certain terrain, such as fire or lava", @@ -536,8 +536,8 @@ public static class MachineConfigs { public boolean orderedAssemblyLineItems = true; @Configurable @Configurable.Comment({ "Whether the Assembly Line should require the fluid inputs to be in order.", - "(Requires Ordered Assembly Line Item Inputs to be enabled.)", "Default: false" }) - public boolean orderedAssemblyLineFluids = false; + "(Requires Ordered Assembly Line Item Inputs to be enabled.)", "Default: true" }) + public boolean orderedAssemblyLineFluids = true; @Configurable @Configurable.Comment({ From 6094b0801251368293498a14a3a612e1f10a372f Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 20 Jul 2025 20:11:09 -0600 Subject: [PATCH 203/270] Yet another machine pausing issue (#3509) dn --- .../com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index ee3e8886853..a41968eec76 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -416,9 +416,8 @@ public boolean isWorkingEnabled() { @Override public void setWorkingEnabled(boolean isWorkingAllowed) { - if (!isWorkingAllowed) { - setSuspendAfterFinish(true); - } else { + setSuspendAfterFinish(!isWorkingAllowed); + if (isWorkingAllowed) { if (lastRecipe != null && duration > 0) { setStatus(Status.WORKING); } else { From af21d7bd8614391bfd540f4c40d7c5f4e49a9857 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Mon, 21 Jul 2025 00:04:00 -0400 Subject: [PATCH 204/270] Lombok Updates Attempt 1 (#3510) --- build.gradle | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 8b5dd0b1db2..ac3b867abc9 100644 --- a/build.gradle +++ b/build.gradle @@ -94,5 +94,5 @@ tasks.withType(JavaCompile).configureEach { } lombok { - version = "1.18.36" + version = "1.18.38" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9c88b1e463d..e676f5213aa 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ parchment = "2023.09.03" # https://parchmentmc.org/docs/getting-started shadow = "8.3.5" spotless = "7.0.2" modDevGradle = "2.0.86" -lombok = "8.11" +lombok = "8.14" jetbrains-annotations = "26.0.1" mixin = "0.8.7" From ba45239d1ce7478e5ef7d2eb90a03076d7a78b35 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 04:23:07 -0600 Subject: [PATCH 205/270] Fix display issues with custom recipe categories (#3520) --- src/generated/resources/assets/gtceu/lang/en_ud.json | 3 +-- src/generated/resources/assets/gtceu/lang/en_us.json | 3 +-- .../gtceu/common/data/GTRecipeCategories.java | 12 ++++++------ .../com/gregtechceu/gtceu/data/lang/ItemLang.java | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index f3610526b68..6b4dd777465 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1832,7 +1832,6 @@ "config.gtceu.option.oreVeins": "suıǝΛǝɹo", "config.gtceu.option.ownerOPBypass": "ssɐdʎᗺԀOɹǝuʍo", "config.gtceu.option.prospectorEnergyUseMultiplier": "ɹǝıןdıʇןnWǝs∩ʎbɹǝuƎɹoʇɔǝdsoɹd", - "config.gtceu.option.recipeProgressLowEnergy": "ʎbɹǝuƎʍoꞀssǝɹboɹԀǝdıɔǝɹ", "config.gtceu.option.recipes": "sǝdıɔǝɹ", "config.gtceu.option.removeSmeltingForEBFMetals": "sןɐʇǝWℲᗺƎɹoℲbuıʇןǝɯSǝʌoɯǝɹ", "config.gtceu.option.removeVanillaBlockRecipes": "sǝdıɔǝᴚʞɔoןᗺɐןןıuɐΛǝʌoɯǝɹ", @@ -3403,7 +3402,7 @@ "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", "gtceu.pyrolyse_oven": "uǝʌO ǝsʎןoɹʎԀ", - "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɐɯsɐןԀ", + "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɔɹⱯ", "gtceu.recipe.category.chem_dyes": "buıǝʎᗡ ןɐɔıɯǝɥƆ", "gtceu.recipe.category.extractor_recycling": "buıʇןǝɯǝᴚ dɐɹɔS", "gtceu.recipe.category.ingot_molding": "buıpןoW ןɐʇǝW", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 6c60a8bc53b..87004905ca8 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1832,7 +1832,6 @@ "config.gtceu.option.oreVeins": "oreVeins", "config.gtceu.option.ownerOPBypass": "ownerOPBypass", "config.gtceu.option.prospectorEnergyUseMultiplier": "prospectorEnergyUseMultiplier", - "config.gtceu.option.recipeProgressLowEnergy": "recipeProgressLowEnergy", "config.gtceu.option.recipes": "recipes", "config.gtceu.option.removeSmeltingForEBFMetals": "removeSmeltingForEBFMetals", "config.gtceu.option.removeVanillaBlockRecipes": "removeVanillaBlockRecipes", @@ -3403,7 +3402,7 @@ "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", "gtceu.pyrolyse_oven": "Pyrolyse Oven", - "gtceu.recipe.category.arc_furnace_recycling": "Plasma Scrapping", + "gtceu.recipe.category.arc_furnace_recycling": "Arc Scrapping", "gtceu.recipe.category.chem_dyes": "Chemical Dyeing", "gtceu.recipe.category.extractor_recycling": "Scrap Remelting", "gtceu.recipe.category.ingot_molding": "Metal Molding", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java index fb8d08212e7..0509eb55745 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java @@ -14,6 +14,12 @@ public class GTRecipeCategories { + public static final GTRecipeCategory ORE_CRUSHING = register("ore_crushing", GTRecipeTypes.MACERATOR_RECIPES); + public static final GTRecipeCategory ORE_FORGING = register("ore_forging", GTRecipeTypes.FORGE_HAMMER_RECIPES); + public static final GTRecipeCategory ORE_BATHING = register("ore_bathing", GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory CHEM_DYES = register("chem_dyes", GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory INGOT_MOLDING = register("ingot_molding", GTRecipeTypes.ALLOY_SMELTER_RECIPES); + public static final GTRecipeCategory ARC_FURNACE_RECYCLING = register("arc_furnace_recycling", GTRecipeTypes.ARC_FURNACE_RECIPES) .setIcon(GuiTextures.ARC_FURNACE_RECYCLING_CATEGORY); @@ -26,12 +32,6 @@ public class GTRecipeCategories { GTRecipeTypes.EXTRACTOR_RECIPES) .setIcon(GuiTextures.EXTRACTOR_RECYCLING_CATEGORY); - public static final GTRecipeCategory ORE_CRUSHING = register("ore_crushing", GTRecipeTypes.MACERATOR_RECIPES); - public static final GTRecipeCategory ORE_FORGING = register("ore_forging", GTRecipeTypes.FORGE_HAMMER_RECIPES); - public static final GTRecipeCategory ORE_BATHING = register("ore_bathing", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory CHEM_DYES = register("chem_dyes", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory INGOT_MOLDING = register("ingot_molding", GTRecipeTypes.ALLOY_SMELTER_RECIPES); - public static GTRecipeCategory register(String categoryName, @NotNull GTRecipeType recipeType) { GTRecipeCategory category = new GTRecipeCategory(categoryName, recipeType); GTRegistries.RECIPE_CATEGORIES.register(category.registryKey, category); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java index 9f7b12ba9f7..68f07557c54 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ItemLang.java @@ -25,7 +25,7 @@ private static void initGeneratedNames(RegistrateLangProvider provider) { } // Recipe Categories - provider.add("gtceu.recipe.category.arc_furnace_recycling", "Plasma Scrapping"); + provider.add("gtceu.recipe.category.arc_furnace_recycling", "Arc Scrapping"); provider.add("gtceu.recipe.category.macerator_recycling", "Part Grinding"); provider.add("gtceu.recipe.category.extractor_recycling", "Scrap Remelting"); provider.add("gtceu.recipe.category.ore_crushing", "Ore Grinding"); From 445a3ac2c80762c873000223e2c0efce70a7242d Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 04:28:43 -0600 Subject: [PATCH 206/270] Rename Yellow Limonite to Limonite (#3515) --- docs/content/Gameplay/Ore-Generation.md | 4 ++-- docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md | 2 +- src/generated/resources/assets/gtceu/lang/en_ud.json | 2 +- src/generated/resources/assets/gtceu/lang/en_us.json | 2 +- .../java/com/gregtechceu/gtceu/common/data/GTMaterials.java | 2 ++ src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java | 4 ++-- .../gtceu/common/data/materials/FirstDegreeMaterials.java | 3 ++- .../gtceu/common/data/materials/MaterialFlagAddition.java | 4 ++-- .../java/com/gregtechceu/gtceu/data/lang/LangHandler.java | 1 + 9 files changed, 14 insertions(+), 10 deletions(-) diff --git a/docs/content/Gameplay/Ore-Generation.md b/docs/content/Gameplay/Ore-Generation.md index 0b872dd46f6..de3824819a1 100644 --- a/docs/content/Gameplay/Ore-Generation.md +++ b/docs/content/Gameplay/Ore-Generation.md @@ -68,7 +68,7 @@ Please note that these are the default settings and may be different in certain ### Iron Vein - Goethite -- Yellow Limonite +- Limonite - Hematite - Malachite @@ -216,7 +216,7 @@ Please note that these are the default settings and may be different in certain ### Banded Iron Vein - Goethite -- Yellow Limonite +- Limonite - Hematite - Gold diff --git a/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md b/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md index b35cb5184cc..494f27d36f1 100644 --- a/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md +++ b/docs/content/Modpacks/Ore-Generation/Bedrock-Ore-Veins.md @@ -27,7 +27,7 @@ GTCEuServerEvents.bedrockOreVeins(event => { .size(3) // (1) .yield(10, 20) .material(GTMaterials.Goethite, 5) // (2) - .material(GTMaterials.YellowLimonite, 2) + .material(GTMaterials.Limonite, 2) .material(GTMaterials.Hematite, 2) .material(GTMaterials.Malachite, 1) .dimensions('minecraft:overworld') diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 6b4dd777465..dfd2ac22e78 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -5308,7 +5308,7 @@ "material.gtceu.xenon": "uouǝX", "material.gtceu.yellow_dye": "ǝʎᗡ ʍoןןǝʎ", "material.gtceu.yellow_garnet": "ʇǝuɹɐ⅁ ʍoןןǝʎ", - "material.gtceu.yellow_limonite": "ǝʇıuoɯıꞀ ʍoןןǝʎ", + "material.gtceu.yellow_limonite": "ǝʇıuoɯıꞀ", "material.gtceu.ytterbium": "ɯnıqɹǝʇʇʎ", "material.gtceu.yttrium": "ɯnıɹʇʇʎ", "material.gtceu.yttrium_barium_cuprate": "ǝʇɐɹdnƆ ɯnıɹɐᗺ ɯnıɹʇʇʎ", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 87004905ca8..8f38f50ea8b 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -5308,7 +5308,7 @@ "material.gtceu.xenon": "Xenon", "material.gtceu.yellow_dye": "Yellow Dye", "material.gtceu.yellow_garnet": "Yellow Garnet", - "material.gtceu.yellow_limonite": "Yellow Limonite", + "material.gtceu.yellow_limonite": "Limonite", "material.gtceu.ytterbium": "Ytterbium", "material.gtceu.yttrium": "Yttrium", "material.gtceu.yttrium_barium_cuprate": "Yttrium Barium Cuprate", diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index 45050a0ed08..39e7f85cf2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -538,6 +538,8 @@ private static void excludeAllGemsButNormal(Material material) { public static Material VanadiumGallium; public static Material WroughtIron; public static Material Wulfenite; + public static Material Limonite; + @Deprecated public static Material YellowLimonite; public static Material YttriumBariumCuprate; public static Material NetherQuartz; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java index d97de5f9964..704864206e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOres.java @@ -155,7 +155,7 @@ public class GTOres { .biomes(BiomeTags.IS_NETHER) .veinedVeinGenerator(generator -> generator .oreBlock(new VeinBlockDefinition(Goethite, 3)) - .oreBlock(new VeinBlockDefinition(YellowLimonite, 2)) + .oreBlock(new VeinBlockDefinition(Limonite, 2)) .oreBlock(new VeinBlockDefinition(Hematite, 2)) .rareBlock(new VeinBlockDefinition(Gold, 1)) .rareBlockChance(0.075f) @@ -462,7 +462,7 @@ public class GTOres { .biomes(BiomeTags.IS_OVERWORLD) .veinedVeinGenerator(generator -> generator .oreBlock(new VeinBlockDefinition(Goethite, 5)) - .oreBlock(new VeinBlockDefinition(YellowLimonite, 2)) + .oreBlock(new VeinBlockDefinition(Limonite, 2)) .oreBlock(new VeinBlockDefinition(Hematite, 2)) .oreBlock(new VeinBlockDefinition(Malachite, 1)) .veininessThreshold(0.01f) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index c074c9afe7d..5a0c9d06132 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -738,12 +738,13 @@ public static void register() { .components(Lead, 1, Molybdenum, 1, Oxygen, 4) .buildAndRegister(); - YellowLimonite = new Material.Builder(GTCEu.id("yellow_limonite")) + Limonite = new Material.Builder(GTCEu.id("yellow_limonite")) .dust().ore() .color(0xf5e315).secondaryColor(0xc06f33).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING, BLAST_FURNACE_CALCITE_DOUBLE) .components(Iron, 1, Hydrogen, 1, Oxygen, 2) .buildAndRegister(); + YellowLimonite = Limonite; YttriumBariumCuprate = new Material.Builder(GTCEu.id("yttrium_barium_cuprate")) .ingot() diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java index 9af9bdcaf91..52334c037c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/MaterialFlagAddition.java @@ -103,7 +103,7 @@ public static void register() { oreProp.setOreByProducts(Topaz); oreProp = Goethite.getProperty(PropertyKey.ORE); - oreProp.setOreByProducts(Malachite, YellowLimonite); + oreProp.setOreByProducts(Malachite, Limonite); oreProp.setSeparatedInto(Iron); oreProp.setDirectSmeltResult(Iron); @@ -256,7 +256,7 @@ public static void register() { oreProp = Uraninite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Uraninite, Thorium, Silver); - oreProp = YellowLimonite.getProperty(PropertyKey.ORE); + oreProp = Limonite.getProperty(PropertyKey.ORE); oreProp.setOreByProducts(Nickel, Goethite, CobaltOxide); oreProp.setSeparatedInto(Iron); oreProp.setWashedIn(SodiumPersulfate); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 84ba9e9b271..1725a9250f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -529,6 +529,7 @@ public static void init(RegistrateLangProvider provider) { replace(provider, GTMaterials.FullersEarth.getUnlocalizedName(), "Fuller's Earth"); replace(provider, GTMaterials.Cooperite.getUnlocalizedName(), "Sheldonite"); // greg's humor is now on // 1.19... + replace(provider, GTMaterials.Limonite.getUnlocalizedName(), "Limonite"); replace(provider, GTMaterials.HSSG.getUnlocalizedName(), "HSS-G"); replace(provider, GTMaterials.HSSE.getUnlocalizedName(), "HSS-E"); replace(provider, GTMaterials.HSSS.getUnlocalizedName(), "HSS-S"); From 18f24d5efe0056995f1ddb98647aa8743f13fdf2 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:51:31 -0600 Subject: [PATCH 207/270] Fix PBF lava render playing always rather than when working (#3516) --- .../primitive/PrimitiveBlastFurnaceMachine.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java index 333e7ca8567..fa933d9fc8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/primitive/PrimitiveBlastFurnaceMachine.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IFluidRenderMulti; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -93,15 +94,23 @@ public void onUnload() { public void onStructureFormed() { super.onStructureFormed(); IFluidRenderMulti.super.onStructureFormed(); - this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntitiesAndBreakSnow); } @Override public void onStructureInvalid() { super.onStructureInvalid(); IFluidRenderMulti.super.onStructureInvalid(); - unsubscribe(hurtSubscription); - hurtSubscription = null; + } + + @Override + public void notifyStatusChanged(RecipeLogic.Status oldStatus, RecipeLogic.Status newStatus) { + super.notifyStatusChanged(oldStatus, newStatus); + if (newStatus == RecipeLogic.Status.WORKING) { + this.hurtSubscription = subscribeServerTick(this.hurtSubscription, this::hurtEntitiesAndBreakSnow); + } else if (oldStatus == RecipeLogic.Status.WORKING && hurtSubscription != null) { + unsubscribe(hurtSubscription); + hurtSubscription = null; + } } @Override From 37e5d069081611f54de9c64e9f86e0ee95bd6bf2 Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+gustovafing@users.noreply.github.com> Date: Tue, 22 Jul 2025 06:19:16 +1000 Subject: [PATCH 208/270] Add overloads without tiered chances for chanced in/out builder functions (#3518) --- .../data/recipe/builder/GTRecipeBuilder.java | 89 ++++++++++++ .../recipe/generated/OreRecipeHandler.java | 60 ++++---- .../data/recipe/misc/CircuitRecipes.java | 8 +- .../data/recipe/misc/MachineRecipeLoader.java | 54 +++---- .../data/recipe/misc/MiscRecipeLoader.java | 10 +- .../recipe/misc/VanillaStandardRecipes.java | 12 +- .../data/recipe/misc/WoodMachineRecipes.java | 6 +- .../chemistry/DistillationRecipes.java | 14 +- .../chemistry/GemSlurryRecipes.java | 20 +-- .../chemistry/GrowthMediumRecipes.java | 4 +- .../serialized/chemistry/NaquadahRecipes.java | 4 +- .../chemistry/PetrochemRecipes.java | 28 ++-- .../serialized/chemistry/ReactorRecipes.java | 16 +-- .../chemistry/SeparationRecipes.java | 134 +++++++++--------- .../serialized/chemistry/TitaniumRecipes.java | 6 +- .../kjs/recipe/GTRecipeSchema.java | 76 ++++++++++ 16 files changed, 352 insertions(+), 189 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index d330dc1b671..a3d762fc156 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -689,6 +689,14 @@ public GTRecipeBuilder circuitMeta(int configuration) { return notConsumable(IntCircuitIngredient.of(configuration)); } + public GTRecipeBuilder chancedInput(ItemStack stack, int chance) { + return chancedInput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -703,6 +711,14 @@ public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceB return this; } + public GTRecipeBuilder chancedInput(FluidStack stack, int chance) { + return chancedInput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -717,6 +733,14 @@ public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChance return this; } + public GTRecipeBuilder chancedOutput(ItemStack stack, int chance) { + return chancedOutput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -731,6 +755,14 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChance return this; } + public GTRecipeBuilder chancedOutput(FluidStack stack, int chance) { + return chancedOutput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -745,14 +777,31 @@ public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanc return this; } + public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int chance) { + return chancedOutput(ChemicalHelper.get(tag, mat), chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(tag, mat), chance, tierChanceBoost); } + // Overload without tierChanceBoost would conflict public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(tag, mat, count), chance, tierChanceBoost); } + public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction) { + return chancedOutput(stack, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; @@ -805,23 +854,63 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction, int tierC return this; } + public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, int count, String fraction) { + return chancedOutput(ChemicalHelper.get(prefix, material, count), fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(prefix, material, count), fraction, tierChanceBoost); } + public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, String fraction) { + return chancedOutput(prefix, material, 1, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { return chancedOutput(prefix, material, 1, fraction, tierChanceBoost); } + public GTRecipeBuilder chancedOutput(Item item, int count, String fraction) { + return chancedOutput(new ItemStack(item, count), fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(Item item, int count, String fraction, int tierChanceBoost) { return chancedOutput(new ItemStack(item, count), fraction, tierChanceBoost); } + public GTRecipeBuilder chancedOutput(Item item, String fraction) { + return chancedOutput(item, 1, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(Item item, String fraction, int tierChanceBoost) { return chancedOutput(item, 1, fraction, tierChanceBoost); } + public GTRecipeBuilder chancedFluidOutput(FluidStack stack, String fraction) { + return chancedFluidOutput(stack, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedFluidOutput(FluidStack stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 87857faf682..4bd8ff0d3d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -121,7 +121,7 @@ private static void processOre(@NotNull Consumer provider, @NotN .inputItems(IntersectionIngredient.of(Ingredient.of(orePrefix.getItemTags(material)[0]), Ingredient.of(orePrefix.getItemParentTags()[0]))) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2 * oreTypeMultiplier)) - .chancedOutput(byproductStack, 1400, 0) + .chancedOutput(byproductStack, 1400) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -129,7 +129,7 @@ private static void processOre(@NotNull Consumer provider, @NotN for (MaterialStack secondaryMaterial : orePrefix.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 0); + builder.chancedOutput(dustStack, 6700); } } @@ -198,7 +198,7 @@ private static void processRawOre(@NotNull Consumer provider, @N .recipeBuilder("macerate_raw_" + material.getName() + "_ore_to_crushed_ore") .inputItems(rawOre, material) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2)) - .chancedOutput(byproductStack, 1400, 0) + .chancedOutput(byproductStack, 1400) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -206,7 +206,7 @@ private static void processRawOre(@NotNull Consumer provider, @N for (MaterialStack secondaryMaterial : ore.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700, 0); + builder.chancedOutput(dustStack, 6700); } } @@ -268,8 +268,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .outputItems(impureDustStack) .duration(400).EUt(2) - .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400, - 0) + .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -292,7 +291,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputFluids(Water.getFluid(1000)) .circuitMeta(1) .outputItems(crushedPurifiedOre) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); @@ -300,7 +299,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .inputFluids(DistilledWater.getFluid(100)) .outputItems(crushedPurifiedOre) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") .outputItems(TagPrefix.dust, GTMaterials.Stone) .duration(200) .save(provider); @@ -309,7 +308,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .outputItems(crushedCentrifugedOre) .chancedOutput(TagPrefix.dust, property.getOreByProduct(1, material), property.getByProductMultiplier(), - "1/3", 0) + "1/3") .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); @@ -320,9 +319,8 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .inputFluids(washedInTuple.first().getFluid(washedInTuple.secondInt())) .outputItems(crushedPurifiedOre) - .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000, - 0) - .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 0) + .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000) + .chancedOutput(ChemicalHelper.get(dust, Stone), 4000) .duration(200).EUt(VA[LV]) .category(GTRecipeCategories.ORE_BATHING) .save(provider); @@ -353,7 +351,7 @@ private static void processCrushedCentrifuged(@NotNull Consumer MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_refined_ore_to_dust") .inputItems(crushedRefined, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 0) + .chancedOutput(byproductStack, 1400) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -388,7 +386,7 @@ private static void processCrushedPurified(@NotNull Consumer pro MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_crushed_ore_to_dust") .inputItems(crushedPurified, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400, 0) + .chancedOutput(byproductStack, 1400) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -402,7 +400,7 @@ private static void processCrushedPurified(@NotNull Consumer pro .recipeBuilder("centrifuge_" + material.getName() + "_purified_ore_to_refined_ore") .inputItems(crushedPurified, material) .outputItems(crushedCentrifugedStack) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") .save(provider); } @@ -417,32 +415,32 @@ private static void processCrushedPurified(@NotNull Consumer pro GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 500, 0) - .chancedOutput(flawlessStack, 1500, 0) - .chancedOutput(gemStack, 5000, 0) - .chancedOutput(dustStack, 2500, 0) + .chancedOutput(exquisiteStack, 500) + .chancedOutput(flawlessStack, 1500) + .chancedOutput(gemStack, 5000) + .chancedOutput(dustStack, 2500) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2000, 0); + builder.chancedOutput(flawedStack, 2000); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3000, 0); + builder.chancedOutput(chippedStack, 3000); builder.save(provider); } else { GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 300, 0) - .chancedOutput(flawlessStack, 1000, 0) - .chancedOutput(gemStack, 3500, 0) - .chancedOutput(dustStack, 5000, 0) + .chancedOutput(exquisiteStack, 300) + .chancedOutput(flawlessStack, 1000) + .chancedOutput(gemStack, 3500) + .chancedOutput(dustStack, 5000) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2500, 0); + builder.chancedOutput(flawedStack, 2500); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3500, 0); + builder.chancedOutput(chippedStack, 3500); builder.save(provider); } @@ -466,7 +464,7 @@ private static void processDirtyDust(@NotNull Consumer provider, .duration((int) (material.getMass() * 4)).EUt(24); if (byproduct.hasProperty(PropertyKey.DUST)) { - builder.chancedOutput(TagPrefix.dust, byproduct, "1/9", 0); + builder.chancedOutput(TagPrefix.dust, byproduct, "1/9"); } else { builder.outputFluids(byproduct.getFluid(L / 9)); } @@ -504,8 +502,8 @@ private static void processPureDust(@NotNull Consumer provider, ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("separate_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 0) - .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, 0) + .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000) + .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000) .duration(200).EUt(24) .save(provider); } @@ -513,7 +511,7 @@ private static void processPureDust(@NotNull Consumer provider, CENTRIFUGE_RECIPES.recipeBuilder("centrifuge_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/9", 0) + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/9") .duration(100) .EUt(5) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java index ea1ca537eff..d61f4df58fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java @@ -690,14 +690,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_emerald") .inputItems(gemExquisite, Emerald) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_olivine") .inputItems(gemExquisite, Olivine) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); @@ -716,14 +716,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_mutagen") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(Mutagen.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_bacterial_sludge") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(BacterialSludge.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index 3e9d018c616..22703ce5667 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -203,10 +203,10 @@ private static void registerPrimitiveBlastFurnaceRecipes(Consumer provider) private static void registerBlastFurnaceRecipes(Consumer provider) { BLAST_RECIPES.recipeBuilder("aluminium_from_ruby_dust").duration(400).EUt(100).inputItems(dust, Ruby) - .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0).blastFurnaceTemp(1200) + .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9").blastFurnaceTemp(1200) .save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_ruby_gem").duration(320).EUt(100).inputItems(gem, Ruby) - .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0).blastFurnaceTemp(1200) + .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9").blastFurnaceTemp(1200) .save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_green_sapphire_dust").duration(400).EUt(100) - .inputItems(dust, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0) + .inputItems(dust, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9") .blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_green_sapphire_gem").duration(320).EUt(100) - .inputItems(gem, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0) + .inputItems(gem, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9") .blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_dust").duration(400).EUt(100).inputItems(dust, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_gem").duration(320).EUt(100).inputItems(gem, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_iron").duration(500).EUt(VA[MV]).inputItems(ingot, Iron) - .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) + .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9") .blastFurnaceTemp(1000).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_wrought_iron").duration(300).EUt(VA[MV]).inputItems(ingot, WroughtIron) - .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) + .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9") .blastFurnaceTemp(1000).save(provider); BLAST_RECIPES.recipeBuilder("tempered_glass_blasting") @@ -1131,7 +1131,7 @@ private static void registerBlastFurnaceMetallurgyRecipes(Consumer provider, .inputItems(dust, inputMaterial) .inputFluids(Oxygen.getFluid(3000)) .outputItems(dust, outputMaterial) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(SulfurDioxide.getFluid(sulfurDioxideAmount)) .save(provider); } @@ -1217,14 +1217,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_end_stone") .inputItems(new ItemStack(Blocks.END_STONE)) .outputItems(dust, Endstone) - .chancedOutput(dust, Tungstate, 330, 0) + .chancedOutput(dust, Tungstate, 330) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_netherrack") .inputItems(new ItemStack(Blocks.NETHERRACK)) .outputItems(dust, Netherrack) - .chancedOutput(nugget, Gold, 750, 0) + .chancedOutput(nugget, Gold, 750) .duration(150).EUt(2) .save(provider); @@ -1254,56 +1254,56 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_marble") .inputItems(rock, Marble) .outputItems(dust, Marble) - .chancedOutput(dust, Marble, 1500, 0) + .chancedOutput(dust, Marble, 1500) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_basalt") .inputItems(Blocks.BASALT.asItem()) .outputItems(dust, Basalt) - .chancedOutput(dust, Basalt, 1500, 0) + .chancedOutput(dust, Basalt, 1500) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_deepslate") .inputItems(Blocks.DEEPSLATE.asItem()) .outputItems(dust, Deepslate) - .chancedOutput(dust, Thorium, 150, 0) + .chancedOutput(dust, Thorium, 150) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_red_granite") .inputItems(rock, GraniteRed) .outputItems(dust, GraniteRed) - .chancedOutput(dust, Uranium238, 25, 0) + .chancedOutput(dust, Uranium238, 25) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_andesite") .inputItems(Blocks.ANDESITE.asItem()) .outputItems(dust, Andesite) - .chancedOutput(dust, Stone, 25, 0) + .chancedOutput(dust, Stone, 25) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_diorite") .inputItems(Blocks.DIORITE.asItem()) .outputItems(dust, Diorite) - .chancedOutput(dust, Stone, 25, 0) + .chancedOutput(dust, Stone, 25) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_granite") .inputItems(Blocks.GRANITE.asItem()) .outputItems(dust, Granite) - .chancedOutput(dust, Stone, 25, 0) + .chancedOutput(dust, Stone, 25) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_calcite") .inputItems(Blocks.CALCITE.asItem()) .outputItems(dust, Calcite) - .chancedOutput(dust, Stone, 25, 0) + .chancedOutput(dust, Stone, 25) .duration(150).EUt(2) .save(provider); @@ -1323,14 +1323,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_pork_chop") .inputItems(new ItemStack(Items.PORKCHOP)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 6500, 0) + .chancedOutput(dust, Meat, 6500) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_fish") .inputItems(ItemTags.FISHES) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000, 0) + .chancedOutput(dust, Meat, 5000) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); @@ -1343,14 +1343,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_steak") .inputItems(new ItemStack(Items.BEEF)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000, 0) + .chancedOutput(dust, Meat, 5000) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_rabbit") .inputItems(new ItemStack(Items.RABBIT)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000, 0) + .chancedOutput(dust, Meat, 5000) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java index b7fa1679e3f..1e82108625f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java @@ -70,11 +70,11 @@ public static void init(Consumer provider) { SIFTER_RECIPES.recipeBuilder("gravel_sifting").duration(100).EUt(16) .inputItems(new ItemStack(Blocks.GRAVEL)) .outputItems(gem, Flint) - .chancedOutput(gem, Flint, 9000, 0) - .chancedOutput(gem, Flint, 8000, 0) - .chancedOutput(gem, Flint, 6000, 0) - .chancedOutput(gem, Flint, "1/3", 0) - .chancedOutput(gem, Flint, 2500, 0) + .chancedOutput(gem, Flint, 9000) + .chancedOutput(gem, Flint, 8000) + .chancedOutput(gem, Flint, 6000) + .chancedOutput(gem, Flint, "1/3") + .chancedOutput(gem, Flint, 2500) .save(provider); PACKER_RECIPES.recipeBuilder("matchbox") diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index 7543739d90e..869029f0229 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -278,7 +278,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("gravel_to_flint") .inputItems(new ItemStack(Blocks.GRAVEL, 1)) .outputItems(dust, Stone) - .chancedOutput(new ItemStack(Items.FLINT), 3300, 0) + .chancedOutput(new ItemStack(Items.FLINT), 3300) .duration(400).EUt(2) .save(provider); @@ -345,7 +345,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_melon_block") .inputItems(new ItemStack(Blocks.MELON)) .outputItems(new ItemStack(Items.MELON_SLICE, 8)) - .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500, 0) + .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500) .duration(400).EUt(2) .save(provider); @@ -364,9 +364,9 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_wool") .inputItems(ItemTags.WOOL) .outputItems(new ItemStack(Items.STRING)) - .chancedOutput(new ItemStack(Items.STRING), 9000, 0) - .chancedOutput(new ItemStack(Items.STRING), 5000, 0) - .chancedOutput(new ItemStack(Items.STRING), 2000, 0) + .chancedOutput(new ItemStack(Items.STRING), 9000) + .chancedOutput(new ItemStack(Items.STRING), 5000) + .chancedOutput(new ItemStack(Items.STRING), 2000) .duration(200).EUt(2) .save(provider); } @@ -378,7 +378,7 @@ private static void woodRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_logs") .inputItems(ItemTags.LOGS) .outputItems(dust, Wood, 6) - .chancedOutput(dust, Wood, 8500, 0) + .chancedOutput(dust, Wood, 8500) .duration(150).EUt(2) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java index ff506e8778a..e2809b304a8 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java @@ -1215,21 +1215,21 @@ private static void registerPyrolyseOvenRecipes(Consumer provide // COAL TAR ============================================ PYROLYSE_RECIPES.recipeBuilder("charcoal_to_coal_tar").circuitMeta(8) .inputItems(Items.CHARCOAL, 32) - .chancedOutput(dust, Ash, 5000, 0) + .chancedOutput(dust, Ash, 5000) .outputFluids(CoalTar.getFluid(1000)) .duration(640).EUt(64) .save(provider); PYROLYSE_RECIPES.recipeBuilder("coal_to_coal_tar").circuitMeta(8) .inputItems(Items.COAL, 12) - .chancedOutput(dust, DarkAsh, 5000, 0) + .chancedOutput(dust, DarkAsh, 5000) .outputFluids(CoalTar.getFluid(3000)) .duration(320).EUt(96) .save(provider); PYROLYSE_RECIPES.recipeBuilder("coke_to_coal_tar").circuitMeta(8) .inputItems(gem, Coke, 8) - .chancedOutput(dust, Ash, 7500, 0) + .chancedOutput(dust, Ash, 7500) .outputFluids(CoalTar.getFluid(4000)) .duration(320).EUt(96) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java index 57e19cf9c37..f5a5e2e987e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java @@ -33,7 +33,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_charcoal_byproducts") .inputFluids(CharcoalByproducts.getFluid(1000)) - .chancedOutput(dust, Charcoal, 2500, 0) + .chancedOutput(dust, Charcoal, 2500) .outputFluids(WoodTar.getFluid(250)) .outputFluids(WoodVinegar.getFluid(400)) .outputFluids(WoodGas.getFluid(250)) @@ -117,14 +117,14 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_biomass") .inputFluids(Biomass.getFluid(1000)) - .chancedOutput(dust, Wood, 5000, 0) + .chancedOutput(dust, Wood, 5000) .outputFluids(Ethanol.getFluid(600)) .outputFluids(Water.getFluid(300)) .duration(32).EUt(400).save(provider); DISTILLATION_RECIPES.recipeBuilder("distill_coal_gas") .inputFluids(CoalGas.getFluid(1000)) - .chancedOutput(dust, Coke, 2500, 0) + .chancedOutput(dust, Coke, 2500) .outputFluids(CoalTar.getFluid(200)) .outputFluids(Ammonia.getFluid(300)) .outputFluids(Ethylbenzene.getFluid(250)) @@ -134,7 +134,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_coal_tar") .inputFluids(CoalTar.getFluid(1000)) - .chancedOutput(dust, Coke, 2500, 0) + .chancedOutput(dust, Coke, 2500) .outputFluids(Naphthalene.getFluid(400)) .outputFluids(HydrogenSulfide.getFluid(300)) .outputFluids(Creosote.getFluid(200)) @@ -149,7 +149,7 @@ public static void init(Consumer provider) { .outputFluids(CarbonDioxide.getFluid(2500)) .outputFluids(Helium.getFluid(1000)) .outputFluids(Argon.getFluid(500)) - .chancedOutput(dust, Ice, 9000, 0) + .chancedOutput(dust, Ice, 9000) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[HV]).save(provider); @@ -161,7 +161,7 @@ public static void init(Consumer provider) { .outputFluids(SulfurDioxide.getFluid(7500)) .outputFluids(Helium3.getFluid(2500)) .outputFluids(Neon.getFluid(500)) - .chancedOutput(dust, Ash, 2250, 0) + .chancedOutput(dust, Ash, 2250) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[EV]).save(provider); @@ -174,7 +174,7 @@ public static void init(Consumer provider) { .outputFluids(Krypton.getFluid(1000)) .outputFluids(Xenon.getFluid(1000)) .outputFluids(Radon.getFluid(1000)) - .chancedOutput(dust, EnderPearl, 1000, 0) + .chancedOutput(dust, EnderPearl, 1000) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[IV]).save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java index 801caa333a5..b77ef9c818e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java @@ -24,9 +24,9 @@ public static void init(Consumer provider) { .inputFluids(RubySlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) .outputItems(dust, Chromium) - .chancedOutput(dust, Titanium, 200, 0) - .chancedOutput(dust, Iron, 200, 0) - .chancedOutput(dust, Vanadium, 200, 0) + .chancedOutput(dust, Titanium, 200) + .chancedOutput(dust, Iron, 200) + .chancedOutput(dust, Vanadium, 200) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); @@ -40,9 +40,9 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sapphire_slurry_centrifuging").duration(320).EUt(VA[HV]) .inputFluids(SapphireSlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) - .chancedOutput(dust, Titanium, 200, 0) - .chancedOutput(dust, Iron, 200, 0) - .chancedOutput(dust, Vanadium, 200, 0) + .chancedOutput(dust, Titanium, 200) + .chancedOutput(dust, Iron, 200) + .chancedOutput(dust, Vanadium, 200) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); @@ -56,10 +56,10 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("green_sapphire_slurry_centrifuging").duration(320).EUt(VA[HV]) .inputFluids(GreenSapphireSlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) - .chancedOutput(dust, Beryllium, 200, 0) - .chancedOutput(dust, Titanium, 200, 0) - .chancedOutput(dust, Iron, 200, 0) - .chancedOutput(dust, Vanadium, 200, 0) + .chancedOutput(dust, Beryllium, 200) + .chancedOutput(dust, Titanium, 200) + .chancedOutput(dust, Iron, 200) + .chancedOutput(dust, Vanadium, 200) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java index 4f79034e331..0d668420870 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java @@ -23,8 +23,8 @@ public static void init(Consumer provider) { .inputItems(PLANT_BALL, 2) .outputItems(BIO_CHAFF) .outputItems(BIO_CHAFF) - .chancedOutput(BIO_CHAFF.asStack(), 5000, 0) - .chancedOutput(BIO_CHAFF.asStack(), 2500, 0) + .chancedOutput(BIO_CHAFF.asStack(), 5000) + .chancedOutput(BIO_CHAFF.asStack(), 2500) .save(provider); MACERATOR_RECIPES.recipeBuilder("dirt_from_bio_chaff").EUt(4).duration(300) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java index 654cfcb03e2..f6d7cd02a69 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java @@ -89,7 +89,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("enriched_naquadah_waste_separation").EUt(VA[HV]).duration(300) .inputFluids(EnrichedNaquadahWaste.getFluid(2000)) - .chancedOutput(dust, BariumSulfide, 5000, 0) + .chancedOutput(dust, BariumSulfide, 5000) .outputFluids(SulfuricAcid.getFluid(500)) .outputFluids(EnrichedNaquadahSolution.getFluid(250)) .outputFluids(NaquadriaSolution.getFluid(100)) @@ -126,7 +126,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("naquadria_waste_separation").EUt(VA[HV]).duration(300) .inputFluids(NaquadriaWaste.getFluid(2000)) - .chancedOutput(dust, GalliumSulfide, 5000, 0) + .chancedOutput(dust, GalliumSulfide, 5000) .outputFluids(SulfuricAcid.getFluid(500)) .outputFluids(NaquadriaSolution.getFluid(250)) .outputFluids(EnrichedNaquadahSolution.getFluid(100)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java index 69999459217..738e978c7e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java @@ -123,7 +123,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_ethane") .inputFluids(SteamCrackedEthane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500, 0) + .chancedOutput(dust, Carbon, 2500) .outputFluids(Ethylene.getFluid(250)) .outputFluids(Methane.getFluid(1250)) .duration(120).EUt(VA[MV]).save(provider); @@ -148,7 +148,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_propene") .inputFluids(SteamCrackedPropene.getFluid(1000)) - .chancedOutput(dust, Carbon, 5000, 0) + .chancedOutput(dust, Carbon, 5000) .outputFluids(Ethylene.getFluid(1000)) .outputFluids(Methane.getFluid(500)) .duration(120).EUt(VA[MV]).save(provider); @@ -161,7 +161,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_propane") .inputFluids(SteamCrackedPropane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500, 0) + .chancedOutput(dust, Carbon, 2500) .outputFluids(Ethylene.getFluid(750)) .outputFluids(Methane.getFluid(1250)) .duration(120).EUt(VA[MV]).save(provider); @@ -175,7 +175,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butane") .inputFluids(SteamCrackedButane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500, 0) + .chancedOutput(dust, Carbon, 2500) .outputFluids(Propane.getFluid(125)) .outputFluids(Ethane.getFluid(750)) .outputFluids(Ethylene.getFluid(750)) @@ -193,7 +193,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butene") .inputFluids(SteamCrackedButene.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500, 0) + .chancedOutput(dust, Carbon, 2500) .outputFluids(Propene.getFluid(250)) .outputFluids(Ethylene.getFluid(1500)) .outputFluids(Methane.getFluid(250)) @@ -207,7 +207,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butadiene") .inputFluids(SteamCrackedButadiene.getFluid(1000)) - .chancedOutput(dust, Carbon, 5000, 0) + .chancedOutput(dust, Carbon, 5000) .outputFluids(Propene.getFluid(125)) .outputFluids(Ethylene.getFluid(250)) .outputFluids(Methane.getFluid(1125)) @@ -235,7 +235,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_heavy_fuel") .inputFluids(LightlySteamCrackedHeavyFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9", 0) + .chancedOutput(dust, Carbon, "1/9") .outputFluids(LightFuel.getFluid(300)) .outputFluids(Naphtha.getFluid(50)) .outputFluids(Toluene.getFluid(25)) @@ -251,7 +251,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_heavy_fuel") .inputFluids(SeverelySteamCrackedHeavyFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3", 0) + .chancedOutput(dust, Carbon, "1/3") .outputFluids(LightFuel.getFluid(100)) .outputFluids(Naphtha.getFluid(125)) .outputFluids(Toluene.getFluid(80)) @@ -287,7 +287,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_light_fuel") .inputFluids(LightlySteamCrackedLightFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9", 0) + .chancedOutput(dust, Carbon, "1/9") .outputFluids(HeavyFuel.getFluid(150)) .outputFluids(Naphtha.getFluid(400)) .outputFluids(Toluene.getFluid(40)) @@ -303,7 +303,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_light_fuel") .inputFluids(SeverelySteamCrackedLightFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3", 0) + .chancedOutput(dust, Carbon, "1/3") .outputFluids(HeavyFuel.getFluid(50)) .outputFluids(Naphtha.getFluid(100)) .outputFluids(Toluene.getFluid(30)) @@ -335,7 +335,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_naphtha") .inputFluids(LightlySteamCrackedNaphtha.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9", 0) + .chancedOutput(dust, Carbon, "1/9") .outputFluids(HeavyFuel.getFluid(75)) .outputFluids(LightFuel.getFluid(150)) .outputFluids(Toluene.getFluid(40)) @@ -351,7 +351,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_naphtha") .inputFluids(SeverelySteamCrackedNaphtha.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3", 0) + .chancedOutput(dust, Carbon, "1/3") .outputFluids(HeavyFuel.getFluid(25)) .outputFluids(LightFuel.getFluid(50)) .outputFluids(Toluene.getFluid(20)) @@ -381,7 +381,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_gas") .inputFluids(LightlySteamCrackedGas.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9", 0) + .chancedOutput(dust, Carbon, "1/9") .outputFluids(Propene.getFluid(45)) .outputFluids(Ethane.getFluid(8)) .outputFluids(Ethylene.getFluid(85)) @@ -391,7 +391,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_gas") .inputFluids(SeverelySteamCrackedGas.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9", 0) + .chancedOutput(dust, Carbon, "1/9") .outputFluids(Propene.getFluid(8)) .outputFluids(Ethane.getFluid(45)) .outputFluids(Ethylene.getFluid(92)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java index 66bb796dd48..28f3ae5ccc9 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java @@ -377,7 +377,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(gem, Charcoal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -385,7 +385,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(gem, Coal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -393,7 +393,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(dust, Charcoal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -402,7 +402,7 @@ public static void init(Consumer provider) { .inputItems(dust, Coal) .circuitMeta(1) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonMonoxide.getFluid(1000)) .save(provider); @@ -447,7 +447,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(gem, Charcoal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -455,7 +455,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(gem, Coal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -463,7 +463,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(dust, Charcoal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -471,7 +471,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(dust, Coal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9", 0) + .chancedOutput(dust, Ash, "1/9") .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java index 0a0330a0d9b..97f9a26aed6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java @@ -49,13 +49,13 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("oilsands_ore_separation") .inputItems(ore, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 7500) .outputFluids(Oil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("oilsands_dust_separation") .inputItems(dust, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 7500) .outputFluids(OilHeavy.getFluid(2000)) .duration(200).EUt(30).save(provider); @@ -105,50 +105,50 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sticky_resin_separation").duration(400).EUt(5) .inputItems(STICKY_RESIN) .outputItems(dust, RawRubber, 3) - .chancedOutput(PLANT_BALL.asStack(), 1500, 0) + .chancedOutput(PLANT_BALL.asStack(), 1500) .outputFluids(Glue.getFluid(100)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(20) .inputItems(GTBlocks.RUBBER_LOG.asStack()) - .chancedOutput(STICKY_RESIN.asStack(), 6400, 0) - .chancedOutput(PLANT_BALL.asStack(), 4000, 0) - .chancedOutput(dust, Carbon, 3000, 0) - .chancedOutput(dust, Wood, 3000, 0) + .chancedOutput(STICKY_RESIN.asStack(), 6400) + .chancedOutput(PLANT_BALL.asStack(), 4000) + .chancedOutput(dust, Carbon, 3000) + .chancedOutput(dust, Wood, 3000) .outputFluids(Methane.getFluid(60)) .save(provider); // TODO Other kinds of dirt? CENTRIFUGE_RECIPES.recipeBuilder("dirt_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.DIRT.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 1400, 0) - .chancedOutput(new ItemStack(Blocks.SAND), 6000, 0) - .chancedOutput(dust, Clay, 550, 0) + .chancedOutput(PLANT_BALL.asStack(), 1400) + .chancedOutput(new ItemStack(Blocks.SAND), 6000) + .chancedOutput(dust, Clay, 550) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("grass_block_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.GRASS_BLOCK.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 3500, 0) - .chancedOutput(new ItemStack(Blocks.SAND), 5500, 0) - .chancedOutput(dust, Clay, 550, 0) + .chancedOutput(PLANT_BALL.asStack(), 3500) + .chancedOutput(new ItemStack(Blocks.SAND), 5500) + .chancedOutput(dust, Clay, 550) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("mycelium_separation").duration(650).EUt(VA[LV]) .inputItems(new ItemStack(Blocks.MYCELIUM)) - .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800, 0) - .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800, 0) - .chancedOutput(new ItemStack(Blocks.SAND), 6200, 0) - .chancedOutput(dust, Clay, 550, 0) + .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800) + .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800) + .chancedOutput(new ItemStack(Blocks.SAND), 6200) + .chancedOutput(dust, Clay, 550) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("ash_separation").duration(240).EUt(VA[LV]) .inputItems(dust, Ash) - .chancedOutput(dust, Quicklime, 4950, 0) - .chancedOutput(dust, Potash, 1600, 0) - .chancedOutput(dust, Magnesia, 1500, 0) - .chancedOutput(dust, PhosphorusPentoxide, 60, 0) - .chancedOutput(dust, SodaAsh, 600, 0) - .chancedOutput(dust, Hematite, 275, 0) + .chancedOutput(dust, Quicklime, 4950) + .chancedOutput(dust, Potash, 1600) + .chancedOutput(dust, Magnesia, 1500) + .chancedOutput(dust, PhosphorusPentoxide, 60) + .chancedOutput(dust, SodaAsh, 600) + .chancedOutput(dust, Hematite, 275) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("dark_ash_separation").duration(250).EUt(6) @@ -170,65 +170,65 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("uranium_238_separation").duration(800).EUt(320) .inputItems(dust, Uranium238) - .chancedOutput(dustTiny, Plutonium239, 280, 0) - .chancedOutput(dustTiny, Uranium235, 2300, 0) + .chancedOutput(dustTiny, Plutonium239, 280) + .chancedOutput(dustTiny, Uranium235, 2300) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("plutonium_239_separation").duration(1600).EUt(320) .inputItems(dust, Plutonium239) - .chancedOutput(dustTiny, Uranium238, 3400, 0) - .chancedOutput(dust, Plutonium241, 2500, 0) + .chancedOutput(dustTiny, Uranium238, 3400) + .chancedOutput(dust, Plutonium241, 2500) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("endstone_separation").duration(320).EUt(20) .inputItems(dust, Endstone) - .chancedOutput(new ItemStack(Blocks.SAND), 9000, 0) - .chancedOutput(dust, Tungstate, 445, 0) - .chancedOutput(dust, Platinum, 80, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 9000) + .chancedOutput(dust, Tungstate, 445) + .chancedOutput(dust, Platinum, 80) .outputFluids(Helium.getFluid(120)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("netherrack_separation").duration(160).EUt(20) .inputItems(dust, Netherrack) - .chancedOutput(dust, Redstone, 700, 0) - .chancedOutput(dust, Gold, 75, 0) - .chancedOutput(dust, Sulfur, 2500, 0) - .chancedOutput(dust, Coal, 700, 0) + .chancedOutput(dust, Redstone, 700) + .chancedOutput(dust, Gold, 75) + .chancedOutput(dust, Sulfur, 2500) + .chancedOutput(dust, Coal, 700) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("soul_sand_separation").duration(200).EUt(80) .inputItems(Blocks.SOUL_SAND.asItem()) - .chancedOutput(new ItemStack(Blocks.SAND), 9250, 0) - .chancedOutput(dust, Saltpeter, 2250, 0) - .chancedOutput(dust, Coal, 225, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 9250) + .chancedOutput(dust, Saltpeter, 2250) + .chancedOutput(dust, Coal, 225) .outputFluids(Oil.getFluid(80)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("lava_separation").duration(80).EUt(80) .inputFluids(Lava.getFluid(100)) - .chancedOutput(dust, SiliconDioxide, 1250, 0) - .chancedOutput(dust, Magnesia, 250, 0) - .chancedOutput(dust, Quicklime, 250, 0) - .chancedOutput(nugget, Gold, 250, 0) - .chancedOutput(dust, Sapphire, 315, 0) - .chancedOutput(dust, Tantalite, 125, 0) + .chancedOutput(dust, SiliconDioxide, 1250) + .chancedOutput(dust, Magnesia, 250) + .chancedOutput(dust, Quicklime, 250) + .chancedOutput(nugget, Gold, 250) + .chancedOutput(dust, Sapphire, 315) + .chancedOutput(dust, Tantalite, 125) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rare_earth_separation").duration(64).EUt(20) .inputItems(dust, RareEarth) - .chancedOutput(dustSmall, Cadmium, 3500, 0) - .chancedOutput(dustSmall, Neodymium, 4500, 0) - .chancedOutput(dustSmall, Samarium, 3500, 0) - .chancedOutput(dustSmall, Cerium, 5500, 0) - .chancedOutput(dustSmall, Yttrium, 3500, 0) - .chancedOutput(dustSmall, Lanthanum, 2500, 0) + .chancedOutput(dustSmall, Cadmium, 3500) + .chancedOutput(dustSmall, Neodymium, 4500) + .chancedOutput(dustSmall, Samarium, 3500) + .chancedOutput(dustSmall, Cerium, 5500) + .chancedOutput(dustSmall, Yttrium, 3500) + .chancedOutput(dustSmall, Lanthanum, 2500) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_sand_separation").duration(50).EUt(VA[LV]) .inputItems(Blocks.RED_SAND.asItem()) - .chancedOutput(dust, Iron, 5000, 0) - .chancedOutput(dust, Diamond, 35, 0) - .chancedOutput(new ItemStack(Blocks.SAND), 8500, 0) + .chancedOutput(dust, Iron, 5000) + .chancedOutput(dust, Diamond, 35) + .chancedOutput(new ItemStack(Blocks.SAND), 8500) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("hydrogen_separation").duration(160).EUt(20) @@ -267,28 +267,28 @@ public static void init(Consumer provider) { // Stone Dust CENTRIFUGE_RECIPES.recipeBuilder("stone_dust_separation").duration(480).EUt(VA[MV]) .inputItems(dust, Stone) - .chancedOutput(dust, Quartzite, 2500, 0) - .chancedOutput(dust, PotassiumFeldspar, 2500, 0) - .chancedOutput(dust, Marble, "2/9", 0) - .chancedOutput(dust, Biotite, "1/9", 0) - .chancedOutput(dust, MetalMixture, 925, 0) - .chancedOutput(dust, Sodalite, 650, 0) + .chancedOutput(dust, Quartzite, 2500) + .chancedOutput(dust, PotassiumFeldspar, 2500) + .chancedOutput(dust, Marble, "2/9") + .chancedOutput(dust, Biotite, "1/9") + .chancedOutput(dust, MetalMixture, 925) + .chancedOutput(dust, Sodalite, 650) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("metal_mixture_separation").duration(1000).EUt(900) .inputItems(dust, MetalMixture) - .chancedOutput(dust, Hematite, 2500, 0) - .chancedOutput(dust, Bauxite, 2500, 0) - .chancedOutput(dust, Pyrolusite, "2/9", 0) - .chancedOutput(dust, Barite, "1/9", 0) - .chancedOutput(dust, Chromite, 855, 0) - .chancedOutput(dust, Ilmenite, 575, 0) + .chancedOutput(dust, Hematite, 2500) + .chancedOutput(dust, Bauxite, 2500) + .chancedOutput(dust, Pyrolusite, "2/9") + .chancedOutput(dust, Barite, "1/9") + .chancedOutput(dust, Chromite, 855) + .chancedOutput(dust, Ilmenite, 575) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("quartz_sand_separation").duration(60).EUt(VA[LV]) .inputItems(dust, QuartzSand, 2) .outputItems(dust, Quartzite) - .chancedOutput(dust, CertusQuartz, 2500, 0) + .chancedOutput(dust, CertusQuartz, 2500) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_alloy_separation").duration(900).EUt(VA[LV]) @@ -339,7 +339,7 @@ public static void init(Consumer provider) { .inputItems(dust, Sphalerite, 2) .outputItems(dust, Zinc) .outputItems(dust, Sulfur) - .chancedOutput(dust, Gallium, 750, 0) + .chancedOutput(dust, Gallium, 750) .duration(200).EUt(VA[LV]).save(provider); ELECTROLYZER_RECIPES.recipeBuilder("water_electrolysis") @@ -552,7 +552,7 @@ public static void init(Consumer provider) { EXTRACTOR_RECIPES.recipeBuilder("wood_dust_extraction").duration(16).EUt(4) .inputItems(dust, Wood) - .chancedOutput(PLANT_BALL.asStack(), 225, 0) + .chancedOutput(PLANT_BALL.asStack(), 225) .outputFluids(Creosote.getFluid(5)) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java index 7c7cc348dc4..279b14e548b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java @@ -167,9 +167,9 @@ private static void ilmeniteProcess(Consumer provider) { // Byproduct separation for Ilmenite ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("ilmenite_separation") .inputItems(dust, IlmeniteSlag) - .chancedOutput(dust, Iron, 8000, 0) - .chancedOutput(dust, Tantalum, 2000, 0) - .chancedOutput(dust, Niobium, 500, 0) + .chancedOutput(dust, Iron, 8000) + .chancedOutput(dust, Tantalum, 2000) + .chancedOutput(dust, Niobium, 500) .duration(50).EUt(VA[MV]).save(provider); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index acb6a78f081..20650827621 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -426,6 +426,14 @@ public GTRecipeJS circuit(int configuration) { return notConsumable(InputItem.of(IntCircuitIngredient.of(configuration), 1)); } + public GTRecipeJS chancedInput(InputItem stack, int chance) { + return chancedInput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -442,6 +450,14 @@ public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) return this; } + public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, int chance) { + return chancedFluidInput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { @@ -459,6 +475,14 @@ public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, return this; } + public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance) { + return chancedOutput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -475,15 +499,35 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh return this; } + public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance) { + return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); } + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat, count), null), chance, tierChanceBoost); } + public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction) { + return chancedOutput(stack, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; @@ -547,16 +591,40 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t return this; } + public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction) { + return chancedOutput(prefix, material, count, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(prefix, material, count), null), fraction, tierChanceBoost); } + public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction) { + return chancedOutput(prefix, material, 1, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { return chancedOutput(prefix, material, 1, fraction, tierChanceBoost); } + public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance) { + return chancedFluidOutput(stack, chance, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -573,6 +641,14 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierCha return this; } + public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction) { + return chancedFluidOutput(stack, fraction, 0); + } + + /** + * @deprecated overclock chance boosting will be removed in a future update + */ + @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int tierChanceBoost) { if (stack.getAmount() == 0) { return this; From 76e44d6be7544f9adc2fbaf0dbac4b8a46640aba Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:53:48 -0600 Subject: [PATCH 209/270] Add custom block outlines for steam machines (#3517) --- .../java/com/gregtechceu/gtceu/api/GTValues.java | 4 ++++ .../gtceu/core/mixins/client/LevelRendererMixin.java | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index 061c7f68b34..41a6a9c9d5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -280,6 +280,10 @@ public static int[] tiersBetween(int minInclusive, int maxInclusive) { RED.getColor() }; + // Main color for steam machines + public static final int VC_LP_STEAM = 0xBB8E53; + public static final int VC_HP_STEAM = 0x79756F; + /** * The long names for the voltages */ diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index 62c5075dce4..c7d64dd8482 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.item.tool.aoe.AoESymmetrical; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.pipenet.IPipeNode; import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -182,9 +183,14 @@ private static void renderShape(PoseStack poseStack, VertexConsumer consumer, Vo doRenderColoredOutline = true; rgb = materialEntry.material().getMaterialRGB(); } else if (level.getBlockEntity(pos) instanceof IMachineBlockEntity mbe) { - if (rendererCfg.coloredTieredMachineOutline && mbe.getMetaMachine() instanceof ITieredMachine tiered) { - doRenderColoredOutline = true; - rgb = GTValues.VCM[tiered.getTier()]; + if (rendererCfg.coloredTieredMachineOutline) { + if (mbe.getMetaMachine() instanceof SteamMachine steam) { + doRenderColoredOutline = true; + rgb = steam.isHighPressure() ? GTValues.VC_HP_STEAM : GTValues.VC_LP_STEAM; + } else if (mbe.getMetaMachine() instanceof ITieredMachine tiered) { + doRenderColoredOutline = true; + rgb = GTValues.VCM[tiered.getTier()]; + } } } else if (rendererCfg.coloredWireOutline && level.getBlockEntity(pos) instanceof IPipeNode pipe) { doRenderColoredOutline = true; From db374257b87f85e236dc315cf7aaa0f867f912b9 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:54:30 -0600 Subject: [PATCH 210/270] Match rubber log centrifuge EU/t to sticky resin (#3512) --- .../data/recipe/serialized/chemistry/SeparationRecipes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java index 97f9a26aed6..85a25e486bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java @@ -109,7 +109,7 @@ public static void init(Consumer provider) { .outputFluids(Glue.getFluid(100)) .save(provider); - CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(20) + CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(5) .inputItems(GTBlocks.RUBBER_LOG.asStack()) .chancedOutput(STICKY_RESIN.asStack(), 6400) .chancedOutput(PLANT_BALL.asStack(), 4000) From 7c614f3ef77aa8250ee463d103aaa02d8b55ad93 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:54:42 -0600 Subject: [PATCH 211/270] Allow small/tiny dusts to be crafted in 2x2 player grid (#3514) --- .../gtceu/data/recipe/generated/MaterialRecipeHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index 889f49ee282..3d963fd15fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -256,7 +256,7 @@ private static void processSmallDust(@NotNull Consumer provider, VanillaRecipeHelper.addStrictShapedRecipe(provider, String.format("small_dust_disassembling_%s", material.getName()), - smallDustStack.copyWithCount(4), " X ", " ", " ", 'X', new MaterialEntry(dust, material)); + smallDustStack.copyWithCount(4), " X", " ", 'X', new MaterialEntry(dust, material)); VanillaRecipeHelper.addShapedRecipe(provider, String.format("small_dust_assembling_%s", material.getName()), dustStack, "XX", "XX", 'X', new MaterialEntry(dustSmall, material)); @@ -284,7 +284,7 @@ private static void processTinyDust(@NotNull Consumer provider, VanillaRecipeHelper.addStrictShapedRecipe(provider, String.format("tiny_dust_disassembling_%s", material.getName()), - tinyDustStack.copyWithCount(9), "X ", " ", " ", 'X', new MaterialEntry(dust, material)); + tinyDustStack.copyWithCount(9), "X ", " ", 'X', new MaterialEntry(dust, material)); VanillaRecipeHelper.addShapedRecipe(provider, String.format("tiny_dust_assembling_%s", material.getName()), dustStack, "XXX", "XXX", "XXX", 'X', new MaterialEntry(dustTiny, material)); From 5afacafa533db8bb498a81359ff498f3333ed7be Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:54:56 -0600 Subject: [PATCH 212/270] Add crushed, centrifuged, purified, impure and pure ores to vanilla blast furnace (#3513) --- .../gtceu/data/recipe/generated/OreRecipeHandler.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 4bd8ff0d3d5..e92117aa5af 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -16,6 +16,8 @@ import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraftforge.common.crafting.IntersectionIngredient; @@ -64,9 +66,11 @@ private static void processMetalSmelting(@NotNull Consumer provi ItemStack ingotStack = ChemicalHelper.get(ingot, smeltingResult); if (!ingotStack.isEmpty() && doesMaterialUseNormalFurnace(smeltingResult) && !prefix.isIgnored(material)) { - VanillaRecipeHelper.addSmeltingRecipe(provider, - "smelt_" + prefix.name + "_" + material.getName() + "_to_ingot", - ChemicalHelper.getTag(prefix, material), ingotStack, 0.5f); + String name = "smelt_" + prefix.name + "_" + material.getName() + "_to_ingot"; + TagKey tag = ChemicalHelper.getTag(prefix, material); + + VanillaRecipeHelper.addSmeltingRecipe(provider, name, tag, ingotStack, 0.5f); + VanillaRecipeHelper.addBlastingRecipe(provider, name, tag, ingotStack, 0.5f); } } } From 289e3d0335e4fd3f2ac83c91fcd35dd20e002533 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:55:20 -0600 Subject: [PATCH 213/270] Add better emi support for multi pattern previews (#3527) --- .../multipage/MultiblockInfoEmiRecipe.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java index 52e17dbfcb0..a3957423362 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/multipage/MultiblockInfoEmiRecipe.java @@ -9,17 +9,34 @@ import net.minecraft.resources.ResourceLocation; import dev.emi.emi.api.recipe.EmiRecipeCategory; +import dev.emi.emi.api.stack.EmiStack; +import dev.emi.emi.api.widget.SlotWidget; +import dev.emi.emi.api.widget.WidgetHolder; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class MultiblockInfoEmiRecipe extends ModularEmiRecipe { - public final MultiblockMachineDefinition definition; + private final MultiblockMachineDefinition definition; + private SlotWidget slotWidget; public MultiblockInfoEmiRecipe(MultiblockMachineDefinition definition) { super(() -> PatternPreviewWidget.getPatternWidget(definition)); this.definition = definition; } + @Override + public void addWidgets(WidgetHolder widgets) { + super.addWidgets(widgets); + // numbers gotten from the size of the widget + slotWidget = new SlotWidget(EmiStack.of(definition.getItem().asItem()), 138, 12) + .recipeContext(this) + .drawBack(false); + + widgets.add(slotWidget); + } + @Override public EmiRecipeCategory getCategory() { return MultiblockInfoEmiCategory.CATEGORY; @@ -29,4 +46,9 @@ public EmiRecipeCategory getCategory() { public @Nullable ResourceLocation getId() { return definition.getId(); } + + @Override + public List getOutputs() { + return List.of(EmiStack.of(definition.getItem())); + } } From 704210d6ac6f44b7f24b0f9a370396f6e2503b25 Mon Sep 17 00:00:00 2001 From: DilithiumThoride Date: Tue, 22 Jul 2025 03:18:43 -0500 Subject: [PATCH 214/270] Adjust Jade/TOP readouts to use A @ V format as in #3384 (#3390) --- .../resources/assets/gtceu/lang/en_ud.json | 9 ++++++ .../resources/assets/gtceu/lang/en_us.json | 9 ++++++ .../gtceu/data/lang/IntegrationLang.java | 3 ++ .../gtceu/data/lang/LangHandler.java | 6 ++++ .../jade/provider/RecipeLogicProvider.java | 28 +++++++++++-------- .../jade/provider/RecipeOutputProvider.java | 20 ++++++------- .../top/provider/RecipeLogicInfoProvider.java | 16 ++++++++--- .../top/provider/RecipeOutputProvider.java | 10 ++++--- 8 files changed, 71 insertions(+), 30 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index dfd2ac22e78..5f5c34ee1ff 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2309,6 +2309,8 @@ "gtceu.gui.content.count_range": "x%s-%s", "gtceu.gui.content.fluid_range": "ᗺɯ%s-%s", "gtceu.gui.content.per_tick": "ɹ§ʞɔı⟘ ɹǝԀ pǝɔnpoɹԀ/pǝɯnsuoƆɐ§", + "gtceu.gui.content.range": "%s-%s", + "gtceu.gui.content.times_item": "%s x", "gtceu.gui.content.tips.per_second_short": "ɹ§puoɔǝs/ɐ§", "gtceu.gui.content.tips.per_tick_short": "ɹ§ʞɔıʇ/ɐ§", "gtceu.gui.content.units.per_second": "s/", @@ -2393,8 +2395,11 @@ "gtceu.item_filter.footer": "ǝpıɹɹǝʌo oʇ ɯǝʇı ɥʇıʍ ʞɔıןƆǝ§", "gtceu.item_list.item_stored": "%d :pǝɹoʇSㄥ§", "gtceu.item_pipe.priority": "%dɟ§ :ʎʇıɹoıɹԀ6§", + "gtceu.jade.amperage_use": "Ɐ %s", + "gtceu.jade.at": " @ ", "gtceu.jade.cleaned_this_second": "s/%s :pɹɐzɐɥ pǝuɐǝןƆ", "gtceu.jade.energy_stored": "∩Ǝ %d / %d", + "gtceu.jade.fluid_use": "ʇ/ᗺɯ %s", "gtceu.jade.progress_computation": "∩MƆ %s / %s", "gtceu.jade.progress_sec": "s %s / %s", "gtceu.jade.progress_tick": "ʇ %s / %s", @@ -3592,6 +3597,10 @@ "gtceu.universal.clear_nbt_recipe.tooltip": "¡sʇuǝʇuoɔ ןןɐ ʎoɹʇsǝp ןןıʍ sıɥ⟘ɔ§", "gtceu.universal.kiloliters": "ᗺ %s", "gtceu.universal.liters": "ᗺɯ %s", + "gtceu.universal.padded_parentheses": " )%s( ", + "gtceu.universal.padded_spaced_parentheses": " ) %s ( ", + "gtceu.universal.parentheses": ")%s(", + "gtceu.universal.spaced_parentheses": ") %s (", "gtceu.universal.tooltip.amperage_in": "Ɐ%dɟ§ :NI ǝbɐɹǝdɯⱯǝ§", "gtceu.universal.tooltip.amperage_in_out": "Ɐ%dɟ§ :⟘∩O/NI ǝbɐɹǝdɯⱯǝ§", "gtceu.universal.tooltip.amperage_in_out_till": "Ɐ%dɟ§ :oʇ dn ⟘∩O/NI ǝbɐɹǝdɯⱯǝ§", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 8f38f50ea8b..14752c93dd9 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2309,6 +2309,8 @@ "gtceu.gui.content.count_range": "%s-%sx", "gtceu.gui.content.fluid_range": "%s-%smB", "gtceu.gui.content.per_tick": "§aConsumed/Produced Per Tick§r", + "gtceu.gui.content.range": "%s-%s", + "gtceu.gui.content.times_item": "x %s", "gtceu.gui.content.tips.per_second_short": "§a/second§r", "gtceu.gui.content.tips.per_tick_short": "§a/tick§r", "gtceu.gui.content.units.per_second": "/s", @@ -2393,8 +2395,11 @@ "gtceu.item_filter.footer": "§eClick with item to override", "gtceu.item_list.item_stored": "§7Stored: %d", "gtceu.item_pipe.priority": "§9Priority: §f%d", + "gtceu.jade.amperage_use": "%s A", + "gtceu.jade.at": " @ ", "gtceu.jade.cleaned_this_second": "Cleaned hazard: %s/s", "gtceu.jade.energy_stored": "%d / %d EU", + "gtceu.jade.fluid_use": "%s mB/t", "gtceu.jade.progress_computation": "%s / %s CWU", "gtceu.jade.progress_sec": "%s / %s s", "gtceu.jade.progress_tick": "%s / %s t", @@ -3592,6 +3597,10 @@ "gtceu.universal.clear_nbt_recipe.tooltip": "§cThis will destroy all contents!", "gtceu.universal.kiloliters": "%s B", "gtceu.universal.liters": "%s mB", + "gtceu.universal.padded_parentheses": " (%s) ", + "gtceu.universal.padded_spaced_parentheses": " ( %s ) ", + "gtceu.universal.parentheses": "(%s)", + "gtceu.universal.spaced_parentheses": "( %s )", "gtceu.universal.tooltip.amperage_in": "§eAmperage IN: §f%dA", "gtceu.universal.tooltip.amperage_in_out": "§eAmperage IN/OUT: §f%dA", "gtceu.universal.tooltip.amperage_in_out_till": "§eAmperage IN/OUT up to: §f%dA", diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java index 840c55d4dda..f53652dc788 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java @@ -97,6 +97,9 @@ private static void initWailaLikeLang(RegistrateLangProvider provider) { provider.add("gtceu.jade.progress_sec", "%s / %s s"); provider.add("gtceu.jade.progress_tick", "%s / %s t"); provider.add("gtceu.jade.cleaned_this_second", "Cleaned hazard: %s/s"); + provider.add("gtceu.jade.fluid_use", "%s mB/t"); + provider.add("gtceu.jade.amperage_use", "%s A"); + provider.add("gtceu.jade.at", " @ "); provider.add("gtceu.top.energy_stored", " / %d EU"); provider.add("gtceu.top.progress_computation", " / %s CWU"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 1725a9250f3..d15b1266041 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -927,6 +927,10 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.part_sharing.enabled", "Multiblock Sharing §aEnabled"); provider.add("gtceu.universal.liters", "%s mB"); provider.add("gtceu.universal.kiloliters", "%s B"); + provider.add("gtceu.universal.parentheses", "(%s)"); + provider.add("gtceu.universal.spaced_parentheses", "( %s )"); + provider.add("gtceu.universal.padded_parentheses", " (%s) "); + provider.add("gtceu.universal.padded_spaced_parentheses", " ( %s ) "); provider.add("gtceu.universal.tooltip.voltage_in", "§aVoltage IN: §f%d EU/t (%s§f)"); provider.add("gtceu.universal.tooltip.max_voltage_in", "§aMax Voltage IN: §f%d (%s§f)"); provider.add("gtceu.universal.tooltip.voltage_out", "§aVoltage OUT: §f%d EU/t (%s§f)"); @@ -1326,6 +1330,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.content.chance_boosted_logic", "Chance at Tier: %s%% (%s)"); provider.add("gtceu.gui.content.count_range", "%s-%sx"); provider.add("gtceu.gui.content.fluid_range", "%s-%smB"); + provider.add("gtceu.gui.content.range", "%s-%s"); + provider.add("gtceu.gui.content.times_item", "x %s"); provider.add("gtceu.chance_logic.or", "OR"); provider.add("gtceu.chance_logic.and", "AND"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java index 0635b79277f..fe19983dbdb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeLogicProvider.java @@ -49,7 +49,7 @@ protected void write(CompoundTag data, RecipeLogic capability) { var EUt = RecipeHelper.getRealEUtWithIO(recipe); recipeInfo.putLong("EUt", EUt.getTotalEU()); - recipeInfo.putLong("amperage", EUt.amperage()); + recipeInfo.putLong("voltage", EUt.voltage()); recipeInfo.putBoolean("isInput", EUt.isInput()); } @@ -65,7 +65,6 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, var recipeInfo = capData.getCompound("Recipe"); if (!recipeInfo.isEmpty()) { var EUt = recipeInfo.getLong("EUt"); - var amperage = recipeInfo.getLong("amperage"); var isInput = recipeInfo.getBoolean("isInput"); boolean isSteam = false; @@ -81,17 +80,21 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, } if (EUt > 0) { - MutableComponent text = Component.literal(FormattingUtil.formatNumbers(EUt)); + MutableComponent text; if (isSteam) { - text = text.withStyle(ChatFormatting.GREEN) - .append(Component.literal(" mB/t").withStyle(ChatFormatting.RESET)); + text = Component.translatable("gtceu.jade.fluid_use", FormattingUtil.formatNumbers(EUt)) + .withStyle(ChatFormatting.GREEN); } else { - var tier = GTUtil.getOCTierByVoltage(EUt / amperage); - - text = text.withStyle(ChatFormatting.RED) - .append(Component.literal(" EU/t ").withStyle(ChatFormatting.RESET) - .append(Component.literal("(").withStyle(ChatFormatting.GREEN))); + var voltage = recipeInfo.getLong("voltage"); + var tier = GTUtil.getTierByVoltage(voltage); + float minAmperage = (float) EUt / GTValues.V[tier]; + + text = Component + .translatable("gtceu.jade.amperage_use", + FormattingUtil.formatNumber2Places(minAmperage)) + .withStyle(ChatFormatting.RED) + .append(Component.translatable("gtceu.jade.at").withStyle(ChatFormatting.GREEN)); if (tier < GTValues.TIER_COUNT) { text = text.append(Component.literal(GTValues.VNF[tier]) .withStyle(style -> style.withColor(GTValues.VC[tier]))); @@ -104,7 +107,10 @@ protected void addTooltip(CompoundTag capData, ITooltip tooltip, Player player, .append(FormattingUtil.formatNumbers(speed)))); } - text = text.append(Component.literal(")").withStyle(ChatFormatting.GREEN)); + text.append(Component.translatable("gtceu.universal.padded_parentheses", + (Component.translatable("gtceu.recipe.eu.total", + FormattingUtil.formatNumbers(EUt)))) + .withStyle(ChatFormatting.WHITE)); } if (isInput) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java index 97c1003e080..198f09709eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java @@ -183,15 +183,15 @@ private void addItemTooltips(ITooltip iTooltip, List outputItems) { iTooltip.add(helper.smallItem(item)); MutableComponent text = CommonComponents.space(); if (itemOutput instanceof IntProviderIngredient provider) { - text.append(String.valueOf(provider.getCountProvider().getMinValue())) - .append("-") - .append(String.valueOf(provider.getCountProvider().getMaxValue())); + text = text.append(Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))); } else { text.append(String.valueOf(count)); } - text.append("× ") - .append(getItemName(item)) - .withStyle(ChatFormatting.WHITE); + text.append(Component.translatable("gtceu.gui.content.times_item", + getItemName(item)) + .withStyle(ChatFormatting.WHITE)); iTooltip.append(text); } } @@ -203,11 +203,9 @@ private void addFluidTooltips(ITooltip iTooltip, List outputFlu iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput.getStacks()[0]))); MutableComponent text = CommonComponents.space(); if (fluidOutput instanceof IntProviderFluidIngredient provider) { - text.append(FluidTextHelper.getUnicodeMillibuckets( - provider.getCountProvider().getMinValue(), true)) - .append("-") - .append(FluidTextHelper.getUnicodeMillibuckets( - provider.getCountProvider().getMaxValue(), true)); + text.append(Component.translatable("gtceu.gui.content.range", + FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMinValue(), true), + FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMaxValue(), true))); } else { text.append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java index 0f01adf4d54..9782adc8d4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeLogicInfoProvider.java @@ -55,15 +55,23 @@ protected void addProbeInfo(RecipeLogic capability, IProbeInfo probeInfo, Player if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { var machine = machineBlockEntity.getMetaMachine(); if (machine instanceof SteamMachine) { - text = Component.literal(formatted + " mB/t").withStyle(ChatFormatting.GREEN); + text = Component.translatable("gtceu.jade.fluid_use", formatted) + .withStyle(ChatFormatting.GREEN); } } if (text == null) { - text = Component.literal(formatted + " EU/t ").withStyle(ChatFormatting.RED) - .append(Component.literal("(").withStyle(ChatFormatting.GREEN)) + var tier = GTUtil.getTierByVoltage(EUt.voltage()); + String minAmperage = FormattingUtil + .formatNumber2Places((float) (EUt.getTotalEU()) / GTValues.V[tier]) + TextStyleClass.INFO; + + text = Component.translatable("gtceu.jade.amperage_use", minAmperage).withStyle(ChatFormatting.RED) + .append(Component.translatable("gtceu.jade.at").withStyle(ChatFormatting.GREEN)) .append(GTValues.VNF[GTUtil.getTierByVoltage(EUt.voltage())]) - .append(Component.literal(")").withStyle(ChatFormatting.GREEN)); + .append(Component.translatable("gtceu.universal.padded_parentheses", + (Component.translatable("gtceu.recipe.eu.total", + formatted))) + .withStyle(ChatFormatting.WHITE)); } if (EUt.isInput()) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java index a636e708dc0..2e40bfc92e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java @@ -109,8 +109,9 @@ private void addItemInfo(IProbeInfo verticalPane, List outputItems) .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); String spacer = " "; if (itemOutput instanceof IntProviderIngredient provider) { - spacer += provider.getCountProvider().getMinValue() + "-" + - provider.getCountProvider().getMaxValue() + " "; + spacer += (Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))) + " "; provider.setItemStacks(null); // no roll provider.setSampledCount(1); } @@ -130,8 +131,9 @@ private void addFluidInfo(IProbeInfo verticalPane, List outputF .horizontal(verticalPane.defaultLayoutStyle().alignment(ElementAlignment.ALIGN_CENTER)); String spacer = " "; if (fluidOutput instanceof IntProviderFluidIngredient provider) { - spacer += provider.getCountProvider().getMinValue() + "-" + - provider.getCountProvider().getMaxValue() + " "; + spacer += (Component.translatable("gtceu.gui.content.range", + String.valueOf(provider.getCountProvider().getMinValue()), + String.valueOf(provider.getCountProvider().getMaxValue()))) + " "; fluidOutput.setAmount(provider.getCountProvider().getMaxValue()); // no roll } horizontalPane.element(new FluidStackElement(fluidOutput.getStacks()[0], From c745c597e37fff70e113993b85a449786bdd4ace Mon Sep 17 00:00:00 2001 From: Mikerooni <139889766+mikerooni@users.noreply.github.com> Date: Tue, 22 Jul 2025 10:20:54 +0200 Subject: [PATCH 215/270] Add auto-autput toggles to machine main pages (#3523) --- .../api/machine/SimpleTieredMachine.java | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index 26c75e08657..d2c2cc1e4e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -7,6 +7,8 @@ import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; import com.gregtechceu.gtceu.api.gui.editor.EditableUI; import com.gregtechceu.gtceu.api.gui.fancy.ConfiguratorPanel; +import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; +import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfiguratorButton; import com.gregtechceu.gtceu.api.gui.widget.GhostCircuitSlotWidget; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; import com.gregtechceu.gtceu.api.item.tool.GTToolType; @@ -23,8 +25,10 @@ import com.gregtechceu.gtceu.data.lang.LangHandler; import com.gregtechceu.gtceu.utils.GTTransferUtils; +import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.gui.util.ClickData; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.ISubscription; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -53,7 +57,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.function.BiFunction; +import java.util.function.*; import javax.annotation.ParametersAreNonnullByDefault; @@ -313,11 +317,47 @@ public void onMachineRemoved() { @Override public void attachConfigurators(ConfiguratorPanel configuratorPanel) { IFancyUIMachine.super.attachConfigurators(configuratorPanel); + + if (hasAutoOutputFluid()) { + configuratorPanel.attachConfigurators(createAutoOutputFluidConfigurator()); + } + if (hasAutoOutputItem()) { + configuratorPanel.attachConfigurators(createAutoOutputItemConfigurator()); + } + if (isCircuitSlotEnabled()) { configuratorPanel.attachConfigurators(new CircuitFancyConfigurator(circuitInventory.storage)); } } + private IFancyConfigurator createAutoOutputFluidConfigurator() { + return createAutoOutputConfigurator( + GuiTextures.IO_CONFIG_FLUID_MODES_BUTTON, + this::isAutoOutputFluids, + (cd, nextState) -> this.setAutoOutputFluids(nextState)); + } + + private IFancyConfigurator createAutoOutputItemConfigurator() { + return createAutoOutputConfigurator( + GuiTextures.IO_CONFIG_ITEM_MODES_BUTTON, + this::isAutoOutputItems, + (cd, nextState) -> this.setAutoOutputItems(nextState)); + } + + private IFancyConfigurator createAutoOutputConfigurator(ResourceTexture modesButtonTexture, + BooleanSupplier stateSupplier, + BiConsumer onToggle) { + return new IFancyConfiguratorButton.Toggle( + new GuiTextureGroup( + GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0, 1, 0.5), + modesButtonTexture.getSubTexture(0, 1 / 3f, 1, 1 / 3f)), + new GuiTextureGroup( + GuiTextures.TOGGLE_BUTTON_BACK.getSubTexture(0, 0.5, 1, 0.5), + modesButtonTexture.getSubTexture(0, 2 / 3f, 1, 1 / 3f)), + stateSupplier, + onToggle); + } + @SuppressWarnings("UnstableApiUsage") public static BiFunction EDITABLE_UI_CREATOR = Util .memoize((path, recipeType) -> new EditableMachineUI("simple", path, () -> { @@ -361,7 +401,7 @@ public void attachConfigurators(ConfiguratorPanel configuratorPanel) { })); /** - * Create an energy bar widget. + * Create a battery slot widget. */ protected static EditableUI createBatterySlot() { return new EditableUI<>("battery_slot", SlotWidget.class, () -> { @@ -378,7 +418,7 @@ protected static EditableUI createBatterySlot() } /** - * Create an energy bar widget. + * Create a ghost circuit slot widget. */ protected static EditableUI createCircuitConfigurator() { return new EditableUI<>("circuit_configurator", GhostCircuitSlotWidget.class, () -> { From c99abdcda719e898bb0aafab38614b0db44e0910 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Tue, 22 Jul 2025 02:21:11 -0600 Subject: [PATCH 216/270] Change furnaces to blast furnaces in EBF recipe (#3511) --- .../data/recipe/misc/MetaTileEntityLoader.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index e4c3284a629..c871f64d3c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -558,19 +558,25 @@ public static void init(Consumer provider) { 'R', new MaterialEntry(TagPrefix.rotor, GTMaterials.Iron), 'H', GTBlocks.BRONZE_BRICKS_HULL, 'F', Items.FLINT_AND_STEEL); + if (!ConfigHolder.INSTANCE.recipes.hardMultiRecipes) { VanillaRecipeHelper.addShapedRecipe(provider, true, "electric_blast_furnace", - GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), "FFF", "CMC", "WCW", 'M', - GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'F', Blocks.FURNACE.asItem(), 'C', - CustomTags.LV_CIRCUITS, + GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), + "FFF", "CMC", "WCW", + 'M', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), + 'F', Blocks.BLAST_FURNACE.asItem(), + 'C', CustomTags.LV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); } else { VanillaRecipeHelper.addShapedRecipe(provider, true, "electric_blast_furnace", - GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), "FFF", "CMC", "WCW", 'M', - GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'F', GTMachines.ELECTRIC_FURNACE[LV].asStack(), 'C', - CustomTags.LV_CIRCUITS, + GTMultiMachines.ELECTRIC_BLAST_FURNACE.asStack(), + "FFF", "CMC", "WCW", + 'M', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), + 'F', GTMachines.ELECTRIC_FURNACE[LV].asStack(), + 'C', CustomTags.LV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); } + VanillaRecipeHelper.addShapedRecipe(provider, true, "vacuum_freezer", GTMultiMachines.VACUUM_FREEZER.asStack(), "PPP", "CMC", "WCW", 'M', GTBlocks.CASING_ALUMINIUM_FROSTPROOF.asStack(), 'P', GTItems.ELECTRIC_PUMP_HV, 'C', CustomTags.EV_CIRCUITS, 'W', new MaterialEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); From 716946f25a90a1497c5c3bd8d0e529cedf7a161c Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Tue, 22 Jul 2025 05:55:34 -0400 Subject: [PATCH 217/270] Revert "Add overloads without tiered chances for chanced in/out builder functions" (#3528) --- .../data/recipe/builder/GTRecipeBuilder.java | 89 ------------ .../recipe/generated/OreRecipeHandler.java | 60 ++++---- .../data/recipe/misc/CircuitRecipes.java | 8 +- .../data/recipe/misc/MachineRecipeLoader.java | 54 +++---- .../data/recipe/misc/MiscRecipeLoader.java | 10 +- .../recipe/misc/VanillaStandardRecipes.java | 12 +- .../data/recipe/misc/WoodMachineRecipes.java | 6 +- .../chemistry/DistillationRecipes.java | 14 +- .../chemistry/GemSlurryRecipes.java | 20 +-- .../chemistry/GrowthMediumRecipes.java | 4 +- .../serialized/chemistry/NaquadahRecipes.java | 4 +- .../chemistry/PetrochemRecipes.java | 28 ++-- .../serialized/chemistry/ReactorRecipes.java | 16 +-- .../chemistry/SeparationRecipes.java | 134 +++++++++--------- .../serialized/chemistry/TitaniumRecipes.java | 6 +- .../kjs/recipe/GTRecipeSchema.java | 76 ---------- 16 files changed, 189 insertions(+), 352 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index a3d762fc156..d330dc1b671 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -689,14 +689,6 @@ public GTRecipeBuilder circuitMeta(int configuration) { return notConsumable(IntCircuitIngredient.of(configuration)); } - public GTRecipeBuilder chancedInput(ItemStack stack, int chance) { - return chancedInput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -711,14 +703,6 @@ public GTRecipeBuilder chancedInput(ItemStack stack, int chance, int tierChanceB return this; } - public GTRecipeBuilder chancedInput(FluidStack stack, int chance) { - return chancedInput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -733,14 +717,6 @@ public GTRecipeBuilder chancedInput(FluidStack stack, int chance, int tierChance return this; } - public GTRecipeBuilder chancedOutput(ItemStack stack, int chance) { - return chancedOutput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -755,14 +731,6 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, int chance, int tierChance return this; } - public GTRecipeBuilder chancedOutput(FluidStack stack, int chance) { - return chancedOutput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanceBoost) { if (checkChanceAndPrintError(chance)) { return this; @@ -777,31 +745,14 @@ public GTRecipeBuilder chancedOutput(FluidStack stack, int chance, int tierChanc return this; } - public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int chance) { - return chancedOutput(ChemicalHelper.get(tag, mat), chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(tag, mat), chance, tierChanceBoost); } - // Overload without tierChanceBoost would conflict public GTRecipeBuilder chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(tag, mat, count), chance, tierChanceBoost); } - public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction) { - return chancedOutput(stack, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; @@ -854,63 +805,23 @@ public GTRecipeBuilder chancedOutput(ItemStack stack, String fraction, int tierC return this; } - public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, int count, String fraction) { - return chancedOutput(ChemicalHelper.get(prefix, material, count), fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { return chancedOutput(ChemicalHelper.get(prefix, material, count), fraction, tierChanceBoost); } - public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, String fraction) { - return chancedOutput(prefix, material, 1, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { return chancedOutput(prefix, material, 1, fraction, tierChanceBoost); } - public GTRecipeBuilder chancedOutput(Item item, int count, String fraction) { - return chancedOutput(new ItemStack(item, count), fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(Item item, int count, String fraction, int tierChanceBoost) { return chancedOutput(new ItemStack(item, count), fraction, tierChanceBoost); } - public GTRecipeBuilder chancedOutput(Item item, String fraction) { - return chancedOutput(item, 1, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedOutput(Item item, String fraction, int tierChanceBoost) { return chancedOutput(item, 1, fraction, tierChanceBoost); } - public GTRecipeBuilder chancedFluidOutput(FluidStack stack, String fraction) { - return chancedFluidOutput(stack, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeBuilder chancedFluidOutput(FluidStack stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index e92117aa5af..956c49541bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -125,7 +125,7 @@ private static void processOre(@NotNull Consumer provider, @NotN .inputItems(IntersectionIngredient.of(Ingredient.of(orePrefix.getItemTags(material)[0]), Ingredient.of(orePrefix.getItemParentTags()[0]))) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2 * oreTypeMultiplier)) - .chancedOutput(byproductStack, 1400) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -133,7 +133,7 @@ private static void processOre(@NotNull Consumer provider, @NotN for (MaterialStack secondaryMaterial : orePrefix.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -202,7 +202,7 @@ private static void processRawOre(@NotNull Consumer provider, @N .recipeBuilder("macerate_raw_" + material.getName() + "_ore_to_crushed_ore") .inputItems(rawOre, material) .outputItems(crushedStack.copyWithCount(property.getOreMultiplier() * 2)) - .chancedOutput(byproductStack, 1400) + .chancedOutput(byproductStack, 1400, 0) .EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .duration(400); @@ -210,7 +210,7 @@ private static void processRawOre(@NotNull Consumer provider, @N for (MaterialStack secondaryMaterial : ore.secondaryMaterials()) { if (secondaryMaterial.material().hasProperty(PropertyKey.DUST)) { ItemStack dustStack = ChemicalHelper.getGem(secondaryMaterial); - builder.chancedOutput(dustStack, 6700); + builder.chancedOutput(dustStack, 6700, 0); } } @@ -272,7 +272,8 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .outputItems(impureDustStack) .duration(400).EUt(2) - .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400) + .chancedOutput(ChemicalHelper.get(dust, byproductMaterial, property.getByProductMultiplier()), 1400, + 0) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -295,7 +296,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputFluids(Water.getFluid(1000)) .circuitMeta(1) .outputItems(crushedPurifiedOre) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); @@ -303,7 +304,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .inputFluids(DistilledWater.getFluid(100)) .outputItems(crushedPurifiedOre) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) .outputItems(TagPrefix.dust, GTMaterials.Stone) .duration(200) .save(provider); @@ -312,7 +313,7 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .outputItems(crushedCentrifugedOre) .chancedOutput(TagPrefix.dust, property.getOreByProduct(1, material), property.getByProductMultiplier(), - "1/3") + "1/3", 0) .outputItems(TagPrefix.dust, GTMaterials.Stone) .save(provider); @@ -323,8 +324,9 @@ private static void processCrushedOre(@NotNull Consumer provider .inputItems(crushed, material) .inputFluids(washedInTuple.first().getFluid(washedInTuple.secondInt())) .outputItems(crushedPurifiedOre) - .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000) - .chancedOutput(ChemicalHelper.get(dust, Stone), 4000) + .chancedOutput(ChemicalHelper.get(dust, washingByproduct, property.getByProductMultiplier()), 7000, + 0) + .chancedOutput(ChemicalHelper.get(dust, Stone), 4000, 0) .duration(200).EUt(VA[LV]) .category(GTRecipeCategories.ORE_BATHING) .save(provider); @@ -355,7 +357,7 @@ private static void processCrushedCentrifuged(@NotNull Consumer MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_refined_ore_to_dust") .inputItems(crushedRefined, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -390,7 +392,7 @@ private static void processCrushedPurified(@NotNull Consumer pro MACERATOR_RECIPES.recipeBuilder("macerate_" + material.getName() + "_crushed_ore_to_dust") .inputItems(crushedPurified, material) .outputItems(dustStack) - .chancedOutput(byproductStack, 1400) + .chancedOutput(byproductStack, 1400, 0) .duration(400).EUt(2) .category(GTRecipeCategories.ORE_CRUSHING) .save(provider); @@ -404,7 +406,7 @@ private static void processCrushedPurified(@NotNull Consumer pro .recipeBuilder("centrifuge_" + material.getName() + "_purified_ore_to_refined_ore") .inputItems(crushedPurified, material) .outputItems(crushedCentrifugedStack) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3") + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/3", 0) .save(provider); } @@ -419,32 +421,32 @@ private static void processCrushedPurified(@NotNull Consumer pro GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 500) - .chancedOutput(flawlessStack, 1500) - .chancedOutput(gemStack, 5000) - .chancedOutput(dustStack, 2500) + .chancedOutput(exquisiteStack, 500, 0) + .chancedOutput(flawlessStack, 1500, 0) + .chancedOutput(gemStack, 5000, 0) + .chancedOutput(dustStack, 2500, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2000); + builder.chancedOutput(flawedStack, 2000, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3000); + builder.chancedOutput(chippedStack, 3000, 0); builder.save(provider); } else { GTRecipeBuilder builder = SIFTER_RECIPES .recipeBuilder("sift_" + material.getName() + "_purified_ore_to_gems") .inputItems(crushedPurified, material) - .chancedOutput(exquisiteStack, 300) - .chancedOutput(flawlessStack, 1000) - .chancedOutput(gemStack, 3500) - .chancedOutput(dustStack, 5000) + .chancedOutput(exquisiteStack, 300, 0) + .chancedOutput(flawlessStack, 1000, 0) + .chancedOutput(gemStack, 3500, 0) + .chancedOutput(dustStack, 5000, 0) .duration(400).EUt(16); if (!flawedStack.isEmpty()) - builder.chancedOutput(flawedStack, 2500); + builder.chancedOutput(flawedStack, 2500, 0); if (!chippedStack.isEmpty()) - builder.chancedOutput(chippedStack, 3500); + builder.chancedOutput(chippedStack, 3500, 0); builder.save(provider); } @@ -468,7 +470,7 @@ private static void processDirtyDust(@NotNull Consumer provider, .duration((int) (material.getMass() * 4)).EUt(24); if (byproduct.hasProperty(PropertyKey.DUST)) { - builder.chancedOutput(TagPrefix.dust, byproduct, "1/9"); + builder.chancedOutput(TagPrefix.dust, byproduct, "1/9", 0); } else { builder.outputFluids(byproduct.getFluid(L / 9)); } @@ -506,8 +508,8 @@ private static void processPureDust(@NotNull Consumer provider, ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("separate_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000) - .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000) + .chancedOutput(TagPrefix.dust, separatedMaterial.get(0), 1000, 0) + .chancedOutput(separatedStack2, prefix == TagPrefix.dust ? 500 : 2000, 0) .duration(200).EUt(24) .save(provider); } @@ -515,7 +517,7 @@ private static void processPureDust(@NotNull Consumer provider, CENTRIFUGE_RECIPES.recipeBuilder("centrifuge_" + material.getName() + "_pure_dust_to_dust") .inputItems(dustPure, material) .outputItems(dustStack) - .chancedOutput(TagPrefix.dust, byproductMaterial, "1/9") + .chancedOutput(TagPrefix.dust, byproductMaterial, "1/9", 0) .duration(100) .EUt(5) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java index d61f4df58fe..ea1ca537eff 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/CircuitRecipes.java @@ -690,14 +690,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_emerald") .inputItems(gemExquisite, Emerald) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_olivine") .inputItems(gemExquisite, Olivine) .inputFluids(Europium.getFluid(L / 9)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 2500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(320).save(provider); @@ -716,14 +716,14 @@ private static void componentRecipes(Consumer provider) { AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_mutagen") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(Mutagen.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); AUTOCLAVE_RECIPES.recipeBuilder("raw_crystal_chip_from_part_bacterial_sludge") .inputItems(RAW_CRYSTAL_CHIP_PART) .inputFluids(BacterialSludge.getFluid(250)) - .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500) + .chancedOutput(RAW_CRYSTAL_CHIP.asStack(), 8500, 0) .cleanroom(CleanroomType.CLEANROOM) .duration(12000).EUt(VA[HV]).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index 22703ce5667..3e9d018c616 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -203,10 +203,10 @@ private static void registerPrimitiveBlastFurnaceRecipes(Consumer provider) private static void registerBlastFurnaceRecipes(Consumer provider) { BLAST_RECIPES.recipeBuilder("aluminium_from_ruby_dust").duration(400).EUt(100).inputItems(dust, Ruby) - .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9").blastFurnaceTemp(1200) + .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0).blastFurnaceTemp(1200) .save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_ruby_gem").duration(320).EUt(100).inputItems(gem, Ruby) - .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9").blastFurnaceTemp(1200) + .outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0).blastFurnaceTemp(1200) .save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_green_sapphire_dust").duration(400).EUt(100) - .inputItems(dust, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9") + .inputItems(dust, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_green_sapphire_gem").duration(320).EUt(100) - .inputItems(gem, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9") + .inputItems(gem, GreenSapphire).outputItems(nugget, Aluminium, 3).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_dust").duration(400).EUt(100).inputItems(dust, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("aluminium_from_sapphire_gem").duration(320).EUt(100).inputItems(gem, Sapphire) .outputItems(nugget, Aluminium, 3).blastFurnaceTemp(1200).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_iron").duration(500).EUt(VA[MV]).inputItems(ingot, Iron) - .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9") + .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); BLAST_RECIPES.recipeBuilder("steel_from_wrought_iron").duration(300).EUt(VA[MV]).inputItems(ingot, WroughtIron) - .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9") + .inputFluids(Oxygen.getFluid(200)).outputItems(ingot, Steel).chancedOutput(dust, Ash, "1/9", 0) .blastFurnaceTemp(1000).save(provider); BLAST_RECIPES.recipeBuilder("tempered_glass_blasting") @@ -1131,7 +1131,7 @@ private static void registerBlastFurnaceMetallurgyRecipes(Consumer provider, .inputItems(dust, inputMaterial) .inputFluids(Oxygen.getFluid(3000)) .outputItems(dust, outputMaterial) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(SulfurDioxide.getFluid(sulfurDioxideAmount)) .save(provider); } @@ -1217,14 +1217,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_end_stone") .inputItems(new ItemStack(Blocks.END_STONE)) .outputItems(dust, Endstone) - .chancedOutput(dust, Tungstate, 330) + .chancedOutput(dust, Tungstate, 330, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_netherrack") .inputItems(new ItemStack(Blocks.NETHERRACK)) .outputItems(dust, Netherrack) - .chancedOutput(nugget, Gold, 750) + .chancedOutput(nugget, Gold, 750, 0) .duration(150).EUt(2) .save(provider); @@ -1254,56 +1254,56 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_marble") .inputItems(rock, Marble) .outputItems(dust, Marble) - .chancedOutput(dust, Marble, 1500) + .chancedOutput(dust, Marble, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_basalt") .inputItems(Blocks.BASALT.asItem()) .outputItems(dust, Basalt) - .chancedOutput(dust, Basalt, 1500) + .chancedOutput(dust, Basalt, 1500, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_deepslate") .inputItems(Blocks.DEEPSLATE.asItem()) .outputItems(dust, Deepslate) - .chancedOutput(dust, Thorium, 150) + .chancedOutput(dust, Thorium, 150, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_red_granite") .inputItems(rock, GraniteRed) .outputItems(dust, GraniteRed) - .chancedOutput(dust, Uranium238, 25) + .chancedOutput(dust, Uranium238, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_andesite") .inputItems(Blocks.ANDESITE.asItem()) .outputItems(dust, Andesite) - .chancedOutput(dust, Stone, 25) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_diorite") .inputItems(Blocks.DIORITE.asItem()) .outputItems(dust, Diorite) - .chancedOutput(dust, Stone, 25) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_granite") .inputItems(Blocks.GRANITE.asItem()) .outputItems(dust, Granite) - .chancedOutput(dust, Stone, 25) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_calcite") .inputItems(Blocks.CALCITE.asItem()) .outputItems(dust, Calcite) - .chancedOutput(dust, Stone, 25) + .chancedOutput(dust, Stone, 25, 0) .duration(150).EUt(2) .save(provider); @@ -1323,14 +1323,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_pork_chop") .inputItems(new ItemStack(Items.PORKCHOP)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 6500) + .chancedOutput(dust, Meat, 6500, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_fish") .inputItems(ItemTags.FISHES) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000) + .chancedOutput(dust, Meat, 5000, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); @@ -1343,14 +1343,14 @@ private static void registerRecyclingRecipes(Consumer provider) MACERATOR_RECIPES.recipeBuilder("macerate_steak") .inputItems(new ItemStack(Items.BEEF)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000) + .chancedOutput(dust, Meat, 5000, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); MACERATOR_RECIPES.recipeBuilder("macerate_rabbit") .inputItems(new ItemStack(Items.RABBIT)) .outputItems(dust, Meat) - .chancedOutput(dust, Meat, 5000) + .chancedOutput(dust, Meat, 5000, 0) .outputItems(dustTiny, Bone) .duration(102).EUt(2).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java index 1e82108625f..b7fa1679e3f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MiscRecipeLoader.java @@ -70,11 +70,11 @@ public static void init(Consumer provider) { SIFTER_RECIPES.recipeBuilder("gravel_sifting").duration(100).EUt(16) .inputItems(new ItemStack(Blocks.GRAVEL)) .outputItems(gem, Flint) - .chancedOutput(gem, Flint, 9000) - .chancedOutput(gem, Flint, 8000) - .chancedOutput(gem, Flint, 6000) - .chancedOutput(gem, Flint, "1/3") - .chancedOutput(gem, Flint, 2500) + .chancedOutput(gem, Flint, 9000, 0) + .chancedOutput(gem, Flint, 8000, 0) + .chancedOutput(gem, Flint, 6000, 0) + .chancedOutput(gem, Flint, "1/3", 0) + .chancedOutput(gem, Flint, 2500, 0) .save(provider); PACKER_RECIPES.recipeBuilder("matchbox") diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java index 869029f0229..7543739d90e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/VanillaStandardRecipes.java @@ -278,7 +278,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("gravel_to_flint") .inputItems(new ItemStack(Blocks.GRAVEL, 1)) .outputItems(dust, Stone) - .chancedOutput(new ItemStack(Items.FLINT), 3300) + .chancedOutput(new ItemStack(Items.FLINT), 3300, 0) .duration(400).EUt(2) .save(provider); @@ -345,7 +345,7 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_melon_block") .inputItems(new ItemStack(Blocks.MELON)) .outputItems(new ItemStack(Items.MELON_SLICE, 8)) - .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500) + .chancedOutput(new ItemStack(Items.MELON_SEEDS), 8500, 0) .duration(400).EUt(2) .save(provider); @@ -364,9 +364,9 @@ private static void smashingRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_wool") .inputItems(ItemTags.WOOL) .outputItems(new ItemStack(Items.STRING)) - .chancedOutput(new ItemStack(Items.STRING), 9000) - .chancedOutput(new ItemStack(Items.STRING), 5000) - .chancedOutput(new ItemStack(Items.STRING), 2000) + .chancedOutput(new ItemStack(Items.STRING), 9000, 0) + .chancedOutput(new ItemStack(Items.STRING), 5000, 0) + .chancedOutput(new ItemStack(Items.STRING), 2000, 0) .duration(200).EUt(2) .save(provider); } @@ -378,7 +378,7 @@ private static void woodRecipes(Consumer provider) { MACERATOR_RECIPES.recipeBuilder("macerate_logs") .inputItems(ItemTags.LOGS) .outputItems(dust, Wood, 6) - .chancedOutput(dust, Wood, 8500) + .chancedOutput(dust, Wood, 8500, 0) .duration(150).EUt(2) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java index e2809b304a8..ff506e8778a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/WoodMachineRecipes.java @@ -1215,21 +1215,21 @@ private static void registerPyrolyseOvenRecipes(Consumer provide // COAL TAR ============================================ PYROLYSE_RECIPES.recipeBuilder("charcoal_to_coal_tar").circuitMeta(8) .inputItems(Items.CHARCOAL, 32) - .chancedOutput(dust, Ash, 5000) + .chancedOutput(dust, Ash, 5000, 0) .outputFluids(CoalTar.getFluid(1000)) .duration(640).EUt(64) .save(provider); PYROLYSE_RECIPES.recipeBuilder("coal_to_coal_tar").circuitMeta(8) .inputItems(Items.COAL, 12) - .chancedOutput(dust, DarkAsh, 5000) + .chancedOutput(dust, DarkAsh, 5000, 0) .outputFluids(CoalTar.getFluid(3000)) .duration(320).EUt(96) .save(provider); PYROLYSE_RECIPES.recipeBuilder("coke_to_coal_tar").circuitMeta(8) .inputItems(gem, Coke, 8) - .chancedOutput(dust, Ash, 7500) + .chancedOutput(dust, Ash, 7500, 0) .outputFluids(CoalTar.getFluid(4000)) .duration(320).EUt(96) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java index f5a5e2e987e..57e19cf9c37 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/DistillationRecipes.java @@ -33,7 +33,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_charcoal_byproducts") .inputFluids(CharcoalByproducts.getFluid(1000)) - .chancedOutput(dust, Charcoal, 2500) + .chancedOutput(dust, Charcoal, 2500, 0) .outputFluids(WoodTar.getFluid(250)) .outputFluids(WoodVinegar.getFluid(400)) .outputFluids(WoodGas.getFluid(250)) @@ -117,14 +117,14 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_biomass") .inputFluids(Biomass.getFluid(1000)) - .chancedOutput(dust, Wood, 5000) + .chancedOutput(dust, Wood, 5000, 0) .outputFluids(Ethanol.getFluid(600)) .outputFluids(Water.getFluid(300)) .duration(32).EUt(400).save(provider); DISTILLATION_RECIPES.recipeBuilder("distill_coal_gas") .inputFluids(CoalGas.getFluid(1000)) - .chancedOutput(dust, Coke, 2500) + .chancedOutput(dust, Coke, 2500, 0) .outputFluids(CoalTar.getFluid(200)) .outputFluids(Ammonia.getFluid(300)) .outputFluids(Ethylbenzene.getFluid(250)) @@ -134,7 +134,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_coal_tar") .inputFluids(CoalTar.getFluid(1000)) - .chancedOutput(dust, Coke, 2500) + .chancedOutput(dust, Coke, 2500, 0) .outputFluids(Naphthalene.getFluid(400)) .outputFluids(HydrogenSulfide.getFluid(300)) .outputFluids(Creosote.getFluid(200)) @@ -149,7 +149,7 @@ public static void init(Consumer provider) { .outputFluids(CarbonDioxide.getFluid(2500)) .outputFluids(Helium.getFluid(1000)) .outputFluids(Argon.getFluid(500)) - .chancedOutput(dust, Ice, 9000) + .chancedOutput(dust, Ice, 9000, 0) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[HV]).save(provider); @@ -161,7 +161,7 @@ public static void init(Consumer provider) { .outputFluids(SulfurDioxide.getFluid(7500)) .outputFluids(Helium3.getFluid(2500)) .outputFluids(Neon.getFluid(500)) - .chancedOutput(dust, Ash, 2250) + .chancedOutput(dust, Ash, 2250, 0) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[EV]).save(provider); @@ -174,7 +174,7 @@ public static void init(Consumer provider) { .outputFluids(Krypton.getFluid(1000)) .outputFluids(Xenon.getFluid(1000)) .outputFluids(Radon.getFluid(1000)) - .chancedOutput(dust, EnderPearl, 1000) + .chancedOutput(dust, EnderPearl, 1000, 0) .disableDistilleryRecipes(true) .duration(2000).EUt(VA[IV]).save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java index b77ef9c818e..801caa333a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GemSlurryRecipes.java @@ -24,9 +24,9 @@ public static void init(Consumer provider) { .inputFluids(RubySlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) .outputItems(dust, Chromium) - .chancedOutput(dust, Titanium, 200) - .chancedOutput(dust, Iron, 200) - .chancedOutput(dust, Vanadium, 200) + .chancedOutput(dust, Titanium, 200, 0) + .chancedOutput(dust, Iron, 200, 0) + .chancedOutput(dust, Vanadium, 200, 0) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); @@ -40,9 +40,9 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sapphire_slurry_centrifuging").duration(320).EUt(VA[HV]) .inputFluids(SapphireSlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) - .chancedOutput(dust, Titanium, 200) - .chancedOutput(dust, Iron, 200) - .chancedOutput(dust, Vanadium, 200) + .chancedOutput(dust, Titanium, 200, 0) + .chancedOutput(dust, Iron, 200, 0) + .chancedOutput(dust, Vanadium, 200, 0) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); @@ -56,10 +56,10 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("green_sapphire_slurry_centrifuging").duration(320).EUt(VA[HV]) .inputFluids(GreenSapphireSlurry.getFluid(3000)) .outputItems(dust, Aluminium, 2) - .chancedOutput(dust, Beryllium, 200) - .chancedOutput(dust, Titanium, 200) - .chancedOutput(dust, Iron, 200) - .chancedOutput(dust, Vanadium, 200) + .chancedOutput(dust, Beryllium, 200, 0) + .chancedOutput(dust, Titanium, 200, 0) + .chancedOutput(dust, Iron, 200, 0) + .chancedOutput(dust, Vanadium, 200, 0) .outputFluids(DilutedHydrochloricAcid.getFluid(2000)) .save(provider); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java index 0d668420870..4f79034e331 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/GrowthMediumRecipes.java @@ -23,8 +23,8 @@ public static void init(Consumer provider) { .inputItems(PLANT_BALL, 2) .outputItems(BIO_CHAFF) .outputItems(BIO_CHAFF) - .chancedOutput(BIO_CHAFF.asStack(), 5000) - .chancedOutput(BIO_CHAFF.asStack(), 2500) + .chancedOutput(BIO_CHAFF.asStack(), 5000, 0) + .chancedOutput(BIO_CHAFF.asStack(), 2500, 0) .save(provider); MACERATOR_RECIPES.recipeBuilder("dirt_from_bio_chaff").EUt(4).duration(300) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java index f6d7cd02a69..654cfcb03e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/NaquadahRecipes.java @@ -89,7 +89,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("enriched_naquadah_waste_separation").EUt(VA[HV]).duration(300) .inputFluids(EnrichedNaquadahWaste.getFluid(2000)) - .chancedOutput(dust, BariumSulfide, 5000) + .chancedOutput(dust, BariumSulfide, 5000, 0) .outputFluids(SulfuricAcid.getFluid(500)) .outputFluids(EnrichedNaquadahSolution.getFluid(250)) .outputFluids(NaquadriaSolution.getFluid(100)) @@ -126,7 +126,7 @@ public static void init(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("naquadria_waste_separation").EUt(VA[HV]).duration(300) .inputFluids(NaquadriaWaste.getFluid(2000)) - .chancedOutput(dust, GalliumSulfide, 5000) + .chancedOutput(dust, GalliumSulfide, 5000, 0) .outputFluids(SulfuricAcid.getFluid(500)) .outputFluids(NaquadriaSolution.getFluid(250)) .outputFluids(EnrichedNaquadahSolution.getFluid(100)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java index 738e978c7e1..69999459217 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/PetrochemRecipes.java @@ -123,7 +123,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_ethane") .inputFluids(SteamCrackedEthane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500) + .chancedOutput(dust, Carbon, 2500, 0) .outputFluids(Ethylene.getFluid(250)) .outputFluids(Methane.getFluid(1250)) .duration(120).EUt(VA[MV]).save(provider); @@ -148,7 +148,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_propene") .inputFluids(SteamCrackedPropene.getFluid(1000)) - .chancedOutput(dust, Carbon, 5000) + .chancedOutput(dust, Carbon, 5000, 0) .outputFluids(Ethylene.getFluid(1000)) .outputFluids(Methane.getFluid(500)) .duration(120).EUt(VA[MV]).save(provider); @@ -161,7 +161,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_propane") .inputFluids(SteamCrackedPropane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500) + .chancedOutput(dust, Carbon, 2500, 0) .outputFluids(Ethylene.getFluid(750)) .outputFluids(Methane.getFluid(1250)) .duration(120).EUt(VA[MV]).save(provider); @@ -175,7 +175,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butane") .inputFluids(SteamCrackedButane.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500) + .chancedOutput(dust, Carbon, 2500, 0) .outputFluids(Propane.getFluid(125)) .outputFluids(Ethane.getFluid(750)) .outputFluids(Ethylene.getFluid(750)) @@ -193,7 +193,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butene") .inputFluids(SteamCrackedButene.getFluid(1000)) - .chancedOutput(dust, Carbon, 2500) + .chancedOutput(dust, Carbon, 2500, 0) .outputFluids(Propene.getFluid(250)) .outputFluids(Ethylene.getFluid(1500)) .outputFluids(Methane.getFluid(250)) @@ -207,7 +207,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_steam_cracked_butadiene") .inputFluids(SteamCrackedButadiene.getFluid(1000)) - .chancedOutput(dust, Carbon, 5000) + .chancedOutput(dust, Carbon, 5000, 0) .outputFluids(Propene.getFluid(125)) .outputFluids(Ethylene.getFluid(250)) .outputFluids(Methane.getFluid(1125)) @@ -235,7 +235,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_heavy_fuel") .inputFluids(LightlySteamCrackedHeavyFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9") + .chancedOutput(dust, Carbon, "1/9", 0) .outputFluids(LightFuel.getFluid(300)) .outputFluids(Naphtha.getFluid(50)) .outputFluids(Toluene.getFluid(25)) @@ -251,7 +251,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_heavy_fuel") .inputFluids(SeverelySteamCrackedHeavyFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3") + .chancedOutput(dust, Carbon, "1/3", 0) .outputFluids(LightFuel.getFluid(100)) .outputFluids(Naphtha.getFluid(125)) .outputFluids(Toluene.getFluid(80)) @@ -287,7 +287,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_light_fuel") .inputFluids(LightlySteamCrackedLightFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9") + .chancedOutput(dust, Carbon, "1/9", 0) .outputFluids(HeavyFuel.getFluid(150)) .outputFluids(Naphtha.getFluid(400)) .outputFluids(Toluene.getFluid(40)) @@ -303,7 +303,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_light_fuel") .inputFluids(SeverelySteamCrackedLightFuel.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3") + .chancedOutput(dust, Carbon, "1/3", 0) .outputFluids(HeavyFuel.getFluid(50)) .outputFluids(Naphtha.getFluid(100)) .outputFluids(Toluene.getFluid(30)) @@ -335,7 +335,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_naphtha") .inputFluids(LightlySteamCrackedNaphtha.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9") + .chancedOutput(dust, Carbon, "1/9", 0) .outputFluids(HeavyFuel.getFluid(75)) .outputFluids(LightFuel.getFluid(150)) .outputFluids(Toluene.getFluid(40)) @@ -351,7 +351,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_naphtha") .inputFluids(SeverelySteamCrackedNaphtha.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/3") + .chancedOutput(dust, Carbon, "1/3", 0) .outputFluids(HeavyFuel.getFluid(25)) .outputFluids(LightFuel.getFluid(50)) .outputFluids(Toluene.getFluid(20)) @@ -381,7 +381,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_lightly_steam_cracked_gas") .inputFluids(LightlySteamCrackedGas.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9") + .chancedOutput(dust, Carbon, "1/9", 0) .outputFluids(Propene.getFluid(45)) .outputFluids(Ethane.getFluid(8)) .outputFluids(Ethylene.getFluid(85)) @@ -391,7 +391,7 @@ private static void distillationRecipes(Consumer provider) { DISTILLATION_RECIPES.recipeBuilder("distill_severely_steam_cracked_gas") .inputFluids(SeverelySteamCrackedGas.getFluid(1000)) - .chancedOutput(dust, Carbon, "1/9") + .chancedOutput(dust, Carbon, "1/9", 0) .outputFluids(Propene.getFluid(8)) .outputFluids(Ethane.getFluid(45)) .outputFluids(Ethylene.getFluid(92)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java index 28f3ae5ccc9..66bb796dd48 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/ReactorRecipes.java @@ -377,7 +377,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(gem, Charcoal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -385,7 +385,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(gem, Coal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -393,7 +393,7 @@ public static void init(Consumer provider) { .circuitMeta(1) .inputItems(dust, Charcoal) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonMonoxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -402,7 +402,7 @@ public static void init(Consumer provider) { .inputItems(dust, Coal) .circuitMeta(1) .inputFluids(Oxygen.getFluid(1000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonMonoxide.getFluid(1000)) .save(provider); @@ -447,7 +447,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(gem, Charcoal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -455,7 +455,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(gem, Coal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -463,7 +463,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(dust, Charcoal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); @@ -471,7 +471,7 @@ public static void init(Consumer provider) { .circuitMeta(2) .inputItems(dust, Coal) .inputFluids(Oxygen.getFluid(2000)) - .chancedOutput(dust, Ash, "1/9") + .chancedOutput(dust, Ash, "1/9", 0) .outputFluids(CarbonDioxide.getFluid(1000)) .duration(80).EUt(VA[ULV]).save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java index 85a25e486bb..53b9d3108d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/SeparationRecipes.java @@ -49,13 +49,13 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("oilsands_ore_separation") .inputItems(ore, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 7500) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(Oil.getFluid(2000)) .duration(200).EUt(30).save(provider); CENTRIFUGE_RECIPES.recipeBuilder("oilsands_dust_separation") .inputItems(dust, Oilsands) - .chancedOutput(new ItemStack(Blocks.SAND), 7500) + .chancedOutput(new ItemStack(Blocks.SAND), 7500, 0) .outputFluids(OilHeavy.getFluid(2000)) .duration(200).EUt(30).save(provider); @@ -105,50 +105,50 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("sticky_resin_separation").duration(400).EUt(5) .inputItems(STICKY_RESIN) .outputItems(dust, RawRubber, 3) - .chancedOutput(PLANT_BALL.asStack(), 1500) + .chancedOutput(PLANT_BALL.asStack(), 1500, 0) .outputFluids(Glue.getFluid(100)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rubber_log_separation").duration(200).EUt(5) .inputItems(GTBlocks.RUBBER_LOG.asStack()) - .chancedOutput(STICKY_RESIN.asStack(), 6400) - .chancedOutput(PLANT_BALL.asStack(), 4000) - .chancedOutput(dust, Carbon, 3000) - .chancedOutput(dust, Wood, 3000) + .chancedOutput(STICKY_RESIN.asStack(), 6400, 0) + .chancedOutput(PLANT_BALL.asStack(), 4000, 0) + .chancedOutput(dust, Carbon, 3000, 0) + .chancedOutput(dust, Wood, 3000, 0) .outputFluids(Methane.getFluid(60)) .save(provider); // TODO Other kinds of dirt? CENTRIFUGE_RECIPES.recipeBuilder("dirt_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.DIRT.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 1400) - .chancedOutput(new ItemStack(Blocks.SAND), 6000) - .chancedOutput(dust, Clay, 550) + .chancedOutput(PLANT_BALL.asStack(), 1400, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6000, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("grass_block_separation").duration(250).EUt(VA[LV]) .inputItems(Blocks.GRASS_BLOCK.asItem()) - .chancedOutput(PLANT_BALL.asStack(), 3500) - .chancedOutput(new ItemStack(Blocks.SAND), 5500) - .chancedOutput(dust, Clay, 550) + .chancedOutput(PLANT_BALL.asStack(), 3500, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 5500, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("mycelium_separation").duration(650).EUt(VA[LV]) .inputItems(new ItemStack(Blocks.MYCELIUM)) - .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800) - .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800) - .chancedOutput(new ItemStack(Blocks.SAND), 6200) - .chancedOutput(dust, Clay, 550) + .chancedOutput(new ItemStack(Blocks.RED_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.BROWN_MUSHROOM), 2800, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 6200, 0) + .chancedOutput(dust, Clay, 550, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("ash_separation").duration(240).EUt(VA[LV]) .inputItems(dust, Ash) - .chancedOutput(dust, Quicklime, 4950) - .chancedOutput(dust, Potash, 1600) - .chancedOutput(dust, Magnesia, 1500) - .chancedOutput(dust, PhosphorusPentoxide, 60) - .chancedOutput(dust, SodaAsh, 600) - .chancedOutput(dust, Hematite, 275) + .chancedOutput(dust, Quicklime, 4950, 0) + .chancedOutput(dust, Potash, 1600, 0) + .chancedOutput(dust, Magnesia, 1500, 0) + .chancedOutput(dust, PhosphorusPentoxide, 60, 0) + .chancedOutput(dust, SodaAsh, 600, 0) + .chancedOutput(dust, Hematite, 275, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("dark_ash_separation").duration(250).EUt(6) @@ -170,65 +170,65 @@ public static void init(Consumer provider) { CENTRIFUGE_RECIPES.recipeBuilder("uranium_238_separation").duration(800).EUt(320) .inputItems(dust, Uranium238) - .chancedOutput(dustTiny, Plutonium239, 280) - .chancedOutput(dustTiny, Uranium235, 2300) + .chancedOutput(dustTiny, Plutonium239, 280, 0) + .chancedOutput(dustTiny, Uranium235, 2300, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("plutonium_239_separation").duration(1600).EUt(320) .inputItems(dust, Plutonium239) - .chancedOutput(dustTiny, Uranium238, 3400) - .chancedOutput(dust, Plutonium241, 2500) + .chancedOutput(dustTiny, Uranium238, 3400, 0) + .chancedOutput(dust, Plutonium241, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("endstone_separation").duration(320).EUt(20) .inputItems(dust, Endstone) - .chancedOutput(new ItemStack(Blocks.SAND), 9000) - .chancedOutput(dust, Tungstate, 445) - .chancedOutput(dust, Platinum, 80) + .chancedOutput(new ItemStack(Blocks.SAND), 9000, 0) + .chancedOutput(dust, Tungstate, 445, 0) + .chancedOutput(dust, Platinum, 80, 0) .outputFluids(Helium.getFluid(120)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("netherrack_separation").duration(160).EUt(20) .inputItems(dust, Netherrack) - .chancedOutput(dust, Redstone, 700) - .chancedOutput(dust, Gold, 75) - .chancedOutput(dust, Sulfur, 2500) - .chancedOutput(dust, Coal, 700) + .chancedOutput(dust, Redstone, 700, 0) + .chancedOutput(dust, Gold, 75, 0) + .chancedOutput(dust, Sulfur, 2500, 0) + .chancedOutput(dust, Coal, 700, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("soul_sand_separation").duration(200).EUt(80) .inputItems(Blocks.SOUL_SAND.asItem()) - .chancedOutput(new ItemStack(Blocks.SAND), 9250) - .chancedOutput(dust, Saltpeter, 2250) - .chancedOutput(dust, Coal, 225) + .chancedOutput(new ItemStack(Blocks.SAND), 9250, 0) + .chancedOutput(dust, Saltpeter, 2250, 0) + .chancedOutput(dust, Coal, 225, 0) .outputFluids(Oil.getFluid(80)) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("lava_separation").duration(80).EUt(80) .inputFluids(Lava.getFluid(100)) - .chancedOutput(dust, SiliconDioxide, 1250) - .chancedOutput(dust, Magnesia, 250) - .chancedOutput(dust, Quicklime, 250) - .chancedOutput(nugget, Gold, 250) - .chancedOutput(dust, Sapphire, 315) - .chancedOutput(dust, Tantalite, 125) + .chancedOutput(dust, SiliconDioxide, 1250, 0) + .chancedOutput(dust, Magnesia, 250, 0) + .chancedOutput(dust, Quicklime, 250, 0) + .chancedOutput(nugget, Gold, 250, 0) + .chancedOutput(dust, Sapphire, 315, 0) + .chancedOutput(dust, Tantalite, 125, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("rare_earth_separation").duration(64).EUt(20) .inputItems(dust, RareEarth) - .chancedOutput(dustSmall, Cadmium, 3500) - .chancedOutput(dustSmall, Neodymium, 4500) - .chancedOutput(dustSmall, Samarium, 3500) - .chancedOutput(dustSmall, Cerium, 5500) - .chancedOutput(dustSmall, Yttrium, 3500) - .chancedOutput(dustSmall, Lanthanum, 2500) + .chancedOutput(dustSmall, Cadmium, 3500, 0) + .chancedOutput(dustSmall, Neodymium, 4500, 0) + .chancedOutput(dustSmall, Samarium, 3500, 0) + .chancedOutput(dustSmall, Cerium, 5500, 0) + .chancedOutput(dustSmall, Yttrium, 3500, 0) + .chancedOutput(dustSmall, Lanthanum, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_sand_separation").duration(50).EUt(VA[LV]) .inputItems(Blocks.RED_SAND.asItem()) - .chancedOutput(dust, Iron, 5000) - .chancedOutput(dust, Diamond, 35) - .chancedOutput(new ItemStack(Blocks.SAND), 8500) + .chancedOutput(dust, Iron, 5000, 0) + .chancedOutput(dust, Diamond, 35, 0) + .chancedOutput(new ItemStack(Blocks.SAND), 8500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("hydrogen_separation").duration(160).EUt(20) @@ -267,28 +267,28 @@ public static void init(Consumer provider) { // Stone Dust CENTRIFUGE_RECIPES.recipeBuilder("stone_dust_separation").duration(480).EUt(VA[MV]) .inputItems(dust, Stone) - .chancedOutput(dust, Quartzite, 2500) - .chancedOutput(dust, PotassiumFeldspar, 2500) - .chancedOutput(dust, Marble, "2/9") - .chancedOutput(dust, Biotite, "1/9") - .chancedOutput(dust, MetalMixture, 925) - .chancedOutput(dust, Sodalite, 650) + .chancedOutput(dust, Quartzite, 2500, 0) + .chancedOutput(dust, PotassiumFeldspar, 2500, 0) + .chancedOutput(dust, Marble, "2/9", 0) + .chancedOutput(dust, Biotite, "1/9", 0) + .chancedOutput(dust, MetalMixture, 925, 0) + .chancedOutput(dust, Sodalite, 650, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("metal_mixture_separation").duration(1000).EUt(900) .inputItems(dust, MetalMixture) - .chancedOutput(dust, Hematite, 2500) - .chancedOutput(dust, Bauxite, 2500) - .chancedOutput(dust, Pyrolusite, "2/9") - .chancedOutput(dust, Barite, "1/9") - .chancedOutput(dust, Chromite, 855) - .chancedOutput(dust, Ilmenite, 575) + .chancedOutput(dust, Hematite, 2500, 0) + .chancedOutput(dust, Bauxite, 2500, 0) + .chancedOutput(dust, Pyrolusite, "2/9", 0) + .chancedOutput(dust, Barite, "1/9", 0) + .chancedOutput(dust, Chromite, 855, 0) + .chancedOutput(dust, Ilmenite, 575, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("quartz_sand_separation").duration(60).EUt(VA[LV]) .inputItems(dust, QuartzSand, 2) .outputItems(dust, Quartzite) - .chancedOutput(dust, CertusQuartz, 2500) + .chancedOutput(dust, CertusQuartz, 2500, 0) .save(provider); CENTRIFUGE_RECIPES.recipeBuilder("red_alloy_separation").duration(900).EUt(VA[LV]) @@ -339,7 +339,7 @@ public static void init(Consumer provider) { .inputItems(dust, Sphalerite, 2) .outputItems(dust, Zinc) .outputItems(dust, Sulfur) - .chancedOutput(dust, Gallium, 750) + .chancedOutput(dust, Gallium, 750, 0) .duration(200).EUt(VA[LV]).save(provider); ELECTROLYZER_RECIPES.recipeBuilder("water_electrolysis") @@ -552,7 +552,7 @@ public static void init(Consumer provider) { EXTRACTOR_RECIPES.recipeBuilder("wood_dust_extraction").duration(16).EUt(4) .inputItems(dust, Wood) - .chancedOutput(PLANT_BALL.asStack(), 225) + .chancedOutput(PLANT_BALL.asStack(), 225, 0) .outputFluids(Creosote.getFluid(5)) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java index 279b14e548b..7c7cc348dc4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/serialized/chemistry/TitaniumRecipes.java @@ -167,9 +167,9 @@ private static void ilmeniteProcess(Consumer provider) { // Byproduct separation for Ilmenite ELECTROMAGNETIC_SEPARATOR_RECIPES.recipeBuilder("ilmenite_separation") .inputItems(dust, IlmeniteSlag) - .chancedOutput(dust, Iron, 8000) - .chancedOutput(dust, Tantalum, 2000) - .chancedOutput(dust, Niobium, 500) + .chancedOutput(dust, Iron, 8000, 0) + .chancedOutput(dust, Tantalum, 2000, 0) + .chancedOutput(dust, Niobium, 500, 0) .duration(50).EUt(VA[MV]).save(provider); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java index 20650827621..acb6a78f081 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/GTRecipeSchema.java @@ -426,14 +426,6 @@ public GTRecipeJS circuit(int configuration) { return notConsumable(InputItem.of(IntCircuitIngredient.of(configuration), 1)); } - public GTRecipeJS chancedInput(InputItem stack, int chance) { - return chancedInput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -450,14 +442,6 @@ public GTRecipeJS chancedInput(InputItem stack, int chance, int tierChanceBoost) return this; } - public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, int chance) { - return chancedFluidInput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { @@ -475,14 +459,6 @@ public GTRecipeJS chancedFluidInput(GTRecipeComponents.FluidIngredientJS stack, return this; } - public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance) { - return chancedOutput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -499,35 +475,15 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, int chance, int tierCh return this; } - public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance) { - return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int chance, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat), null), chance, tierChanceBoost); } - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix tag, Material mat, int count, int chance, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(tag, mat, count), null), chance, tierChanceBoost); } - public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction) { - return chancedOutput(stack, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int tierChanceBoost) { if (stack.isEmpty()) { return this; @@ -591,40 +547,16 @@ public GTRecipeJS chancedOutput(ExtendedOutputItem stack, String fraction, int t return this; } - public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction) { - return chancedOutput(prefix, material, count, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, int count, String fraction, int tierChanceBoost) { return chancedOutput(new ExtendedOutputItem(ChemicalHelper.get(prefix, material, count), null), fraction, tierChanceBoost); } - public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction) { - return chancedOutput(prefix, material, 1, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedOutput(TagPrefix prefix, Material material, String fraction, int tierChanceBoost) { return chancedOutput(prefix, material, 1, fraction, tierChanceBoost); } - public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance) { - return chancedFluidOutput(stack, chance, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierChanceBoost) { if (0 >= chance || chance > ChanceLogic.getMaxChancedValue()) { throw new RecipeExceptionJS( @@ -641,14 +573,6 @@ public GTRecipeJS chancedFluidOutput(FluidStackJS stack, int chance, int tierCha return this; } - public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction) { - return chancedFluidOutput(stack, fraction, 0); - } - - /** - * @deprecated overclock chance boosting will be removed in a future update - */ - @Deprecated(since = "7.0.0") public GTRecipeJS chancedFluidOutput(FluidStackJS stack, String fraction, int tierChanceBoost) { if (stack.getAmount() == 0) { return this; From aad974f33685fd06206b7f7247c7c045489a5367 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Tue, 22 Jul 2025 13:50:55 +0200 Subject: [PATCH 218/270] Add capability check to powerfailing logic (#3529) --- .../gtceu/api/machine/trait/RecipeLogic.java | 15 ++++++++++----- .../gtceu/api/recipe/ActionResult.java | 16 +++++++++------- .../gtceu/api/recipe/RecipeHelper.java | 6 +++--- .../gtceu/api/recipe/RecipeRunner.java | 2 +- .../electric/DistillationTowerMachine.java | 4 ++-- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index a41968eec76..515746e66c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -268,12 +269,16 @@ public void handleRecipeWorking() { totalContinuousRunningTime++; } else { setWaiting(handleTick.reason()); - runAttempt++; - if (runAttempt > 5) { - runAttempt = 0; - setStatus(Status.SUSPEND); + + // Machine isn't getting enough power, suspend after 5 attempts. + if (conditionResult.io() == IO.IN && conditionResult.capability() == EURecipeCapability.CAP) { + runAttempt++; + if (runAttempt > 5) { + runAttempt = 0; + setStatus(Status.SUSPEND); + } + runDelay = runAttempt * 10; } - runDelay = runAttempt * 10; } } else { setWaiting(conditionResult.reason()); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java index 84e6ed42afa..9294b66e51e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ActionResult.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.recipe; +import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import net.minecraft.network.chat.Component; @@ -10,17 +11,18 @@ * @param isSuccess is action success * @param reason if fail, fail reason */ -public record ActionResult(boolean isSuccess, @Nullable Component reason, @Nullable RecipeCapability capability) { +public record ActionResult(boolean isSuccess, @Nullable Component reason, @Nullable RecipeCapability capability, + @Nullable IO io) { - public final static ActionResult SUCCESS = new ActionResult(true, null, null); - public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null, null); + public final static ActionResult SUCCESS = new ActionResult(true, null, null, null); + public final static ActionResult FAIL_NO_REASON = new ActionResult(false, null, null, null); public final static ActionResult PASS_NO_CONTENTS = new ActionResult(true, - Component.translatable("gtceu.recipe_logic.no_contents"), null); + Component.translatable("gtceu.recipe_logic.no_contents"), null, null); public final static ActionResult FAIL_NO_CAPABILITIES = new ActionResult(false, - Component.translatable("gtceu.recipe_logic.no_capabilities"), null); + Component.translatable("gtceu.recipe_logic.no_capabilities"), null, null); - public static ActionResult fail(@Nullable Component component, @Nullable RecipeCapability capability) { - return new ActionResult(false, component, capability); + public static ActionResult fail(@Nullable Component component, @Nullable RecipeCapability capability, IO io) { + return new ActionResult(false, component, capability, io); } public Component reason() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index 07491a2489d..f179d1f2f15 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -228,7 +228,7 @@ public static ActionResult handleRecipe(IRecipeCapabilityHolder holder, GTRecipe } String key = "gtceu.recipe_logic.insufficient_" + (io == IO.IN ? "in" : "out"); return ActionResult.fail(Component.translatable(key) - .append(": ").append(result.capability().getName()), result.capability()); + .append(": ").append(result.capability().getName()), result.capability(), io); } public static ActionResult matchContents(IRecipeCapabilityHolder holder, GTRecipe recipe) { @@ -254,7 +254,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } else if (!condition.check(recipe, recipeLogic)) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.condition_fails") .append(": ") - .append(condition.getTooltips()), null); + .append(condition.getTooltips()), null, null); } } @@ -269,7 +269,7 @@ public static ActionResult checkConditions(GTRecipe recipe, @NotNull RecipeLogic } if (!passed) { - return ActionResult.fail(component, null); + return ActionResult.fail(component, null, null); } } return ActionResult.SUCCESS; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index e1e71c97a99..eb97a229507 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -167,7 +167,7 @@ private ActionResult handleContentsInternal(IO capIO) { for (var entry : recipeContents.entrySet()) { if (entry.getValue() != null && !entry.getValue().isEmpty()) { - return ActionResult.fail(null, entry.getKey()); + return ActionResult.fail(null, entry.getKey(), capIO); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java index 2e9fed6be14..b2da6931fcd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/DistillationTowerMachine.java @@ -221,7 +221,7 @@ private ActionResult matchDTRecipe(GTRecipe recipe) { if (!applyFluidOutputs(recipe, FluidAction.SIMULATE)) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") .append(": ") - .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP); + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP, IO.OUT); } return ActionResult.SUCCESS; @@ -268,7 +268,7 @@ protected ActionResult handleRecipeIO(GTRecipe recipe, IO io) { return ActionResult.fail(Component.translatable("gtceu.recipe_logic.insufficient_out") .append(": ") - .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP); + .append(FluidRecipeCapability.CAP.getName()), FluidRecipeCapability.CAP, IO.OUT); } private boolean applyFluidOutputs(GTRecipe recipe, FluidAction action) { From 8519cf1b7a004002dfd05047010dca8c3c7e30e5 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Wed, 23 Jul 2025 09:52:56 +0300 Subject: [PATCH 219/270] Fix the tool grid overlay disappearing (#3532) --- build.gradle | 4 + dependencies.gradle | 1 + gradle/libs.versions.toml | 2 + gradle/scripts/moddevgradle.gradle | 36 ++++++ .../renderer/BlockHighlightRenderer.java | 114 +++++++++--------- .../machine/impl/QuantumChestItemRender.java | 10 +- .../gtceu/client/util/RenderBufferHelper.java | 6 +- .../gtceu/client/util/RenderUtil.java | 18 +-- .../mixins/client/LevelRendererMixin.java | 13 +- .../gtceu/utils/GTMatrixUtils.java | 28 ++++- 10 files changed, 148 insertions(+), 84 deletions(-) diff --git a/build.gradle b/build.gradle index ac3b867abc9..58e6b04219a 100644 --- a/build.gradle +++ b/build.gradle @@ -60,6 +60,10 @@ configurations { extraRuntimeClasspath.extendsFrom extraLocalRuntime clientRuntimeClasspath.extendsFrom clientLocalRuntime extraClientRuntimeClasspath.extendsFrom clientExtraLocalRuntime + + renderNurseCfg { + canBeConsumed = false + } } afterEvaluate { diff --git a/dependencies.gradle b/dependencies.gradle index b12609ec1f0..de5a9b97185 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -80,6 +80,7 @@ dependencies { // Client-only runtime mods // modClientLocalRuntime(forge.embeddium) modClientLocalRuntime(forge.oculus) + renderNurseCfg(libs.renderNurse) ////////////////////////////////////////////////////// // Runtime mods for dev testing with unclean client // diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e676f5213aa..66c8166fb8e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,12 +8,14 @@ spotless = "7.0.2" modDevGradle = "2.0.86" lombok = "8.14" jetbrains-annotations = "26.0.1" +renderNurse = "0.0.12" mixin = "0.8.7" [libraries] minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } minecraftForge = { module = "net.minecraftforge:forge", version.ref = "minecraftForge" } jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrains-annotations" } +renderNurse = { module = "net.neoforged:render-nurse", version.ref = "renderNurse" } mixin = { module = "org.spongepowered:mixin", version.ref = "mixin" } [plugins] diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index 36ef9021327..91847820f9d 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -1,9 +1,25 @@ +import org.gradle.internal.os.OperatingSystem + +ext.isJetbrainsRuntime = System.getProperty('java.vm.vendor').contains('JetBrains') + mixin { var refmap = add sourceSets.main, "gtceu.refmap.json" slimJar.from refmap config 'gtceu.mixins.json' } +// we have to force LWJGL version 3.3.2, because RenderNurse requires Java 21, and LWJGL 3.3.1 cannot run on Java 21. +configurations.configureEach { + resolutionStrategy { + eachDependency { + if (it.requested.group == "org.lwjgl") { + it.useVersion("3.3.2") + it.because("We need a version of LWJGL that supports java 21 for RenderDoc support") + } + } + } +} + legacyForge { // Specify Forge version version = libs.versions.minecraftForge.get() @@ -104,6 +120,26 @@ legacyForge { programArguments.addAll('--existing', file('src/main/resources/').getAbsolutePath()) } + String renderDocPath = System.getenv("RENDERDOC_LIB") + // RenderDoc cannot run on macos so we don't add the config for mac users + if(renderDocPath != null && !OperatingSystem.current().isMacOsX()) { + create("renderDocClient") { + client() + sourceSet = sourceSets.client + ideName = "Clean Client + RenderDoc (Requires Java 21)" + + programArguments.addAll('--username', 'screret', '--uuid', '1184eb79-5831-4f7d-b8f4-3a46fccf7a1d') + + systemProperty("neoforge.rendernurse.renderdoc.library", renderDocPath) + if(OperatingSystem.current().isLinux()) { + environment("LD_PRELOAD", renderDocPath) + } + // parses out the render nurse jar path and adds as `-javaagent:${path}` + jvmArguments.addAll(project.configurations.renderNurseCfg.incoming.files.elements.map { it.collect { "-javaagent:${it.asFile.absolutePath}" }}) + jvmArguments.addAll("--enable-preview", "--enable-native-access=ALL-UNNAMED") + } + } + // applies to all the run configs above configureEach { // Recommended logging data for a userdev environment diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java index de352d7f65a..305f9e91f0f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/BlockHighlightRenderer.java @@ -38,8 +38,9 @@ import com.mojang.blaze3d.vertex.*; import lombok.experimental.ExtensionMethod; import org.jetbrains.annotations.Nullable; -import org.joml.Matrix4f; +import org.joml.Quaternionfc; import org.joml.Vector3f; +import org.joml.Vector3fc; import java.util.Set; import java.util.function.Function; @@ -58,6 +59,7 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc if (level != null && player != null) { ItemStack held = player.getMainHandItem(); BlockPos blockPos = target.getBlockPos(); + Vector3fc blockCenter = blockPos.getCenter().toVector3f(); Set toolType = ToolHelper.getToolTypes(held); BlockEntity blockEntity = level.getBlockEntity(blockPos); @@ -87,26 +89,25 @@ public static void renderBlockHighlight(PoseStack poseStack, Camera camera, Bloc if (gridHighlight == null) { return; } - var state = level.getBlockState(blockPos); + BlockState state = level.getBlockState(blockPos); poseStack.pushPose(); if (gridHighlight.shouldRenderGrid(player, blockPos, state, held, toolType)) { final IToolGridHighlight finalGridHighlight = gridHighlight; drawGridOverlays(poseStack, multiBufferSource, cameraPos, target, side -> finalGridHighlight.sideTips(player, blockPos, state, toolType, side)); } else { - var facing = target.getDirection(); + Direction facing = target.getDirection(); var texture = gridHighlight.sideTips(player, blockPos, state, toolType, facing); if (texture != null) { RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); + poseStack.translate(facing.getStepX() * 0.01f, facing.getStepY() * 0.01f, facing.getStepZ() * 0.01f); - RenderUtil.moveToFace(poseStack, - blockPos.getX() - cameraPos.x(), - blockPos.getY() - cameraPos.y(), - blockPos.getZ() - cameraPos.z(), - facing); + poseStack.translate(-cameraPos.x(), -cameraPos.y(), -cameraPos.z()); + + RenderUtil.moveToFace(poseStack, blockCenter, facing); if (facing.getAxis() == Direction.Axis.Y) { RenderUtil.rotateToFace(poseStack, facing, Direction.SOUTH); } else { @@ -162,43 +163,41 @@ private static void drawGridOverlays(PoseStack poseStack, MultiBufferSource buff BlockHitResult blockHitResult, Function texture) { rColour = gColour = 0.2F + (float) Math.sin((System.currentTimeMillis() % (Mth.PI * 800)) / 800) / 2; bColour = 1f; - var blockPos = blockHitResult.getBlockPos(); - var facing = blockHitResult.getDirection(); + BlockPos blockPos = blockHitResult.getBlockPos(); float minX = blockPos.getX(); float maxX = blockPos.getX() + 1; float minY = blockPos.getY(); float maxY = blockPos.getY() + 1; float maxZ = blockPos.getZ() + 1.01f; - var attachSide = ICoverable.traceCoverSide(blockHitResult); - var topRight = new Vector3f(maxX, maxY, maxZ); - var bottomRight = new Vector3f(maxX, minY, maxZ); - var bottomLeft = new Vector3f(minX, minY, maxZ); - var topLeft = new Vector3f(minX, maxY, maxZ); - var shift = new Vector3f(0.25f, 0, 0); - var shiftVert = new Vector3f(0, 0.25f, 0); + Direction attachSide = ICoverable.traceCoverSide(blockHitResult); + Vector3f topRight = new Vector3f(maxX, maxY, maxZ); + Vector3f bottomRight = new Vector3f(maxX, minY, maxZ); + Vector3f bottomLeft = new Vector3f(minX, minY, maxZ); + Vector3f topLeft = new Vector3f(minX, maxY, maxZ); + Vector3f shiftX = new Vector3f(0.25f, 0, 0); + Vector3f shiftY = new Vector3f(0, 0.25f, 0); - var cubeCenter = blockPos.getCenter().toVector3f(); + Vector3f cubeCenter = blockPos.getCenter().toVector3f(); topRight.sub(cubeCenter); bottomRight.sub(cubeCenter); bottomLeft.sub(cubeCenter); topLeft.sub(cubeCenter); - var south = Direction.SOUTH.step(); - var frontVec = getDirectionAxis(facing); - var rotationAngle = getRotationAngle(south, frontVec); - var rotationAxis = getRotationAxis(south, frontVec); - topRight.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); - bottomRight.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); - bottomLeft.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); - topLeft.rotateAxis(rotationAngle, rotationAxis.x(), rotationAxis.y(), rotationAxis.z()); - - Direction front = facing; - Direction back = facing.getOpposite(); - Direction left = RelativeDirection.LEFT.getActualDirection(facing); - Direction right = RelativeDirection.RIGHT.getActualDirection(facing); - Direction top = RelativeDirection.UP.getActualDirection(facing); - Direction bottom = RelativeDirection.DOWN.getActualDirection(facing); + Direction front = blockHitResult.getDirection(); + Direction back = front.getOpposite(); + Direction left = RelativeDirection.LEFT.getActualDirection(front); + Direction right = RelativeDirection.RIGHT.getActualDirection(front); + Direction top = RelativeDirection.UP.getActualDirection(front); + Direction bottom = RelativeDirection.DOWN.getActualDirection(front); + + Quaternionfc rotation = getRotation(Direction.SOUTH, front); + topRight.rotate(rotation); + bottomRight.rotate(rotation); + bottomLeft.rotate(rotation); + topLeft.rotate(rotation); + shiftX.rotate(rotation); + shiftY.rotate(rotation); ResourceTexture leftBlocked = texture.apply(left); ResourceTexture rightBlocked = texture.apply(right); @@ -212,33 +211,28 @@ private static void drawGridOverlays(PoseStack poseStack, MultiBufferSource buff bottomLeft.add(cubeCenter); topLeft.add(cubeCenter); - var buffer = bufferSource.getBuffer(RenderType.lines()); + poseStack.pushPose(); + poseStack.translate(-cameraPos.x(), -cameraPos.y(), -cameraPos.z()); + + VertexConsumer buffer = bufferSource.getBuffer(RenderType.lines()); RenderSystem.lineWidth(3); - var mat = poseStack.last().pose(); + PoseStack.Pose pose = poseStack.last(); // straight top bottom lines - drawLine(mat, buffer, new Vector3f(topRight).add(new Vector3f(shift).mul(-1)), - new Vector3f(bottomRight).add(new Vector3f(shift).mul(-1))); - - drawLine(mat, buffer, new Vector3f(bottomLeft).add(shift), new Vector3f(topLeft).add(shift)); - + drawLine(pose, buffer, new Vector3f(topRight).sub(shiftX), new Vector3f(bottomRight).sub(shiftX)); + drawLine(pose, buffer, new Vector3f(bottomLeft).add(shiftX), new Vector3f(topLeft).add(shiftX)); // straight side to side lines - drawLine(mat, buffer, new Vector3f(topLeft).add(new Vector3f(shiftVert).mul(-1)), - new Vector3f(topRight).add(new Vector3f(shiftVert).mul(-1))); - - drawLine(mat, buffer, new Vector3f(bottomLeft).add(shiftVert), - new Vector3f(bottomRight).add(shiftVert)); + drawLine(pose, buffer, new Vector3f(topLeft).sub(shiftY), new Vector3f(topRight).sub(shiftY)); + drawLine(pose, buffer, new Vector3f(bottomLeft).add(shiftY), new Vector3f(bottomRight).add(shiftY)); - poseStack.pushPose(); RenderSystem.disableDepthTest(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); - poseStack.translate(facing.getStepX() * 0.01f, facing.getStepY() * 0.01f, facing.getStepZ() * 0.01f); - RenderUtil.moveToFace(poseStack, - blockPos.getX() - cameraPos.x(), - blockPos.getY() - cameraPos.y(), - blockPos.getZ() - cameraPos.z(), - facing); - RenderUtil.rotateToFace(poseStack, facing, Direction.SOUTH); + + poseStack.pushPose(); + poseStack.translate(front.getStepX() * 0.01f, front.getStepY() * 0.01f, front.getStepZ() * 0.01f); + + RenderUtil.moveToFace(poseStack, cubeCenter, front); + RenderUtil.rotateToFace(poseStack, front, Direction.SOUTH); poseStack.scale(1f / 16, 1f / 16, 0); poseStack.translate(-8, -8, 0); poseStack.scale(0.9f, 0.9f, 1); @@ -272,19 +266,21 @@ private static void drawGridOverlays(PoseStack poseStack, MultiBufferSource buff } RenderSystem.disableBlend(); RenderSystem.enableDepthTest(); + + poseStack.popPose(); poseStack.popPose(); } - private static void drawLine(Matrix4f mat, VertexConsumer buffer, Vector3f from, Vector3f to) { - var normal = new Vector3f(from).sub(to); + private static void drawLine(PoseStack.Pose pose, VertexConsumer buffer, Vector3fc from, Vector3fc to) { + Vector3f normal = from.sub(to, new Vector3f()); - buffer.vertex(mat, from.x, from.y, from.z) + buffer.vertex(pose.pose(), from.x(), from.y(), from.z()) .color(rColour, gColour, bColour, 1f) - .normal(normal.x, normal.y, normal.z) + .normal(pose.normal(), normal.x(), normal.y(), normal.z()) .endVertex(); - buffer.vertex(mat, to.x, to.y, to.z) + buffer.vertex(pose.pose(), to.x(), to.y(), to.z()) .color(rColour, gColour, bColour, 1f) - .normal(normal.x, normal.y, normal.z) + .normal(pose.normal(), normal.x(), normal.y(), normal.z()) .endVertex(); } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java index 479c073e9ad..6be72025874 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumChestItemRender.java @@ -92,12 +92,10 @@ public void renderChestItem(PoseStack poseStack, MultiBufferSource buffer, float poseStack.pushPose(); poseStack.translate(0.5f, 0.5f, 0.5f); if (frontFacing.getAxis() == Direction.Axis.Y) { - var north = Direction.NORTH.step(); - var front = frontFacing.step(); - var rotationAngle = getRotationAngle(north, front); - poseStack.mulPose(new Quaternionf().fromAxisAngleRad(getRotationAxis(north, front), rotationAngle)); + Quaternionf rotation = getRotation(Direction.NORTH, frontFacing); + poseStack.mulPose(rotation); } - poseStack.mulPose(new Quaternionf().rotateAxis(totalTick * Mth.TWO_PI / 80, 0, 1, 0)); + poseStack.mulPose(new Quaternionf().rotateY(totalTick * Mth.TWO_PI / 80)); poseStack.scale(0.6f, 0.6f, 0.6f); itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, @@ -127,7 +125,7 @@ public static void drawAmountText(PoseStack poseStack, MultiBufferSource buffer, poseStack.translate(frontFacing.getStepX() * -1 / 16f, frontFacing.getStepY() * -1 / 16f, frontFacing.getStepZ() * -1 / 16f); - RenderUtil.moveToFace(poseStack, 0, 0, 0, frontFacing); + RenderUtil.moveToFace(poseStack, 0.5f, 0.5f, 0.5f, frontFacing); RenderUtil.rotateToFace(poseStack, frontFacing, Direction.NORTH); poseStack.scale(1f / 64, 1f / 64, 0); poseStack.translate(-32, -32, 0); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java index 68de7d2aa94..6a739a35182 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderBufferHelper.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.client.util; +import com.gregtechceu.gtceu.utils.GTMatrixUtils; + import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; @@ -9,7 +11,7 @@ import com.mojang.blaze3d.vertex.*; import org.joml.Matrix4f; -import org.joml.Vector3f; +import org.joml.Vector3fc; import java.util.EnumSet; import java.util.Set; @@ -156,7 +158,7 @@ public static void renderCubeFace(VertexConsumer buffer, PoseStack.Pose pose, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4) { - Vector3f normal = normalDir.step(); + Vector3fc normal = GTMatrixUtils.getDirectionAxis(normalDir); vertex(buffer, pose, x1, y1, z1, color, u1, v1, combinedLight, normal.x(), normal.y(), normal.z()); vertex(buffer, pose, x2, y2, z2, color, u2, v2, combinedLight, normal.x(), normal.y(), normal.z()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java index 78c3c918b91..8978fd3d2a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/client/util/RenderUtil.java @@ -192,10 +192,14 @@ public static Vector3f transformVertex(Vector3fc vertex, Direction direction, return fluid; } - public static void moveToFace(PoseStack poseStack, double x, double y, double z, Direction face) { - poseStack.translate(x + 0.5d + face.getStepX() * 0.5d, - y + 0.5d + face.getStepY() * 0.5d, - z + 0.5d + face.getStepZ() * 0.5d); + public static void moveToFace(PoseStack poseStack, Vector3fc pos, Direction face) { + moveToFace(poseStack, pos.x(), pos.y(), pos.z(), face); + } + + public static void moveToFace(PoseStack poseStack, float x, float y, float z, Direction face) { + poseStack.translate(Math.fma(face.getStepX(), 0.5f, x), + Math.fma(face.getStepY(), 0.5f, y), + Math.fma(face.getStepZ(), 0.5f, z)); } /** @@ -213,12 +217,12 @@ public static void rotateToFace(PoseStack poseStack, Direction face, Direction s Quaternionf rotation = new Quaternionf(); if (face.getAxis() == Direction.Axis.Y) { poseStack.scale(1.0f, -1.0f, 1.0f); - rotation.rotateAxis(rotationAngle, new Vector3f(1, 0, 0)); + rotation.rotateX(rotationAngle); } else { poseStack.scale(-1.0f, -1.0f, -1.0f); - rotation.rotateAxis(rotationAngle, new Vector3f(0, 1, 0)); + rotation.rotateY(rotationAngle); } - rotation.rotateAxis(getSpinAngle(spin, face), new Vector3f(0, 0, 1)); + rotation.rotateZ(getSpinAngle(spin, face)); poseStack.mulPose(rotation); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java index c7d64dd8482..06f24b56d02 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/LevelRendererMixin.java @@ -104,14 +104,15 @@ private void renderLevel(PoseStack poseStack, float partialTick, long finishNano UseOnContext context = new UseOnContext(minecraft.player, InteractionHand.MAIN_HAND, hitResult); var positions = ToolHelper.getHarvestableBlocks(aoeDefinition, context); - Vec3 vec3 = camera.getPosition(); - double camX = vec3.x(); - double camY = vec3.y(); - double camZ = vec3.z(); + Vec3 camPos = camera.getPosition(); + + poseStack.pushPose(); + poseStack.translate(-camPos.x(), -camPos.y(), -camPos.z()); for (BlockPos pos : positions) { poseStack.pushPose(); - poseStack.translate(pos.getX() - camX, pos.getY() - camY, pos.getZ() - camZ); + poseStack.translate(pos.getX(), pos.getY(), pos.getZ()); + PoseStack.Pose last = poseStack.last(); VertexConsumer breakProgressDecal = new SheetedDecalTextureGenerator( this.renderBuffers.crumblingBufferSource() @@ -122,6 +123,8 @@ private void renderLevel(PoseStack poseStack, float partialTick, long finishNano level, poseStack, breakProgressDecal, modelData != null ? modelData : ModelData.EMPTY); poseStack.popPose(); } + + poseStack.popPose(); } @Shadow diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java index 2a3f91bccba..44f6ad29e34 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMatrixUtils.java @@ -10,11 +10,9 @@ import com.google.common.collect.Table; import com.google.common.collect.Tables; import org.jetbrains.annotations.Contract; -import org.joml.Matrix4f; -import org.joml.Matrix4fc; -import org.joml.Vector3f; -import org.joml.Vector3fc; +import org.joml.*; +import java.lang.Math; import java.security.InvalidParameterException; import java.util.Objects; @@ -62,10 +60,30 @@ public static Vector3f getRotationAxis(Vector3f from, final Vector3fc to) { * @param dest the vector to save the result to * @return {@code dest} */ - public static Vector3f getRotationAxis(Vector3fc from, Vector3fc to, Vector3f dest) { + public static Vector3f getRotationAxis(final Vector3fc from, final Vector3fc to, Vector3f dest) { return from.cross(to, dest).normalize(); } + /** + * @param from the original vector + * @param to the wanted vector + * @return the quaternion to make {@code from} point in the direction of {@code to} + */ + @Contract(pure = true) + public static Quaternionf getRotation(final Vector3fc from, final Vector3fc to) { + return from.rotationTo(to, new Quaternionf()); + } + + /** + * @param from the original direction + * @param to the wanted direction + * @return the quaternion to make a vector based on {@code from} point towards {@code to} + */ + @Contract(pure = true) + public static Quaternionf getRotation(final Direction from, final Direction to) { + return getRotation(getDirectionAxis(from), getDirectionAxis(to)); + } + /** * Transforms the {@code matrix} and all {@code additional} vectors such that the {@code from} vector will be on the * {@code to} vector's axis From 2d1d85e95cb0833b575d322d972dad2cf3c8cc37 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Wed, 23 Jul 2025 23:11:15 +0200 Subject: [PATCH 220/270] Fix recipe showing 'missing x' indicator all the tme (#3540) --- .../com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 515746e66c4..7dc17b0a014 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -468,7 +468,9 @@ public void onRecipeFinish() { setStatus(Status.SUSPEND); } else { setStatus(Status.IDLE); - waitingReason = recipeCheck.reason(); + if (recipeCheck.io() != IO.IN || recipeCheck.capability() == EURecipeCapability.CAP) { + waitingReason = recipeCheck.reason(); + } } consecutiveRecipes = 0; progress = 0; From fe03be4f146807d0d3bd960c6db301151aeeabe5 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Wed, 23 Jul 2025 23:35:17 +0200 Subject: [PATCH 221/270] Make formic acid acidic (#3545) --- .../gtceu/common/data/materials/FirstDegreeMaterials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 5a0c9d06132..445024d2f4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -1611,7 +1611,7 @@ public static void register() { .buildAndRegister(); FormicAcid = new Material.Builder(GTCEu.id("formic_acid")) - .gas() + .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xa6a6a6) .components(Carbon, 1, Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CHEMICAL_BURNS) From 5c52a7516ee803086bb4f2b8e793493f28bdf6bb Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Wed, 23 Jul 2025 23:43:38 -0600 Subject: [PATCH 222/270] Fix wood pipes/frames/etc not requiring wrench with wrench cfg enabled (#3547) --- .../gregtechceu/gtceu/core/MixinHelpers.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 2e99b6c2db4..0b06bdfa472 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -154,8 +154,22 @@ public static void generateGTDynamicTags(Map new ArrayList<>()).addAll(entries); if (material.hasProperty(PropertyKey.WOOD)) { - tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) - .addAll(entries); + // Wood blocks with this tag always allow a Wrench, but only allow an Axe if the config is + // not set. Pickaxe is never allowed (special case) + if (entry.tagPrefix().miningToolTag() + .contains(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH)) { + tagMap.computeIfAbsent(CustomTags.MINEABLE_WITH_WRENCH.location(), + path -> new ArrayList<>()).addAll(entries); + if (!ConfigHolder.INSTANCE.machines.requireGTToolsForBlocks) { + tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), + path -> new ArrayList<>()) + .addAll(entries); + } + } else { + // Other wood stuff should still get the Axe tag + tagMap.computeIfAbsent(BlockTags.MINEABLE_WITH_AXE.location(), path -> new ArrayList<>()) + .addAll(entries); + } } else { for (var tag : entry.tagPrefix().miningToolTag()) { tagMap.computeIfAbsent(tag.location(), path -> new ArrayList<>()).addAll(entries); From 7a1f010e5fd8da3412167ae3ad2e2fd9cdc5bfd8 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Thu, 24 Jul 2025 02:27:59 -0400 Subject: [PATCH 223/270] Disable delombok on source artifacts (#3548) --- gradle/scripts/jars.gradle | 8 -------- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/gradle/scripts/jars.gradle b/gradle/scripts/jars.gradle index aaf50160752..5f2c4979701 100644 --- a/gradle/scripts/jars.gradle +++ b/gradle/scripts/jars.gradle @@ -16,14 +16,6 @@ java { withSourcesJar() } -// Use delombok'd files for sources -sourcesJar { - exclude { - sourceSets.main.allSource.contains it.file - } - from delombok -} - jar.archiveClassifier = "dev" base { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 94113f200e6..ca025c83a7c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From de41fd99672da78a42938614d7e523bb86ca73f8 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 24 Jul 2025 10:58:48 +0300 Subject: [PATCH 224/270] Fix custom render bounds for dynamic renders not working (#3533) --- .../client/model/machine/MachineModel.java | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 7cc58490bb1..71dfd1343f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -62,7 +62,7 @@ import static com.gregtechceu.gtceu.api.machine.IMachineBlockEntity.*; public final class MachineModel extends BaseBakedModel implements ICoverableRenderer, - IMachineRendererModel, IBlockEntityRendererBakedModel { + IBlockEntityRendererBakedModel { public static final ResourceLocation PIPE_OVERLAY = GTCEu.id("block/overlay/machine/overlay_pipe"); public static final ResourceLocation FLUID_OUTPUT_OVERLAY = GTCEu.id("block/overlay/machine/overlay_fluid_output"); @@ -223,14 +223,6 @@ public List getMachineQuads(@Nullable BlockState blockState, @Nullabl BlockPos pos = modelData.get(MODEL_DATA_POS); MetaMachine machine = (level == null || pos == null) ? null : MetaMachine.getMachine(level, pos); - return getRenderQuads(machine, level, pos, blockState, side, rand, modelData, renderType); - } - - @Override - public @NotNull List getRenderQuads(@Nullable MetaMachine machine, @Nullable BlockAndTintGetter level, - @Nullable BlockPos pos, @Nullable BlockState blockState, - @Nullable Direction side, RandomSource rand, - @NotNull ModelData modelData, @Nullable RenderType renderType) { // render machine quads List quads = renderMachine(machine, level, pos, blockState, side, rand, modelData, renderType); if (machine == null) { @@ -390,11 +382,6 @@ private List renderPartOverrides(MachineModel controllerModel, IMulti @Override public boolean isCustomRenderer() { - return isBlockEntityRenderer(); - } - - @Override - public boolean isBlockEntityRenderer() { if (dynamicRenders.isEmpty()) return false; for (DynamicRender render : dynamicRenders) { if (render.isBlockEntityRenderer()) return true; @@ -404,10 +391,14 @@ public boolean isBlockEntityRenderer() { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public void render(MetaMachine machine, float partialTick, - PoseStack poseStack, MultiBufferSource buffer, + public void render(@NotNull BlockEntity blockEntity, float partialTick, + @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, int packedLight, int packedOverlay) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; + if (machineBE.getDefinition() != getDefinition()) return; if (dynamicRenders.isEmpty()) return; + + MetaMachine machine = machineBE.getMetaMachine(); Vec3 cameraPos = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); for (DynamicRender model : dynamicRenders) { if (!model.shouldRender(machine, cameraPos)) { @@ -429,9 +420,14 @@ public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public AABB getRenderBoundingBox(MetaMachine machine) { - AABB bounds = IMachineRendererModel.super.getRenderBoundingBox(machine); + public AABB getRenderBoundingBox(BlockEntity blockEntity) { + AABB bounds = IBlockEntityRendererBakedModel.super.getRenderBoundingBox(blockEntity); + + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return bounds; + if (machineBE.getDefinition() != getDefinition()) return bounds; if (dynamicRenders.isEmpty()) return bounds; + + MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender model : dynamicRenders) { bounds = bounds.minmax(model.getRenderBoundingBox(machine)); } @@ -440,8 +436,12 @@ public AABB getRenderBoundingBox(MetaMachine machine) { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public boolean shouldRenderOffScreen(MetaMachine machine) { + public boolean shouldRenderOffScreen(BlockEntity blockEntity) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; + if (machineBE.getDefinition() != getDefinition()) return false; if (dynamicRenders.isEmpty()) return false; + + MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender render : dynamicRenders) { if (render.shouldRenderOffScreen(machine)) return true; } @@ -450,8 +450,12 @@ public boolean shouldRenderOffScreen(MetaMachine machine) { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public boolean shouldRender(MetaMachine machine, Vec3 cameraPos) { + public boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { + if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; + if (machineBE.getDefinition() != getDefinition()) return false; if (dynamicRenders.isEmpty()) return false; + + MetaMachine machine = machineBE.getMetaMachine(); for (DynamicRender model : dynamicRenders) { if (model.shouldRender(machine, Minecraft.getInstance().gameRenderer.getMainCamera().getPosition())) { return true; @@ -462,9 +466,9 @@ public boolean shouldRender(MetaMachine machine, Vec3 cameraPos) { @Override public int getViewDistance() { - int distance = 0; - if (dynamicRenders.isEmpty()) return distance; + if (dynamicRenders.isEmpty()) return 0; + int distance = 0; for (DynamicRender model : dynamicRenders) { distance = Math.max(distance, model.getViewDistance()); } @@ -475,14 +479,4 @@ public int getViewDistance() { public BlockEntityType getBlockEntityType() { return getDefinition().getBlockEntityType(); } - - @Override - public void render(@NotNull BlockEntity blockEntity, float partialTick, - @NotNull PoseStack poseStack, @NotNull MultiBufferSource buffer, - int packedLight, int packedOverlay) { - if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; - if (machineBE.getDefinition() != getDefinition()) return; - - this.render(machineBE.getMetaMachine(), partialTick, poseStack, buffer, packedLight, packedOverlay); - } } From d78b507193de9c325852fbbd2e6793a3e5653a8e Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 27 Jul 2025 23:16:35 -0600 Subject: [PATCH 225/270] New Key Mapping API (#3468) Co-authored-by: Caedis --- .../gtceu/api/item/armor/IArmorLogic.java | 4 + .../gregtechceu/gtceu/client/ClientProxy.java | 2 + .../gregtechceu/gtceu/common/CommonProxy.java | 2 + .../common/item/armor/NightvisionGoggles.java | 71 +++--- .../gtceu/common/network/GTNetwork.java | 2 + .../network/packets/CPacketKeyDown.java | 46 ++++ .../network/packets/CPacketKeysPressed.java | 1 + .../gtceu/forge/ForgeCommonEventListener.java | 13 + .../utils/input/IKeyPressedListener.java | 15 ++ .../gtceu/utils/input/KeyBind.java | 1 + .../gtceu/utils/input/SyncedKeyMapping.java | 228 ++++++++++++++++++ .../utils/input/SyncedKeyMappingEvent.java | 16 ++ .../gtceu/utils/input/SyncedKeyMappings.java | 16 ++ 13 files changed, 387 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketKeyDown.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java create mode 100644 src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java index de7b9056892..c67bb1ca296 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/IArmorLogic.java @@ -96,4 +96,8 @@ default HumanoidModel getArmorModel(LivingEntity entityLiving, ItemStack item default float getHeatResistance() { return 1.0f; } + + default void onEquip(Player player) {} + + default void onUnequip(Player player) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index 9e04ad30ded..04b746146db 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -34,6 +34,7 @@ import com.gregtechceu.gtceu.integration.map.layer.builtin.FluidRenderLayer; import com.gregtechceu.gtceu.integration.map.layer.builtin.OreRenderLayer; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMapping; import net.minecraft.client.model.BoatModel; import net.minecraft.client.model.ChestBoatModel; @@ -108,6 +109,7 @@ public void onRegisterItemDecorations(RegisterItemDecorationsEvent event) { @SubscribeEvent public void registerKeyBindings(RegisterKeyMappingsEvent event) { KeyBind.onRegisterKeyBinds(event); + SyncedKeyMapping.onRegisterKeyBinds(event); } @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 45c0d237336..84e6774efd7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -52,6 +52,7 @@ import com.gregtechceu.gtceu.integration.map.WaypointManager; import com.gregtechceu.gtceu.integration.top.forge.TheOneProbePluginImpl; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import com.lowdragmc.lowdraglib.gui.factory.UIFactory; @@ -186,6 +187,7 @@ public static void init() { GTFeatures.register(); CustomBlockRotations.init(); KeyBind.init(); + SyncedKeyMappings.init(); MachineOwner.init(); FusionReactorMachine.registerFusionTier(GTValues.LuV, " (MKI)"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java index 89d78447cb4..77ef6c4fca2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java @@ -5,11 +5,13 @@ import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.item.armor.ArmorLogicSuite; import com.gregtechceu.gtceu.api.item.armor.ArmorUtils; -import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.IKeyPressedListener; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMapping; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; @@ -23,12 +25,48 @@ import java.util.List; -public class NightvisionGoggles extends ArmorLogicSuite { +public class NightvisionGoggles extends ArmorLogicSuite implements IKeyPressedListener { public NightvisionGoggles(int energyPerUse, long capacity, int voltageTier, ArmorItem.Type slot) { super(energyPerUse, capacity, voltageTier, slot); } + @Override + public void onEquip(Player player) { + if (!(player instanceof ServerPlayer serverPlayer)) return; + } + + @Override + public void onUnequip(Player player) { + if (!(player instanceof ServerPlayer serverPlayer)) return; + } + + @Override + public void onKeyPressed(ServerPlayer player, SyncedKeyMapping keyPressed, boolean isDown) { + if (!isDown) return; // Only handle when key is pressed, not released + toggleNightVision(player); + } + + private void toggleNightVision(Player player) { + ItemStack itemStack = player.getItemBySlot(EquipmentSlot.HEAD); + if (itemStack.isEmpty()) return; + IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); + if (item == null) return; + + CompoundTag data = itemStack.getOrCreateTag(); + boolean nightVision = data.contains("nightVision") && data.getBoolean("nightVision"); + + nightVision = !nightVision; + if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { + nightVision = false; + player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); + } else { + player.displayClientMessage(Component + .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); + } + data.putBoolean("nightVision", nightVision); + } + @Override public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack itemStack) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); @@ -36,24 +74,10 @@ public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack return; } CompoundTag data = itemStack.getOrCreateTag(); - byte toggleTimer = data.contains("toggleTimer") ? data.getByte("toggleTimer") : 0; int nightVisionTimer = data.contains("nightVisionTimer") ? data.getInt("nightVisionTimer") : ArmorUtils.NIGHTVISION_DURATION; if (type == ArmorItem.Type.HELMET) { - boolean nightVision = data.contains("nightVision") && data.getBoolean("nightVision"); - if (toggleTimer == 0 && KeyBind.ARMOR_MODE_SWITCH.isKeyDown(player)) { - nightVision = !nightVision; - toggleTimer = 5; - if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { - nightVision = false; - player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); - } else { - player.displayClientMessage(Component - .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); - } - } - - if (nightVision) { + if (data.contains("nightVision") && data.getBoolean("nightVision")) { player.removeEffect(MobEffects.BLINDNESS); if (nightVisionTimer <= ArmorUtils.NIGHT_VISION_RESET) { nightVisionTimer = ArmorUtils.NIGHTVISION_DURATION; @@ -65,23 +89,10 @@ public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack } else { player.removeEffect(MobEffects.NIGHT_VISION); } - data.putBoolean("nightVision", nightVision); - } if (nightVisionTimer > 0) nightVisionTimer--; - if (toggleTimer > 0) toggleTimer--; - data.putInt("nightVisionTimer", nightVisionTimer); - data.putByte("toggleTimer", toggleTimer); - } - - public static void disableNightVision(@NotNull Level world, Player player, boolean sendMsg) { - if (!world.isClientSide) { - player.removeEffect(MobEffects.NIGHT_VISION); - if (sendMsg) - player.displayClientMessage(Component.translatable("metaarmor.message.nightvision.disabled"), true); - } } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java index ce34f98bb8f..4a3c79b1cf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java @@ -79,6 +79,8 @@ public static void register(Class cls, Function { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java b/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java new file mode 100644 index 00000000000..c7857530e9b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/IKeyPressedListener.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.utils.input; + +import net.minecraft.server.level.ServerPlayer; + +@FunctionalInterface +public interface IKeyPressedListener { + + /** + * Called server-side only when a player presses a specified keybinding. + * + * @param player The player who pressed the key. + * @param keyPressed The key the player pressed. + */ + void onKeyPressed(ServerPlayer player, SyncedKeyMapping keyPressed, boolean isDown); +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java index 5ee64866ed9..2924d9c6479 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java @@ -24,6 +24,7 @@ import java.util.*; import java.util.function.Supplier; +@Deprecated @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) public enum KeyBind { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java new file mode 100644 index 00000000000..193064cff25 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java @@ -0,0 +1,228 @@ +package com.gregtechceu.gtceu.utils.input; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.CPacketKeyDown; + +import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.RegisterKeyMappingsEvent; +import net.minecraftforge.client.settings.IKeyConflictContext; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +import com.mojang.blaze3d.platform.InputConstants; +import it.unimi.dsi.fastutil.ints.Int2BooleanMap; +import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import org.jetbrains.annotations.ApiStatus; + +import java.util.Collections; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.function.Supplier; + +public final class SyncedKeyMapping { + + private static final Int2ObjectMap KEYMAPPINGS = new Int2ObjectOpenHashMap<>(); + private static int syncIndex = 0; + + @OnlyIn(Dist.CLIENT) + private KeyMapping keyMapping; + @OnlyIn(Dist.CLIENT) + private int keyCode; + @OnlyIn(Dist.CLIENT) + private boolean isKeyDown; + + private static final Int2BooleanMap updatingKeyDown = new Int2BooleanOpenHashMap(); + + private final WeakHashMap serverMapping = new WeakHashMap<>(); + private final WeakHashMap> playerListeners = new WeakHashMap<>(); + private final Set globalListeners = Collections.newSetFromMap(new WeakHashMap<>()); + + private SyncedKeyMapping(Supplier> mcKeyMapping) { + if (GTCEu.isClientSide()) { + this.keyMapping = mcKeyMapping.get().get(); + } + KEYMAPPINGS.put(syncIndex++, this); + } + + private SyncedKeyMapping(int keyCode) { + if (GTCEu.isClientSide()) { + this.keyCode = keyCode; + } + KEYMAPPINGS.put(syncIndex++, this); + } + + private SyncedKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode) { + if (GTCEu.isClientSide()) { + this.keyMapping = (KeyMapping) createKeyMapping(nameKey, ctx, keyCode); + } + KEYMAPPINGS.put(syncIndex++, this); + } + + /** + * Create a SyncedKeyMapping wrapper around a Minecraft {@link KeyMapping}. + * + * @param mcKeyMapping Doubly-wrapped supplier around a keymapping from + * {@link net.minecraft.client.Options Minecraft.getInstance().options}. + */ + public static SyncedKeyMapping createFromMC(Supplier> mcKeyMapping) { + return new SyncedKeyMapping(mcKeyMapping); + } + + /** + * Create a new SyncedKeyMapping for a specified key code. + * + * @param keyCode The key code. + */ + public static SyncedKeyMapping create(int keyCode) { + return new SyncedKeyMapping(keyCode); + } + + /** + * Create a new SyncedKeyMapping with server held and pressed syncing to server.
+ * Will automatically create a keymapping entry in the MC options page. + * + * @param nameKey Translation key for the keymapping name. + * @param ctx Conflict context for the keymapping options category. + * @param keyCode The key code, from {@link InputConstants}. + */ + public static SyncedKeyMapping createConfigurable(String nameKey, IKeyConflictContext ctx, int keyCode) { + return new SyncedKeyMapping(nameKey, ctx, keyCode); + } + + @OnlyIn(Dist.CLIENT) + private Object createKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode) { + return new KeyMapping(nameKey, ctx, InputConstants.Type.KEYSYM, keyCode, GTCEu.NAME); + } + + /** + * Check if a player is currently holding down this key. + * + * @param player The player to check. + * + * @return If the key is held. + */ + public boolean isKeyDown(Player player) { + if (player.level().isClientSide) { + if (keyMapping != null) { + return keyMapping.isDown(); + } + long id = Minecraft.getInstance().getWindow().getWindow(); + return InputConstants.isKeyDown(id, keyCode); + } + Boolean isKeyDown = serverMapping.get((ServerPlayer) player); + return isKeyDown != null ? isKeyDown : false; + } + + /** + * Registers an {@link IKeyPressedListener} to this key, which will have its {@link IKeyPressedListener#onKeyPressed + * onKeyPressed} method called when the provided player presses this key. + * + * @param player The player who owns this listener. + * @param listener The handler for the key clicked event. + */ + public SyncedKeyMapping registerPlayerListener(ServerPlayer player, IKeyPressedListener listener) { + Set listenerSet = playerListeners + .computeIfAbsent(player, $ -> Collections.newSetFromMap(new WeakHashMap<>())); + listenerSet.add(listener); + return this; + } + + public static void onRegisterKeyBinds(RegisterKeyMappingsEvent event) { + for (SyncedKeyMapping value : KEYMAPPINGS.values()) { + if (value.keyMapping != null) { + event.register(value.keyMapping); + } + // no need to register keycode only keybinds? + // dont think they would show up in the binds menu + } + } + + /** + * Remove a player's listener on this keymapping for a provided player. + * + * @param player The player who owns this listener. + * @param listener The handler for the key clicked event. + */ + public void removePlayerListener(ServerPlayer player, IKeyPressedListener listener) { + Set listenerSet = playerListeners.get(player); + if (listenerSet != null) { + listenerSet.remove(listener); + } + } + + /** + * Registers an {@link IKeyPressedListener} to this key, which will have its {@link IKeyPressedListener#onKeyPressed + * onKeyPressed} method called when any player presses this key. + * + * @param listener The handler for the key clicked event. + */ + public SyncedKeyMapping registerGlobalListener(IKeyPressedListener listener) { + globalListeners.add(listener); + return this; + } + + /** + * Remove a global listener on this keybinding. + * + * @param listener The handler for the key clicked event. + */ + public void removeGlobalListener(IKeyPressedListener listener) { + globalListeners.remove(listener); + } + + @SubscribeEvent + @OnlyIn(Dist.CLIENT) + public static void onClientTick(TickEvent.ClientTickEvent event) { + if (event.phase == TickEvent.Phase.START) { + updatingKeyDown.clear(); + for (var entry : KEYMAPPINGS.int2ObjectEntrySet()) { + SyncedKeyMapping keyMapping = entry.getValue(); + boolean previousKeyDown = keyMapping.isKeyDown; + + if (keyMapping.keyMapping != null) { + keyMapping.isKeyDown = keyMapping.keyMapping.isDown(); + } else { + long id = Minecraft.getInstance().getWindow().getWindow(); + keyMapping.isKeyDown = InputConstants.isKeyDown(id, keyMapping.keyCode); + } + + if (previousKeyDown != keyMapping.isKeyDown) { + updatingKeyDown.put(entry.getIntKey(), keyMapping.isKeyDown); + } + } + if (!updatingKeyDown.isEmpty()) { + GTNetwork.sendToServer(new CPacketKeyDown(updatingKeyDown)); + } + } + } + + @ApiStatus.Internal + public void serverActivate(boolean keyDown, ServerPlayer player) { + this.serverMapping.put(player, keyDown); + + // Player listeners + Set listenerSet = playerListeners.get(player); + if (listenerSet != null && !listenerSet.isEmpty()) { + for (IKeyPressedListener listener : listenerSet) { + listener.onKeyPressed(player, this, keyDown); + } + } + // Global listeners + for (IKeyPressedListener listener : globalListeners) { + listener.onKeyPressed(player, this, keyDown); + } + } + + @ApiStatus.Internal + public static SyncedKeyMapping getFromSyncId(int id) { + return KEYMAPPINGS.get(id); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java new file mode 100644 index 00000000000..31ecab62c74 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappingEvent.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.utils.input; + +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.fml.event.IModBusEvent; + +/** + * Event to register {@link SyncedKeyMapping}s in. + *
+ * Event is fired on the mod bus. + */ +public class SyncedKeyMappingEvent extends Event implements IModBusEvent { + + public SyncedKeyMappingEvent() { + super(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java new file mode 100644 index 00000000000..f9262280e3a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java @@ -0,0 +1,16 @@ +package com.gregtechceu.gtceu.utils.input; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.ModLoader; + +public class SyncedKeyMappings { + + public static void init() { + if (GTCEu.isClientSide()) { + MinecraftForge.EVENT_BUS.register(SyncedKeyMapping.class); + } + ModLoader.get().postEvent(new SyncedKeyMappingEvent()); + } +} From fe7ed6e18a0fcbe1ba53176a3cebecc05cd31e77 Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Mon, 28 Jul 2025 01:27:42 -0400 Subject: [PATCH 226/270] Add max temperature to tank tooltip (#3560) --- .../gtceu/common/data/machines/GTMachineUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 169fd3dbad2..63ecca82ae4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -500,7 +500,9 @@ public static MultiblockMachineDefinition registerMultiblockTank(String name, St .langValue(displayName) .tooltips( Component.translatable("gtceu.machine.multiblock.tank.tooltip"), - Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", capacity)) + Component.translatable("gtceu.universal.tooltip.fluid_storage_capacity", capacity), + (filter != null) ? Component.translatable("gtceu.fluid_pipe.max_temperature", + filter.getMaxFluidTemperature()) : null) .rotationState(RotationState.ALL) .recipeType(DUMMY_RECIPES) .pattern(definition -> FactoryBlockPattern.start() From 90184838ccadab1c8b98124958b88c897b2d15a8 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 28 Jul 2025 08:28:33 +0300 Subject: [PATCH 227/270] fix double ingot models (#3541) --- .../models/item/material_sets/bright/ingot_double.json | 6 ++++-- .../gtceu/models/item/material_sets/dull/ingot_double.json | 6 ++++-- .../models/item/material_sets/metallic/ingot_double.json | 6 ++++-- .../gtceu/models/item/material_sets/shiny/ingot_double.json | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json index 53d5565a325..171a8f42ad1 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/bright/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/bright/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/dull/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/bright/ingot_double", + "layer1": "gtceu:item/material_sets/bright/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/bright/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json index a10ca09d785..ac6af3f85ce 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/dull/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/dull/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/dull/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/dull/ingot_double", + "layer1": "gtceu:item/material_sets/dull/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/dull/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json index c94b4641717..ced1eda1be4 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/metallic/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/metallic/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/metallic/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/metallic/ingot_double", + "layer1": "gtceu:item/material_sets/metallic/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/metallic/ingot_double_overlay" } } diff --git a/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json b/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json index 589469e92a8..422c0df1009 100644 --- a/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json +++ b/src/main/resources/assets/gtceu/models/item/material_sets/shiny/ingot_double.json @@ -1,6 +1,8 @@ { - "parent": "gtceu:item/material_sets/shiny/ingot", + "parent": "item/generated", "textures": { - "layer3": "gtceu:item/material_sets/shiny/ingot_double_overlay" + "layer0": "gtceu:item/material_sets/shiny/ingot_double", + "layer1": "gtceu:item/material_sets/shiny/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/shiny/ingot_double_overlay" } } From 89071b4e6f933326acaa48f02189914bcbd186b5 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Mon, 28 Jul 2025 00:14:23 -0600 Subject: [PATCH 228/270] New Keybind API fixes + port wrapped keybinds (#3561) --- .../gtceu/common/item/armor/IJetpack.java | 22 +++++++---- .../common/item/armor/QuarkTechSuite.java | 9 +++-- .../gtceu/utils/input/KeyBind.java | 3 ++ .../gtceu/utils/input/SyncedKeyMapping.java | 38 ++++++++++++++----- .../gtceu/utils/input/SyncedKeyMappings.java | 14 +++++++ 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java index faef8f6f3da..295e735e400 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/IJetpack.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.common.item.armor; import com.gregtechceu.gtceu.api.item.armor.ArmorUtils; -import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; @@ -76,8 +76,8 @@ default void performFlying(@NotNull Player player, boolean flightEnabled, boolea return; } - boolean flyKeyDown = KeyBind.VANILLA_JUMP.isKeyDown(player); - boolean descendKeyDown = KeyBind.VANILLA_SNEAK.isKeyDown(player); + boolean flyKeyDown = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); + boolean descendKeyDown = SyncedKeyMappings.VANILLA_SNEAK.isKeyDown(player); double currentAccel = getVerticalAcceleration() * (deltaY < 0.3D ? 2.5D : 1.0D); if (!player.onGround() && player.getSleepingPos().isEmpty() && canUseEnergy(stack, getEnergyPerUse())) { @@ -121,10 +121,18 @@ default void performFlying(@NotNull Player player, boolean flightEnabled, boolea // Make sure they aren't using elytra movement if (!player.isFallFlying()) { Vec3 movement = new Vec3(0, 0, 0); - if (KeyBind.VANILLA_FORWARD.isKeyDown(player)) movement = movement.add(0, 0, speedForward); - if (KeyBind.VANILLA_BACKWARD.isKeyDown(player)) movement = movement.add(0, 0, -speedSideways * 0.8f); - if (KeyBind.VANILLA_LEFT.isKeyDown(player)) movement = movement.add(speedSideways, 0, 0); - if (KeyBind.VANILLA_RIGHT.isKeyDown(player)) movement = movement.add(-speedSideways, 0, 0); + if (SyncedKeyMappings.VANILLA_FORWARD.isKeyDown(player)) { + movement = movement.add(0, 0, speedForward); + } + if (SyncedKeyMappings.VANILLA_BACKWARD.isKeyDown(player)) { + movement = movement.add(0, 0, -speedSideways * 0.8f); + } + if (SyncedKeyMappings.VANILLA_LEFT.isKeyDown(player)) { + movement = movement.add(speedSideways, 0, 0); + } + if (SyncedKeyMappings.VANILLA_RIGHT.isKeyDown(player)) { + movement = movement.add(-speedSideways, 0, 0); + } var dist = movement.length(); if (dist >= 1.0E-7) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java index 37d12610531..af016575c6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/QuarkTechSuite.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.core.IFireImmuneEntity; import com.gregtechceu.gtceu.utils.input.KeyBind; +import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -127,9 +128,9 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { if (player.isOnFire()) player.extinguishFire(); } else if (type == ArmorItem.Type.LEGGINGS) { boolean canUseEnergy = item.canUse(energyPerUse / 100); - boolean sprinting = KeyBind.VANILLA_FORWARD.isKeyDown(player) && player.isSprinting(); - boolean jumping = KeyBind.VANILLA_JUMP.isKeyDown(player); - boolean sneaking = KeyBind.VANILLA_SNEAK.isKeyDown(player); + boolean sprinting = SyncedKeyMappings.VANILLA_FORWARD.isKeyDown(player) && player.isSprinting(); + boolean jumping = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); + boolean sneaking = SyncedKeyMappings.VANILLA_SNEAK.isKeyDown(player); if (canUseEnergy && sprinting) { if (runningTimer == 0) { @@ -158,7 +159,7 @@ public void onArmorTick(Level world, Player player, ItemStack itemStack) { data.putByte("runningTimer", runningTimer); } else if (type == ArmorItem.Type.BOOTS) { boolean canUseEnergy = item.canUse(energyPerUse / 100); - boolean jumping = KeyBind.VANILLA_JUMP.isKeyDown(player); + boolean jumping = SyncedKeyMappings.VANILLA_JUMP.isKeyDown(player); boolean boostedJump = data.contains("boostedJump") && data.getBoolean("boostedJump"); if (boostedJumpTimer == 0 && KeyBind.BOOTS_ENABLE.isKeyDown(player)) { boostedJump = !boostedJump; diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java index 2924d9c6479..1b0feeb5b4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/KeyBind.java @@ -24,6 +24,9 @@ import java.util.*; import java.util.function.Supplier; +/** + * @deprecated Use {@link SyncedKeyMappings} instead + */ @Deprecated @Mod.EventBusSubscriber(modid = GTCEu.MOD_ID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) public enum KeyBind { diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java index 193064cff25..ae87dff8acf 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java @@ -34,6 +34,7 @@ public final class SyncedKeyMapping { @OnlyIn(Dist.CLIENT) private KeyMapping keyMapping; + private final boolean needsRegister; @OnlyIn(Dist.CLIENT) private int keyCode; @OnlyIn(Dist.CLIENT) @@ -49,6 +50,9 @@ private SyncedKeyMapping(Supplier> mcKeyMapping) { if (GTCEu.isClientSide()) { this.keyMapping = mcKeyMapping.get().get(); } + // Does not need to be registered, will be registered by MC + this.needsRegister = false; + KEYMAPPINGS.put(syncIndex++, this); } @@ -56,13 +60,17 @@ private SyncedKeyMapping(int keyCode) { if (GTCEu.isClientSide()) { this.keyCode = keyCode; } + // Does not need to be registered, is not a configurable key mapping + this.needsRegister = false; + KEYMAPPINGS.put(syncIndex++, this); } - private SyncedKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode) { + private SyncedKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode, String category) { if (GTCEu.isClientSide()) { - this.keyMapping = (KeyMapping) createKeyMapping(nameKey, ctx, keyCode); + this.keyMapping = (KeyMapping) createKeyMapping(nameKey, ctx, keyCode, category); } + this.needsRegister = true; KEYMAPPINGS.put(syncIndex++, this); } @@ -87,19 +95,33 @@ public static SyncedKeyMapping create(int keyCode) { /** * Create a new SyncedKeyMapping with server held and pressed syncing to server.
- * Will automatically create a keymapping entry in the MC options page. + * Will automatically create a keymapping entry in the MC options page under the GregTechCEu category. * * @param nameKey Translation key for the keymapping name. * @param ctx Conflict context for the keymapping options category. * @param keyCode The key code, from {@link InputConstants}. */ public static SyncedKeyMapping createConfigurable(String nameKey, IKeyConflictContext ctx, int keyCode) { - return new SyncedKeyMapping(nameKey, ctx, keyCode); + return createConfigurable(nameKey, ctx, keyCode, GTCEu.NAME); + } + + /** + * Create a new SyncedKeyMapping with server held and pressed syncing to server.
+ * Will automatically create a keymapping entry in the MC options page under the specified category. + * + * @param nameKey Translation key for the keymapping name. + * @param ctx Conflict context for the keymapping options category. + * @param keyCode The key code, from {@link InputConstants}. + * @param category The category in the MC options page. + */ + public static SyncedKeyMapping createConfigurable(String nameKey, IKeyConflictContext ctx, int keyCode, + String category) { + return new SyncedKeyMapping(nameKey, ctx, keyCode, category); } @OnlyIn(Dist.CLIENT) - private Object createKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode) { - return new KeyMapping(nameKey, ctx, InputConstants.Type.KEYSYM, keyCode, GTCEu.NAME); + private Object createKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode, String category) { + return new KeyMapping(nameKey, ctx, InputConstants.Type.KEYSYM, keyCode, category); } /** @@ -137,11 +159,9 @@ public SyncedKeyMapping registerPlayerListener(ServerPlayer player, IKeyPressedL public static void onRegisterKeyBinds(RegisterKeyMappingsEvent event) { for (SyncedKeyMapping value : KEYMAPPINGS.values()) { - if (value.keyMapping != null) { + if (value.keyMapping != null && value.needsRegister) { event.register(value.keyMapping); } - // no need to register keycode only keybinds? - // dont think they would show up in the binds menu } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java index f9262280e3a..451acee9106 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMappings.java @@ -2,11 +2,25 @@ import com.gregtechceu.gtceu.GTCEu; +import net.minecraft.client.Minecraft; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.ModLoader; public class SyncedKeyMappings { + public static final SyncedKeyMapping VANILLA_JUMP = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyJump); + public static final SyncedKeyMapping VANILLA_SNEAK = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyShift); + public static final SyncedKeyMapping VANILLA_FORWARD = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyUp); + public static final SyncedKeyMapping VANILLA_BACKWARD = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyDown); + public static final SyncedKeyMapping VANILLA_LEFT = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyLeft); + public static final SyncedKeyMapping VANILLA_RIGHT = SyncedKeyMapping + .createFromMC(() -> () -> Minecraft.getInstance().options.keyRight); + public static void init() { if (GTCEu.isClientSide()) { MinecraftForge.EVENT_BUS.register(SyncedKeyMapping.class); From 40723172b9082215ef4cf4669bd54e15120bc43c Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 28 Jul 2025 14:53:55 +0300 Subject: [PATCH 229/270] Move all model properties to a central class (#3499) --- .../configurable_maintenance_hatch.json | 4 +- .../block/machine/maintenance_hatch.json | 4 +- .../gtceu/api/blockentity/IPaintable.java | 4 +- .../gtceu/api/capability/IControllable.java | 4 +- .../api/capability/IHPCAComponentHatch.java | 4 +- .../gtceu/api/capability/IWorkable.java | 4 +- .../gtceu/api/machine/MetaMachine.java | 14 ++-- .../machine/feature/IExhaustVentMachine.java | 4 +- .../multiblock/IMaintenanceMachine.java | 3 +- .../feature/multiblock/IMultiController.java | 3 +- .../multiblock/IRotorHolderMachine.java | 7 +- .../MultiblockControllerMachine.java | 9 +-- .../multiblock/WorkableMultiblockMachine.java | 5 +- .../part/MultiblockPartMachine.java | 9 +-- .../property/GTMachineModelProperties.java | 44 ++++++++++++ .../api/machine/steam/SimpleSteamMachine.java | 9 +-- .../gtceu/api/machine/steam/SteamMachine.java | 3 +- .../gtceu/api/machine/trait/RecipeLogic.java | 6 +- .../registry/registrate/MachineBuilder.java | 23 +++--- .../registrate/MultiblockMachineBuilder.java | 3 +- .../gtceu/common/data/GTMachines.java | 35 +++++---- .../common/data/machines/GCYMMachines.java | 7 +- .../common/data/machines/GTMachineUtils.java | 13 ++-- .../common/data/machines/GTMultiMachines.java | 11 +-- .../data/machines/GTResearchMachines.java | 9 ++- .../common/data/models/GTMachineModels.java | 71 ++++++++----------- .../machine/electric/ChargerMachine.java | 6 +- .../machine/electric/ConverterMachine.java | 3 +- .../electric/ItemCollectorMachine.java | 3 +- .../machine/electric/TransformerMachine.java | 5 +- .../electric/WorldAcceleratorMachine.java | 12 ++-- .../multiblock/part/DiodePartMachine.java | 5 +- .../part/MaintenanceHatchPartMachine.java | 11 ++- .../part/RotorHolderPartMachine.java | 12 ++-- .../part/hpca/HPCAComponentPartMachine.java | 14 ++-- .../common/machine/storage/CrateMachine.java | 7 +- .../common/machine/trait/ConverterTrait.java | 3 +- .../integration/kjs/GregTechKubeJSPlugin.java | 2 + .../machine/KJSSteamMachineBuilder.java | 5 +- 39 files changed, 235 insertions(+), 165 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java diff --git a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json index 91310cf9462..dce746fd759 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/configurable_maintenance_hatch.json @@ -8,7 +8,7 @@ "side" ], "variants": { - "maintenance_taped=false": { + "taped=false": { "model": { "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", "textures": { @@ -18,7 +18,7 @@ } } }, - "maintenance_taped=true": { + "taped=true": { "model": { "parent": "gtceu:block/machine/part/configurable_maintenance_hatch", "textures": { diff --git a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json index e8bb6ed65d7..127be0cb2bc 100644 --- a/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json +++ b/src/generated/resources/assets/gtceu/models/block/machine/maintenance_hatch.json @@ -8,7 +8,7 @@ "side" ], "variants": { - "maintenance_taped=false": { + "taped=false": { "model": { "parent": "gtceu:block/machine/part/maintenance_hatch", "textures": { @@ -18,7 +18,7 @@ } } }, - "maintenance_taped=true": { + "taped=true": { "model": { "parent": "gtceu:block/machine/part/maintenance_hatch", "textures": { diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java index bb17dd79ffa..26105165b5b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/IPaintable.java @@ -1,10 +1,12 @@ package com.gregtechceu.gtceu.api.blockentity; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + import net.minecraft.world.level.block.state.properties.BooleanProperty; public interface IPaintable { - BooleanProperty IS_PAINTED_PROPERTY = BooleanProperty.create("is_painted"); + BooleanProperty IS_PAINTED_PROPERTY = GTMachineModelProperties.IS_PAINTED; int UNPAINTED_COLOR = 0xffffffff; /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java index e72890e03e0..7effe1aa684 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IControllable.java @@ -1,10 +1,12 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + import net.minecraft.world.level.block.state.properties.BooleanProperty; public interface IControllable { - BooleanProperty WORKING_ENABLED_PROPERTY = BooleanProperty.create("working_enabled"); + BooleanProperty WORKING_ENABLED_PROPERTY = GTMachineModelProperties.IS_WORKING_ENABLED; /** * @return true if the controllable is allowed to work diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java index 9a3c9e8ed1f..42dc92b49ef 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IHPCAComponentHatch.java @@ -1,12 +1,14 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import net.minecraft.world.level.block.state.properties.BooleanProperty; public interface IHPCAComponentHatch { - BooleanProperty HPCA_PART_DAMAGED_PROPERTY = BooleanProperty.create("hpca_part_damaged"); + BooleanProperty HPCA_PART_DAMAGED_PROPERTY = GTMachineModelProperties.IS_HPCA_PART_DAMAGED; /** * How much EU/t this component needs for the multi to just be idle. diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java index 114ac7edb8d..3db349c2b12 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IWorkable.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.api.capability; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; + import net.minecraft.world.level.block.state.properties.BooleanProperty; /** @@ -7,7 +9,7 @@ */ public interface IWorkable extends IControllable { - BooleanProperty ACTIVE_PROPERTY = BooleanProperty.create("active"); + BooleanProperty ACTIVE_PROPERTY = GTMachineModelProperties.IS_ACTIVE; /** * @return current progress of machine diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java index b8e43be3b12..c095f03c379 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MetaMachine.java @@ -19,6 +19,7 @@ import com.gregtechceu.gtceu.api.item.tool.IToolGridHighlight; import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.misc.IOFilteredInvWrapper; import com.gregtechceu.gtceu.api.misc.IOFluidHandlerList; @@ -192,8 +193,8 @@ public void setPaintingColor(int color) { this.onPaintingColorChanged(color); MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IS_PAINTED_PROPERTY)) { - setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, this.isPainted())); + if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); } } @@ -225,11 +226,10 @@ public void onLoad() { coverContainer.onLoad(); // update the painted model property if the machine is painted - if (this.isPainted()) { - MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IS_PAINTED_PROPERTY) && !renderState.getValue(IS_PAINTED_PROPERTY)) { - setRenderState(renderState.setValue(IS_PAINTED_PROPERTY, true)); - } + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_PAINTED) && + this.isPainted() != renderState.getValue(GTMachineModelProperties.IS_PAINTED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_PAINTED, this.isPainted())); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java index 1d298a4060e..8493f730910 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IExhaustVentMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.machine.feature; import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.common.data.GTDamageTypes; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -29,8 +30,7 @@ */ public interface IExhaustVentMachine extends IMachineFeature { - EnumProperty VENT_DIRECTION_PROPERTY = EnumProperty.create("steam_vent", - RelativeDirection.class); + EnumProperty VENT_DIRECTION_PROPERTY = GTMachineModelProperties.VENT_DIRECTION; /** * @return the direction the vent faces diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java index bbe3c4fa829..fb13f511326 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMaintenanceMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -16,7 +17,7 @@ public interface IMaintenanceMachine extends IMultiPart { - BooleanProperty MAINTENANCE_TAPED_PROPERTY = BooleanProperty.create("maintenance_taped"); + BooleanProperty MAINTENANCE_TAPED_PROPERTY = GTMachineModelProperties.IS_TAPED; int MINIMUM_MAINTENANCE_TIME = 3456000; // 48 real-life hours = 3456000 ticks byte ALL_PROBLEMS = 0; byte NO_PROBLEMS = 0b111111; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java index ba15a6b29bf..c6e240b9e98 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IMultiController.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineFeature; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.client.renderer.MultiblockInWorldPreviewRenderer; @@ -29,7 +30,7 @@ public interface IMultiController extends IMachineFeature, IInteractedMachine { - BooleanProperty IS_FORMED_PROPERTY = BooleanProperty.create("is_formed"); + BooleanProperty IS_FORMED_PROPERTY = GTMachineModelProperties.IS_FORMED; @Override default MultiblockControllerMachine self() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java index 321f5622a7a..3f46cf2765b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/feature/multiblock/IRotorHolderMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.IFancyTooltip; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.common.item.TurbineRotorBehaviour; @@ -24,9 +25,9 @@ public interface IRotorHolderMachine extends IMultiPart { int SPEED_INCREMENT = 1; int SPEED_DECREMENT = 3; - BooleanProperty HAS_ROTOR_PROPERTY = BooleanProperty.create("has_rotor"); - BooleanProperty ROTOR_SPINNING_PROPERTY = BooleanProperty.create("rotor_spinning"); - BooleanProperty EMISSIVE_ROTOR_PROPERTY = BooleanProperty.create("emissive_rotor"); + BooleanProperty HAS_ROTOR_PROPERTY = GTMachineModelProperties.HAS_ROTOR; + BooleanProperty ROTOR_SPINNING_PROPERTY = GTMachineModelProperties.IS_ROTOR_SPINNING; + BooleanProperty EMISSIVE_ROTOR_PROPERTY = GTMachineModelProperties.IS_EMISSIVE_ROTOR; /** * @return the base efficiency of the rotor holder in % diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java index a2cb08c591f..cc5535e2fbb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockControllerMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.MultiblockState; import com.gregtechceu.gtceu.api.pattern.MultiblockWorldSavedData; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; @@ -174,8 +175,8 @@ public void asyncCheckPattern(long periodID) { public void onStructureFormed() { isFormed = true; MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { - setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, true)); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, true)); } this.parts.clear(); @@ -199,8 +200,8 @@ public void onStructureFormed() { public void onStructureInvalid() { isFormed = false; MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { - setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, false)); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, false)); } for (IMultiPart part : parts) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 0c6841879f3..7f4ff88c22e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IMufflableMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; @@ -235,8 +236,8 @@ public void notifyStatusChanged(RecipeLogic.Status oldStatus, RecipeLogic.Status } for (IMultiPart part : getParts()) { MachineRenderState state = part.self().getRenderState(); - if (state.hasProperty(RecipeLogic.STATUS_PROPERTY)) { - part.self().setRenderState(state.setValue(RecipeLogic.STATUS_PROPERTY, newStatus)); + if (state.hasProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS)) { + part.self().setRenderState(state.setValue(GTMachineModelProperties.RECIPE_LOGIC_STATUS, newStatus)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java index d24e903d78b..bd6bf81a2de 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/part/MultiblockPartMachine.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.IRecipeHandlerTrait; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; @@ -143,8 +144,8 @@ public void removedFromController(IMultiController controller) { if (controllers.isEmpty()) { MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { - setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, false)); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, false)); } } } @@ -156,8 +157,8 @@ public void addedToController(IMultiController controller) { controllers.add(controller); MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IMultiController.IS_FORMED_PROPERTY)) { - setRenderState(renderState.setValue(IMultiController.IS_FORMED_PROPERTY, true)); + if (renderState.hasProperty(GTMachineModelProperties.IS_FORMED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_FORMED, true)); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java b/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java new file mode 100644 index 00000000000..b88a0b1e93a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/property/GTMachineModelProperties.java @@ -0,0 +1,44 @@ +package com.gregtechceu.gtceu.api.machine.property; + +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; + +import lombok.experimental.UtilityClass; + +// spotless:off +@UtilityClass +public class GTMachineModelProperties { + + // Generic properties + public static final BooleanProperty IS_PAINTED = BooleanProperty.create("is_painted"); + public static final BooleanProperty IS_FORMED = BooleanProperty.create("is_formed"); + public static final BooleanProperty IS_TAPED = BooleanProperty.create("taped"); + + // Recipe-related properties + public static final EnumProperty RECIPE_LOGIC_STATUS = EnumProperty.create("recipe_logic_status", RecipeLogic.Status.class); + public static final BooleanProperty IS_WORKING_ENABLED = BooleanProperty.create("working_enabled"); + public static final BooleanProperty IS_ACTIVE = BooleanProperty.create("active"); + + // Machine-specific properties + public static final BooleanProperty IS_STEEL_MACHINE = BooleanProperty.create("steel"); + public static final EnumProperty VENT_DIRECTION = EnumProperty.create("steam_vent", RelativeDirection.class); + + public static final EnumProperty CHARGER_STATE = EnumProperty.create("charger_state", ChargerMachine.State.class); + public static final BooleanProperty IS_FE_TO_EU = BooleanProperty.create("fe_to_eu"); + public static final BooleanProperty IS_TRANSFORM_UP = BooleanProperty.create("transform_up"); + public static final EnumProperty DIODE_AMP_MODE = EnumProperty.create("amp_mode", DiodePartMachine.AmpMode.class); + + public static final BooleanProperty IS_HPCA_PART_DAMAGED = BooleanProperty.create("hpca_part_damaged"); + public static final BooleanProperty IS_RANDOM_TICK_MODE = BooleanProperty.create("random_tick_mode"); + + public static final BooleanProperty HAS_ROTOR = BooleanProperty.create("has_rotor"); + public static final BooleanProperty IS_ROTOR_SPINNING = BooleanProperty.create("rotor_spinning"); + public static final BooleanProperty IS_EMISSIVE_ROTOR = BooleanProperty.create("emissive_rotor"); + +} +// spotless:on diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index fd9b4cf11d6..e34ee2d0277 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; import com.gregtechceu.gtceu.api.machine.feature.IUIMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; @@ -65,9 +66,9 @@ public SimpleSteamMachine(IMachineBlockEntity holder, boolean isHighPressure, Ob this.exportItems = createExportItemHandler(args); MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + if (renderState.hasProperty(GTMachineModelProperties.VENT_DIRECTION)) { // outputFacing will always be opposite the front facing on init - setRenderState(renderState.setValue(VENT_DIRECTION_PROPERTY, RelativeDirection.BACK)); + setRenderState(renderState.setValue(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK)); } } @@ -123,14 +124,14 @@ public float getVentingDamage() { public void updateModelVentDirection() { MachineRenderState renderState = getRenderState(); - if (renderState.hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + if (renderState.hasProperty(GTMachineModelProperties.VENT_DIRECTION)) { Direction upwardsDir = getUpwardsFacing(); // the up facing is already rotated if extended facing is enabled for the machine if (getFrontFacing() == Direction.UP && !allowExtendedFacing()) { upwardsDir = upwardsDir.getOpposite(); } var relative = RelativeDirection.findRelativeOf(getFrontFacing(), getVentingDirection(), upwardsDir); - setRenderState(renderState.setValue(VENT_DIRECTION_PROPERTY, relative)); + setRenderState(renderState.setValue(GTMachineModelProperties.VENT_DIRECTION, relative)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java index 734b3ef2efb..52e8fc65de9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamMachine.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank; import com.gregtechceu.gtceu.common.data.GTMaterials; @@ -23,7 +24,7 @@ public abstract class SteamMachine extends MetaMachine implements ITieredMachine protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(SteamMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); - public static final BooleanProperty STEEL_PROPERTY = BooleanProperty.create("steel"); + public static final BooleanProperty STEEL_PROPERTY = GTMachineModelProperties.IS_STEEL_MACHINE; @Getter public final boolean isHighPressure; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 7dc17b0a014..facc3d24e89 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.recipe.ActionResult; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; @@ -59,8 +60,7 @@ public enum Status implements StringRepresentable { } } - public static final EnumProperty STATUS_PROPERTY = EnumProperty.create("recipe_logic_status", - RecipeLogic.Status.class); + public static final EnumProperty STATUS_PROPERTY = GTMachineModelProperties.RECIPE_LOGIC_STATUS; public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(RecipeLogic.class); public final IRecipeLogicMachine machine; @@ -377,7 +377,7 @@ public void setStatus(Status status) { } machine.notifyStatusChanged(this.status, status); this.status = status; - setRenderState(getRenderState().setValue(STATUS_PROPERTY, status)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.RECIPE_LOGIC_STATUS, status)); updateTickSubscription(); if (this.status != Status.WAITING) { waitingReason = null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index b97c4510d87..2c9b20e235c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.gui.editor.EditableMachineUI; @@ -13,7 +12,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; -import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; @@ -239,8 +238,8 @@ protected void initRecipeMachineModelProperties(GTRecipeType type) { if (type == GTRecipeTypes.DUMMY_RECIPES) { return; } - if (!modelProperties.containsKey(RecipeLogic.STATUS_PROPERTY)) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + if (!modelProperties.containsKey(GTMachineModelProperties.RECIPE_LOGIC_STATUS)) { + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); } } @@ -286,7 +285,7 @@ public MachineBuilder colorOverlayTieredHullModel(ResourceLocation o public MachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { - modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); + modelProperty(GTMachineModelProperties.IS_PAINTED, false); return model(createColorOverlayTieredHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } @@ -295,7 +294,7 @@ public MachineBuilder overlaySteamHullModel(String name) { } public MachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { - modelProperty(SteamMachine.STEEL_PROPERTY, ConfigHolder.INSTANCE.machines.steelSteamMultiblocks); + modelProperty(GTMachineModelProperties.IS_STEEL_MACHINE, ConfigHolder.INSTANCE.machines.steelSteamMultiblocks); return model(createOverlaySteamHullMachineModel(overlayModel)); } @@ -321,27 +320,27 @@ public MachineBuilder colorOverlaySteamHullModel(ResourceLocation ov public MachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { - modelProperty(IPaintable.IS_PAINTED_PROPERTY, false); + modelProperty(GTMachineModelProperties.IS_PAINTED, false); return model(createColorOverlaySteamHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } public MachineBuilder workableTieredHullModel(ResourceLocation workableModel) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableTieredHullMachineModel(workableModel)); } public MachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createSimpleGeneratorModel(workableModel)); } public MachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableSteamHullMachineModel(isHighPressure, workableModel)); } public MachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableCasingMachineModel(baseCasing, workableModel)); } @@ -352,7 +351,7 @@ public MachineBuilder sidedOverlayCasingModel(ResourceLocation baseC public MachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { - modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE); + modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createSidedWorkableCasingMachineModel(baseCasing, workableModel)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index bc78ec0f230..e61b8c62192 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.BlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -91,7 +92,7 @@ public MultiblockMachineBuilder(GTRegistrate registrate, String name, allowExtendedFacing(true); allowCoverOnFront(true); // always add the formed property to multi controllers - modelProperty(IMultiController.IS_FORMED_PROPERTY, false); + modelProperty(GTMachineModelProperties.IS_FORMED, false); } public MultiblockMachineBuilder shapeInfo(Function shape) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index d8ee6825b54..bf35e656b54 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -4,15 +4,14 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.IMiner; -import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; @@ -50,8 +49,8 @@ import java.util.function.BiConsumer; import static com.gregtechceu.gtceu.api.GTValues.*; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.IN; -import static com.gregtechceu.gtceu.api.capability.recipe.IO.OUT; +import static com.gregtechceu.gtceu.api.capability.recipe.IO.*; +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.STEAM_BOILER_RECIPES; @@ -117,7 +116,7 @@ public class GTMachines { .recipeType(GTRecipeTypes.MACERATOR_RECIPES) .recipeModifier(SimpleSteamMachine::recipeModifier) .addOutputLimit(ItemRecipeCapability.CAP, 1) - .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) .workableSteamHullModel(pressure, GTCEu.id("block/machines/macerator")) .register()); public static final Pair STEAM_COMPRESSOR = registerSimpleSteamMachines( @@ -145,7 +144,7 @@ public class GTMachines { int maxArea = IMiner.getWorkingArea(isHP ? 6 : 4); tooltip.add(Component.translatable("gtceu.universal.tooltip.working_area", maxArea, maxArea)); }) - .modelProperty(SteamMinerMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.UP) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.UP) .workableSteamHullModel(isHP, isHP ? GTCEu.id("block/machines/high_pressure_steam_miner") : GTCEu.id("block/machines/steam_miner")) @@ -432,9 +431,9 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s World Accelerator %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) - .modelProperty(WorldAcceleratorMachine.RANDOM_TICK_PROPERTY, true) - .modelProperty(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY, true) - .modelProperty(IWorkable.ACTIVE_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_RANDOM_TICK_MODE, true) + .modelProperty(GTMachineModelProperties.IS_WORKING_ENABLED, true) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) .model(createWorldAcceleratorModel(GTCEu.id("block/machines/world_accelerator_te"), GTCEu.id("block/machines/world_accelerator"))) .tooltipBuilder((stack, tooltip) -> { @@ -461,8 +460,8 @@ public class GTMachines { .rotationState(RotationState.NONE) .langValue("%s Item Collector %s".formatted(VLVH[tier], VLVT[tier])) .recipeType(DUMMY_RECIPES) - .modelProperty(IWorkable.ACTIVE_PROPERTY, false) - .modelProperty(IWorkable.WORKING_ENABLED_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) + .modelProperty(GTMachineModelProperties.IS_WORKING_ENABLED, false) .editableUI(ItemCollectorMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("item_collector"), ItemCollectorMachine.getINVENTORY_SIZES()[tier])) .model(createItemCollectorModel(GTCEu.id("block/machines/item_collector"))) @@ -866,7 +865,7 @@ public class GTMachines { .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) - .modelProperty(MaintenanceHatchPartMachine.MAINTENANCE_TAPED_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) .model(createMaintenanceModel(GTCEu.id("block/machine/part/maintenance_hatch"))) .tier(LV) .register(); @@ -877,7 +876,7 @@ public class GTMachines { .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) - .modelProperty(MaintenanceHatchPartMachine.MAINTENANCE_TAPED_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) .model(createMaintenanceModel(GTCEu.id("block/machine/part/configurable_maintenance_hatch"))) .tier(HV) .register(); @@ -999,7 +998,7 @@ public class GTMachines { .langValue("%s Diode".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.PASSTHROUGH_HATCH) - .modelProperty(DiodePartMachine.AMP_MODE_PROPERTY, DiodePartMachine.AmpMode.MODE_1A) + .modelProperty(GTMachineModelProperties.DIODE_AMP_MODE, DiodePartMachine.AmpMode.MODE_1A) .model(createDiodeModel()) .tooltips(Component.translatable("gtceu.machine.diode.tooltip_general"), Component.translatable("gtceu.machine.diode.tooltip_starts_at"), @@ -1017,10 +1016,10 @@ public class GTMachines { .langValue("%s Rotor Holder".formatted(VNF[tier])) .rotationState(RotationState.ALL) .abilities(PartAbility.ROTOR_HOLDER) - .modelProperty(IMultiController.IS_FORMED_PROPERTY, false) - .modelProperty(RotorHolderPartMachine.HAS_ROTOR_PROPERTY, false) - .modelProperty(RotorHolderPartMachine.ROTOR_SPINNING_PROPERTY, false) - .modelProperty(RotorHolderPartMachine.EMISSIVE_ROTOR_PROPERTY, false) + .modelProperty(IS_FORMED, false) + .modelProperty(HAS_ROTOR, false) + .modelProperty(IS_ROTOR_SPINNING, false) + .modelProperty(IS_EMISSIVE_ROTOR, false) .model(createRotorHolderModel()) .tooltips(LangHandler.getMultiLang("gtceu.machine.rotor_holder.tooltip")) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index 21b1605e0d3..a44fe368143 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; @@ -67,7 +68,7 @@ public static void init() {} } + " Parallel Control Hatch") .rotationState(RotationState.ALL) .abilities(PartAbility.PARALLEL_HATCH) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableTieredHullMachineModel( GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) .andThen((ctx, prov, model) -> { @@ -131,7 +132,7 @@ public static void init() {} .where('T', Predicates.blocks(CASING_TITANIUM_PIPE.get())) .build()) .hasBER(true) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/watertight_casing"), GTCEu.id("block/multiblock/gcym/large_chemical_bath")) .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) @@ -192,7 +193,7 @@ public static void init() {} .where('#', Predicates.any()) .build()) .hasBER(true) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing"), GTCEu.id("block/multiblock/gcym/large_mixer")) .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 63ecca82ae4..3621f55904e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; @@ -244,7 +245,7 @@ public static MachineDefinition[] registerTransformerMachines(String langName, i case 3 -> VC[tier]; default -> -1; }) - .modelProperty(TransformerMachine.TRANSFORM_UP_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_TRANSFORM_UP, false) .model(createTransformerModel(baseAmp)) .langValue("%s %sTransformer".formatted(VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, langName.isEmpty() ? "" : langName + " ")) @@ -293,7 +294,7 @@ public static Pair registerSimpleSteamMach .rotationState(RotationState.ALL) .recipeType(recipeType) .recipeModifier(SimpleSteamMachine::recipeModifier) - .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) .workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name)) .register()); } @@ -325,7 +326,7 @@ public static MachineDefinition[] registerCharger(int itemSlotSize) { (holder, tier) -> new ChargerMachine(holder, tier, itemSlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) - .modelProperty(ChargerMachine.STATE_PROPERTY, ChargerMachine.State.IDLE) + .modelProperty(GTMachineModelProperties.CHARGER_STATE, ChargerMachine.State.IDLE) .model(GTMachineModels.createChargerModel()) .langValue("%s %sx Turbo Charger".formatted( VCF[tier] + VOLTAGE_NAMES[tier] + ChatFormatting.RESET, @@ -351,7 +352,7 @@ public static MachineDefinition[] registerConverter(int amperage) { .rotationState(RotationState.ALL) .langValue("%s %s§eA§r Energy Converter".formatted(VCF[tier] + VN[tier] + ChatFormatting.RESET, amperage)) - .modelProperty(ConverterMachine.FE_TO_EU_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_FE_TO_EU, false) .model(GTMachineModels.createConverterModel(amperage)) .tooltips(Component.translatable("gtceu.machine.energy_converter.description"), Component.translatable("gtceu.machine.energy_converter.tooltip_tool_usage"), @@ -402,7 +403,7 @@ public static MachineDefinition registerCrate(Material material, int capacity, S .langValue(lang) .rotationState(RotationState.NONE) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", capacity)) - .modelProperty(CrateMachine.TAPED_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_TAPED, false) .model(GTMachineModels.createCrateModel(wooden)) .paintingColor(wooden ? 0xFFFFFF : material.getMaterialRGB()) .itemColor((s, t) -> wooden ? 0xFFFFFF : material.getMaterialRGB()) @@ -591,7 +592,7 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl .recoveryItems( () -> new ItemLike[] { GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(texture, GTCEu.id("block/multiblock/generator/large_%s_boiler".formatted(name))) .andThen(b -> b.addDynamicRenderer(() -> DynamicRenderHelper.makeBoilerPartRender(firebox, casing)))) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 3d67a12a75a..5fb406aef77 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; @@ -579,7 +580,7 @@ public class GTMultiMachines { .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createSidedWorkableCasingMachineModel(GTCEu.id("block/casings/pump_deck"), GTCEu.id("block/multiblock/primitive_pump")) .andThen(builder -> { @@ -636,7 +637,7 @@ public class GTMultiMachines { .where('F', blocks(FIREBOX_BRONZE.get()) .or(Predicates.abilities(PartAbility.STEAM).setExactLimit(1))) .build()) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), GTCEu.id("block/multiblock/steam_oven")) .andThen(b -> b.addDynamicRenderer( @@ -730,7 +731,7 @@ public class GTMultiMachines { shapeInfos.add(baseBuilder.build()); return shapeInfos; }) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel(FusionReactorMachine.getCasingType(tier).getTexture(), GTCEu.id("block/multiblock/fusion_reactor")) .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createFusionRingRender))) @@ -793,14 +794,14 @@ public class GTMultiMachines { .where('#', any()) .build()) .allowExtendedFacing(true) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel( MATERIALS_TO_CASING_TEXTURES.get(LargeMinerMachine.getMaterial(tier)), GTCEu.id("block/multiblock/large_miner")) .andThen((ctx, prov, modelBuilder) -> { // replace the parent model for the formed large miner modelBuilder.replaceForAllStates((state, models) -> { - if (!state.getValue(LargeMinerMachine.IS_FORMED_PROPERTY)) { + if (!state.getValue(GTMachineModelProperties.IS_FORMED)) { return models; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index f32da306aca..40dbfb79bec 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -2,14 +2,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; -import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; @@ -115,7 +114,7 @@ public class GTResearchMachines { .tier(ZPM) .rotationState(RotationState.ALL) .abilities(PartAbility.OBJECT_HOLDER) - .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE) .model(createWorkableTieredHullMachineModel(GTCEu.id("block/machines/object_holder")) .andThen((ctx, prov, model) -> { model.addReplaceableTextures("bottom", "top", "side"); @@ -442,8 +441,8 @@ private static MachineBuilder registerHPCAPart(String name, S .langValue(displayName) .rotationState(RotationState.ALL) .abilities(PartAbility.HPCA_COMPONENT) - .modelProperty(IHPCAComponentHatch.HPCA_PART_DAMAGED_PROPERTY, false) - .modelProperty(IWorkable.ACTIVE_PROPERTY, false) + .modelProperty(GTMachineModelProperties.IS_HPCA_PART_DAMAGED, false) + .modelProperty(GTMachineModelProperties.IS_ACTIVE, false) .model(createHPCAPartModel(isAdvanced, GTCEu.id("block/overlay/machine/hpca/" + texture), GTCEu.id("block/overlay/machine/hpca/damaged" + (isAdvanced ? "_advanced" : "")))); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index 3a55547ba70..0d3eee9218e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -3,14 +3,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.IMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.IPaintable; -import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; -import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.feature.IExhaustVentMachine; -import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; -import com.gregtechceu.gtceu.api.machine.steam.SteamMachine; import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; @@ -21,11 +15,7 @@ import com.gregtechceu.gtceu.client.model.machine.overlays.WorkableOverlays; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.machine.electric.ChargerMachine; -import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; -import com.gregtechceu.gtceu.common.machine.electric.TransformerMachine; -import com.gregtechceu.gtceu.common.machine.electric.WorldAcceleratorMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.DiodePartMachine; -import com.gregtechceu.gtceu.common.machine.storage.CrateMachine; import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; import net.minecraft.Util; @@ -44,8 +34,7 @@ import java.util.Locale; -import static com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController.IS_FORMED_PROPERTY; -import static com.gregtechceu.gtceu.api.machine.feature.multiblock.IRotorHolderMachine.*; +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; import static com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay.*; import static com.gregtechceu.gtceu.common.data.models.GTModels.*; @@ -147,7 +136,7 @@ public static MachineBuilder.ModelInitializer createWorkableTieredHullMachineMod WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); builder.forAllStates(state -> { - RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); BlockModelBuilder model = prov.models().nested().parent(tieredHullModel(prov.models(), builder)); return addWorkableOverlays(overlays, status, model); @@ -158,7 +147,7 @@ public static MachineBuilder.ModelInitializer createWorkableTieredHullMachineMod public static MachineBuilder.ModelInitializer createOverlaySteamHullMachineModel(ResourceLocation overlayModel) { return (ctx, prov, builder) -> { builder.forAllStatesModels(state -> { - boolean steel = state.getOptionalValue(SteamMachine.STEEL_PROPERTY).orElse(false); + boolean steel = state.getOptionalValue(IS_STEEL_MACHINE).orElse(false); BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(overlayModel)); @@ -177,7 +166,7 @@ public static MachineBuilder.ModelInitializer createColorOverlaySteamHullMachine builder.forAllStatesModels(state -> { BlockModelBuilder model = colorOverlayHullModel(overlay, pipeOverlay, emissiveOverlay, state, prov.models()); - steamCasingTextures(model, state.getOptionalValue(SteamMachine.STEEL_PROPERTY).orElse(false)); + steamCasingTextures(model, state.getOptionalValue(IS_STEEL_MACHINE).orElse(false)); return model; }); @@ -198,7 +187,7 @@ public static MachineBuilder.ModelInitializer createWorkableSteamHullMachineMode makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.WAITING); makeWorkableOverlayPart(prov.models(), builder, parent, overlays, RecipeLogic.Status.SUSPEND); - if (!builder.getOwner().defaultRenderState().hasProperty(IExhaustVentMachine.VENT_DIRECTION_PROPERTY)) { + if (!builder.getOwner().defaultRenderState().hasProperty(VENT_DIRECTION)) { return; } @@ -208,7 +197,7 @@ public static MachineBuilder.ModelInitializer createWorkableSteamHullMachineMode .rotationX(dir == Direction.DOWN ? 90 : dir == Direction.UP ? 270 : 0) .rotationY(dir.getAxis().isVertical() ? 0 : ((int) dir.toYRot() + 180) % 360) .addModel() - .condition(IExhaustVentMachine.VENT_DIRECTION_PROPERTY, relative); + .condition(VENT_DIRECTION, relative); } }; } @@ -219,7 +208,7 @@ private static void makeWorkableOverlayPart(BlockModelProvider models, WorkableOverlays overlays, RecipeLogic.Status status) { BlockModelBuilder model = models.nested().parent(parentModel); addWorkableOverlays(overlays, status, model); - builder.part(model).condition(RecipeLogic.STATUS_PROPERTY, status); + builder.part(model).condition(RECIPE_LOGIC_STATUS, status); } public static MachineBuilder.ModelInitializer createWorkableCasingMachineModel(ResourceLocation baseCasingTexture, @@ -228,7 +217,7 @@ public static MachineBuilder.ModelInitializer createWorkableCasingMachineModel(R WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); builder.forAllStates(state -> { - RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(CUBE_ALL_SIDED_OVERLAY_MODEL)) @@ -258,7 +247,7 @@ public static MachineBuilder.ModelInitializer createSidedWorkableCasingMachineMo WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); builder.forAllStates(state -> { - RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); @@ -293,7 +282,7 @@ public static MachineBuilder.ModelInitializer createSimpleGeneratorModel(Resourc WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); builder.forAllStatesModels(state -> { - RecipeLogic.Status status = state.getValue(RecipeLogic.STATUS_PROPERTY); + RecipeLogic.Status status = state.getValue(RECIPE_LOGIC_STATUS); BlockModelBuilder model = prov.models().nested().parent(prov.models().getExistingFile(GENERATOR_MODEL)); tieredHullTextures(model, builder.getOwner().getTier()); @@ -329,7 +318,7 @@ public static MachineBuilder.ModelInitializer createBatteryBufferModel(int inven public static MachineBuilder.ModelInitializer createChargerModel() { return (ctx, prov, builder) -> { builder.forAllStatesModels(renderState -> { - ChargerMachine.State state = renderState.getValue(ChargerMachine.STATE_PROPERTY); + ChargerMachine.State state = renderState.getValue(CHARGER_STATE); BlockModelBuilder model = prov.models().nested() .parent(prov.models().getExistingFile(SIDED_SIDED_OVERLAY_MODEL)); @@ -388,10 +377,10 @@ public static MachineBuilder.ModelInitializer createConverterModel(int amperage) tieredHullTextures(feToEuModel, builder.getOwner().getTier()); builder.partialState() - .with(ConverterMachine.FE_TO_EU_PROPERTY, false) + .with(IS_FE_TO_EU, false) .setModel(euToFeModel) .partialState() - .with(ConverterMachine.FE_TO_EU_PROPERTY, true) + .with(IS_FE_TO_EU, true) .setModel(feToEuModel) .end(); }; @@ -404,7 +393,7 @@ public static MachineBuilder.ModelInitializer createCrateModel(boolean wooden) { ModelFile tapedModel = prov.models().getExistingFile(GTCEu.id(modelPath + "_taped")); builder.forAllStatesModels(state -> { - if (state.getOptionalValue(CrateMachine.TAPED_PROPERTY).orElse(false)) { + if (state.getOptionalValue(IS_TAPED).orElse(false)) { return tapedModel; } else { return baseModel; @@ -416,7 +405,7 @@ public static MachineBuilder.ModelInitializer createCrateModel(boolean wooden) { public static MachineBuilder.ModelInitializer createDiodeModel() { return (ctx, prov, builder) -> { builder.forAllStatesModels(renderState -> { - DiodePartMachine.AmpMode mode = renderState.getValue(DiodePartMachine.AMP_MODE_PROPERTY); + DiodePartMachine.AmpMode mode = renderState.getValue(DIODE_AMP_MODE); final EnergyIOOverlay energyIn = IN_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); final EnergyIOOverlay energyOut = OUT_OVERLAYS_FOR_AMP.get(mode.getAmpValue()); @@ -439,7 +428,7 @@ public static MachineBuilder.ModelInitializer createDiodeModel() { public static MachineBuilder.ModelInitializer createTransformerModel(int baseAmp) { return (ctx, prov, builder) -> { builder.forAllStatesModels(renderState -> { - boolean transformUp = renderState.getValue(TransformerMachine.TRANSFORM_UP_PROPERTY); + boolean transformUp = renderState.getValue(IS_TRANSFORM_UP); EnergyIOOverlay frontFace = (transformUp ? OUT_OVERLAYS_FOR_AMP : IN_OVERLAYS_FOR_AMP) .get(baseAmp); EnergyIOOverlay otherFace = (transformUp ? IN_OVERLAYS_FOR_AMP : OUT_OVERLAYS_FOR_AMP) @@ -473,7 +462,7 @@ public static MachineBuilder.ModelInitializer createRotorHolderModel() { tieredHullTextures(blockModel, builder.getOwner().getTier()); builder.part(blockModel).end(); - builder.part(ROTOR_HOLDER_OVERLAY).condition(IS_FORMED_PROPERTY, true).end(); + builder.part(ROTOR_HOLDER_OVERLAY).condition(IS_FORMED, true).end(); makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE, false, false); makeRotorHolderState(builder, models, ROTOR_HOLDER_ROTOR_IDLE.withSuffix(EMISSIVE_SUFFIX), false, true); @@ -488,10 +477,10 @@ private static void makeRotorHolderState(MachineModelBuilder BlockModelProvider provider, ResourceLocation model, boolean spinning, boolean emissive) { builder.partialState() - .with(IS_FORMED_PROPERTY, true) - .with(HAS_ROTOR_PROPERTY, true) - .with(ROTOR_SPINNING_PROPERTY, spinning) - .with(EMISSIVE_ROTOR_PROPERTY, emissive) + .with(IS_FORMED, true) + .with(HAS_ROTOR, true) + .with(IS_ROTOR_SPINNING, spinning) + .with(IS_EMISSIVE_ROTOR, emissive) .setModel(provider.getExistingFile(model)); } @@ -517,11 +506,11 @@ public static MachineBuilder.ModelInitializer createWorldAcceleratorModel(Resour WorkableOverlays beOverlays = WorkableOverlays.get(beModeModelPath, prov.getExistingFileHelper()); builder.forAllStates(state -> { - boolean rtMode = state.getValue(WorldAcceleratorMachine.RANDOM_TICK_PROPERTY); + boolean rtMode = state.getValue(IS_RANDOM_TICK_MODE); WorkableOverlays overlays = rtMode ? rtOverlays : beOverlays; - boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); - boolean workingEnabled = state.getValue(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY); + boolean active = state.getValue(IS_ACTIVE); + boolean workingEnabled = state.getValue(IS_WORKING_ENABLED); RecipeLogic.Status status = active ? workingEnabled ? RecipeLogic.Status.WORKING : @@ -547,7 +536,7 @@ public static MachineBuilder.ModelInitializer createMaintenanceModel(ResourceLoc .parent(prov.models().getExistingFile(overlayModel)); tieredHullTextures(baseModel, builder.getOwner().getTier()); - if (state.getValue(IMaintenanceMachine.MAINTENANCE_TAPED_PROPERTY)) { + if (state.getValue(IS_TAPED)) { baseModel.texture("overlay_2", MAINTENANCE_TAPED_OVERLAY); } return baseModel; @@ -577,8 +566,8 @@ public static MachineBuilder.ModelInitializer createHPCAPartModel(boolean advanc casingTexture(baseModel, "side", textures); builder.forAllStatesModels(state -> { - boolean damaged = state.getValue(IHPCAComponentHatch.HPCA_PART_DAMAGED_PROPERTY); - boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); + boolean damaged = state.getValue(IS_HPCA_PART_DAMAGED); + boolean active = state.getValue(IS_ACTIVE); return prov.models().nested().parent(baseModel) .texture("overlay", overlay.getTexture(active, damaged)) @@ -607,8 +596,8 @@ public static MachineBuilder.ModelInitializer createItemCollectorModel(ResourceL WorkableOverlays overlays = WorkableOverlays.get(overlayDir, prov.getExistingFileHelper()); builder.forAllStates(state -> { - boolean active = state.getValue(IWorkable.ACTIVE_PROPERTY); - boolean workingEnabled = state.getValue(WorldAcceleratorMachine.WORKING_ENABLED_PROPERTY); + boolean active = state.getValue(IS_ACTIVE); + boolean workingEnabled = state.getValue(IS_WORKING_ENABLED); RecipeLogic.Status status = active ? workingEnabled ? RecipeLogic.Status.WORKING : @@ -678,7 +667,7 @@ public static BlockModelBuilder colorOverlayHullModel(ResourceLocation overlay, @Nullable ResourceLocation emissiveOverlay, MachineRenderState state, BlockModelProvider models) { ResourceLocation parent; - if (state.getOptionalValue(IPaintable.IS_PAINTED_PROPERTY).orElse(false)) { + if (state.getOptionalValue(IS_PAINTED).orElse(false)) { parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_COLOR_RING_MODEL : HATCH_PART_COLOR_RING_MODEL; } else { parent = emissiveOverlay != null ? HATCH_PART_EMISSIVE_MODEL : HATCH_PART_MODEL; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java index 6ec6383307e..5ba95ae38d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ChargerMachine.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -61,8 +62,7 @@ public enum State implements StringRepresentable { } } - public static final EnumProperty STATE_PROPERTY = EnumProperty.create("charger_state", - ChargerMachine.State.class); + public static final EnumProperty STATE_PROPERTY = GTMachineModelProperties.CHARGER_STATE; @Persisted @Getter @@ -189,7 +189,7 @@ private List getNonFullElectricItem() { private void changeState(State newState) { if (state != newState) { state = newState; - setRenderState(getRenderState().setValue(STATE_PROPERTY, newState)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.CHARGER_STATE, newState)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java index 50dd09f0ef6..0a2e4f57c08 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ConverterMachine.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.machine.trait.ConverterTrait; @@ -36,7 +37,7 @@ public class ConverterMachine extends TieredEnergyMachine { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ConverterMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); - public static final BooleanProperty FE_TO_EU_PROPERTY = BooleanProperty.create("fe_to_eu"); + public static final BooleanProperty FE_TO_EU_PROPERTY = GTMachineModelProperties.IS_FE_TO_EU; public ConverterMachine(IMachineBlockEntity holder, int tier, int amps, Object... args) { super(holder, tier, args, amps); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java index 400d6d3198f..3da4764c093 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/ItemCollectorMachine.java @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem; import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; @@ -232,7 +233,7 @@ public void updateCollectionSubscription() { public void setActive(boolean active) { this.active = active; - setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, active)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, active)); } public void update() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java index 51151d45924..0e8cf1afcb3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/TransformerMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -32,7 +33,7 @@ public class TransformerMachine extends TieredEnergyMachine implements IControll protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(TransformerMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); - public static final BooleanProperty TRANSFORM_UP_PROPERTY = BooleanProperty.create("transform_up"); + public static final BooleanProperty TRANSFORM_UP_PROPERTY = GTMachineModelProperties.IS_TRANSFORM_UP; @Persisted @DescSynced @@ -120,7 +121,7 @@ public void setTransformUp(boolean isTransformUp) { if (this.isTransformUp != isTransformUp && !isRemote()) { this.isTransformUp = isTransformUp; updateEnergyContainer(isTransformUp); - setRenderState(getRenderState().setValue(TRANSFORM_UP_PROPERTY, isTransformUp)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TRANSFORM_UP, isTransformUp)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java index 18b6b741345..7fa52a713dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/WorldAcceleratorMachine.java @@ -5,12 +5,12 @@ import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; -import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.item.tool.GTToolType; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -57,7 +57,7 @@ public class WorldAcceleratorMachine extends TieredEnergyMachine implements ICon // Hard-coded blacklist for blockentities private static final List blockEntityClassNamesBlackList = new ArrayList<>(); - public static final BooleanProperty RANDOM_TICK_PROPERTY = BooleanProperty.create("random_tick_mode"); + public static final BooleanProperty RANDOM_TICK_PROPERTY = GTMachineModelProperties.IS_RANDOM_TICK_MODE; protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( WorldAcceleratorMachine.class, TieredEnergyMachine.MANAGED_FIELD_HOLDER); @@ -107,12 +107,12 @@ public void updateSubscription() { if (isWorkingEnabled && drainEnergy(true)) { tickSubs = subscribeServerTick(tickSubs, this::update); active = true; - setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, true)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, true)); } else if (tickSubs != null) { tickSubs.unsubscribe(); tickSubs = null; active = false; - setRenderState(getRenderState().setValue(IWorkable.ACTIVE_PROPERTY, false)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_ACTIVE, false)); } } @@ -217,7 +217,7 @@ public void onUnload() { public void setWorkingEnabled(boolean workingEnabled) { isWorkingEnabled = workingEnabled; - setRenderState(getRenderState().setValue(WORKING_ENABLED_PROPERTY, isWorkingEnabled)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_WORKING_ENABLED, isWorkingEnabled)); updateSubscription(); } @@ -249,7 +249,7 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h BlockHitResult hitResult) { if (!isRemote()) { isRandomTickMode = !isRandomTickMode; - setRenderState(getRenderState().setValue(RANDOM_TICK_PROPERTY, isRandomTickMode)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_RANDOM_TICK_MODE, isRandomTickMode)); playerIn.sendSystemMessage(Component.translatable(isRandomTickMode ? "gtceu.machine.world_accelerator.mode_entity" : "gtceu.machine.world_accelerator.mode_tile")); scheduleRenderUpdate(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java index 3d416a1b80a..7c53ad01d40 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DiodePartMachine.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; @@ -67,7 +68,7 @@ public static AmpMode getByValue(int amps) { } } - public static final EnumProperty AMP_MODE_PROPERTY = EnumProperty.create("amp_mode", AmpMode.class); + public static final EnumProperty AMP_MODE_PROPERTY = GTMachineModelProperties.DIODE_AMP_MODE; // spotless:on public static int MAX_AMPS = 16; @@ -140,7 +141,7 @@ protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand h cycleAmpMode(); if (getLevel().isClientSide) { setRenderState(getRenderState() - .setValue(AMP_MODE_PROPERTY, AmpMode.getByValue(this.amps))); + .setValue(GTMachineModelProperties.DIODE_AMP_MODE, AmpMode.getByValue(this.amps))); scheduleRenderUpdate(); playerIn.sendSystemMessage(Component.translatable("gtceu.machine.diode.message", amps)); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java index d2d70b318bf..0cbc49baad9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java @@ -13,7 +13,9 @@ import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -130,6 +132,13 @@ public void onLoad() { super.onLoad(); if (!isRemote()) { updateMaintenanceSubscription(); + + // fix the model being invalid after the tape property rename + MachineRenderState renderState = getRenderState(); + if (renderState.hasProperty(GTMachineModelProperties.IS_TAPED) && + this.isTaped != renderState.getValue(GTMachineModelProperties.IS_TAPED)) { + setRenderState(renderState.setValue(GTMachineModelProperties.IS_TAPED, this.isTaped)); + } } } @@ -301,7 +310,7 @@ public boolean isFullAuto() { public void setTaped(boolean isTaped) { if (this.isTaped != isTaped) { this.isTaped = isTaped; - setRenderState(getRenderState().setValue(MAINTENANCE_TAPED_PROPERTY, isTaped)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java index d9018dd21dd..bd96c5d59eb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/RotorHolderPartMachine.java @@ -41,6 +41,8 @@ import javax.annotation.ParametersAreNonnullByDefault; +import static com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties.*; + @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class RotorHolderPartMachine extends TieredPartMachine @@ -141,13 +143,13 @@ private void onRotorInventoryChanged() { boolean emissive = this.rotorMaterial.hasProperty(PropertyKey.ORE) && this.rotorMaterial.getProperty(PropertyKey.ORE).isEmissive(); setRenderState(getRenderState() - .setValue(HAS_ROTOR_PROPERTY, true) - .setValue(EMISSIVE_ROTOR_PROPERTY, emissive)); + .setValue(HAS_ROTOR, true) + .setValue(IS_EMISSIVE_ROTOR, emissive)); } else { this.rotorMaterial = GTMaterials.NULL; setRenderState(getRenderState() - .setValue(HAS_ROTOR_PROPERTY, false) - .setValue(EMISSIVE_ROTOR_PROPERTY, false)); + .setValue(HAS_ROTOR, false) + .setValue(IS_EMISSIVE_ROTOR, false)); } } @@ -179,7 +181,7 @@ private void updateRotorSpeed() { public void setRotorSpeed(int rotorSpeed) { if ((this.rotorSpeed > 0 && rotorSpeed <= 0) || (this.rotorSpeed <= 0 && rotorSpeed > 0)) { - setRenderState(getRenderState().setValue(ROTOR_SPINNING_PROPERTY, rotorSpeed > 0)); + setRenderState(getRenderState().setValue(IS_ROTOR_SPINNING, rotorSpeed > 0)); } this.rotorSpeed = rotorSpeed; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java index 76f62ee643c..aa7e5b57461 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/hpca/HPCAComponentPartMachine.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part.hpca; import com.gregtechceu.gtceu.api.capability.IHPCAComponentHatch; -import com.gregtechceu.gtceu.api.capability.IWorkable; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.feature.IMachineModifyDrops; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IWorkableMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.common.data.GTBlocks; @@ -87,8 +87,8 @@ public void setDamaged(boolean damaged) { markDirty(); MachineRenderState state = getRenderState(); - if (state.hasProperty(HPCA_PART_DAMAGED_PROPERTY)) { - setRenderState(state.setValue(HPCA_PART_DAMAGED_PROPERTY, damaged)); + if (state.hasProperty(GTMachineModelProperties.IS_HPCA_PART_DAMAGED)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_HPCA_PART_DAMAGED, damaged)); } } } @@ -96,8 +96,8 @@ public void setDamaged(boolean damaged) { @Override public boolean beforeWorking(IWorkableMultiController controller) { MachineRenderState state = getRenderState(); - if (state.hasProperty(IWorkable.ACTIVE_PROPERTY)) { - setRenderState(state.setValue(IWorkable.ACTIVE_PROPERTY, true)); + if (state.hasProperty(GTMachineModelProperties.IS_ACTIVE)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_ACTIVE, true)); } return super.beforeWorking(controller); } @@ -105,8 +105,8 @@ public boolean beforeWorking(IWorkableMultiController controller) { @Override public boolean afterWorking(IWorkableMultiController controller) { MachineRenderState state = getRenderState(); - if (state.hasProperty(IWorkable.ACTIVE_PROPERTY)) { - setRenderState(state.setValue(IWorkable.ACTIVE_PROPERTY, false)); + if (state.hasProperty(GTMachineModelProperties.IS_ACTIVE)) { + setRenderState(state.setValue(GTMachineModelProperties.IS_ACTIVE, false)); } return super.afterWorking(controller); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java index dce0c7067ec..41ef34b3dd1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/CrateMachine.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.*; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler; import com.gregtechceu.gtceu.common.data.GTItems; @@ -44,7 +45,7 @@ public class CrateMachine extends MetaMachine implements IUIMachine, IMachineLif public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CrateMachine.class, MetaMachine.MANAGED_FIELD_HOLDER); - public static final BooleanProperty TAPED_PROPERTY = BooleanProperty.create("taped"); + public static final BooleanProperty TAPED_PROPERTY = GTMachineModelProperties.IS_TAPED; @Override public ManagedFieldHolder getFieldHolder() { @@ -106,7 +107,7 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play stack.shrink(1); } isTaped = true; - setRenderState(getRenderState().setValue(TAPED_PROPERTY, isTaped)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); return InteractionResult.sidedSuccess(world.isClientSide); } } @@ -125,7 +126,7 @@ public void onMachinePlaced(@Nullable LivingEntity player, ItemStack stack) { tag.remove("taped"); this.isTaped = false; - setRenderState(getRenderState().setValue(TAPED_PROPERTY, isTaped)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_TAPED, isTaped)); } stack.setTag(null); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java index ce43089f7ab..1afaec3e6a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/ConverterTrait.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.MachineTrait; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.common.machine.electric.ConverterMachine; @@ -58,7 +59,7 @@ public ManagedFieldHolder getFieldHolder() { public void setFeToEu(boolean feToEu) { this.feToEu = feToEu; - setRenderState(getRenderState().setValue(ConverterMachine.FE_TO_EU_PROPERTY, feToEu)); + setRenderState(getRenderState().setValue(GTMachineModelProperties.IS_FE_TO_EU, feToEu)); machine.notifyBlockUpdate(); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 38e43df4647..e9e799f7dd4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -42,6 +42,7 @@ import com.gregtechceu.gtceu.api.machine.SimpleTieredMachine; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; import com.gregtechceu.gtceu.api.pattern.MultiblockShapeInfo; import com.gregtechceu.gtceu.api.pattern.Predicates; @@ -352,6 +353,7 @@ public void registerBindings(BindingsEvent event) { // Client/Server data related event.add("GTModels", GTModels.class); event.add("GTMachineModels", GTMachineModels.class); + event.add("GTModelProperties", GTMachineModelProperties.class); // Hazard Related event.add("HazardProperty", HazardProperty.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 40fe737db52..9ae91e279bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; @@ -45,7 +46,7 @@ public MachineDefinition register() { lowPressureBuilder.langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(0) .recipeModifier(SimpleSteamMachine::recipeModifier) - .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) .workableSteamHullModel(false, id.withPrefix("block/machines/")); definition.apply(false, lowPressureBuilder); value = lowPressureBuilder.register(); @@ -58,7 +59,7 @@ public MachineDefinition register() { highPressureBuilder.langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(1) .recipeModifier(SimpleSteamMachine::recipeModifier) - .modelProperty(SimpleSteamMachine.VENT_DIRECTION_PROPERTY, RelativeDirection.BACK) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) .workableSteamHullModel(true, id.withPrefix("block/machines/")); definition.apply(true, highPressureBuilder); hpValue = highPressureBuilder.register(); From ec17193f0ad4692958dce330404470beaaa3c03f Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Mon, 28 Jul 2025 16:26:10 -0400 Subject: [PATCH 230/270] Stop Log Spam outside of Developer Mode for IO Export Errors (#3566) --- .../java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index f179d1f2f15..c3f743eed32 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.recipe.ingredient.FluidIngredient; +import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTUtil; @@ -222,7 +223,7 @@ public static ActionResult handleRecipe(IRecipeCapabilityHolder holder, GTRecipe if (result.isSuccess() || result.capability() == null) return result; - if (!simulated) { + if (!simulated && ConfigHolder.INSTANCE.dev.debug) { GTCEu.LOGGER.warn("IO {} Error while handling recipe {} outputs for {}", Component.translatable(io.tooltip).getString(), recipe, holder); } From 6dc308ba68f6e491ff2cec777297359387f384a7 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Tue, 29 Jul 2025 03:06:29 +0200 Subject: [PATCH 231/270] Add recipe handler bypass system (#3562) --- .../recipe/FluidRecipeCapability.java | 6 +++ .../recipe/ItemRecipeCapability.java | 6 +++ .../capability/recipe/RecipeCapability.java | 9 ++++ .../trait/RecipeHandlerGroupDistinctness.java | 3 +- .../api/machine/trait/RecipeHandlerList.java | 14 +++++ .../gtceu/api/recipe/RecipeHelper.java | 5 ++ .../gtceu/api/recipe/RecipeRunner.java | 53 +++++++++++++++---- 7 files changed, 84 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index cbc11e3f18c..1534533dc19 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -443,4 +443,10 @@ public interface ICustomParallel { */ int limitFluidParallel(GTRecipe recipe, int multiplier, boolean tick); } + + // Fluids should be respected for distinct checks + @Override + public boolean shouldBypassDistinct() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 34035e8c139..39883a1b5dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -565,4 +565,10 @@ public interface ICustomParallel { */ int limitItemParallel(GTRecipe recipe, int multiplier, boolean tick); } + + // Items should be respected for distinct checks + @Override + public boolean shouldBypassDistinct() { + return false; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index 388689526b6..5c737562916 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -213,4 +213,13 @@ public Object2IntMap makeChanceCache() { public boolean isTickSlot(int index, IO io, GTRecipe recipe) { return index >= (io == IO.IN ? recipe.getInputContents(this) : recipe.getOutputContents(this)).size(); } + + /** + * Should this RecipeCapability bypass distinct checks? + * E.g. should this bus be added to all recipe checks on a multi, even distinct ones like ME Pattern buffers. + * for example: energy hatches, soul hatches, other "global per multi" hatches. + */ + public boolean shouldBypassDistinct() { + return true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java index dd0b529a35b..d853244ba7b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerGroupDistinctness.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.machine.trait; public enum RecipeHandlerGroupDistinctness implements RecipeHandlerGroup { - BUS_DISTINCT + BUS_DISTINCT, + BYPASS_DISTINCT } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java index 06c6d5e0719..090c250e781 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeHandlerList.java @@ -143,6 +143,20 @@ public boolean hasCapability(RecipeCapability cap) { return getHandlerMap().getOrDefault(cap, Collections.emptyList()); } + public @NotNull Set> getCapabilities() { + return getHandlerMap().keySet(); + } + + /** + * @return whether any of the capabilities in this RHL should bypass distinct checks + */ + public boolean doesCapabilityBypassDistinct() { + for (var capability : getCapabilities()) { + if (capability.shouldBypassDistinct()) return true; + } + return false; + } + public boolean isValid(IO extIO) { if (this == NO_DATA || handlerIO == IO.NONE) return false; return (extIO == IO.BOTH || handlerIO == IO.BOTH || extIO == handlerIO); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index c3f743eed32..599588da58b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -348,6 +348,11 @@ public static Map, List> doTrim(Map> map) { + // If they should bypass this system, add them to the BYPASS_DISTINCT group. + if (handler.doesCapabilityBypassDistinct()) { + map.computeIfAbsent(RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, $ -> new ArrayList<>()).add(handler); + return; + } // Add undyed RHL's to every group that's not distinct, and also the undyed group itself. if (key.equals(RecipeHandlerGroupColor.UNDYED)) { for (var entry : map.entrySet()) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index eb97a229507..c4e1bd3a3d6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -105,19 +105,14 @@ private void fillContentMatchList(Map, List> entrie } private ActionResult handleContents() { - var result = handleContentsInternal(io); - return result; - } - - private ActionResult handleContentsInternal(IO capIO) { if (recipeContents.isEmpty()) return ActionResult.SUCCESS; - if (!capabilityProxies.containsKey(capIO)) { + if (!capabilityProxies.containsKey(io)) { return ActionResult.FAIL_NO_CAPABILITIES; } - List handlers = capabilityProxies.getOrDefault(capIO, Collections.emptyList()); + List handlers = capabilityProxies.getOrDefault(io, Collections.emptyList()); // Only sort for non-tick outputs - if (!isTick && capIO.support(IO.OUT)) { + if (!isTick && io.support(IO.OUT)) { handlers.sort(RecipeHandlerList.COMPARATOR.reversed()); } @@ -128,23 +123,37 @@ private ActionResult handleContentsInternal(IO capIO) { // Specifically check distinct handlers first for (RecipeHandlerList handler : handlerGroups.getOrDefault(RecipeHandlerGroupDistinctness.BUS_DISTINCT, Collections.emptyList())) { + // Handle the contents of this handler and also all the bypassed handlers var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); + for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + res = bypass_handler.handleRecipe(io, recipe, res, true); + } if (res.isEmpty()) { if (!simulated) { + // Actually consume the contents of this handler and also all the bypassed handlers handler.handleRecipe(io, recipe, recipeContents, false); + for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + res = bypass_handler.handleRecipe(io, recipe, res, false); + } } recipeContents.clear(); return ActionResult.SUCCESS; } } - // Check the others + // Check the other groups. For every group, try consuming the ingredients, + // see if it succeeds. for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; // List to keep track of the remaining items for this RecipeHandlerGroup Map, List> copiedRecipeContents = searchRecipeContents; boolean found = false; + for (RecipeHandlerList handler : handlerListEntry.getValue()) { copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, true); if (copiedRecipeContents.isEmpty()) { @@ -152,10 +161,22 @@ private ActionResult handleContentsInternal(IO capIO) { break; } } + for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypass_handler.handleRecipe(io, recipe, copiedRecipeContents, true); + if (copiedRecipeContents.isEmpty()) { + found = true; + break; + } + } + if (!found) continue; if (simulated) return ActionResult.SUCCESS; - // Start actually removing items, keep track of the remaining items for this RecipeHandlerGroup + // Start actually removing items. + // Keep track of the remaining items for this RecipeHandlerGroup copiedRecipeContents = recipeContents; + // First go through the handlers of the group for (RecipeHandlerList handler : handlerListEntry.getValue()) { copiedRecipeContents = handler.handleRecipe(io, recipe, copiedRecipeContents, false); if (copiedRecipeContents.isEmpty()) { @@ -163,11 +184,21 @@ private ActionResult handleContentsInternal(IO capIO) { return ActionResult.SUCCESS; } } + // Then go through the handlers that bypass the distinctness system and empty those + for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypass_handler.handleRecipe(io, recipe, copiedRecipeContents, false); + if (copiedRecipeContents.isEmpty()) { + recipeContents.clear(); + return ActionResult.SUCCESS; + } + } } for (var entry : recipeContents.entrySet()) { if (entry.getValue() != null && !entry.getValue().isEmpty()) { - return ActionResult.fail(null, entry.getKey(), capIO); + return ActionResult.fail(null, entry.getKey(), io); } } From 9f923ec2c4b44d473b1c532e2996e166f9d154f0 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Mon, 28 Jul 2025 22:03:02 -0600 Subject: [PATCH 232/270] Adds a Shortcut for removing property keys in kube (#3567) --- .../gtceu/api/data/chemical/material/Material.java | 6 +++++- .../chemical/material/properties/MaterialProperties.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index ddc4a0d19d2..98f802ca500 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -516,13 +516,17 @@ public MaterialStack multiply(long amount) { } public boolean hasProperty(PropertyKey key) { - return getProperty(key) != null; + return properties.hasProperty(key); } public T getProperty(PropertyKey key) { return properties.getProperty(key); } + public void removeProperty(PropertyKey key) { + properties.removeProperty(key); + } + public void setProperty(PropertyKey key, IMaterialProperty property) { if (!GTCEuAPI.materialManager.canModifyMaterials()) { throw new IllegalStateException("Cannot add properties to a Material when registry is frozen!"); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java index fe535cf43c3..c367e07491a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/MaterialProperties.java @@ -37,7 +37,7 @@ public T getProperty(PropertyKey key) { } public boolean hasProperty(PropertyKey key) { - return propertyMap.get(key) != null; + return propertyMap.containsKey(key); } public void setProperty(PropertyKey key, IMaterialProperty value) { From c5823b72ab6c729e01945b29d93b21314eab4bdd Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Tue, 29 Jul 2025 00:40:40 -0600 Subject: [PATCH 233/270] 7.0 Doc Work (#3010) --- .../Modifying-Crafting-Components.md | 150 ---------------- .../Modpacks/Recipes/Crafting-Components.md | 163 ++++++++++++++++++ .../Modpacks/Recipes/Material-Entries.md | 99 +++++++++++ .../Recipes/TagPrefixRecipeGeneration.md | 54 ++++++ 4 files changed, 316 insertions(+), 150 deletions(-) delete mode 100644 docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md create mode 100644 docs/content/Modpacks/Recipes/Crafting-Components.md create mode 100644 docs/content/Modpacks/Recipes/Material-Entries.md create mode 100644 docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md diff --git a/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md b/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md deleted file mode 100644 index 8dc2e2e7f32..00000000000 --- a/docs/content/Modpacks/Other-Topics/Modifying-Crafting-Components.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: "Modifying Crafting Components" ---- - -# Modifying Crafting Components - -## Changing a single entry - -With KubeJS it is possible to modify the predefined components of existing GTCEu Modern machine crafting recipes. -You can replace singular entries, or do bulk modification of components. --1 is defined as a fallback value if no other entries exist. if you modify in bulk, you **MUST** insert one if the component expects it to exist. otherwise the game may crash when loading recipes. Other numbers correspond to tier indices. for example: `3 == GTValues.HV` - -```js title="modification.js" -const Map = Java.loadClass("java.util.Map") - -GTCEuServerEvents.craftingComponents(event => { - event.modifyItem(CraftingComponent.CIRCUIT, GTValues.MV, Item.of('minecraft:dirt')) // (1) - event.modifyItem(CraftingComponent.PUMP, Map.of( - GTValues.FALLBACK, Item.of('gtceu:lv_robot_arm'), - GTValues.LV, Item.of('gtceu:lv_robot_arm'), - GTValues.MV, Item.of('gtceu:mv_robot_arm'), - GTValues.HV, Item.of('gtceu:hv_robot_arm'), - GTValues.EV, Item.of('gtceu:ev_robot_arm'), - GTValues.IV, Item.of('gtceu:iv_robot_arm'), - GTValues.LuV, Item.of('gtceu:luv_robot_arm'), - GTValues.ZPM, Item.of('gtceu:zpm_robot_arm'), - GTValues.UV, Item.of('gtceu:uv_robot_arm'), - )) // (2) - event.modifyTag(CraftingComponent.CASING, GTValues.EV, 'minecraft:logs') // (3) - event.modifyUnificationEntry(CraftingComponent.PLATE, GTValues.UEV, new UnificationEntry('plate', 'gtceu:infinity')) // (4) -}) -``` - -1. Replaces the MV circuit tag in all GT machine crafting recipes with a single block of `minecraft:dirt`. -2. Modifies all pumps in GT machine crafting recipes by replacing the pump with a robot arm, and reinserts the FALLBACK entry. -3. Replaces the EV casing with the `#minecraft:logs` tag. note the lack of `#` at the beginning of the tag! -4. Adds a new entry to the plate component for UEV with prefix `plate` and material `gtceu:infinity`. - -!!! tip "Bulk Callbacks" - - All the bulk callbacks (`modify*` functions that take two parameters instead of three, see example 2) work the same as the single modification functions, except they take a map of `int: value` instead of a single entry. - - -## Creating new components - -It's also possible to create new crafting components with KubeJS. -You must add entries for all tiers you're planning to use, and a FALLBACK if the map *may* be indexed out of bounds at all. -It's recommended to always add a FALLBACK entry. - -```js title="creation.js" -const Map = Java.loadClass("java.util.Map") - -let ITEM_CRAFTING_COMPONENT = null -let TAG_CRAFTING_COMPONENT = null -let UNIFICATION_CRAFTING_COMPONENT = null - -GTCEuServerEvents.craftingComponents(event => { - ITEM_CRAFTING_COMPONENT = event.createItem(Map.of( - GTValues.FALLBACK: Item.of('minecraft:cyan_stained_glass'), - GTValues.LV: Item.of('minecraft:cyan_stained_glass'), - GTValues.MV: Item.of('minecraft:cyan_stained_glass'), - GTValues.HV: Item.of('minecraft:cyan_stained_glass'), - GTValues.EV: Item.of('minecraft:lime_stained_glass'), - GTValues.IV: Item.of('minecraft:lime_stained_glass'), - GTValues.LuV: Item.of('minecraft:lime_stained_glass'), - GTValues.ZPM: Item.of('minecraft:magenta_stained_glass'), - GTValues.UV: Item.of('minecraft:magenta_stained_glass'), - )) // (1) - TAG_CRAFTING_COMPONENT = event.createTag(Map.of( - GTValues.FALLBACK: 'forge:barrels/wooden' - GTValues.LV: 'forge:chests/wooden' - GTValues.MV: 'forge:chests/trapped' - GTValues.HV: 'forge:chests/ender' - GTValues.EV: 'forge:cobblestone' - GTValues.IV: 'forge:cobblestone/normal' - GTValues.LuV: 'forge:cobblestone/infested' - GTValues.ZPM: 'forge:cobblestone/mossy' - GTValues.UV: 'forge:cobblestone/deepslate' - )) // (2) - UNIFICATION_CRAFTING_COMPONENT = event.createUnificationEntry(Map.of( - GTValues.FALLBACK: new UnificationEntry('plate', 'gtceu:infinity') - GTValues.LV: new UnificationEntry('block', 'gtceu:infinity') - GTValues.MV: new UnificationEntry('ingot', 'gtceu:infinity') - GTValues.HV: new UnificationEntry('dust', 'gtceu:infinity') - GTValues.EV: new UnificationEntry('round', 'gtceu:infinity') - GTValues.IV: new UnificationEntry('foil', 'gtceu:infinity') - GTValues.LuV: new UnificationEntry('longRod', 'gtceu:infinity') - GTValues.ZPM: new UnificationEntry('rod', 'gtceu:infinity') - GTValues.UV: new UnificationEntry('bolt', 'gtceu:infinity') - )) // (3) -}) -``` - -1. Creates a new crafting component with item stack entries. -2. Creates a new crafting component with item tag entries. note the lack of `#` at the beginning of the tag! -3. Creates a new crafting component with UnificationEntry entries. - - -### Builtin Crafting Components - -- `CIRCUIT` -- `BETTER_CIRCUIT` -- `PUMP` -- `WIRE_ELECTRIC` -- `WIRE_QUAD` -- `WIRE_OCT` -- `WIRE_HEX` -- `CABLE` -- `CABLE_DOUBLE` -- `CABLE_QUAD` -- `CABLE_OCT` -- `CABLE_HEX` -- `CABLE_TIER_UP` -- `CABLE_TIER_UP_DOUBLE` -- `CABLE_TIER_UP_QUAD` -- `CABLE_TIER_UP_OCT` -- `CABLE_TIER_UP_HEX` -- `CASING` -- `HULL` -- `PIPE_NORMAL` -- `PIPE_LARGE` -- `PIPE_NONUPLE` -- `GLASS` -- `PLATE` -- `HULL_PLATE` -- `MOTOR` -- `ROTOR` -- `SENSOR` -- `GRINDER` -- `SAWBLADE` -- `DIAMOND` -- `PISTON` -- `EMITTER` -- `CONVEYOR` -- `ROBOT_ARM` -- `COIL_HEATING` -- `COIL_HEATING_DOUBLE` -- `COIL_ELECTRIC` -- `STICK_MAGNETIC` -- `STICK_DISTILLATION` -- `FIELD_GENERATOR` -- `STICK_ELECTROMAGNETIC` -- `STICK_RADIOACTIVE` -- `PIPE_REACTOR` -- `POWER_COMPONENT` -- `VOLTAGE_COIL` -- `SPRING` -- `CRATE` -- `DRUM` -- `FRAME` diff --git a/docs/content/Modpacks/Recipes/Crafting-Components.md b/docs/content/Modpacks/Recipes/Crafting-Components.md new file mode 100644 index 00000000000..4c56bf47351 --- /dev/null +++ b/docs/content/Modpacks/Recipes/Crafting-Components.md @@ -0,0 +1,163 @@ +--- +title: "Crafting Components" +--- + +# Crafting Components + +Crafting Components are a way to organize and simplify the various similar recipes that GregTech generates. For example: writing out the recipes for all tiers of an alloy smelter can be done iteratively rather than one by one. + +Crafting Components are a map pairing a Voltage tier (the tier number) to a value. The value can be a `MaterialEntry`, `ItemStack`, or `TagPrefix`. + +## Changing a single entry + +With KubeJS it is possible to modify the predefined components of existing GTCEu Modern machine crafting recipes. +You can replace singular entries, or do bulk modification of components. +-1 is defined as a fallback value if no other entries exist. + +```js title="startup/modification.js" +const Map = Java.loadClass("java.util.Map") + +GTCEuStartupEvents.craftingComponents(event => { + event.setItem(GTCraftingComponents.CIRCUIT, GTValues.MV, Item.of('minecraft:dirt')) // (1) + event.setItems(GTCraftingComponents.PUMP, Map.of( + GTValues.LV, Item.of('gtceu:lv_robot_arm'), + GTValues.MV, Item.of('gtceu:mv_robot_arm'), + GTValues.HV, Item.of('gtceu:hv_robot_arm'), + GTValues.EV, Item.of('gtceu:ev_robot_arm'), + GTValues.IV, Item.of('gtceu:iv_robot_arm'), + GTValues.LuV, Item.of('gtceu:luv_robot_arm'), + GTValues.ZPM, Item.of('gtceu:zpm_robot_arm'), + GTValues.UV, Item.of('gtceu:uv_robot_arm'), + )) // (2) + event.setTag(GTCraftingComponents.CASING, GTValues.EV, 'minecraft:logs') // (3) + event.setMaterialEntry(GTCraftingComponents.PLATE, GTValues.UEV, new MaterialEntry('plate', 'gtceu:infinity')) // (4) + event.removeTier("sensor", 3) // (5) +}) +``` +1. Replaces the MV circuit tag in all GT machine crafting recipes with a single block of `minecraft:dirt`. +2. Modifies all pumps in GT machine crafting recipes by replacing the pump with a robot arm. +3. Replaces the EV casing with the `#minecraft:logs` tag. note the lack of `#` at the beginning of the tag! +4. Adds a new entry to the plate component for UEV with prefix `plate` and material `gtceu:infinity`. +5. Removes the 3rd offset entry `(HV Tier)` of the sensor crafting component, will default to the fallback `(LV Sensor)` + + +## Creating new components + +It's also possible to create new crafting components with KubeJS. +The crafting component is constructed with a id and a fallback value. You can add entries by chaining `.add(tier, value)` methods after your construction. + +```js title="creation.js" +const Map = Java.loadClass("java.util.Map") + +let ITEM_CRAFTING_COMPONENT = null +let TAG_CRAFTING_COMPONENT = null +let UNIFICATION_CRAFTING_COMPONENT = null + +GTCEuServerEvents.craftingComponents(event => { + ITEM_CRAFTING_COMPONENT = event.createItem("item_component", 'minecraft:cyan_stained_glass') + .addItem(GTValues.LV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.MV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.HV, Item.of('minecraft:cyan_stained_glass')) + .addItem(GTValues.EV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.IV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.LuV, Item.of('minecraft:lime_stained_glass')) + .addItem(GTValues.ZPM, Item.of('minecraft:magenta_stained_glass')) + .addItem(GTValues.UV, Item.of('minecraft:magenta_stained_glass')) + // (1) + TAG_CRAFTING_COMPONENT = event.createTag("tag_component", 'forge:barrels/wooden') + .addTag(GTValues.LV, 'forge:chests/wooden') + .addTag(GTValues.MV, 'forge:chests/trapped') + .addTag(GTValues.HV, 'forge:chests/ender') + .addTag(GTValues.EV, 'forge:cobblestone') + .addTag(GTValues.IV, 'forge:cobblestone/normal') + .addTag(GTValues.LuV, 'forge:cobblestone/infested') + .addTag(GTValues.ZPM, 'forge:cobblestone/mossy') + .addTag(GTValues.UV, 'forge:cobblestone/deepslate') + // (2) + UNIFICATION_CRAFTING_COMPONENT = event.createMaterialEntry("material_entry_component", new MaterialEntry('plate', 'gtceu:infinity')) + .addMaterialEntry(GTValues.LV, new MaterialEntry('block', 'gtceu:infinity')) + .addMaterialEntry(GTValues.MV, 'ingot', 'gtceu:infinity') + .addMaterialEntry(GTValues.HV, new MaterialEntry('dust', 'gtceu:infinity')) + .addMaterialEntry(GTValues.EV, new MaterialEntry('round', 'gtceu:infinity')) + .addMaterialEntry(GTValues.IV, new MaterialEntry('foil', 'gtceu:infinity')) + .addMaterialEntry(GTValues.LuV, 'longRod', 'gtceu:infinity') + .addMaterialEntry(GTValues.ZPM, new MaterialEntry('rod', 'gtceu:infinity')) + .addMaterialEntry(GTValues.UV, new MaterialEntry('bolt', 'gtceu:infinity')) + // (3) +}) +``` + +1. Creates a new crafting component with item stack entries. +2. Creates a new crafting component with item tag entries. note the lack of `#` at the beginning of the tag! +3. Creates a new crafting component with UnificationEntry entries. + +## Retrieving existing crafting components + +All `remove`, `modify*`, and `setFallback*` methods use a Crafting Component as its first argument, you can supply that argument with just a string matching the id of the crafting component + +```js title="modify.js" + +GTCEuServerEvents.craftingComponents(event => { + event.removeTier('robot_arm', GTValues.EV) // (1) + + event.removeTiers('pump', GTValues.EV, GTValues.IV, GTValues.LuV) // (2) +}) +``` + +1. Finds the crafting component with id `robot_arm` and removes the entry for `EV` tier +2. Finds the crafting component with id `pump` and removes the entry for `EV, IV & LuV` tiers + +### Builtin Crafting Components + +- `CIRCUIT 'circuit'` +- `BETTER_CIRCUIT 'better_circuit'` +- `WIRE_ELECTRIC 'wire_single'` +- `WIRE_QUAD 'wire_quad'` +- `WIRE_OCT 'wire_oct'` +- `WIRE_HEX 'wire_hex'` +- `CABLE 'cable_single'` +- `CABLE_DOUBLE 'cable_double'` +- `CABLE_QUAD 'cable_quad'` +- `CABLE_OCT 'cable_oct'` +- `CABLE_HEX 'cable_hex'` +- `CABLE_TIER_UP 'cable_tier_up_single'` +- `CABLE_TIER_UP_DOUBLE 'cable_tier_up_double'` +- `CABLE_TIER_UP_QUAD 'cable_tier_up_quad'` +- `CABLE_TIER_UP_OCT 'cable_tier_up_oct'` +- `CABLE_TIER_UP_HEX 'cable_tier_up_hex'` +- `CASING 'casing'` +- `HULL 'hull'` +- `PIPE_NORMAL 'normal_pipe'` +- `PIPE_LARGE 'large_pipe'` +- `PIPE_NONUPLE 'nonuple_pipe'` +- `GLASS 'glass'` +- `PLATE 'plate'` +- `HULL_PLATE 'hull_plate'` +- `ROTOR 'rotor'` +- `GRINDER 'grinder'` +- `SAWBLADE 'sawblade'` +- `DIAMOND 'diamond'` +- `MOTOR 'motor'` +- `PUMP 'pump'` +- `PISTON 'piston'` +- `EMITTER 'emitter'` +- `SENSOR 'sensor'` +- `CONVEYOR 'conveyor'` +- `ROBOT_ARM 'robot_arm'` +- `FIELD_GENERATOR 'field_generator'` +- `COIL_HEATING 'coil_heating'` +- `COIL_HEATING_DOUBLE 'coil_heating_double'` +- `COIL_ELECTRIC 'coil_electric'` +- `STICK_MAGNETIC 'rod_magnetic'` +- `STICK_DISTILLATION 'rod_distillation'` +- `STICK_ELECTROMAGNETIC 'rod_electromagnetic'` +- `STICK_RADIOACTIVE 'rod_radioactive'` +- `PIPE_REACTOR 'pipe_reactor'` +- `POWER_COMPONENT 'power_component'` +- `VOLTAGE_COIL 'voltage_coil'` +- `SPRING 'spring'` +- `CRATE 'crate'` +- `DRUM 'drum'` +- `FRAME 'frame'` +- `SMALL_SPRING_TRANSFORMER 'small_spring_transformer'` +- `SPRING_TRANSFORMER 'spring_transformer'` \ No newline at end of file diff --git a/docs/content/Modpacks/Recipes/Material-Entries.md b/docs/content/Modpacks/Recipes/Material-Entries.md new file mode 100644 index 00000000000..6c81a961fc9 --- /dev/null +++ b/docs/content/Modpacks/Recipes/Material-Entries.md @@ -0,0 +1,99 @@ +--- +title: "Material Entry" +--- + +# Material Entries + +With the abundance of items in GregTech, there comes an abundance of recipes to craft those items into. However, sometimes you make too many of a certain item and want to recover your lost materials. Luckily you can do that with GT's built in recycling system. + +Any recipe that crafts an item, whether it be through a crafting table or a GT machine, can be specified to generate an additional recipe for decomposing that output item in the Macerator, Arc Furnace, and Extractor. + +## ItemMaterialInfo + +Before 7.0, the way to specify the decomposition information (called the `ItemMaterialInfo`) of an item was to strictly append it like the following: + +```java title="ItemMaterialInfo.java" +ChemicalHelper.registerMaterialInfo(GTBlocks.COIL_KANTHAL.get(), + new ItemMaterialInfo(new MaterialStack(GTMaterials.Kanthal, M * 8), // double wire + new MaterialStack(GTMaterials.Aluminium, M * 2), // foil + new MaterialStack(GTMaterials.Copper, M)) // ingot + ); // (1) + + VanillaRecipeHelper.addShapedRecipe(provider, true, // (2) + "casing_bronze_bricks", GTBlocks.CASING_BRONZE_BRICKS.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), + "PhP", "PBP", "PwP", + 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), + 'B', new ItemStack(Blocks.BRICKS)); + +``` + +1. `GTValues.M` denotes a single (1) mol amount of the material (usually 1 full dust's worth) +2. The boolean denotes whether to generate a decomposition recipe for this recipe + +In 7.0, a system was introduced to automatically detect the inputs of a recipe and use that information when generating a decomposition recipe for the resulting items. + +You can tell recipes to generate recycling information using either `.addMaterialInfo(true)` for item inputs ONLY or `addMaterialInfo(true, true)` for item and fluid inputs. You can also remove existing ItemMaterialInfo from an output item using `.removePreviousMaterialInfo()`, which will tell GT to not generate recycling recipes for the item output in that recipe. + +In KubeJS, adding decomposition info to a recipe would look as follows: + +```js title="itemDecomp.js" + +ServerEvents.recipes(event => { + event.recipes.gtceu.assembler('mv_hatch') + .itemInputs('17x gtceu:iron_plate') + .itemOutputs('1x gtceu:mv_energy_output_hatch') + .duration(20) + .addMaterialInfo(true) // (1) + .EUt(10) + + event.recipes.gtceu.assembler('bucket') + .itemInputs('4x minecraft:gold_ingot') + .itemOutputs('minecraft:bucket') + .removePreviousMaterialInfo() // (2) + .duration(20) + .EUt(23) +}) + +``` + +1. Generates a recycling recipe turning an MV energy hatch into 17 iron dust. +!!! note inline end + This will overwrite the original recycling recipe if it exists. + +2. Buckets will no longer have recycling recipes + +The ItemMaterialInfo system only takes into account the first item output a recipe has when appending material information to that item. However, it will automatically scale the decomposition rate based on the amount of the output stack. + +```js title="Seven Dirt" +ServerEvents.recipes(event => { + event.recipes.gtceu.assembler('mv_hatch') + .itemInputs('21x gtceu:iron_plate') + .itemOutputs('7x minecraft:dirt') + .duration(20) + .addMaterialInfo(true) // (1) + .EUt(10) +}) +``` + +1. Each dirt will turn into 3 iron dust when macerated + +## Crafting Table Recipes with Decomposition information + +```js title="Crafting Table" +ServerEvents.recipes(event => { + event.recipes.gtceu.shaped('4x kubejs:examplium', [ + " A ", + "ABA", + " A " + ], { + A: "gtceu:steel_ingot", + B: "minecraft:nether_star" + }) + .addMaterialInfo(true) // (1) +}) +``` + +1. Each examplium will turn into 1 steel dust and 1 small nether star dust when macerated + +??? tip "Decomposition recipes with Java" + You can still generate decomposition information for shapeless or shaped recipes with `VanillaRecipeHelper`, the argument was just renamed from `withUnificationData` to `setMaterialInfoData` diff --git a/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md b/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md new file mode 100644 index 00000000000..47ecefcae8c --- /dev/null +++ b/docs/content/Modpacks/Recipes/TagPrefixRecipeGeneration.md @@ -0,0 +1,54 @@ +--- +title: "Tag Prefix Recipe Generation" +--- + +# Generating recipes based on TagPrefixes + +Most recipes that turn some form of a material into another form, like iron ingots to iron plates, or tin bolts into tin screws, are done through tag prefix based recipe generation. + +Gregtech will iterate through all materials and all tag prefixes possible for that material to generate recipes. You can do the same in your addon by mirroring the following: + +```java title="TagPrefixRecipes.java" + +public static void recipeAddition(Consumer consumer) { + + for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + if (material.hasFlag(MaterialFlags.NO_UNIFICATION)) { + continue; + } + MaterialRecipeHandler.run(provider, material) + } + +} + +``` + +```java title="MaterialRecipeHandler.java" + +public static void run(@NotNull Consumer provider, @NotNull Material material) { + processFrame(provider, material); +} + +private static void processFrame(@NotNull Consumer provider, @NotNull Material material) { + if (!material.shouldGenerateRecipesFor(frameGt) || !material.hasProperty(PropertyKey.DUST)) { + return; + } // (1) + + if (material.hasFlag(GENERATE_FRAME)) { + boolean isWoodenFrame = material.hasProperty(PropertyKey.WOOD); + VanillaRecipeHelper.addShapedRecipe(provider, String.format("frame_%s", material.getName()), + ChemicalHelper.get(frameGt, material, 2), + "SSS", isWoodenFrame ? "SsS" : "SwS", "SSS", + 'S', new UnificationEntry(rod, material)); + + ASSEMBLER_RECIPES.recipeBuilder("assemble_" + material.getName() + "_frame") + .inputItems(rod, material, 4) + .circuitMeta(4) + .outputItems(frameGt, material) + .EUt(VA[ULV]).duration(64) + .save(provider); + } + } + +``` +1. Checks that the material has a valid item with that specific tag prefix and can generate the recipe. \ No newline at end of file From cfb0f180e39e7c3f33bb144cbe9822163cca8eb1 Mon Sep 17 00:00:00 2001 From: FourIsTheNumber <33456283+FourIsTheNumber@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:17:12 -0400 Subject: [PATCH 234/270] Fix steam energy handler (#3575) --- .../steam/SteamEnergyRecipeHandler.java | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java index 797bc10387a..ab2e69cb39a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamEnergyRecipeHandler.java @@ -16,7 +16,6 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.Collections; import java.util.List; public class SteamEnergyRecipeHandler implements IRecipeHandler { @@ -31,18 +30,30 @@ public SteamEnergyRecipeHandler(NotifiableFluidTank steamTank, double conversion @Override public List handleRecipeInner(IO io, GTRecipe recipe, List left, boolean simulate) { - long eut = left.stream().reduce(EnergyStack.EMPTY, EnergyStack::sum).getTotalEU(); - int totalSteam = GTMath.saturatedCast((long) Math.ceil(eut * conversionRate)); - if (totalSteam > 0) { - var steam = io == IO.IN ? FluidIngredient.of(GTMaterials.Steam.getFluidTag(), totalSteam) : - FluidIngredient.of(GTMaterials.Steam.getFluid(totalSteam)); - var list = new ArrayList(); - list.add(steam); - var leftSteam = steamTank.handleRecipeInner(io, recipe, list, simulate); - if (leftSteam == null || leftSteam.isEmpty()) return null; - eut = (long) (leftSteam.get(0).getAmount() / conversionRate); + for (var it = left.listIterator(); it.hasNext();) { + EnergyStack stack = it.next(); + if (stack.isEmpty()) { + it.remove(); + continue; + } + + long totalEU = stack.getTotalEU(); + int totalSteam = GTMath.saturatedCast((long) Math.ceil(totalEU * conversionRate)); + if (totalSteam > 0) { + var steam = io == IO.IN ? FluidIngredient.of(GTMaterials.Steam.getFluidTag(), totalSteam) : + FluidIngredient.of(GTMaterials.Steam.getFluid(totalSteam)); + var list = new ArrayList(); + list.add(steam); + var leftSteam = steamTank.handleRecipeInner(io, recipe, list, simulate); + if (leftSteam == null || leftSteam.isEmpty()) { + it.remove(); + } else { + totalEU = (long) (leftSteam.get(0).getAmount() / conversionRate); + it.set(new EnergyStack(totalEU)); + } + } } - return eut <= 0 ? null : Collections.singletonList(new EnergyStack(eut)); + return left.isEmpty() ? null : left; } @Override From bba1072ab234eb7a2c8f6179d7a65538a8d8fc9c Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Tue, 29 Jul 2025 21:31:22 -0600 Subject: [PATCH 235/270] Fix SyncedKeyMappings checking the mapping too early (#3577) --- .../gregtechceu/gtceu/utils/input/SyncedKeyMapping.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java index ae87dff8acf..f6b3a753386 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java @@ -34,6 +34,8 @@ public final class SyncedKeyMapping { @OnlyIn(Dist.CLIENT) private KeyMapping keyMapping; + @OnlyIn(Dist.CLIENT) + private Supplier> keyMappingGetter; private final boolean needsRegister; @OnlyIn(Dist.CLIENT) private int keyCode; @@ -48,7 +50,7 @@ public final class SyncedKeyMapping { private SyncedKeyMapping(Supplier> mcKeyMapping) { if (GTCEu.isClientSide()) { - this.keyMapping = mcKeyMapping.get().get(); + this.keyMappingGetter = mcKeyMapping; } // Does not need to be registered, will be registered by MC this.needsRegister = false; @@ -159,6 +161,10 @@ public SyncedKeyMapping registerPlayerListener(ServerPlayer player, IKeyPressedL public static void onRegisterKeyBinds(RegisterKeyMappingsEvent event) { for (SyncedKeyMapping value : KEYMAPPINGS.values()) { + if (value.keyMappingGetter != null) { + value.keyMapping = value.keyMappingGetter.get().get(); + value.keyMappingGetter = null; + } if (value.keyMapping != null && value.needsRegister) { event.register(value.keyMapping); } From 15e426451be1ee008cf973bb8d60e7fc28e6e283 Mon Sep 17 00:00:00 2001 From: MatthiasMann Date: Wed, 30 Jul 2025 09:34:48 +0200 Subject: [PATCH 236/270] Adds CC support for the large turbine (#3565) --- .../blockentity/MetaMachineBlockEntity.java | 5 ++ .../gtceu/api/capability/ITurbineMachine.java | 42 +++++++++++++++ .../api/capability/forge/GTCapability.java | 3 ++ .../generator/LargeTurbineMachine.java | 54 +++++++++++++++++-- .../cctweaked/CCTweakedPlugin.java | 2 + .../peripherals/TurbineMachinePeripheral.java | 49 +++++++++++++++++ 6 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 23120236a5c..9690dc48fc5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -214,6 +214,11 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca return GTCapability.CAPABILITY_MAINTENANCE_MACHINE.orEmpty(cap, LazyOptional.of(() -> maintenanceMachine)); } + } else if (cap == GTCapability.CAPABILITY_TURBINE_MACHINE) { + if (machine instanceof ITurbineMachine turbineMachine) { + return GTCapability.CAPABILITY_TURBINE_MACHINE.orEmpty(cap, + LazyOptional.of(() -> turbineMachine)); + } } else if (cap == ForgeCapabilities.ITEM_HANDLER) { var handler = machine.getItemHandlerCap(side, true); if (handler != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java new file mode 100644 index 00000000000..c1fe3cfa157 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ITurbineMachine.java @@ -0,0 +1,42 @@ +package com.gregtechceu.gtceu.api.capability; + +/** + * For the large gas turbine / large plasma turbine + */ +public interface ITurbineMachine extends IWorkable { + + /** + * @return true if the machine has a roter installed + */ + boolean hasRotor(); + + /** + * @return the current rotor speed or 0 when no rotor is installed + */ + int getRotorSpeed(); + + /** + * @return the maximum rotor speed or 0 when no rotor is installed + */ + int getMaxRotorHolderSpeed(); + + /** + * @return the total efficiency the rotor holder and rotor provide in % or -1 when no rotor is installed + */ + int getTotalEfficiency(); + + /** + * @return the current energy production + */ + long getCurrentProduction(); + + /** + * @return the maximum energy production + */ + long getOverclockVoltage(); + + /** + * @return the rotor durability in % or -1 when no rotor is installed + */ + int getRotorDurabilityPercent(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java index 7ac496f11a5..dcd5a4dd44d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java @@ -28,6 +28,8 @@ public class GTCapability { .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_MAINTENANCE_MACHINE = CapabilityManager .get(new CapabilityToken<>() {}); + public static final Capability CAPABILITY_TURBINE_MACHINE = CapabilityManager + .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_LASER = CapabilityManager .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_COMPUTATION_PROVIDER = CapabilityManager @@ -51,6 +53,7 @@ public static void register(RegisterCapabilitiesEvent event) { event.register(IElectricItem.class); event.register(ICleanroomReceiver.class); event.register(IMaintenanceMachine.class); + event.register(ITurbineMachine.class); event.register(ILaserContainer.class); event.register(IOpticalComputationProvider.class); event.register(IDataAccessHatch.class); diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java index cabbe2944c9..e0e4f4a0208 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/generator/LargeTurbineMachine.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.machine.multiblock.generator; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.ITurbineMachine; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; @@ -32,7 +33,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class LargeTurbineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine { +public class LargeTurbineMachine extends WorkableElectricMultiblockMachine implements ITieredMachine, ITurbineMachine { public static final int MIN_DURABILITY_TO_WARN = 10; @@ -78,6 +79,54 @@ protected double productionBoost() { return 0; } + @Override + public boolean hasRotor() { + var rotorHolder = getRotorHolder(); + return rotorHolder != null && rotorHolder.hasRotor(); + } + + @Override + public int getRotorSpeed() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getRotorSpeed(); + } + return 0; + } + + @Override + public int getMaxRotorHolderSpeed() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getMaxRotorHolderSpeed(); + } + return 0; + } + + @Override + public int getTotalEfficiency() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getTotalEfficiency(); + } + return -1; + } + + @Override + public long getCurrentProduction() { + return isActive() && recipeLogic.getLastRecipe() != null ? + recipeLogic.getLastRecipe().getOutputEUt().voltage() : 0; + } + + @Override + public int getRotorDurabilityPercent() { + var rotorHolder = getRotorHolder(); + if (rotorHolder != null && rotorHolder.hasRotor()) { + return rotorHolder.getRotorDurabilityPercent(); + } + return -1; + } + ////////////////////////////////////// // ****** Recipe Logic *******// ////////////////////////////////////// @@ -148,8 +197,7 @@ public void addDisplayText(List textList) { rotorHolder.getTotalEfficiency())); long maxProduction = getOverclockVoltage(); - long currentProduction = isActive() && recipeLogic.getLastRecipe() != null ? - recipeLogic.getLastRecipe().getOutputEUt().voltage() : 0; + long currentProduction = getCurrentProduction(); if (isActive()) { textList.add(3, Component.translatable("gtceu.multiblock.turbine.energy_per_tick", diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java index 7aae893da42..b71737b29af 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -11,9 +11,11 @@ public class CCTweakedPlugin { public static void init() { ComputerCraftAPI.registerGenericSource(new ControllablePeripheral()); ComputerCraftAPI.registerGenericSource(new EnergyInfoPeripheral()); + ComputerCraftAPI.registerGenericSource(new TurbineMachinePeripheral()); ComputerCraftAPI.registerGenericSource(new WorkablePeripheral()); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_CONTROLLABLE); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_TURBINE_MACHINE); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_WORKABLE); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java new file mode 100644 index 00000000000..555d17301a2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/TurbineMachinePeripheral.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.ITurbineMachine; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class TurbineMachinePeripheral implements GenericPeripheral { + + public String id() { + return "gtceu:large_turbine"; + } + + @LuaFunction + public static MethodResult hasRotor(ITurbineMachine turbine) { + return MethodResult.of(turbine.hasRotor()); + } + + @LuaFunction + public static MethodResult getRotorSpeed(ITurbineMachine turbine) { + return MethodResult.of(turbine.getRotorSpeed()); + } + + @LuaFunction + public static MethodResult getMaxRotorHolderSpeed(ITurbineMachine turbine) { + return MethodResult.of(turbine.getMaxRotorHolderSpeed()); + } + + @LuaFunction + public static MethodResult getTotalEfficiency(ITurbineMachine turbine) { + return MethodResult.of(turbine.getTotalEfficiency()); + } + + @LuaFunction + public static MethodResult getCurrentProduction(ITurbineMachine turbine) { + return MethodResult.of(turbine.getCurrentProduction()); + } + + @LuaFunction + public static MethodResult getOverclockVoltage(ITurbineMachine turbine) { + return MethodResult.of(turbine.getOverclockVoltage()); + } + + @LuaFunction + public static MethodResult getRotorDurabilityPercent(ITurbineMachine turbine) { + return MethodResult.of(turbine.getRotorDurabilityPercent()); + } +} From dbc98f8332b9028a9853a1b92fa62c519378a062 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Wed, 30 Jul 2025 08:14:05 -0600 Subject: [PATCH 237/270] Expand documentation for Material builder (#3580) --- .../api/data/chemical/material/Material.java | 681 ++++++++++++++++-- .../material/properties/ArmorProperty.java | 49 ++ .../material/properties/BlastProperty.java | 37 + .../material/properties/ToolProperty.java | 53 +- 4 files changed, 747 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 98f802ca500..5ebb1cf55cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -81,6 +81,7 @@ public class Material implements Comparable { /** * Chemical formula of this material */ + @Getter private String chemicalFormula; /** @@ -110,10 +111,6 @@ private String calculateChemicalFormula() { return ""; } - public String getChemicalFormula() { - return chemicalFormula; - } - public Material setFormula(String formula) { return setFormula(formula, true); } @@ -555,16 +552,21 @@ public boolean isNull() { } @RemapPrefixForJS("kjs$") + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder extends BuilderBase { private final MaterialInfo materialInfo; private final MaterialProperties properties; private final MaterialFlags flags; - private Set ignoredTagPrefixes = null; + private Set ignoredTagPrefixes = null; private final List> itemTags = new ArrayList<>(); + /* + * Temporary data used to determine the final material formula tooltip. + */ private String formula = null; + private boolean formatFormula = true; /* * The temporary list of components for this Material. @@ -573,7 +575,7 @@ public static class Builder extends BuilderBase { private List compositionSupplier; /* - * Temporary value to use to determine how to calculate default RGB + * Temporary value to use to determine how to calculate default RGB. */ private boolean averageRGB = false; @@ -595,21 +597,11 @@ public Builder(ResourceLocation resourceLocation) { flags = new MaterialFlags(); } - public Builder customTags(TagKey key) { - this.itemTags.add(key); - return this; - } - /* * Material Types */ - /** - * Add a {@link FluidProperty} to this Material.
- * Will be created as a {@link FluidStorageKeys#LIQUID}, without a Fluid Block. - * - * @throws IllegalArgumentException If a {@link FluidProperty} has already been added to this Material. - */ + /** @see #liquid */ public Builder fluid() { fluid(FluidStorageKeys.LIQUID, new FluidBuilder()); return this; @@ -617,9 +609,11 @@ public Builder fluid() { /** * Add a {@link FluidProperty} to this Material.
- * Will be created with the specified state a with standard {@link FluidBuilder} defaults. - *

+ * Will be created with the specified state and with standard {@link FluidBuilder} defaults.
* Can be called multiple times to add multiple fluids. + *
+ *
+ * See {@link #fluid(FluidStorageKey, FluidBuilder)} for setting other values. */ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidState state) { return fluid(key, new FluidBuilder().state(state)); @@ -627,8 +621,9 @@ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidState state) { /** * Add a {@link FluidProperty} to this Material.
- *

* Can be called multiple times to add multiple fluids. + * + * @see FluidBuilder */ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidBuilder builder) { properties.ensureSet(PropertyKey.FLUID); @@ -638,9 +633,21 @@ public Builder fluid(@NotNull FluidStorageKey key, @NotNull FluidBuilder builder } /** - * Add a liquid for this material. + * Add a liquid for this Material. + *
+ *
+ * Created without a Fluid Block.
+ * Temperature will default to: + *

    + *
  • The EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 1200K, if this Material has a {@link DustProperty} + *
  • 293K otherwise + *
+ *
+ * See {@link #liquid(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. */ public Builder liquid() { return fluid(FluidStorageKeys.LIQUID, FluidState.LIQUID); @@ -648,21 +655,45 @@ public Builder liquid() { /** * Add a liquid for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder liquid(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.LIQUID, builder.state(FluidState.LIQUID)); } + /** + * Add a liquid for this Material.
+ * Created without a Fluid Block. + *
+ *
+ * See {@link #liquid(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#LIQUID LIQUID} has + * already been added to this Material. + */ public Builder liquid(int temp) { return liquid(new FluidBuilder().temperature(temp)); } /** - * Add a plasma for this material. + * Add a plasma for this Material. + *
+ *
+ * Temperature will default to: + *
    + *
  • 10,000K + the EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 10,000K + the temperature of another fluid for this Material (liquid, then gas) + *
  • 10,000K otherwise + *
+ *
+ * See {@link #plasma(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. */ public Builder plasma() { return fluid(FluidStorageKeys.PLASMA, FluidState.PLASMA); @@ -670,21 +701,43 @@ public Builder plasma() { /** * Add a plasma for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder plasma(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.PLASMA, builder.state(FluidState.PLASMA)); } + /** + * Add a liquid for this Material. + *
+ *
+ * See {@link #plasma(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#PLASMA PLASMA} has + * already been added to this Material. + */ public Builder plasma(int temp) { return plasma(new FluidBuilder().temperature(temp)); } /** - * Add a gas for this material. + * Add a gas for this Material. + *
+ *
+ * Temperature will default to: + *
    + *
  • 100K + the EBF temperature of this Material, if it has a {@link BlastProperty} + *
  • 293K otherwise + *
+ *
+ * See {@link #gas(FluidBuilder)} for setting your own value(s). * - * @see #fluid(FluidStorageKey, FluidState) + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. */ public Builder gas() { return fluid(FluidStorageKeys.GAS, FluidState.GAS); @@ -692,20 +745,37 @@ public Builder gas() { /** * Add a gas for this material. + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. * - * @see #fluid(FluidStorageKey, FluidState) + * @see FluidBuilder */ public Builder gas(@NotNull FluidBuilder builder) { return fluid(FluidStorageKeys.GAS, builder.state(FluidState.GAS)); } + /** + * Add a gas for this Material. + *
+ *
+ * See {@link #gas(FluidBuilder)} for setting your own value(s). + * + * @throws IllegalArgumentException If a {@link FluidStorageKeys#GAS GAS} has + * already been added to this Material. + */ public Builder gas(int temp) { return gas(new FluidBuilder().temperature(temp)); } /** * Add a {@link DustProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel). + *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #dust(int, int)} for setting your own value(s). * * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -716,7 +786,11 @@ public Builder dust() { /** * Add a {@link DustProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel). + *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #dust(int, int)} for setting your own value(s). * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -730,9 +804,10 @@ public Builder dust(int harvestLevel) { /** * Add a {@link DustProperty} to this Material. * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining Level. + * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel. * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -743,8 +818,11 @@ public Builder dust(int harvestLevel, int burnTime) { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
- * Will be created with a Harvest Level of 0, and a Burn Time of 300 (Furnace Fuel). + * Useful for marking a Material as Wood for various additional behaviors. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. * * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ @@ -754,12 +832,15 @@ public Builder wood() { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
- * Will be created with a Burn Time of 300 (Furnace Fuel). + * Useful for marking a Material as Wood for various additional behaviors. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining Level. + * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds. * @throws IllegalArgumentException If a {@link DustProperty} has already been added to this Material. */ public Builder wood(int harvestLevel) { @@ -768,7 +849,7 @@ public Builder wood(int harvestLevel) { /** * Add a {@link WoodProperty} to this Material.
- * Useful for marking a Material as Wood for various additional behaviors.
+ * Useful for marking a Material as Wood for various additional behaviors. * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -784,10 +865,17 @@ public Builder wood(int harvestLevel, int burnTime) { /** * Add an {@link IngotProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #ingot(int, int)} for setting your own value(s). * - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot() { properties.ensureSet(PropertyKey.INGOT); @@ -796,15 +884,21 @@ public Builder ingot() { /** * Add an {@link IngotProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #ingot(int, int)} for setting your own value(s). * - * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require a iron tool.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest - * diamonds.
+ * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot(int harvestLevel) { return ingot(harvestLevel, 0); @@ -814,14 +908,15 @@ public Builder ingot(int harvestLevel) { * Add an {@link IngotProperty} to this Material.
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. * - * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require a iron tool.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest - * diamonds.
+ * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
* If this Material already had a Burn Time defined, it will be overridden. - * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material. + * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material, or if + * an {@link IngotProperty} has already been added to this Material. */ public Builder ingot(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); @@ -836,10 +931,17 @@ public Builder ingot(int harvestLevel, int burnTime) { /** * Add a {@link GemProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #gem(int, int)} for setting your own value(s). * - * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem() { properties.ensureSet(PropertyKey.GEM); @@ -848,14 +950,21 @@ public Builder gem() { /** * Add a {@link GemProperty} to this Material.
- * Will be created with no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #gem(int, int)} for setting your own value(s). * - * @param harvestLevel The Harvest Level of this block for Mining.
+ * @param harvestLevel The Harvest Level of this block for Mining. 2 will make it require an Iron tool.
* If this Material also has a {@link ToolProperty}, this value will - * also be used to determine the tool's Mining level.
+ * also be used to determine the tool's Mining level (-1). So 2 will make the tool harvest + * Diamonds.
* If this Material already had a Harvest Level defined, it will be overridden. - * @throws IllegalArgumentException If a {@link GemProperty} has already been added to this Material. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem(int harvestLevel) { return gem(harvestLevel, 0); @@ -871,6 +980,8 @@ public Builder gem(int harvestLevel) { * If this Material already had a Harvest Level defined, it will be overridden. * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
* If this Material already had a Burn Time defined, it will be overridden. + * @throws IllegalArgumentException If an {@link IngotProperty} has already been added to this Material, or if + * a {@link GemProperty} has already been added to this Material. */ public Builder gem(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); @@ -885,8 +996,14 @@ public Builder gem(int harvestLevel, int burnTime) { /** * Add a {@link PolymerProperty} to this Material.
- * Will be created with a Harvest Level of 2 and no Burn Time (Furnace Fuel).
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. + *
+ *
+ * Sets Harvest Level to 2 if not already set.
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #polymer(int, int)} for setting your own value(s). * * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. */ @@ -898,7 +1015,12 @@ public Builder polymer() { /** * Add a {@link PolymerProperty} to this Material.
* Will automatically add a {@link DustProperty} to this Material if it does not already have one. - * Will have a burn time of 0 + *
+ *
+ * Sets Burn Time (Furnace Fuel) to 0 if not already set. + *
+ *
+ * See {@link #polymer(int, int)} for setting your own value(s). * * @param harvestLevel The Harvest Level of this block for Mining.
* If this Material also has a {@link ToolProperty}, this value will @@ -907,13 +1029,36 @@ public Builder polymer() { * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. */ public Builder polymer(int harvestLevel) { + return polymer(harvestLevel, 0); + } + + /** + * Add a {@link PolymerProperty} to this Material.
+ * Will automatically add a {@link DustProperty} to this Material if it does not already have one. + * + * @param harvestLevel The Harvest Level of this block for Mining.
+ * If this Material also has a {@link ToolProperty}, this value will + * also be used to determine the tool's Mining level.
+ * If this Material already had a Harvest Level defined, it will be overridden. + * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
+ * If this Material already had a Burn Time defined, it will be overridden. + * @throws IllegalArgumentException If an {@link PolymerProperty} has already been added to this Material. + */ + public Builder polymer(int harvestLevel, int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); - if (prop == null) dust(harvestLevel, 0); + if (prop == null) dust(harvestLevel, burnTime); else if (prop.getHarvestLevel() == 2) prop.setHarvestLevel(harvestLevel); properties.ensureSet(PropertyKey.POLYMER); return this; } + /** + * Set the burn time of this Material as a Furnace Fuel.
+ * Will automatically add a {@link DustProperty} to this Material if it does not already have one. + * + * @param burnTime The Burn Time (in ticks) of this Material as a Furnace Fuel.
+ * If this Material already had a Burn Time defined, it will be overridden. + */ public Builder burnTime(int burnTime) { DustProperty prop = properties.getProperty(PropertyKey.DUST); if (prop == null) { @@ -926,8 +1071,14 @@ public Builder burnTime(int burnTime) { /** * Set the Color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link #colorAverage()} was called, where * it will be a weighted average of the components of the Material. + *
+ *
+ * Will automatically color the Fluid of the Material. + *
+ *
+ * See {@link #color(int, boolean)} to set an override of the Fluid's color. * * @param color The RGB-formatted Color. */ @@ -938,7 +1089,7 @@ public Builder color(int color) { /** * Set the Color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where * it will be a weighted average of the components of the Material. * * @param color The RGB-formatted Color. @@ -952,7 +1103,7 @@ public Builder color(int color, boolean hasFluidColor) { /** * Set the secondary color of this Material.
- * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where + * Defaults to 0xFFFFFF unless {@link Builder#colorAverage()} was called, where * it will be a weighted average of the components of the Material. * * @param color The RGB-formatted Color. @@ -962,6 +1113,10 @@ public Builder secondaryColor(int color) { return this; } + /** + * Set the Color of this Material to be the average of the components specified in {@link #components}.
+ * Will default to 0xFFFFFF if a components list is not specified. + */ public Builder colorAverage() { this.averageRGB = true; return this; @@ -969,12 +1124,14 @@ public Builder colorAverage() { /** * Set the {@link MaterialIconSet} of this Material.
- * Defaults vary depending on if the Material has a:
+ *
+ * Defaults vary depending on if the Material has a: *
    *
  • {@link GemProperty}, it will default to {@link MaterialIconSet#GEM_VERTICAL} *
  • {@link IngotProperty} or {@link DustProperty}, it will default to {@link MaterialIconSet#DULL} *
  • {@link FluidProperty}, it will default to {@link MaterialIconSet#FLUID} *
+ *
* Default will be determined by first-found Property in this order, unless specified. * * @param iconSet The {@link MaterialIconSet} of this Material. @@ -984,6 +1141,14 @@ public Builder iconSet(MaterialIconSet iconSet) { return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An Object array formed as pairs of {@link Material} and Integer, representing the + * Material and the amount of said Material in this Material's composition. + * @throws IllegalArgumentException if the Object array is malformed. + */ public Builder components(Object... components) { Preconditions.checkArgument( components.length % 2 == 0, @@ -1002,21 +1167,37 @@ public Builder components(Object... components) { return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An array of {@link MaterialStack}, each representing the + * Material and the amount of said Material in this Material's composition. + */ public Builder componentStacks(MaterialStack... components) { composition = Arrays.asList(components); return this; } + /** + * Set the components that make up this Material.
+ * This information is used for automatic decomposition, chemical formula generation, among other things. + * + * @param components An {@link ImmutableList} of {@link MaterialStack}, each representing the + * Material and the amount of said Material in this Material's composition. + */ public Builder componentStacks(ImmutableList components) { composition = components; return this; } + /** @see #componentStacks(MaterialStack...) */ public Builder kjs$components(MaterialStackWrapper... components) { compositionSupplier = Arrays.asList(components); return this; } + /** @see #componentStacks(ImmutableList) componentStacks(ImmutableList<MaterialStack>) */ public Builder kjs$components(ImmutableList components) { compositionSupplier = components; return this; @@ -1050,7 +1231,9 @@ public Builder appendFlags(Collection f1, MaterialFlag... f2) { } /** - * Added {@link TagPrefix} to be ignored by this Material.
+ * Remove specific Items from this Material. + * + * @param prefixes The list of prefixes to ignore. */ public Builder ignoredTagPrefixes(TagPrefix... prefixes) { if (this.ignoredTagPrefixes == null) { @@ -1060,19 +1243,62 @@ public Builder ignoredTagPrefixes(TagPrefix... prefixes) { return this; } + /** + * Add a custom Item Tag to all items made from this Material. + * + * @param key The tag to add. + */ + public Builder customTags(TagKey key) { + this.itemTags.add(key); + return this; + } + + /** + * Set the Element of this Material.
+ * Should be effectively singleton; each element should only have 1 Material claiming to represent it. + * + * @param element The {@link Element} that this Material represents. + */ public Builder element(Element element) { this.materialInfo.element = element; return this; } + /** + * Set the Formula of this Material. + *
+ *
+ * Will override the automatically generated formula.
+ * Will automatically format numbers as subscripts. + * + * @param formula The formula for this Material. + */ public Builder formula(String formula) { this.formula = formula; return this; } /** - * Replaced the old toolStats methods which took many parameters. - * Use {@link ToolProperty.Builder} instead to create a Tool Property. + * Set the Formula of this Material. + *
+ *
+ * Will override the automatically generated formula.
+ * + * @param formula The formula for this Material. + * @param withFormatting Whether numbers should be formatted as subscripts. + */ + public Builder formula(String formula, boolean withFormatting) { + this.formula = formula; + this.formatFormula = withFormatting; + return this; + } + + /** + * Add a {@link ToolProperty} to this Material.
+ * Adds GregTech and Vanilla-substitute tools to this Material.
+ * Will automatically add an {@link IngotProperty} to this Material if it does not already have one. + * + * @see ToolProperty.Builder */ public Builder toolStats(ToolProperty toolProperty) { properties.setProperty(PropertyKey.TOOL, toolProperty); @@ -1080,51 +1306,130 @@ public Builder toolStats(ToolProperty toolProperty) { } /** - * Use {@link ArmorProperty.Builder} to create an Armor Property. + * Add an {@link ArmorProperty} to this Material.
+ * Adds Armors to this Material. + * + * @see ArmorProperty.Builder */ public Builder armorStats(ArmorProperty armorProperty) { properties.setProperty(PropertyKey.ARMOR, armorProperty); return this; } + /** + * Adds a {@link RotorProperty} to this Material, generating Turbine Rotors.
+ * Will automatically add an {@link IngotProperty} to this Material if it does not already have one. + * + * @param power The power of Turbine rotors made of this Material, used as a power multiplier with + * the Rotor Holder's tier. + * @param efficiency The efficiency of Turbine rotors made of this Material, used with the efficiency of the + * Rotor Holder: rotorEfficiency * holderEfficiency / 100 + * @param damage The damage running turbines with this Rotor should deal to the player when the Rotor + * Holder UI is opened. + * @param durability The durability of Turbine Rotors made of this Material. + */ + // dear god please refactor me public Builder rotorStats(int power, int efficiency, float damage, int durability) { properties.setProperty(PropertyKey.ROTOR, new RotorProperty(power, efficiency, damage, durability)); return this; } + /** @see #blast(int) */ public Builder blastTemp(int temp) { return blast(temp); } + /** @see #blast(int, BlastProperty.GasTier) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier) { return blast(temp, gasTier); } + /** @see #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier, int eutOverride) { return blast(b -> b.temp(temp, gasTier).blastStats(eutOverride)); } + /** @see #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>) */ public Builder blastTemp(int temp, BlastProperty.GasTier gasTier, int eutOverride, int durationOverride) { return blast(b -> b.temp(temp, gasTier).blastStats(eutOverride, durationOverride)); } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * See {@link #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>)} for setting your own + * value(s). + * + * @param temp The temperature of the recipe in the EBF. + */ public Builder blast(int temp) { properties.setProperty(PropertyKey.BLAST, new BlastProperty(temp)); return this; } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * See {@link #blast(UnaryOperator) blast(UnaryOperator<BlastProperty.Builder>)} for setting your own + * value(s). + * + * @param temp The temperature of the recipe in the EBF. + * @param gasTier The {@link BlastProperty.GasTier} of the Recipe. Will generate a second EBF recipe + * using the specified gas of the tier for a speed bonus. + */ public Builder blast(int temp, BlastProperty.GasTier gasTier) { properties.setProperty(PropertyKey.BLAST, new BlastProperty(temp, gasTier)); return this; } + /** + * Add an EBF Temperature and recipe to this Material.
+ * Will generate a Dust -> Ingot EBF recipe at 120 EU/t and a duration based off of the + * Material's composition. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + *
+ *
+ * + * Sample usage: + * + *
{@code
+         *     .blast(b -> b
+         *         .temp(1750)
+         *         .blastStats(VA[HV], 300)
+         *      )
+         *      // ...
+         * }
+ */ public Builder blast(UnaryOperator b) { properties.setProperty(PropertyKey.BLAST, b.apply(new BlastProperty.Builder()).build()); return this; } - // Tons of shortcut functions for adding various hazard effects. - + /** + * Remove the Hazard from this Material.
+ * Useful when a component of this Material would automatically apply an undesired hazard. + */ public Builder removeHazard() { properties.setProperty(HAZARD, new HazardProperty(HazardProperty.HazardTrigger.NONE, GTMedicalConditions.NONE, @@ -1132,23 +1437,64 @@ public Builder removeHazard() { return this; } + /** + * Set a radioactive Hazard for this Material.
+ * Applies as a {@link GTMedicalConditions#CARCINOGEN carcinogenic} hazard with any trigger. + *
+ *
+ * Overrides the Hazard if one was already set. + * + * @param multiplier Multiplier for how quickly the condition will progress. + */ public Builder radioactiveHazard(float multiplier) { properties.setProperty(HAZARD, new HazardProperty(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CARCINOGEN, multiplier, true)); return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Sets progression multiplier to 1.
+ * Will not apply the Hazard to derivative materials, i.e. materials with this Material in its components list. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, 1, false)); return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Will not apply the Hazard to derivative materials, i.e. materials with this Material in its components list. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param progressionMultiplier Multiplier for how quickly the condition will progress. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, progressionMultiplier, false)); return this; } + /** + * Set a Hazard for this Material.
+ * Overrides the Hazard if one was already set. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param progressionMultiplier Multiplier for how quickly the condition will progress. + * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its + * components list. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier, boolean applyToDerivatives) { properties.setProperty(HAZARD, @@ -1156,97 +1502,255 @@ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition con return this; } + /** + * Set a Hazard for this Material. + *
+ *
+ * Overrides the Hazard if one was already set.
+ * Sets progression multiplier to 1. + * + * @param trigger The trigger type for this hazard. + * @param condition The condition applied by this hazard. + * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its + * components list. + */ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, boolean applyToDerivatives) { properties.setProperty(HAZARD, new HazardProperty(trigger, condition, 1, applyToDerivatives)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Ore Multiplier to 1 if not already set.
+ * Sets Byproduct Multiplier to 1 if not already set.
+ * Sets Emissive Textures to false if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + */ public Builder ore() { properties.ensureSet(PropertyKey.ORE); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Ore Multiplier to 1 if not already set.
+ * Sets Byproduct Multiplier to 1 if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + * + * @param emissive Whether this Material's Ore Block should use emissive textures on the ore-vein texture + * overlay. + */ public Builder ore(boolean emissive) { properties.setProperty(PropertyKey.ORE, new OreProperty(1, 1, emissive)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material.
+ *
+ * Sets Emissive Textures to false if not already set. + *
+ *
+ * See {@link #ore(int, int, boolean)} for setting your own value(s). + * + * @param oreMultiplier Crushed output multiplier when the Ore Block is macerated. + * @param byproductMultiplier Byproduct multiplier on some ore processing steps. + */ public Builder ore(int oreMultiplier, int byproductMultiplier) { properties.setProperty(PropertyKey.ORE, new OreProperty(oreMultiplier, byproductMultiplier)); return this; } + /** + * Add an {@link OreProperty} to this Material.
+ * Automatically adds a {@link DustProperty} to this Material. + * + * @param oreMultiplier Crushed output multiplier when the Ore Block is macerated. + * @param byproductMultiplier Byproduct multiplier on some ore processing steps. + * @param emissive Whether this Material's Ore Block should use emissive textures on the ore-vein + * texture overlay. + */ public Builder ore(int oreMultiplier, int byproductMultiplier, boolean emissive) { properties.setProperty(PropertyKey.ORE, new OreProperty(oreMultiplier, byproductMultiplier, emissive)); return this; } + /** + * Adds a Chemical Bath ore processing step to this Material's Ore, using 100L of the + * Fluid.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material that is used as a Chemical Bath fluid for ore processing. + * This Material will be given a {@link FluidProperty} if it does not already have one, + * of type LIQUID and no Fluid block. + */ public Builder washedIn(Material m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setWashedIn(m); return this; } + /** + * Adds a Chemical Bath ore processing step to this Material's Ore.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material that is used as a Chemical Bath fluid for ore processing. + * This Material will be given a {@link FluidProperty} if it does not already have one, + * of type LIQUID and no Fluid block. + * @param washedAmount The amount of the above Fluid required to wash the Ore. + */ public Builder washedIn(Material m, int washedAmount) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setWashedIn(m, washedAmount); return this; } + /** + * Adds an Electromagnetic Separator recipe to this Material's Purified Dust, which outputs the passed + * Materials.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Materials which should be output by the Electromagnetic Separator in addition to a normal Dust + * of this Material. + */ public Builder separatedInto(Material... m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setSeparatedInto(m); return this; } + /** + * Sets the Material which this Material's Ore Block smelts to directly in a Furnace.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param m The Material which should be output when smelting. + */ public Builder oreSmeltInto(Material m) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setDirectSmeltResult(m); return this; } + /** + * Adds a Polarizer recipe to this Material's metal parts, outputting the provided Material.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material will be polarized into. + */ public Builder polarizesInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setMagneticMaterial(m); return this; } + /** + * Sets the Material that this Material will automatically transform into in any Arc Furnace recipe.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material will turn into in any Arc Furnace recipes. + */ public Builder arcSmeltInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setArcSmeltingInto(m); return this; } + /** + * Sets the Material that this Material's Ingot should macerate directly into.
+ * A good example is Magnetic Iron, which when macerated, will turn back into normal Iron.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material's Ingot should macerate directly into. + */ public Builder macerateInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setMacerateInto(m); return this; } + /** + * Sets the Material that this Material's Ingot should smelt directly into in a Furnace.
+ * A good example is Magnetic Iron, which when smelted, will turn back into normal Iron.
+ * Automatically adds an {@link IngotProperty} to this Material if it does not already have one, + * with a harvest level of 2 and no Furnace burn time (if not already set). + * + * @param m The Material that this Material's Ingot should smelt directly into. + */ public Builder ingotSmeltInto(Material m) { properties.ensureSet(PropertyKey.INGOT); properties.getProperty(PropertyKey.INGOT).setSmeltingInto(m); return this; } + /** + * Adds Ore byproducts to this Material.
+ * Automatically adds an {@link OreProperty} to this Material if it does not already have one, + * with ore and byproduct multipliers of 1 and no emissive textures (if not already set). + * + * @param byproducts The list of Materials which serve as byproducts during ore processing. + */ public Builder addOreByproducts(Material... byproducts) { properties.ensureSet(PropertyKey.ORE); properties.getProperty(PropertyKey.ORE).setOreByProducts(byproducts); return this; } + /** + * Add Wires and Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as wires. + */ public Builder cableProperties(long voltage, int amperage, int loss) { cableProperties(voltage, amperage, loss, false); return this; } + /** + * Add Wires and/or Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as wires. + * @param isSuperCon Whether this Material is a Superconductor. If so, Cables will NOT be generated and + * the Wires will have zero cable loss, ignoring the loss parameter. + */ public Builder cableProperties(long voltage, int amperage, int loss, boolean isSuperCon) { properties.ensureSet(PropertyKey.DUST); properties.setProperty(PropertyKey.WIRE, new WireProperties(voltage, amperage, loss, isSuperCon)); return this; } + /** + * Add Wires and/or Cables to this Material. + * + * @param voltage The voltage tier of this Cable. Should conform to standard GregTech voltage tiers. + * @param amperage The amperage of this Cable. Should be greater than zero. + * @param loss The loss-per-block of this Cable. A value of zero here will still have loss as + * wires. + * @param isSuperCon Whether this Material is a Superconductor. If so, Cables will NOT be generated and + * the Wires will have zero cable loss, ignoring the loss parameter. + * @param criticalTemperature The critical temperature of this Material's Wires, if it is a Superconductor. + * Not currently utilized and intended for addons to use. + */ public Builder cableProperties(long voltage, int amperage, int loss, boolean isSuperCon, int criticalTemperature) { properties.ensureSet(PropertyKey.DUST); @@ -1255,10 +1759,32 @@ public Builder cableProperties(long voltage, int amperage, int loss, boolean isS return this; } + /** + * Add Fluid Pipes to this Material. + * + * @param maxTemp The maximum temperature of Fluid that this Pipe can handle before causing damage to the + * Pipe. + * @param throughput The rate at which Fluid can flow through this Pipe. + * @param gasProof Whether this Pipe can hold Gases. If not, some Gas will be lost as it travels through the + * Pipe. + */ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof) { return fluidPipeProperties(maxTemp, throughput, gasProof, false, false, false); } + /** + * Add Fluid Pipes to this Material. + * + * @param maxTemp The maximum temperature of Fluid that this Pipe can handle before causing damage to the + * Pipe. + * @param throughput The rate at which Fluid can flow through this Pipe. + * @param gasProof Whether this Pipe can hold Gases. If not, some Gas will be lost as it travels through the + * Pipe. + * @param acidProof Whether this Pipe can hold Acids. If not, the Pipe may lose fluid or cause damage. + * @param cryoProof Whether this Pipe can hold Cryogenic Fluids (below 120K). If not, the Pipe may lose fluid + * or cause damage. + * @param plasmaProof Whether this Pipe can hold Plasmas. If not, the Pipe may lose fluid or cause damage. + */ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof, boolean acidProof, boolean cryoProof, boolean plasmaProof) { properties.setProperty(PropertyKey.FLUID_PIPE, @@ -1266,11 +1792,23 @@ public Builder fluidPipeProperties(int maxTemp, int throughput, boolean gasProof return this; } + /** + * Add Item Pipes to this Material. + * + * @param priority Priority of this Item Pipe, used for the standard routing mode. + * @param stacksPerSec How many stacks of items can be moved per second (20 ticks). + */ public Builder itemPipeProperties(int priority, float stacksPerSec) { properties.setProperty(PropertyKey.ITEM_PIPE, new ItemPipeProperties(priority, stacksPerSec)); return this; } + /** + * Specify a default enchantment for tools made from this Material to have upon creation. + * + * @param enchant The default enchantment to apply to all tools made from this Material. + * @param level The level that the enchantment starts at when created. + */ @Deprecated public Builder addDefaultEnchant(Enchantment enchant, int level) { if (!properties.hasProperty(PropertyKey.TOOL)) // cannot assign default here @@ -1279,6 +1817,11 @@ public Builder addDefaultEnchant(Enchantment enchant, int level) { return this; } + /** + * Verify the passed information and finalize the Material. + * + * @return The finalized Material. + */ @HideFromJS public Material buildAndRegister() { materialInfo.componentList = composition.isEmpty() && this.compositionSupplier != null ? @@ -1304,7 +1847,7 @@ public Material buildAndRegister() { mat.setItemTags(itemTags); } if (formula != null) { - mat.setFormula(formula); + mat.setFormula(formula, formatFormula); } materialInfo.verifyInfo(properties, averageRGB); mat.registerMaterial(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java index 19fa4ef8cf2..3c5fec2d6aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ArmorProperty.java @@ -89,10 +89,21 @@ public void verifyProperty(MaterialProperties properties) { } } + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder { private final ArmorProperty armorProperty; + /** + * Create Armor for this Material. + * + * @param durabilityMultiplier The durability value of this Armor. Leather is 5, Iron is 15, Diamond is 33. + * @param protectionValues The protection values of each armor piece in the set.
+ * Ordered as Helmet, Chestplate, Leggings, Boots. + * @throws IllegalArgumentException If the protectionValues array parameter does not have exactly 4 entries. + * + * @see net.minecraft.world.item.ArmorMaterials + */ public static ArmorProperty.Builder of(int durabilityMultiplier, int[] protectionValues) { Preconditions.checkArgument(protectionValues != null && protectionValues.length == 4, "protectionValues must have 4 entries!"); @@ -103,26 +114,45 @@ private Builder(int durabilityMultiplier, int[] protectionValues) { armorProperty = new ArmorProperty(durabilityMultiplier, protectionValues); } + /** + * Set armors made from this Material as unbreakable, bypassing all durability. + */ public ArmorProperty.Builder unbreakable() { armorProperty.durabilityMultiplier = 0; return this; } + /** + * Set the base enchantability of a tool made from this Material. Iron is 14, Diamond is 10, Stone is 5. + */ public ArmorProperty.Builder enchantability(int enchantability) { armorProperty.enchantability = enchantability; return this; } + /** + * Set the protection value for a specific piece of armor made from this Material. + */ public ArmorProperty.Builder protectionValue(ArmorItem.Type type, int value) { armorProperty.protectionValues.put(type, value); return this; } + /** + * Set the protection values for all pieces of armor made from this Material. + * + * @throws IllegalArgumentException If the provided map does not have a value for all 4 armor pieces. + */ public ArmorProperty.Builder protectionValues(Map protectionValues) { + Preconditions.checkArgument(protectionValues != null && protectionValues.size() == 4, + "protectionValues must have 4 entries!"); armorProperty.protectionValues = protectionValues; return this; } + /** + * Set an Ingredient to use as the repair ingredient when repairing armors made of this Material in an Anvil. + */ public ArmorProperty.Builder repairIngredient(@Nullable Supplier<@NotNull Ingredient> repairIngredient) { if (repairIngredient == null) { armorProperty.repairIngredient = null; @@ -133,21 +163,40 @@ public ArmorProperty.Builder repairIngredient(@Nullable Supplier<@NotNull Ingred return this; } + /** + * Set the toughness granted for wearing armors made of this Material. + * Diamond is 2, Netherite is 3, other armors are 0. + * + * @see net.minecraft.world.item.ArmorMaterials + * @see Armor Toughness - Minecraft Wiki + */ public ArmorProperty.Builder toughness(float toughness) { armorProperty.toughness = toughness; return this; } + /** + * Set the knockback resistance granted for wearing armor made of this Material.
+ * Netherite is 0.1 (10%), other armors are 0. + * + * @see net.minecraft.world.item.ArmorMaterials + */ public ArmorProperty.Builder knockbackResistance(float knockbackResistance) { armorProperty.knockbackResistance = knockbackResistance; return this; } + /** + * Set whether armor made of this Material can be dyed, similar to Leather armor. + */ public ArmorProperty.Builder dyeable(boolean dyeable) { armorProperty.dyeable = dyeable; return this; } + /** + * Set a custom worn armor texture for armor made of this Material. + */ public ArmorProperty.Builder customTexture(ArmorProperty.@NotNull CustomTextureGetter textureGetter) { armorProperty.customTextureGetter = textureGetter; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java index 6166c40d6c3..be413f84e55 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/BlastProperty.java @@ -143,6 +143,7 @@ public FluidIngredient getFluid() { } } + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder { private int temp; @@ -154,33 +155,69 @@ public static class Builder { public Builder() {} + /** + * Set the EBF temperature of this Material. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + * + * @param temperature The temperature of the recipe in the EBF. + */ public Builder temp(int temperature) { this.temp = temperature; return this; } + /** + * Set the EBF temperature and gas tier of this Material. + *
+ *
+ * If the temperature is above 1750K, it will automatically add a Vacuum Freezer recipe and Hot + * Ingot.
+ * If the temperature is below 1000K, it will automatically add a PBF recipe in addition to the + * EBF recipe. + * + * @param temperature The temperature of the recipe in the EBF. + * @param gasTier The {@link GasTier} of the Recipe. Will generate a second EBF recipe + * using the specified gas of the tier for a speed bonus. + */ public Builder temp(int temperature, GasTier gasTier) { this.temp = temperature; this.gasTier = gasTier; return this; } + /** + * Set the EU/t of the EBF recipe for this Material. + */ public Builder blastStats(int eutOverride) { this.eutOverride = eutOverride; return this; } + /** + * Set the EU/t and duration of the EBF recipe for this Material. + */ public Builder blastStats(int eutOverride, int durationOverride) { this.eutOverride = eutOverride; this.durationOverride = durationOverride; return this; } + /** + * Set the EU/t of the Vacuum Freezer recipe for the Hot Ingot of this Material. + */ public Builder vacuumStats(int eutOverride) { this.vacuumEUtOverride = eutOverride; return this; } + /** + * Set the EU/t and duration of the Vacuum Freezer recipe for the Hot Ingot of this Material. + */ public Builder vacuumStats(int eutOverride, int durationOverride) { this.vacuumEUtOverride = eutOverride; this.vacuumDurationOverride = durationOverride; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java index 4a631a823a9..b212631d27e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/ToolProperty.java @@ -115,6 +115,7 @@ public class ToolProperty implements IMaterialProperty { /** * Enchantment to be applied to tools made from this Material. */ + @Getter private final Object2IntMap enchantments = new Object2IntArrayMap<>(); public ToolProperty(float harvestSpeed, float attackDamage, int durability, int harvestLevel, GTToolType[] types) { @@ -129,10 +130,6 @@ public ToolProperty() { this(1.0F, 1.0F, 100, 2, GTToolType.getTypes().values().toArray(GTToolType[]::new)); } - public Object2IntMap getEnchantments() { - return enchantments; - } - @Override public void verifyProperty(MaterialProperties properties) { if (!properties.hasProperty(PropertyKey.WOOD)) { @@ -168,10 +165,19 @@ public ToolProperty removeTypes(GTToolType... types) { return this; } + @SuppressWarnings("unused") // API, need to treat all of these as used public static class Builder { private final ToolProperty toolProperty; + /** + * Create Tools for this Material. + * + * @param harvestSpeed The mining speed of a tool made from this Material. + * @param attackDamage The attack damage of a tool made from this Material. + * @param durability The durability of a tool made from this Material. + * @param harvestLevel The harvest level that tools of this Material can mine. + */ public static Builder of(float harvestSpeed, float attackDamage, int durability, int harvestLevel) { return new Builder(harvestSpeed, attackDamage, durability, harvestLevel, new GTToolType[] { SWORD, @@ -211,6 +217,15 @@ public static Builder of(float harvestSpeed, float attackDamage, int durability, }); } + /** + * Create Tools for this Material. + * + * @param harvestSpeed The mining speed of a tool made from this Material. + * @param attackDamage The attack damage of a tool made from this Material. + * @param durability The durability of a tool made from this Material. + * @param harvestLevel The harvest level that tools of this Material can mine. + * @param types The types of tools that can be made of this Material. + */ public static Builder of(float harvestSpeed, float attackDamage, int durability, int harvestLevel, GTToolType... types) { return new Builder(harvestSpeed, attackDamage, durability, harvestLevel, types); @@ -220,46 +235,76 @@ private Builder(float harvestSpeed, float attackDamage, int durability, int harv toolProperty = new ToolProperty(harvestSpeed, attackDamage, durability, harvestLevel, types); } + /** + * Set the base enchantability of a tool made from this Material. Iron is 14, Diamond is 10, Stone is 5. + */ public Builder enchantability(int enchantability) { toolProperty.enchantability = enchantability; return this; } + /** + * Set the attack speed of a tool made from this Material (animation time). + */ public Builder attackSpeed(float attackSpeed) { toolProperty.attackSpeed = attackSpeed; return this; } + /** + * Disable crafting tools being made from this Material. + */ public Builder ignoreCraftingTools() { toolProperty.ignoreCraftingTools = true; return this; } + /** + * Set tools made from this Material as unbreakable, bypassing all durability. + */ public Builder unbreakable() { toolProperty.isUnbreakable = true; return this; } + /** + * Set the types of tools that can be made of this Material. + */ public Builder types(GTToolType... types) { toolProperty.types = types; return this; } + /** + * Add additional types of tools that can be made of this Material. + */ public Builder addTypes(GTToolType... types) { toolProperty.types = ArrayUtils.addAll(toolProperty.types, types); return this; } + /** + * Add a default enchantment to tools made of this Material. + * + * @param enchantment The default enchantment, applied on crafting the tool. + * @param level The level of the enchantment. + */ public Builder enchantment(Enchantment enchantment, int level) { toolProperty.addEnchantmentForTools(enchantment, level); return this; } + /** + * Set tools made from this Material as magnetic, pulling mined blocks into your inventory. + */ public Builder magnetic() { toolProperty.isMagnetic = true; return this; } + /** + * Set a multiplier to the base durability of tools made from this Material. + */ public Builder durabilityMultiplier(int multiplier) { toolProperty.durabilityMultiplier = multiplier; return this; From fd49667903be0d6e3cab7c7932df74c4f5e1eb2b Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 31 Jul 2025 02:02:27 -0600 Subject: [PATCH 238/270] Add offsets to the item stack widgets in JEI (#3589) --- .../gui/widget/PatternPreviewSlotWidget.java | 112 ++++++++++++++++++ .../api/gui/widget/PatternPreviewWidget.java | 21 +++- 2 files changed, 127 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java new file mode 100644 index 00000000000..432e8be1636 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewSlotWidget.java @@ -0,0 +1,112 @@ +package com.gregtechceu.gtceu.api.gui.widget; + +import com.lowdragmc.lowdraglib.gui.modular.ModularUIGuiContainer; +import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; +import com.lowdragmc.lowdraglib.utils.ColorUtils; +import com.lowdragmc.lowdraglib.utils.Position; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.IItemHandlerModifiable; + +import com.mojang.blaze3d.systems.RenderSystem; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.lwjgl.opengl.GL11; + +import javax.annotation.Nonnull; + +public class PatternPreviewSlotWidget extends SlotWidget { + + public PatternPreviewSlotWidget(IItemHandlerModifiable itemHandler, int slotIndex, int xPosition, int yPosition, + boolean canTakeItems, boolean canPutItems) { + super(itemHandler, slotIndex, xPosition, yPosition, canTakeItems, canPutItems); + } + + /** + * Override the draw method for regular slot widget since we do custom offsets when drawing the stack + */ + @Override + public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + super.drawBackgroundTexture(graphics, mouseX, mouseY); + Position pos = this.getPosition(); + if (this.slotReference != null) { + ItemStack itemStack = this.getRealStack(this.slotReference.getItem()); + ModularUIGuiContainer modularUIGui = this.gui == null ? null : this.gui.getModularUIGui(); + if (itemStack.isEmpty() && modularUIGui != null && modularUIGui.getQuickCrafting() && + modularUIGui.getQuickCraftSlots().contains(this.slotReference)) { + int splitSize = modularUIGui.getQuickCraftSlots().size(); + itemStack = this.gui.getModularUIContainer().getCarried(); + if (!itemStack.isEmpty() && splitSize > 1 && + AbstractContainerMenu.canItemQuickReplace(this.slotReference, itemStack, true)) { + itemStack = itemStack.copy(); + itemStack.grow(AbstractContainerMenu.getQuickCraftPlaceCount(modularUIGui.getQuickCraftSlots(), + modularUIGui.dragSplittingLimit, itemStack)); + int k = Math.min(itemStack.getMaxStackSize(), this.slotReference.getMaxStackSize(itemStack)); + if (itemStack.getCount() > k) { + itemStack.setCount(k); + } + } + } + + if (!itemStack.isEmpty()) { + drawItemStack(graphics, itemStack, pos.x + 1, pos.y + 1, -1, (String) null); + } + } + + this.drawOverlay(graphics, mouseX, mouseY, partialTicks); + if (this.drawHoverOverlay && this.isMouseOverElement((double) mouseX, (double) mouseY) && + this.getHoverElement((double) mouseX, (double) mouseY) == this) { + RenderSystem.colorMask(true, true, true, false); + DrawerHelper.drawSolidRect(graphics, this.getPosition().x + 1, this.getPosition().y + 1, 16, 16, + -2130706433); + RenderSystem.colorMask(true, true, true, true); + } + } + + public static void drawItemStack(@Nonnull GuiGraphics graphics, ItemStack itemStack, int x, int y, int color, + @Nullable String altTxt) { + var a = ColorUtils.alpha(color); + var r = ColorUtils.red(color); + var g = ColorUtils.green(color); + var b = ColorUtils.blue(color); + RenderSystem.setShaderColor(r, g, b, a); + + RenderSystem.enableDepthTest(); + RenderSystem.depthMask(true); + + Minecraft mc = Minecraft.getInstance(); + + graphics.pose().pushPose(); + graphics.pose().translate(0, 0, 100); + + graphics.renderItem(itemStack, x, y); + graphics.pose().translate(0, 0, 100); + + graphics.pose().pushPose(); + + // actual offset bit that's important :3 + int xOffset = 0; + if (itemStack.getCount() / 100_000 != 0) { + xOffset = 9; + } else if (itemStack.getCount() / 10_000 != 0) { + xOffset = 6; + } else if (itemStack.getCount() / 1000 != 0) { + xOffset = 3; + } + + graphics.renderItemDecorations(mc.font, itemStack, x + xOffset, y, altTxt); + graphics.pose().popPose(); + + graphics.pose().popPose(); + + // clear depth buffer,it may cause some rendering issues? + RenderSystem.clear(GL11.GL_DEPTH_BUFFER_BIT, Minecraft.ON_OSX); + RenderSystem.depthMask(false); + RenderSystem.setShaderColor(1F, 1F, 1F, 1F); + RenderSystem.enableBlend(); + RenderSystem.disableDepthTest(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java index 4fe58cdc3f1..3855367f846 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/PatternPreviewWidget.java @@ -247,10 +247,21 @@ public void setPage(int index) { } slotWidgets = new SlotWidget[Math.min(pattern.parts.size(), 18)]; var itemHandler = new CycleItemStackHandler(pattern.parts); + int xOffset = 0; for (int i = 0; i < slotWidgets.length; i++) { - slotWidgets[i] = new SlotWidget(itemHandler, i, 4 + i * 18, 0, false, false) + int padding = 1; + if (itemHandler.getStackInSlot(i).getCount() / 100_000 >= 1) { + padding = 10; + } else if (itemHandler.getStackInSlot(i).getCount() / 10_000 >= 1) { + padding = 7; + } else if (itemHandler.getStackInSlot(i).getCount() / 1_000 >= 1) { + padding = 4; + } + + slotWidgets[i] = new PatternPreviewSlotWidget(itemHandler, i, (4 + xOffset + padding), 0, false, false) .setBackgroundTexture(ColorPattern.T_GRAY.rectTexture()) .setIngredientIO(IngredientIO.INPUT); + xOffset += 18 + (2 * padding); scrollableWidgetGroup.addWidget(slotWidgets[i]); } } @@ -467,11 +478,9 @@ private static class PartInfo { public List getItemStack() { return Arrays.stream(itemStackKey.getItemStack()) - .map(itemStack -> { - var item = itemStack.copy(); - item.setCount(amount); - return item; - }).filter(item -> !item.isEmpty()).toList(); + .map(stack -> stack.copyWithCount(amount)) + .filter(item -> !item.isEmpty()) + .toList(); } } From 911d12d23cbfcab353b74c4db9e6d494c2499956 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Thu, 31 Jul 2025 02:34:58 -0600 Subject: [PATCH 239/270] Fix Nightvision Goggles until new KeyMapping API is used (#3588) --- .../common/item/armor/NightvisionGoggles.java | 71 ++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java index 77ef6c4fca2..89d78447cb4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/NightvisionGoggles.java @@ -5,13 +5,11 @@ import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.item.armor.ArmorLogicSuite; import com.gregtechceu.gtceu.api.item.armor.ArmorUtils; -import com.gregtechceu.gtceu.utils.input.IKeyPressedListener; -import com.gregtechceu.gtceu.utils.input.SyncedKeyMapping; +import com.gregtechceu.gtceu.utils.input.KeyBind; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; @@ -25,48 +23,12 @@ import java.util.List; -public class NightvisionGoggles extends ArmorLogicSuite implements IKeyPressedListener { +public class NightvisionGoggles extends ArmorLogicSuite { public NightvisionGoggles(int energyPerUse, long capacity, int voltageTier, ArmorItem.Type slot) { super(energyPerUse, capacity, voltageTier, slot); } - @Override - public void onEquip(Player player) { - if (!(player instanceof ServerPlayer serverPlayer)) return; - } - - @Override - public void onUnequip(Player player) { - if (!(player instanceof ServerPlayer serverPlayer)) return; - } - - @Override - public void onKeyPressed(ServerPlayer player, SyncedKeyMapping keyPressed, boolean isDown) { - if (!isDown) return; // Only handle when key is pressed, not released - toggleNightVision(player); - } - - private void toggleNightVision(Player player) { - ItemStack itemStack = player.getItemBySlot(EquipmentSlot.HEAD); - if (itemStack.isEmpty()) return; - IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); - if (item == null) return; - - CompoundTag data = itemStack.getOrCreateTag(); - boolean nightVision = data.contains("nightVision") && data.getBoolean("nightVision"); - - nightVision = !nightVision; - if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { - nightVision = false; - player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); - } else { - player.displayClientMessage(Component - .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); - } - data.putBoolean("nightVision", nightVision); - } - @Override public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack itemStack) { IElectricItem item = GTCapabilityHelper.getElectricItem(itemStack); @@ -74,10 +36,24 @@ public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack return; } CompoundTag data = itemStack.getOrCreateTag(); + byte toggleTimer = data.contains("toggleTimer") ? data.getByte("toggleTimer") : 0; int nightVisionTimer = data.contains("nightVisionTimer") ? data.getInt("nightVisionTimer") : ArmorUtils.NIGHTVISION_DURATION; if (type == ArmorItem.Type.HELMET) { - if (data.contains("nightVision") && data.getBoolean("nightVision")) { + boolean nightVision = data.contains("nightVision") && data.getBoolean("nightVision"); + if (toggleTimer == 0 && KeyBind.ARMOR_MODE_SWITCH.isKeyDown(player)) { + nightVision = !nightVision; + toggleTimer = 5; + if (item.getCharge() < ArmorUtils.MIN_NIGHTVISION_CHARGE) { + nightVision = false; + player.displayClientMessage(Component.translatable("metaarmor.nms.nightvision.error"), true); + } else { + player.displayClientMessage(Component + .translatable("metaarmor.nms.nightvision." + (nightVision ? "enabled" : "disabled")), true); + } + } + + if (nightVision) { player.removeEffect(MobEffects.BLINDNESS); if (nightVisionTimer <= ArmorUtils.NIGHT_VISION_RESET) { nightVisionTimer = ArmorUtils.NIGHTVISION_DURATION; @@ -89,10 +65,23 @@ public void onArmorTick(Level world, @NotNull Player player, @NotNull ItemStack } else { player.removeEffect(MobEffects.NIGHT_VISION); } + data.putBoolean("nightVision", nightVision); + } if (nightVisionTimer > 0) nightVisionTimer--; + if (toggleTimer > 0) toggleTimer--; + data.putInt("nightVisionTimer", nightVisionTimer); + data.putByte("toggleTimer", toggleTimer); + } + + public static void disableNightVision(@NotNull Level world, Player player, boolean sendMsg) { + if (!world.isClientSide) { + player.removeEffect(MobEffects.NIGHT_VISION); + if (sendMsg) + player.displayClientMessage(Component.translatable("metaarmor.message.nightvision.disabled"), true); + } } @Override From 7a4e6a754618c31d860013b3755b9d33a798cdff Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 31 Jul 2025 02:35:25 -0600 Subject: [PATCH 240/270] Uncap Recipe lookup ingredient search limit (#3586) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../gtceu/api/recipe/lookup/GTRecipeLookup.java | 14 +++++++++----- .../gtceu/api/recipe/lookup/RecipeIterator.java | 5 ++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java index d7ac9cde669..08141abbc6e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookup.java @@ -175,7 +175,9 @@ public GTRecipe recurseIngredientTreeFindRecipe(@NotNull List> ingredients, @NotNull Branch branchMap, @NotNull Predicate canHandle, - int index, int count, long skip) { + int index, int count, BitSet skip) { // exhausted all the ingredients, and didn't find anything if (count == ingredients.size()) return null; @@ -236,18 +238,20 @@ public GTRecipe recurseIngredientTreeFindRecipe(@NotNull List> ingredients, @NotNull Branch map, @NotNull Predicate canHandle, int currentIndex, int count, - long skip) { + BitSet skip) { // We loop around ingredients.size() if we reach the end. // only end when all ingredients are exhausted, or a recipe is found int i = (currentIndex + 1) % ingredients.size(); while (i != currentIndex) { // Have we already used this ingredient? If so, skip this one. - if (((skip & (1L << i)) == 0)) { + if (!(skip.get(i))) { // Recursive call // Increase the count, so the recursion can terminate if needed (ingredients is exhausted) // Append the current index to the skip list + BitSet copy = (BitSet) skip.clone(); + copy.set(i); GTRecipe found = recurseIngredientTreeFindRecipe(ingredients, map, canHandle, i, count + 1, - skip | (1L << i)); + copy); if (found != null) { return found; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java index b16505d30c7..55515d85f4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/lookup/RecipeIterator.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.NotNull; +import java.util.BitSet; import java.util.Iterator; import java.util.List; import java.util.function.Predicate; @@ -39,9 +40,11 @@ public GTRecipe next() { // Try each ingredient as a starting point, save current index GTRecipe r = null; while (index < ingredients.size()) { + BitSet skipSet = new BitSet(); + skipSet.set(index); r = recipeMap.getLookup().recurseIngredientTreeFindRecipe(ingredients, recipeMap.getLookup().getLookup(), canHandle, - index, 0, (1L << index)); + index, 0, skipSet); ++index; if (r != null) break; } From a5796215b90d07881da902d0ff8e983173063452 Mon Sep 17 00:00:00 2001 From: Madeline Vergani Date: Thu, 31 Jul 2025 10:35:38 +0200 Subject: [PATCH 241/270] Add an optional `GTRegistrate` parameter to all methods in `GTMachineUtils` (#3585) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../api/registry/registrate/GTRegistrate.java | 4 + .../common/data/machines/GTMachineUtils.java | 235 +++++++++++++++--- 2 files changed, 203 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index fa8edf5ea0a..63c5578809e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -193,6 +193,10 @@ public GTBlockBuilder block(P parent, String name, private RegistryEntry currentTab; private static final Map, RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); + public RegistryEntry creativeModeTab() { + return this.currentTab; + } + public void creativeModeTab(Supplier> currentTab) { this.currentTab = currentTab.get(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 3621f55904e..40b396a6286 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -31,6 +31,7 @@ import com.gregtechceu.gtceu.api.pattern.predicates.SimplePredicate; import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; @@ -86,7 +87,6 @@ import static com.gregtechceu.gtceu.api.capability.recipe.IO.*; import static com.gregtechceu.gtceu.api.pattern.Predicates.*; import static com.gregtechceu.gtceu.common.data.GTBlocks.*; -import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; @@ -127,24 +127,44 @@ public class GTMachineUtils { public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, boolean hasPollutionDebuff) { - return registerSimpleMachines(name, recipeType, tankScalingFunction, hasPollutionDebuff, ELECTRIC_TIERS); + return registerSimpleMachines(REGISTRATE, name, recipeType, tankScalingFunction, hasPollutionDebuff); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + boolean hasPollutionDebuff) { + return registerSimpleMachines(registrate, name, recipeType, tankScalingFunction, hasPollutionDebuff, + ELECTRIC_TIERS); } public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction) { - return registerSimpleMachines(name, recipeType, tankScalingFunction, false); + return registerSimpleMachines(REGISTRATE, name, recipeType, tankScalingFunction); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction) { + return registerSimpleMachines(registrate, name, recipeType, tankScalingFunction, false); } public static MachineDefinition[] registerSimpleMachines(String name, GTRecipeType recipeType) { - return registerSimpleMachines(name, recipeType, defaultTankSizeFunction); + return registerSimpleMachines(REGISTRATE, name, recipeType); + } + + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType) { + return registerSimpleMachines(registrate, name, recipeType, defaultTankSizeFunction); } - public static MachineDefinition[] registerSimpleMachines(String name, + public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, + String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, boolean hasPollutionDebuff, int... tiers) { - return registerTieredMachines(name, + return registerTieredMachines(registrate, name, (holder, tier) -> new SimpleTieredMachine(holder, tier, tankScalingFunction), (tier, builder) -> { if (hasPollutionDebuff) { builder.recipeModifiers(GTRecipeModifiers.ENVIRONMENT_REQUIREMENT @@ -172,9 +192,17 @@ public static MachineDefinition[] registerTieredMachines(String name, BiFunction factory, BiFunction, MachineDefinition> builder, int... tiers) { + return registerTieredMachines(REGISTRATE, name, factory, builder, tiers); + } + + public static MachineDefinition[] registerTieredMachines(GTRegistrate registrate, + String name, + BiFunction factory, + BiFunction, MachineDefinition> builder, + int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { - var register = REGISTRATE + var register = registrate .machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); @@ -186,12 +214,18 @@ public static MachineDefinition[] registerTieredMachines(String name, public static Pair registerSteamMachines(String name, BiFunction factory, BiFunction, MachineDefinition> builder) { + return registerSteamMachines(REGISTRATE, name, factory, builder); + } + + public static Pair registerSteamMachines(GTRegistrate registrate, String name, + BiFunction factory, + BiFunction, MachineDefinition> builder) { MachineDefinition lowTier = builder.apply(false, - REGISTRATE.machine("lp_%s".formatted(name), holder -> factory.apply(holder, false)) + registrate.machine("lp_%s".formatted(name), holder -> factory.apply(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(name)) .tier(0)); MachineDefinition highTier = builder.apply(true, - REGISTRATE.machine("hp_%s".formatted(name), holder -> factory.apply(holder, true)) + registrate.machine("hp_%s".formatted(name), holder -> factory.apply(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(name)) .tier(1)); return Pair.of(lowTier, highTier); @@ -200,6 +234,14 @@ public static Pair registerSteamMachines(S public static MachineDefinition[] registerFluidHatches(String name, String displayName, String tooltip, IO io, int initialCapacity, int slots, int[] tiers, PartAbility... abilities) { + return registerFluidHatches(REGISTRATE, name, displayName, tooltip, io, initialCapacity, slots, tiers, + abilities); + } + + public static MachineDefinition[] registerFluidHatches(GTRegistrate registrate, String name, String displayName, + String tooltip, + IO io, int initialCapacity, int slots, + int[] tiers, PartAbility... abilities) { final String pipeOverlay; if (slots >= 9) { pipeOverlay = "overlay_pipe_9x"; @@ -210,7 +252,7 @@ public static MachineDefinition[] registerFluidHatches(String name, String displ } final String ioOverlay = io == OUT ? "overlay_pipe_out_emissive" : "overlay_pipe_in_emissive"; final String emissiveOverlay = slots > 4 ? OVERLAY_FLUID_HATCH_HALF_PX_TEX : OVERLAY_FLUID_HATCH_TEX; - return registerTieredMachines(name, + return registerTieredMachines(registrate, name, (holder, tier) -> new FluidHatchPartMachine(holder, tier, io, initialCapacity, slots), (tier, builder) -> { builder.langValue(VNF[tier] + ' ' + displayName) @@ -235,7 +277,12 @@ public static MachineDefinition[] registerFluidHatches(String name, String displ } public static MachineDefinition[] registerTransformerMachines(String langName, int baseAmp) { - return registerTieredMachines("transformer_%da".formatted(baseAmp), + return registerTransformerMachines(REGISTRATE, langName, baseAmp); + } + + public static MachineDefinition[] registerTransformerMachines(GTRegistrate registrate, String langName, + int baseAmp) { + return registerTieredMachines(registrate, "transformer_%da".formatted(baseAmp), (holder, tier) -> new TransformerMachine(holder, tier, baseAmp), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -270,7 +317,16 @@ public static MachineDefinition[] registerSimpleGenerator(String name, Int2IntFunction tankScalingFunction, float hazardStrengthPerOperation, int... tiers) { - return registerTieredMachines(name, + return registerSimpleGenerator(REGISTRATE, name, recipeType, tankScalingFunction, hazardStrengthPerOperation, + tiers); + } + + public static MachineDefinition[] registerSimpleGenerator(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + float hazardStrengthPerOperation, + int... tiers) { + return registerTieredMachines(registrate, name, (holder, tier) -> new SimpleGeneratorMachine(holder, tier, hazardStrengthPerOperation * tier, tankScalingFunction), (tier, builder) -> builder @@ -290,17 +346,28 @@ public static MachineDefinition[] registerSimpleGenerator(String name, public static Pair registerSimpleSteamMachines(String name, GTRecipeType recipeType) { - return registerSteamMachines("steam_" + name, SimpleSteamMachine::new, (pressure, builder) -> builder - .rotationState(RotationState.ALL) - .recipeType(recipeType) - .recipeModifier(SimpleSteamMachine::recipeModifier) - .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) - .workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name)) - .register()); + return registerSimpleSteamMachines(REGISTRATE, name, recipeType); + } + + public static Pair registerSimpleSteamMachines(GTRegistrate registrate, + String name, + GTRecipeType recipeType) { + return registerSteamMachines(registrate, "steam_" + name, SimpleSteamMachine::new, + (pressure, builder) -> builder + .rotationState(RotationState.ALL) + .recipeType(recipeType) + .recipeModifier(SimpleSteamMachine::recipeModifier) + .modelProperty(GTMachineModelProperties.VENT_DIRECTION, RelativeDirection.BACK) + .workableSteamHullModel(pressure, GTCEu.id("block/machines/" + name)) + .register()); } public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { - return registerTieredMachines("battery_buffer_" + batterySlotSize + "x", + return registerBatteryBuffer(REGISTRATE, batterySlotSize); + } + + public static MachineDefinition[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { + return registerTieredMachines(registrate, "battery_buffer_" + batterySlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, batterySlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -322,7 +389,11 @@ public static MachineDefinition[] registerBatteryBuffer(int batterySlotSize) { } public static MachineDefinition[] registerCharger(int itemSlotSize) { - return registerTieredMachines("charger_" + itemSlotSize + "x", + return registerCharger(REGISTRATE, itemSlotSize); + } + + public static MachineDefinition[] registerCharger(GTRegistrate registrate, int itemSlotSize) { + return registerTieredMachines(registrate, "charger_" + itemSlotSize + "x", (holder, tier) -> new ChargerMachine(holder, tier, itemSlotSize), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -342,11 +413,17 @@ public static MachineDefinition[] registerCharger(int itemSlotSize) { } public static MachineDefinition[] registerConverter(int amperage) { + return registerConverter(REGISTRATE, amperage); + } + + public static MachineDefinition[] registerConverter(GTRegistrate registrate, int amperage) { + final var tab = registrate.creativeModeTab(); + if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { - REGISTRATE.creativeModeTab(() -> null); + registrate.creativeModeTab(() -> null); } - MachineDefinition[] converters = registerTieredMachines(amperage + "a_energy_converter", + MachineDefinition[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", (holder, tier) -> new ConverterMachine(holder, tier, amperage), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -368,14 +445,19 @@ public static MachineDefinition[] registerConverter(int amperage) { ALL_TIERS); if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { - REGISTRATE.creativeModeTab(() -> MACHINE); + registrate.creativeModeTab(() -> tab); } return converters; } public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAbility ability) { + return registerLaserHatch(REGISTRATE, io, amperage, ability); + } + + public static MachineDefinition[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, + PartAbility ability) { String name = io == IN ? "target" : "source"; - return registerTieredMachines(amperage + "a_laser_" + name + "_hatch", + return registerTieredMachines(registrate, amperage + "a_laser_" + name + "_hatch", (holder, tier) -> new LaserHatchPartMachine(holder, io, tier, amperage), (tier, builder) -> builder .langValue(VNF[tier] + "§r " + FormattingUtil.formatNumbers(amperage) + "§eA§r Laser " + FormattingUtil.toEnglishName(name) + " Hatch") @@ -397,9 +479,14 @@ public static MachineDefinition[] registerLaserHatch(IO io, int amperage, PartAb } public static MachineDefinition registerCrate(Material material, int capacity, String lang) { + return registerCrate(REGISTRATE, material, capacity, lang); + } + + public static MachineDefinition registerCrate(GTRegistrate registrate, Material material, int capacity, + String lang) { final boolean wooden = material.hasProperty(PropertyKey.WOOD); - return REGISTRATE.machine(material.getName() + "_crate", holder -> new CrateMachine(holder, material, capacity)) + return registrate.machine(material.getName() + "_crate", holder -> new CrateMachine(holder, material, capacity)) .langValue(lang) .rotationState(RotationState.NONE) .tooltips(Component.translatable("gtceu.universal.tooltip.item_storage_capacity", capacity)) @@ -411,8 +498,13 @@ public static MachineDefinition registerCrate(Material material, int capacity, S } public static MachineDefinition registerDrum(Material material, int capacity, String lang) { + return registerDrum(REGISTRATE, material, capacity, lang); + } + + public static MachineDefinition registerDrum(GTRegistrate registrate, Material material, int capacity, + String lang) { boolean wooden = material.hasProperty(PropertyKey.WOOD); - var definition = REGISTRATE + var definition = registrate .machine(material.getName() + "_drum", MachineDefinition::new, holder -> new DrumMachine(holder, material, capacity), MetaMachineBlock::new, (holder, prop) -> DrumMachineItem.create(holder, prop, material), @@ -438,10 +530,14 @@ public static MachineDefinition registerDrum(Material material, int capacity, St } public static MachineDefinition[] registerQuantumTanks(String name, int... tiers) { + return registerQuantumTanks(REGISTRATE, name, tiers); + } + + public static MachineDefinition[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); - var register = REGISTRATE.machine( + var register = registrate.machine( GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, MachineDefinition::new, (holder) -> new QuantumTankMachine(holder, tier, maxAmount), MetaMachineBlock::new, QuantumTankMachineItem::new, @@ -466,7 +562,11 @@ public static MachineDefinition[] registerQuantumTanks(String name, int... tiers } public static MachineDefinition[] registerQuantumChests(String name, int... tiers) { - return registerTieredMachines(name, + return registerQuantumChests(REGISTRATE, name, tiers); + } + + public static MachineDefinition[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { + return registerTieredMachines(registrate, name, (holder, tier) -> new QuantumChestMachine(holder, tier, tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), (tier, builder) -> builder.langValue(toEnglishName(name) + " " + LVT[tier]) @@ -496,7 +596,16 @@ public static MultiblockMachineDefinition registerMultiblockTank(String name, St Supplier valve, @Nullable PropertyFluidFilter filter, BiConsumer rendererSetup) { - MultiblockMachineBuilder builder = REGISTRATE + return registerMultiblockTank(REGISTRATE, name, displayName, capacity, casing, valve, filter, rendererSetup); + } + + public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate registrate, String name, + String displayName, int capacity, + Supplier casing, + Supplier valve, + @Nullable PropertyFluidFilter filter, + BiConsumer rendererSetup) { + MultiblockMachineBuilder builder = registrate .multiblock(name, holder -> new MultiblockTankMachine(holder, capacity, filter)) .langValue(displayName) .tooltips( @@ -522,7 +631,13 @@ public static MultiblockMachineDefinition registerMultiblockTank(String name, St public static MachineDefinition registerTankValve(String name, String displayName, boolean isMetal, BiConsumer, ResourceLocation> rendererSetup) { - MachineBuilder builder = REGISTRATE + return registerTankValve(REGISTRATE, name, displayName, isMetal, rendererSetup); + } + + public static MachineDefinition registerTankValve(GTRegistrate registrate, String name, String displayName, + boolean isMetal, + BiConsumer, ResourceLocation> rendererSetup) { + MachineBuilder builder = registrate .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip"), @@ -536,9 +651,16 @@ public static MultiblockMachineDefinition[] registerTieredMultis(String name, BiFunction factory, BiFunction builder, int... tiers) { + return registerTieredMultis(REGISTRATE, name, factory, builder, tiers); + } + + public static MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, String name, + BiFunction factory, + BiFunction builder, + int... tiers) { MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { - var register = REGISTRATE + var register = registrate .multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); @@ -552,8 +674,18 @@ public static MultiblockMachineDefinition registerLargeBoiler(String name, Suppl Supplier fireBox, ResourceLocation texture, BoilerFireboxType firebox, int maxTemperature, int heatSpeed) { + return registerLargeBoiler(REGISTRATE, name, casing, pipe, fireBox, texture, firebox, maxTemperature, + heatSpeed); + } + + public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate registrate, String name, + Supplier casing, + Supplier pipe, + Supplier fireBox, + ResourceLocation texture, BoilerFireboxType firebox, + int maxTemperature, int heatSpeed) { // spotless:off - return REGISTRATE + return registrate .multiblock("%s_large_boiler".formatted(name), holder -> new LargeBoilerMachine(holder, maxTemperature, heatSpeed)) .langValue("Large %s Boiler".formatted(FormattingUtil.toEnglishName(name))) @@ -613,7 +745,17 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n Supplier intake, ResourceLocation casingTexture, ResourceLocation overlayModel) { - return REGISTRATE.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) + return registerLargeCombustionEngine(REGISTRATE, name, tier, casing, gear, intake, casingTexture, overlayModel); + } + + public static MultiblockMachineDefinition registerLargeCombustionEngine(GTRegistrate registrate, + String name, int tier, + Supplier casing, + Supplier gear, + Supplier intake, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { + return registrate.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.COMBUSTION_GENERATOR_FUELS) .generator(true) @@ -662,7 +804,17 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int Supplier gear, ResourceLocation casingTexture, ResourceLocation overlayModel) { - return registerLargeTurbine(name, tier, recipeType, casing, gear, casingTexture, overlayModel, true); + return registerLargeTurbine(REGISTRATE, name, tier, recipeType, casing, gear, casingTexture, overlayModel); + } + + public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, + String name, int tier, GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { + return registerLargeTurbine(registrate, name, tier, recipeType, casing, gear, casingTexture, overlayModel, + true); } public static MultiblockMachineDefinition registerLargeTurbine(String name, int tier, GTRecipeType recipeType, @@ -671,7 +823,18 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int ResourceLocation casingTexture, ResourceLocation overlayModel, boolean needsMuffler) { - return REGISTRATE.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) + return registerLargeTurbine(REGISTRATE, name, tier, recipeType, casing, gear, casingTexture, overlayModel, + needsMuffler); + } + + public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, + String name, int tier, GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel, + boolean needsMuffler) { + return registrate.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(recipeType) .generator(true) From 1ff6db84fc4a60d2004330be9041ae9bd5f7a7da Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:35:52 +0300 Subject: [PATCH 242/270] update configuration (#3579) --- gradle/forge.versions.toml | 5 +- gradle/scripts/repositories.gradle | 4 + gradle/scripts/resources.gradle | 2 +- .../gtceu/config/ConfigHolder.java | 127 ++++++++++++++---- .../gtceu/data/lang/ConfigurationLang.java | 34 ++--- .../feature/IGridConnectedMachine.java | 4 +- 6 files changed, 127 insertions(+), 49 deletions(-) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 9caf060e359..5218fb80f1f 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -1,7 +1,7 @@ [versions] ldlib = "1.0.40.b" registrate = "MC1.20-1.3.11" -configuration = "2.2.0" +configuration = "3.1.0-forge" mixinExtras = "0.5.0-rc.3" jei = "15.20.0.105" @@ -49,11 +49,10 @@ ftbteams-cm = "5267190" ftbquests-cm = "6167056" ftbchunks-cm = "5956390" - [libraries] ldlib = { module = "com.lowdragmc.ldlib:ldlib-forge-1.20.1", version.ref = "ldlib" } registrate = { module = "com.tterrag.registrate:Registrate", version.ref = "registrate" } -configuration = { module = "dev.toma.configuration:configuration-forge-1.20.1", version.ref = "configuration" } +configuration = { module = "dev.toma.configuration:configuration-1.20.1", version.ref = "configuration" } mixinExtras-common = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixinExtras" } mixinExtras-forge = { module = "io.github.llamalad7:mixinextras-forge", version.ref = "mixinExtras" } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index 6c814e051d3..3ed279995a1 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -17,6 +17,10 @@ repositories { url = "https://maven.firstdarkdev.xyz/snapshots" } + exclusiveContent { // Configuration + forRepository { maven { url = "https://api.repsy.io/mvn/toma/public" } } + filter { includeGroup("dev.toma.configuration")} + } exclusiveContent { // KubeJS and Rhino forRepository { maven { url = "https://maven.latvian.dev/releases" } } filter { includeGroup("dev.latvian.mods")} diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index 6d7b42eef76..7fafe260f73 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -39,7 +39,7 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources minecraft_version : libs.versions.minecraft.get(), loader_version : forgeVers, forge_version : forgeVers, // only specify major version of forge - configuration_version: forge.versions.configuration.get(), + configuration_version: forge.versions.configuration.get().split("-")[0], kjs_version : forge.versions.kubejs.get().split("\\.")[0], // only specify major version of kjs ldlib_version : forge.versions.ldlib.get(), jei_version : forge.versions.jei.get(), diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index a15ab3da9ca..fff0c21eb61 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -8,7 +8,9 @@ import dev.toma.configuration.Configuration; import dev.toma.configuration.config.Config; import dev.toma.configuration.config.Configurable; +import dev.toma.configuration.config.UpdateRestrictions; import dev.toma.configuration.config.format.ConfigFormats; +import org.jetbrains.annotations.ApiStatus; @Config(id = GTCEu.MOD_ID) public class ConfigHolder { @@ -16,10 +18,14 @@ public class ConfigHolder { public static ConfigHolder INSTANCE; private static final Object LOCK = new Object(); + @ApiStatus.Internal + public static dev.toma.configuration.config.ConfigHolder INTERNAL_INSTANCE; + public static void init() { synchronized (LOCK) { - if (INSTANCE == null) { - INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getConfigInstance(); + if (INSTANCE == null || INTERNAL_INSTANCE == null) { + INTERNAL_INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.YAML); + INSTANCE = INTERNAL_INSTANCE.getConfigInstance(); } } } @@ -49,85 +55,107 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Whether to generate Flawed and Chipped Gems for materials and recipes involving them.", "Useful for mods like TerraFirmaCraft.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean generateLowQualityGems = false; // default false @Configurable @Configurable.Comment({ "Whether to remove Block/Ingot compression and decompression in the Crafting Table.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean disableManualCompression = true; // default true @Configurable @Configurable.Comment({ "Change the recipe of Rods in the Lathe to 1 Rod and 2 Small Piles of Dust, instead of 2 Rods.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderRods = true; // default true @Configurable @Configurable.Comment({ "Whether to make crafting recipes for Bricks, Firebricks, Nether Bricks, and Coke Bricks harder.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderBrickRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to nerf Wood crafting to 2 Planks from 1 Log, and 2 Sticks from 2 Planks.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean nerfWoodCrafting = false; // default false @Configurable @Configurable.Comment({ "Whether to make Wood related recipes harder.", "Excludes sticks and planks.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardWoodRecipes = false; // default false @Configurable @Configurable.Comment({ "Recipes for Buckets, Cauldrons, Hoppers, and Iron Bars" + " require Iron Plates, Rods, and more.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make Redstone related recipes harder.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardRedstoneRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make Vanilla Tools and Armor recipes harder.", "Excludes Flint and Steel, and Buckets.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardToolArmorRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make miscellaneous recipes harder.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardMiscRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make Glass related recipes harder. Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardGlassRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to nerf the Paper crafting recipe.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean nerfPaperCrafting = true; // default true @Configurable @Configurable.Comment({ "Recipes for items like Iron Doors, Trapdoors, Anvil" + " require Iron Plates, Rods, and more.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardAdvancedIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make coloring blocks like Concrete or Glass harder.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardDyeRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to remove charcoal smelting recipes from the vanilla furnace.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderCharcoalRecipe = true; // default true @Configurable @Configurable.Comment({ "Whether to make the Flint and Steel recipe require steel parts.", "Default: true." }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean flintAndSteelRequireSteel = true; // default true @Configurable @Configurable.Comment({ "Whether to remove Vanilla Block Recipes from the Crafting Table.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaBlockRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to remove Vanilla TNT Recipe from the Crafting Table.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaTNTRecipe = true; // default true @Configurable @Configurable.Comment({ "How many Multiblock Casings to make per craft. Either 1, 2, or 3.", "Default: 2" }) @Configurable.Range(min = 1, max = 3) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int casingsPerCraft = 2; @Configurable @Configurable.Comment({ "Whether to nerf the output amounts of the first circuit in a set to 1 (from 2) and SoC to 2 (from 4).", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderCircuitRecipes = false; @Configurable @Configurable.Comment({ "Whether to nerf machine controller recipes.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardMultiRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether tools should have enchants or not. Like the flint sword getting fire aspect.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean enchantedTools = false; } @@ -180,6 +208,7 @@ public static class EnergyCompatConfig { @Configurable @Configurable.Comment({ "Enable GTEU to FE (and vice versa) Converters.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableFEConverters = false; @Configurable @@ -206,6 +235,7 @@ public static class AE2CompatConfig { @Configurable @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 4.0AE/t" }) @Configurable.DecimalRange(min = 0.0, max = Integer.MAX_VALUE) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public double meHatchEnergyUsage = 4.0; } @@ -213,18 +243,19 @@ public static class MinimapCompatConfig { @Configurable @Configurable.Comment({ - "Toggle specific map mod integration on/off (need to restart for this to take effect)" }) + "Toggle specific map mod integration on/off" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public Toggle toggle = new Toggle(); @Configurable @Configurable.Comment({ "The radius, in blocks, that picking up a surface rock will search for veins in.", "-1 to disable.", "Default: 24" }) - @Configurable.Range(min = -1) + @Configurable.Range(min = 1) public int surfaceRockProspectRange = 24; @Configurable @Configurable.Comment({ "The radius, in blocks, that clicking an ore block will search for veins in.", "-1 to disable", "Default: 24" }) - @Configurable.Range(min = -1) + @Configurable.Range(min = 1) public int oreBlockProspectRange = 24; @Configurable @@ -335,6 +366,7 @@ public static class WorldGenConfigs { @Configurable @Configurable.Comment({ "Should all Stone Types drop unique Ore Item Blocks?", "Default: false (meaning only Stone, Netherrack, and Endstone)" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean allUniqueStoneTypes = false; @Configurable @@ -346,10 +378,12 @@ public static class WorldGenConfigs { @Configurable.Comment({ "Whether to increase number of rolls for dungeon chests. Increases dungeon loot drastically.", "Default: true", "WARNING: Currently unimplemented." }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean increaseDungeonLoot = true; @Configurable @Configurable.Comment({ "Allow GregTech to add additional GregTech Items as loot in various structures.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean addLoot = true; @Configurable @@ -374,9 +408,11 @@ public static class OreVeinConfigs { @Configurable @Configurable.Comment({ "Prevents regular vanilla ores from being generated outside GregTech ore veins", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaOreGen = true; @Configurable @Configurable.Comment({ "Prevents vanilla's large ore veins from being generated", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaLargeOreVeins = true; @Configurable @Configurable.Comment({ "Distance between bedrock ore veins in chunks, if enabled.", "Default: 16" }) @@ -392,15 +428,17 @@ public static class OreVeinConfigs { "Sets the maximum number of chunks that may be cached for ore vein generation.", "Higher values may improve world generation performance, but at the cost of more RAM usage.", "If you substantially increase the ore vein grid size, random vein offset, or have very large (custom) veins, you may need to increase this value as well.", - "Default: 512 (requires restarting the server / re-opening the world)" + "Default: 512" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int oreGenerationChunkCacheSize = 512; @Configurable @Configurable.Comment({ "Sets the maximum number of chunks for which ore indicators may be cached.", "If you register any custom veins with very large indicator ranges (or modify existing ones that way), you may need to increase this value.", - "Default: 2048 (requires restarting the server / re-opening the world)" + "Default: 2048" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int oreIndicatorChunkCacheSize = 2048; } } @@ -411,28 +449,34 @@ public static class MachineConfigs { @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean requireGTToolsForBlocks = true; @Configurable @Configurable.Comment({ "Whether machines explode in rainy weather or when placed next to certain terrain, such as fire or lava", "Default: false" }) + @Configurable.Synchronized public boolean shouldWeatherOrTerrainExplosion = false; @Configurable @Configurable.Comment({ "Energy use multiplier for electric items.", "Default: 100" }) + @Configurable.Synchronized public int energyUsageMultiplier = 100; @Configurable @Configurable.Comment({ "Energy use multiplier for prospectors.", "Default: 100" }) + @Configurable.Synchronized public int prospectorEnergyUseMultiplier = 100; @Configurable @Configurable.Comment({ "Whether machines or boilers damage the terrain when they explode.", "Note machines and boilers always explode when overloaded with power or met with special conditions, regardless of this config.", "Default: true" }) + @Configurable.Synchronized public boolean doesExplosionDamagesTerrain = true; @Configurable @Configurable.Comment({ "Enables Safe Active Transformers, removing their ability to explode if unformed while transmitting/receiving power.", "Default: false" }) + @Configurable.Synchronized public boolean harmlessActiveTransformers = false; @Configurable @Configurable.Comment({ "Whether to play machine sounds while machines are active.", "Default: true" }) @@ -442,9 +486,11 @@ public static class MachineConfigs { public int batchDuration = 100; @Configurable @Configurable.Comment({ "Whether Steam Multiblocks should use Steel instead of Bronze.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean steelSteamMultiblocks = false; @Configurable @Configurable.Comment({ "Whether to enable the cleanroom, required for various recipes.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean enableCleanroom = true; @Configurable @Configurable.Comment({ "Whether multiblocks should ignore all cleanroom requirements.", @@ -456,15 +502,18 @@ public static class MachineConfigs { public String replaceMinedBlocksWith = "minecraft:cobblestone"; @Configurable @Configurable.Comment({ "Whether to enable Assembly Line research for recipes.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableResearch = true; @Configurable @Configurable.Comment({ "Whether to enable the Maintenance Hatch, required for Multiblocks.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableMaintenance = true; @Configurable @Configurable.Comment({ "Whether to enable World Accelerators, which accelerate ticks for surrounding Tile Entities, Crops, etc.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableWorldAccelerators = true; @Configurable @@ -472,6 +521,7 @@ public static class MachineConfigs { "GregTech TileEntities are always blocked.", "Entries must be in a fully qualified format. For example: appeng.tile.networking.TileController", "Default: none" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public String[] worldAcceleratorBlacklist = new String[0]; @Configurable @@ -479,13 +529,16 @@ public static class MachineConfigs { "Whether to use GT6-style pipe and cable connections, meaning they will not auto-connect " + "unless placed directly onto another pipe or cable.", "Default: true" }) + @Configurable.Synchronized public boolean gt6StylePipesCables = true; @Configurable @Configurable.Comment({ "Whether the machine's circuit slot need to be inserted a real circuit." }) + @Configurable.Synchronized public boolean ghostCircuit = true; @Configurable @Configurable.Comment({ "Whether to add a \"Bedrock Ore Miner\" (also enables bedrock ore generation)", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean doBedrockOres = false; @Configurable @Configurable.Comment({ "What Kind of material should the bedrock ore miner output?", "Default: \"raw\"" }) @@ -498,24 +551,30 @@ public static class MachineConfigs { @Configurable @Configurable.Comment({ "Makes nearly every GCYM Multiblock require blocks which set their maximum voltages.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) // todo: implement or purge public boolean enableTieredCasings = false; @Configurable @Configurable.Comment({ "Minimum distance between Long Distance Item Pipe Endpoints", "Default: 50" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int ldItemPipeMinDistance = 50; @Configurable @Configurable.Comment({ "Minimum distance betweeb Long Distance Fluid Pipe Endpoints", "Default: 50" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int ldFluidPipeMinDistance = 50; @Configurable @Configurable.Comment({ "Whether ONLY owners can open a machine gui", "Default: false" }) + @Configurable.Synchronized public boolean onlyOwnerGUI = false; @Configurable @Configurable.Comment({ "Whether ONLY owners can break a machine", "Default: false" }) + @Configurable.Synchronized public boolean onlyOwnerBreak = false; @Configurable @Configurable.Comment({ "Minimum op level to bypass the ownership checks", "Default: 2" }) @Configurable.Range(min = Commands.LEVEL_ALL, max = Commands.LEVEL_OWNERS) + @Configurable.Synchronized public int ownerOPBypass = Commands.LEVEL_GAMEMASTERS; /** @@ -528,6 +587,7 @@ public static class MachineConfigs { "This is intended for modpack developers only, and is not playable without custom tweaks or addons.", "Other mods can override this to true, regardless of the config file.", "Default: false" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean highTierContent = false; @Configurable @@ -544,13 +604,16 @@ public static class MachineConfigs { "Default maximum parallel of steam multiblocks", "Default: 8" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int steamMultiParallelAmount = 8; @Configurable @Configurable.Comment("Small Steam Boiler Options") + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public SmallBoilers smallBoilers = new SmallBoilers(); @Configurable @Configurable.Comment("Large Steam Boiler Options") + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public LargeBoilers largeBoilers = new LargeBoilers(); public static class SmallBoilers { @@ -636,30 +699,37 @@ public static class ToolConfigs { @Configurable @Configurable.Comment("NightVision Goggles Voltage Tier. Default: 1 (LV)") @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierNightVision = 1; @Configurable @Configurable.Comment("NanoSuit Voltage Tier. Default: 3 (HV)") @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierNanoSuit = 3; @Configurable @Configurable.Comment({ "Advanced NanoSuit Chestplate Voltage Tier.", "Default: 3 (HV)" }) @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvNanoSuit = 3; @Configurable @Configurable.Comment({ "QuarkTech Suit Voltage Tier.", "Default: 5 (IV)" }) @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierQuarkTech = 5; @Configurable @Configurable.Comment({ "Advanced QuarkTech Suit Chestplate Voltage Tier.", "Default: 5 (LuV)" }) @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvQuarkTech = 6; @Configurable @Configurable.Comment({ "Electric Impeller Jetpack Voltage Tier.", "Default: 2 (MV)" }) @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierImpeller = 2; @Configurable @Configurable.Comment({ "Advanced Electric Jetpack Voltage Tier.", "Default: 3 (HV)" }) @Configurable.Range(min = 0, max = 14) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvImpeller = 3; public static class NanoSaber { @@ -667,10 +737,12 @@ public static class NanoSaber { @Configurable @Configurable.DecimalRange(min = 0, max = 100) @Configurable.Comment({ "The additional damage added when the NanoSaber is powered.", "Default: 20.0" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public double nanoSaberDamageBoost = 20; @Configurable @Configurable.DecimalRange(min = 0, max = 100) @Configurable.Comment({ "The base damage of the NanoSaber.", "Default: 5.0" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public double nanoSaberBaseDamage = 5; @Configurable @Configurable.Comment({ "Should Zombies spawn with charged, active NanoSabers on hard difficulty?", @@ -679,6 +751,7 @@ public static class NanoSaber { @Configurable @Configurable.Range(min = 1, max = 512) @Configurable.Comment({ "The EU/t consumption of the NanoSaber.", "Default: 64" }) + @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int energyConsumption = 64; } } @@ -687,14 +760,17 @@ public static class GameplayConfigs { @Configurable @Configurable.Comment({ "Enable hazardous materials", "Default: true" }) + @Configurable.Synchronized public boolean hazardsEnabled = true; @Configurable @Configurable.Comment({ "Whether hazards are applied to all valid items, or just GT's.", "true = all, false = GT only.", "Default: true" }) + @Configurable.Synchronized public boolean universalHazards = true; @Configurable @Configurable.Comment({ "Whether environmental hazards like pollution or radiation are active", "Default: false" }) + @Configurable.Synchronized public boolean environmentalHazards = false; @Configurable @Configurable.Comment({ "How much environmental hazards decay per chunk, per tick.", @@ -731,6 +807,7 @@ public static class ClientConfigs { @Configurable @Configurable.Comment({ "Use VBO cache for multiblock preview.", "Disable if you have issues with rendering multiblocks.", "Default: true" }) + @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean useVBO = true; @Configurable @Configurable.Comment({ "Duration of the multiblock in-world preview (s)", "Default: 10" }) @@ -743,7 +820,7 @@ public static class ClientConfigs { @Configurable public ArmorHud armorHud = new ArmorHud(); @Configurable - public RendererConfigs renderer = new RendererConfigs(); + public Renderers renderer = new Renderers(); public int getDefaultPaintingColor() { // OR with full alpha to differentiate from a machine that's painted white (map color 0xffffff) @@ -766,6 +843,23 @@ public static class ArmorHud { @Configurable.Range(min = 0, max = 100) public int hudOffsetY = 0; } + + public static class Renderers { + + @Configurable + @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) + public boolean renderFluids = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", + "Default: true" }) + public boolean coloredTieredMachineOutline = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", + "Default: true" }) + public boolean coloredWireOutline = true; + } } public static class DeveloperConfigs { @@ -788,21 +882,4 @@ public static class DeveloperConfigs { @Configurable.Comment({ "Dump all registered GT models/blockstates/etc?", "Default: false" }) public boolean dumpAssets = false; } - - public static class RendererConfigs { - - @Configurable - @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) - public boolean renderFluids = true; - - @Configurable - @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", - "Default: true" }) - public boolean coloredTieredMachineOutline = true; - - @Configurable - @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", - "Default: true" }) - public boolean coloredWireOutline = true; - } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java index d24677602c5..de63da5fa7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java @@ -1,33 +1,33 @@ package com.gregtechceu.gtceu.data.lang; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.config.ConfigHolder; import com.tterrag.registrate.providers.RegistrateLangProvider; -import dev.toma.configuration.Configuration; -import dev.toma.configuration.config.format.ConfigFormats; -import dev.toma.configuration.config.value.ConfigValue; -import dev.toma.configuration.config.value.ObjectValue; +import dev.toma.configuration.config.value.IConfigValue; +import dev.toma.configuration.config.value.IHierarchical; import java.util.HashSet; -import java.util.Map; import java.util.Set; public class ConfigurationLang { - public static void init(RegistrateLangProvider provider) { - dfs(provider, new HashSet<>(), - Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getValueMap()); + public static void init(final RegistrateLangProvider provider) { + final Set added = new HashSet<>(); + ConfigHolder.INTERNAL_INSTANCE.values() + .forEach((value) -> addTranslation(provider, added, value)); } - private static void dfs(RegistrateLangProvider provider, Set added, Map> map) { - for (var entry : map.entrySet()) { - var id = entry.getValue().getId(); - if (added.add(id)) { - provider.add(String.format("config.%s.option.%s", GTCEu.MOD_ID, id), id); - } - if (entry.getValue() instanceof ObjectValue objectValue) { - dfs(provider, added, objectValue.get()); + private static void addTranslation(RegistrateLangProvider provider, Set added, IConfigValue value) { + var id = value.getId(); + if (added.add(id)) { + provider.add("config.gtceu.option." + id, id); + } + if (value instanceof IHierarchical hierarchical) { + for (String childKey : value.getChildrenKeys()) { + IConfigValue child = hierarchical.getChildById(childKey); + if (child != null) { + addTranslation(provider, added, child); + } } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java index 8dcbca56391..fd372cf0bd1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java @@ -14,8 +14,6 @@ */ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBlockEntity { - int ME_UPDATE_INTERVAL = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; - /** * @return return {@code true} if current machine connected to a valid ME network, {@code false} otherwise. */ @@ -27,7 +25,7 @@ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBl * @return {@code true} if current machine should interact with ME network, {@code false} otherwise. */ default boolean shouldSyncME() { - return self().getOffsetTimer() % ME_UPDATE_INTERVAL == 0; + return self().getOffsetTimer() % ConfigHolder.INSTANCE.compat.ae2.updateIntervals == 0; } default AECableType getCableConnectionType(Direction dir) { From 643e4671094dbee4021c208dd1c1b637929b8b84 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 31 Jul 2025 02:36:27 -0600 Subject: [PATCH 243/270] Add Dynamic EMI conditional line spacing (#3576) Co-authored-by: kross <135918757+krossgg@users.noreply.github.com> --- src/generated/resources/assets/gtceu/lang/en_ud.json | 5 +++-- src/generated/resources/assets/gtceu/lang/en_us.json | 5 +++-- .../gregtechceu/gtceu/api/recipe/GTRecipeType.java | 6 ++++++ .../gtceu/api/recipe/ui/GTRecipeTypeUI.java | 2 +- .../gtceu/common/data/GCYMRecipeTypes.java | 1 - .../gregtechceu/gtceu/common/data/GTRecipeTypes.java | 12 ++---------- .../com/gregtechceu/gtceu/data/lang/LangHandler.java | 1 + .../com/gregtechceu/gtceu/data/lang/MachineLang.java | 4 ++-- .../gtceu/data/recipe/builder/GTRecipeBuilder.java | 2 ++ .../gtceu/integration/kjs/GregTechKubeJSPlugin.java | 1 + 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 5f5c34ee1ff..9c08af71494 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -2657,7 +2657,7 @@ "gtceu.machine.hp_steam_forge_hammer.tooltip": "ɹǝɯɯɐH ǝbɹoℲㄥ§", "gtceu.machine.hp_steam_furnace.tooltip": "ɯɐǝʇS pǝssǝɹdɯoɔ ɥʇıʍ sbuıɥʇ buıʇןǝɯSㄥ§", "gtceu.machine.hp_steam_liquid_boiler.tooltip": "ɹǝןıoᗺ pınbıꞀ ɯɐǝʇS ןןɐɯS uɐɥʇ ɹǝʇsɐℲㄥ§", - "gtceu.machine.hp_steam_macerator.tooltip": "sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", + "gtceu.machine.hp_steam_macerator.tooltip": "sʇɔnpoɹdʎᗺ ʇnoɥʇıʍ sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", "gtceu.machine.hp_steam_rock_crusher.tooltip": "ʇuǝɔɐظpɐ ʎןןɐʇuozıɹoɥ ɐʌɐꞀ puɐ ɹǝʇɐM ǝɔɐןԀㄥ§", "gtceu.machine.hp_steam_solar_boiler.tooltip": "unS ʎq ɹǝʍoԀ ɯɐǝʇSㄥ§", "gtceu.machine.hp_steam_solid_boiler.tooltip": "ɹǝןıoᗺ ןǝnℲ pıןoS ɯɐǝʇS ןןɐɯS ǝɥʇ uɐɥʇ ɹǝʇsɐℲㄥ§", @@ -2795,7 +2795,7 @@ "gtceu.machine.lp_steam_forge_hammer.tooltip": "ɹǝɯɯɐH ǝbɹoℲㄥ§", "gtceu.machine.lp_steam_furnace.tooltip": "ɯɐǝʇS pǝssǝɹdɯoɔ ɥʇıʍ sbuıɥʇ buıʇןǝɯSㄥ§", "gtceu.machine.lp_steam_liquid_boiler.tooltip": "spınbıꞀ ɟɟo buıuunɹ ɹǝןıoᗺ Ɐㄥ§", - "gtceu.machine.lp_steam_macerator.tooltip": "sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", + "gtceu.machine.lp_steam_macerator.tooltip": "sʇɔnpoɹdʎᗺ ʇnoɥʇıʍ sǝɹO ɹnoʎ buıʇɐɹǝɔɐWㄥ§", "gtceu.machine.lp_steam_rock_crusher.tooltip": "ʇuǝɔɐظpɐ ʎןןɐʇuozıɹoɥ ɐʌɐꞀ puɐ ɹǝʇɐM ǝɔɐןԀㄥ§", "gtceu.machine.lp_steam_solar_boiler.tooltip": "unS ʎq ɹǝʍoԀ ɯɐǝʇSㄥ§", "gtceu.machine.lp_steam_solid_boiler.tooltip": "ɹǝʍoԀ ɯɐǝʇS ʇǝb oʇ ʎɐʍ ʎןɹɐǝ uⱯㄥ§", @@ -3407,6 +3407,7 @@ "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", "gtceu.pyrolyse_oven": "uǝʌO ǝsʎןoɹʎԀ", + "gtceu.recipe.byproduct_tier": "+ɹ§%s ɯoɹɟ sʇɔnpoɹdʎᗺ", "gtceu.recipe.category.arc_furnace_recycling": "buıddɐɹɔS ɔɹⱯ", "gtceu.recipe.category.chem_dyes": "buıǝʎᗡ ןɐɔıɯǝɥƆ", "gtceu.recipe.category.extractor_recycling": "buıʇןǝɯǝᴚ dɐɹɔS", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 14752c93dd9..62950800596 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -2657,7 +2657,7 @@ "gtceu.machine.hp_steam_forge_hammer.tooltip": "§7Forge Hammer", "gtceu.machine.hp_steam_furnace.tooltip": "§7Smelting things with compressed Steam", "gtceu.machine.hp_steam_liquid_boiler.tooltip": "§7Faster than Small Steam Liquid Boiler", - "gtceu.machine.hp_steam_macerator.tooltip": "§7Macerating your Ores", + "gtceu.machine.hp_steam_macerator.tooltip": "§7Macerating your Ores without Byproducts", "gtceu.machine.hp_steam_rock_crusher.tooltip": "§7Place Water and Lava horizontally adjacent", "gtceu.machine.hp_steam_solar_boiler.tooltip": "§7Steam Power by Sun", "gtceu.machine.hp_steam_solid_boiler.tooltip": "§7Faster than the Small Steam Solid Fuel Boiler", @@ -2795,7 +2795,7 @@ "gtceu.machine.lp_steam_forge_hammer.tooltip": "§7Forge Hammer", "gtceu.machine.lp_steam_furnace.tooltip": "§7Smelting things with compressed Steam", "gtceu.machine.lp_steam_liquid_boiler.tooltip": "§7A Boiler running off Liquids", - "gtceu.machine.lp_steam_macerator.tooltip": "§7Macerating your Ores", + "gtceu.machine.lp_steam_macerator.tooltip": "§7Macerating your Ores without Byproducts", "gtceu.machine.lp_steam_rock_crusher.tooltip": "§7Place Water and Lava horizontally adjacent", "gtceu.machine.lp_steam_solar_boiler.tooltip": "§7Steam Power by Sun", "gtceu.machine.lp_steam_solid_boiler.tooltip": "§7An early way to get Steam Power", @@ -3407,6 +3407,7 @@ "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", "gtceu.pyrolyse_oven": "Pyrolyse Oven", + "gtceu.recipe.byproduct_tier": "Byproducts from %s§r+", "gtceu.recipe.category.arc_furnace_recycling": "Arc Scrapping", "gtceu.recipe.category.chem_dyes": "Chemical Dyeing", "gtceu.recipe.category.extractor_recycling": "Scrap Remelting", diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index b0438edc5d3..8ed88d3e3a2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -90,6 +90,8 @@ public class GTRecipeType implements RecipeType { private final Map> researchEntries = new Object2ObjectOpenHashMap<>(); @Getter private final List customRecipeLogicRunners = new ArrayList<>(); + @Getter + private int minRecipeConditions = 0; public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { this.registryName = registryName; @@ -172,6 +174,10 @@ public GTRecipeType addDataInfo(Function dataInfo) { return this; } + public void setMinRecipeConditions(int n) { + minRecipeConditions = Math.max(minRecipeConditions, n); + } + /** * * @param recipeLogic A function which is passed the normal findRecipe() result. Returns null if no valid recipe for diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java index 00b094b96b9..5ba8a0417b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ui/GTRecipeTypeUI.java @@ -404,7 +404,7 @@ protected IGuiTexture getOverlaysForSlot(boolean isOutput, RecipeCapability c * @return the height used to determine size of background texture in JEI */ public int getPropertyHeightShift() { - int maxPropertyCount = maxTooltips + recipeType.getDataInfos().size(); + int maxPropertyCount = maxTooltips + recipeType.getDataInfos().size() + recipeType.getMinRecipeConditions(); return maxPropertyCount * 10; // GTRecipeWidget#LINE_HEIGHT } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index cba81582187..7bb52773371 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -50,7 +50,6 @@ public class GCYMRecipeTypes { } return ""; }) - .setMaxTooltips(4) .setUiBuilder((recipe, widgetGroup) -> { int temp = recipe.data.getInt("ebf_temp"); List> items = new ArrayList<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index a28cf8c4441..42aa8ce79f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -142,7 +142,8 @@ public class GTRecipeTypes { .setIconSupplier(() -> GTMachines.MACERATOR[GTValues.LV].asStack()) .setSteamProgressBar(GuiTextures.PROGRESS_BAR_MACERATE_STEAM, LEFT_TO_RIGHT) .addCustomRecipeLogic(MaceratorLogic.INSTANCE) - .setSound(GTSoundEntries.MACERATOR); + .setSound(GTSoundEntries.MACERATOR) + .addDataInfo(data -> LocalizationUtils.format("gtceu.recipe.byproduct_tier", GTValues.VNF[GTValues.HV])); public final static GTRecipeType CANNER_RECIPES = register("canner", ELECTRIC).setMaxIOSize(2, 2, 1, 1) .setEUIO(IO.IN) @@ -184,7 +185,6 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) - .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); @@ -204,7 +204,6 @@ public class GTRecipeTypes { .setSlotOverlay(true, false, true, GuiTextures.DUST_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_SLICE, LEFT_TO_RIGHT) .setSound(GTSoundEntries.CUT) - .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -341,7 +340,6 @@ public class GTRecipeTypes { .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .setSlotOverlay(false, false, true, GuiTextures.LENS_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setSound(GTSoundEntries.ELECTROLYZER); public final static GTRecipeType SIFTER_RECIPES = register("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) @@ -368,7 +366,6 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.CIRCUIT_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_CIRCUIT_ASSEMBLER, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) - .setMaxTooltips(4) .onRecipeBuild((recipeBuilder, provider) -> { if (recipeBuilder.input.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()).isEmpty() && recipeBuilder.tickInput.getOrDefault(FluidRecipeCapability.CAP, Collections.emptyList()) @@ -391,14 +388,12 @@ public class GTRecipeTypes { .setSlotOverlay(false, false, GuiTextures.INT_CIRCUIT_OVERLAY) .setSlotOverlay(true, true, GuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setOffsetVoltageText(true) .setSound(GTSoundEntries.COOLING); public final static GTRecipeType AIR_SCRUBBER_RECIPES = register("air_scrubber", ELECTRIC) .setMaxIOSize(1, 3, 1, 3).setEUIO(IO.IN) .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setSound(GTSoundEntries.COOLING); public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) @@ -432,7 +427,6 @@ public class GTRecipeTypes { .setBackground(GuiTextures.FLUID_SLOT).setShowAmount(false)); } }) - .setMaxTooltips(4) .setSound(GTSoundEntries.FIRE); public static final GTRecipeType SCANNER_RECIPES = register("scanner", ELECTRIC) @@ -626,7 +620,6 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.ASSEMBLER) .setHasResearchSlot(true) - .setMaxTooltips(4) .onRecipeBuild(ResearchManager::createDefaultResearchRecipe); public static final GTRecipeType LARGE_CHEMICAL_RECIPES = register("large_chemical_reactor", MULTIBLOCK) @@ -640,7 +633,6 @@ public class GTRecipeTypes { .setSlotOverlay(true, true, GuiTextures.VIAL_OVERLAY_2) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) - .setMaxTooltips(4) .setSmallRecipeMap(CHEMICAL_RECIPES); public static final GTRecipeType FUSION_RECIPES = register("fusion_reactor", MULTIBLOCK).setMaxIOSize(0, 0, 2, 1) diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index d15b1266041..001e53959ad 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1000,6 +1000,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.recipe.scan_for_research", "Scan for Assembly Line"); provider.add("gtceu.recipe.computation_per_tick", "Min. Computation: %s CWU/t"); provider.add("gtceu.recipe.total_computation", "Computation: %s CWU"); + provider.add("gtceu.recipe.byproduct_tier", "Byproducts from %s§r+"); provider.add("gtceu.fluid.click_to_fill", "§7Click with a Fluid Container to §bfill §7the tank (Shift-click for a full stack)."); provider.add("gtceu.fluid.click_combined", diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java index d8f2c1cd1aa..4647c465885 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MachineLang.java @@ -27,8 +27,8 @@ protected static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.lp_steam_extractor.tooltip", "§7Extracting your first Rubber"); provider.add("gtceu.machine.hp_steam_extractor.tooltip", "§7Extracting your first Rubber"); - provider.add("gtceu.machine.lp_steam_macerator.tooltip", "§7Macerating your Ores"); - provider.add("gtceu.machine.hp_steam_macerator.tooltip", "§7Macerating your Ores"); + provider.add("gtceu.machine.lp_steam_macerator.tooltip", "§7Macerating your Ores without Byproducts"); + provider.add("gtceu.machine.hp_steam_macerator.tooltip", "§7Macerating your Ores without Byproducts"); provider.add("gtceu.machine.lp_steam_compressor.tooltip", "§7Compressing Items"); provider.add("gtceu.machine.hp_steam_compressor.tooltip", "§7Compressing Items"); provider.add("gtceu.machine.lp_steam_forge_hammer.tooltip", "§7Forge Hammer"); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index d330dc1b671..ad31e3a0d85 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -170,6 +170,7 @@ public GTRecipeBuilder copy(ResourceLocation id) { } public GTRecipeBuilder copyFrom(GTRecipeBuilder builder) { + recipeType.setMinRecipeConditions(builder.conditions.size()); return builder.copy(builder.id).onSave(null).recipeType(recipeType).category(recipeCategory); } @@ -209,6 +210,7 @@ public GTRecipeBuilder output(RecipeCapability capability, T... obj) { public GTRecipeBuilder addCondition(RecipeCondition condition) { conditions.add(condition); + recipeType.setMinRecipeConditions(conditions.size()); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index e9e799f7dd4..a00fb7e7add 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -562,6 +562,7 @@ private static void handleGTRecipe(Map> recipesByNam } if (gtRecipe.getValue(GTRecipeSchema.CONDITIONS) != null) { builder.conditions.addAll(Arrays.stream(gtRecipe.getValue(GTRecipeSchema.CONDITIONS)).toList()); + builder.recipeType.setMinRecipeConditions(builder.conditions.size()); } if (gtRecipe.getValue(GTRecipeSchema.CATEGORY) != null) { builder.recipeCategory = GTRegistries.RECIPE_CATEGORIES.get(gtRecipe.getValue(GTRecipeSchema.CATEGORY)); From b7603348abbba9fb130dbd293a8440b924790bc8 Mon Sep 17 00:00:00 2001 From: NegaNote Date: Thu, 31 Jul 2025 04:42:28 -0400 Subject: [PATCH 244/270] Fix FluidAreaRenders not showing when controller is offscreen (#3559) --- .../renderer/machine/impl/FluidAreaRender.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java index c0cd3bc9ffd..6d720956525 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/FluidAreaRender.java @@ -14,6 +14,7 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.phys.AABB; import net.minecraftforge.client.RenderTypeHelper; import com.mojang.blaze3d.vertex.PoseStack; @@ -120,4 +121,19 @@ private Optional getFixedFluid() { if (fixedFluid) return Optional.ofNullable(cachedFluid); else return Optional.empty(); } + + @Override + public boolean shouldRenderOffScreen(IFluidRenderMulti machine) { + return true; + } + + @Override + public AABB getRenderBoundingBox(IFluidRenderMulti machine) { + AABB box = super.getRenderBoundingBox(machine); + var offsets = machine.getFluidOffsets(); + for (var offset : offsets) { + box = box.minmax(new AABB(offset)); + } + return box.inflate(getViewDistance()); + } } From e2ef1f5ec99e9eca49a32b1bcf14e5d1bfa1912d Mon Sep 17 00:00:00 2001 From: Tar Laboratories <159147059+TarLaboratories@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:46:01 +0300 Subject: [PATCH 245/270] Computer Monitor Cover Features (#3531) Co-authored-by: screret <68943070+screret@users.noreply.github.com> Co-authored-by: Ghostipedia Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- dependencies.gradle | 10 +- gradle/forge.versions.toml | 7 + gradle/scripts/repositories.gradle | 9 + .../blockstates/basic_data_access_hatch.json | 28 + .../gtceu/blockstates/central_monitor.json | 114 +++ .../assets/gtceu/blockstates/monitor.json | 28 + .../resources/assets/gtceu/lang/en_ud.json | 223 ++++++ .../resources/assets/gtceu/lang/en_us.json | 223 ++++++ .../machine/basic_data_access_hatch.json | 22 + .../models/block/machine/central_monitor.json | 91 +++ .../gtceu/models/block/machine/monitor.json | 18 + .../models/item/basic_data_access_hatch.json | 3 + .../gtceu/models/item/central_monitor.json | 3 + .../gtceu/models/item/image_module.json | 6 + .../assets/gtceu/models/item/monitor.json | 3 + .../assets/gtceu/models/item/text_module.json | 6 + .../item/wireless_transmitter_cover.json | 6 + .../java/com/gregtechceu/gtceu/GTCEu.java | 4 + .../blockentity/MetaMachineBlockEntity.java | 8 + .../api/capability/GTCapabilityHelper.java | 17 + .../gtceu/api/capability/ICoverable.java | 8 + .../api/capability/IMonitorComponent.java | 23 + .../api/capability/forge/GTCapability.java | 2 + .../gtceu/api/cover/CoverBehavior.java | 5 + .../api/gui/widget/NumberInputWidget.java | 7 + .../gtceu/api/item/component/IDataItem.java | 2 + .../item/component/IMonitorModuleItem.java | 18 + .../gtceu/api/misc/ImageCache.java | 62 ++ .../gtceu/api/pattern/MultiblockState.java | 4 +- .../gtceu/api/pattern/Predicates.java | 9 + .../IPlaceholderInfoProviderCover.java | 15 + .../api/placeholder/MultiLineComponent.java | 145 ++++ .../gtceu/api/placeholder/Placeholder.java | 27 + .../api/placeholder/PlaceholderContext.java | 17 + .../api/placeholder/PlaceholderHandler.java | 161 +++++ .../api/placeholder/PlaceholderUtils.java | 49 ++ .../exceptions/InvalidArgsException.java | 10 + .../exceptions/InvalidNumberException.java | 10 + .../exceptions/MissingItemException.java | 10 + .../exceptions/NoMENetworkException.java | 10 + .../exceptions/NotEnoughArgsException.java | 10 + .../exceptions/NotSupportedException.java | 10 + .../exceptions/OutOfRangeException.java | 11 + .../exceptions/PlaceholderException.java | 22 + .../exceptions/UnclosedBracketException.java | 10 + .../UnexpectedBracketException.java | 10 + .../UnknownPlaceholderException.java | 10 + .../WrongNumberOfArgsException.java | 11 + .../registry/registrate/MachineBuilder.java | 2 +- .../gregtechceu/gtceu/client/ClientProxy.java | 2 + .../client/model/machine/MachineModel.java | 12 +- .../gtceu/client/renderer/GTRenderTypes.java | 18 + .../renderer/cover/CoverTextRenderer.java | 56 ++ .../renderer/cover/ICoverableRenderer.java | 23 + .../renderer/cover/IDynamicCoverRenderer.java | 14 + .../renderer/machine/DynamicRenderHelper.java | 4 + .../machine/impl/CentralMonitorRender.java | 94 +++ .../renderer/monitor/IMonitorRenderer.java | 17 + .../monitor/MonitorImageRenderer.java | 49 ++ .../renderer/monitor/MonitorTextRenderer.java | 76 ++ .../gtceu/client/util/ClientImageCache.java | 105 +++ .../gregtechceu/gtceu/common/CommonProxy.java | 8 + .../common/cover/ComputerMonitorCover.java | 257 ++++++- .../cover/WirelessTransmitterCover.java | 65 ++ .../gtceu/common/data/GTCovers.java | 4 + .../gtceu/common/data/GTItems.java | 21 +- .../gtceu/common/data/GTMachines.java | 7 + .../gtceu/common/data/GTPlaceholders.java | 661 +++++++++++++++++ .../common/data/GTSyncedFieldAccessors.java | 2 + .../common/data/machines/GTMultiMachines.java | 19 + .../data/machines/GTResearchMachines.java | 12 + .../common/data/models/GTMachineModels.java | 12 + .../gtceu/common/item/DataItemBehavior.java | 64 +- .../item/modules/ImageModuleBehaviour.java | 43 ++ .../item/modules/TextModuleBehaviour.java | 112 +++ .../electric/BatteryBufferMachine.java | 9 +- .../common/machine/electric/HullMachine.java | 10 +- .../electric/CentralMonitorMachine.java | 671 ++++++++++++++++++ .../electric/monitor/MonitorGroup.java | 124 ++++ .../part/DataAccessHatchMachine.java | 27 +- .../monitor/MonitorComponentPartMachine.java | 12 + .../part/monitor/MonitorPartMachine.java | 33 + .../machine/trait/CentralMonitorLogic.java | 75 ++ .../gtceu/common/network/GTNetwork.java | 8 + .../network/packets/CPacketImageRequest.java | 36 + .../SCPacketMonitorGroupNBTChange.java | 64 ++ .../network/packets/SPacketImageResponse.java | 75 ++ .../gtceu/config/ConfigHolder.java | 5 + .../gtceu/data/lang/LangHandler.java | 269 +++++++ .../data/recipe/misc/ComputerRecipes.java | 50 ++ .../recipe/misc/MetaTileEntityLoader.java | 5 + .../integration/ae2/GTAEPlaceholders.java | 240 +++++++ .../cctweaked/CCTweakedPlugin.java | 2 + .../peripherals/CoverHolderPeripheral.java | 30 + .../create/GTCreateDisplaySources.java | 36 + .../create/GTCreateDisplayTargets.java | 35 + .../create/GTCreateIntegration.java | 243 +++++++ .../ComputerMonitorCoverDisplaySource.java | 38 + .../ComputerMonitorCoverDisplayTarget.java | 37 + .../gtceu/syncdata/MonitorGroupPayload.java | 62 ++ .../com/gregtechceu/gtceu/utils/GTMath.java | 9 + .../gtceu/utils/GTStringUtils.java | 195 +++++ .../com/gregtechceu/gtceu/utils/GTUtil.java | 8 + .../gtceu/utils/input/SyncedKeyMapping.java | 4 +- .../block/machine/part/computer_monitor.json | 6 + .../gtceu/models/block/overlay/front_all.json | 24 + .../block/cover/computer_monitor_emissive.png | Bin 215 -> 0 bytes .../block/cover/wireless_transmitter.png | Bin 0 -> 3043 bytes .../central_monitor/overlay_front.png | Bin 0 -> 353 bytes .../central_monitor/overlay_front_active.png | Bin 0 -> 353 bytes .../overlay_front_active_emissive.png | Bin 0 -> 288 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../block/overlay/machine/overlay_monitor.png | Bin 0 -> 358 bytes .../machine/overlay_monitor.png.mcmeta | 5 + .../overlay/machine/overlay_monitor_ctm.png | Bin 0 -> 446 bytes .../gtceu/textures/item/image_module.png | Bin 0 -> 1747 bytes .../gtceu/textures/item/text_module.png | Bin 0 -> 2921 bytes ...ver.png => wireless_transmitter_cover.png} | Bin 118 files changed, 5700 insertions(+), 28 deletions(-) create mode 100644 src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/central_monitor.json create mode 100644 src/generated/resources/assets/gtceu/blockstates/monitor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json create mode 100644 src/generated/resources/assets/gtceu/models/block/machine/monitor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json create mode 100644 src/generated/resources/assets/gtceu/models/item/central_monitor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/image_module.json create mode 100644 src/generated/resources/assets/gtceu/models/item/monitor.json create mode 100644 src/generated/resources/assets/gtceu/models/item/text_module.json create mode 100644 src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json create mode 100644 src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java create mode 100644 src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/modules/ImageModuleBehaviour.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/network/packets/CPacketImageRequest.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java create mode 100644 src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java create mode 100644 src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java create mode 100644 src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json create mode 100644 src/main/resources/assets/gtceu/models/block/overlay/front_all.json delete mode 100644 src/main/resources/assets/gtceu/textures/block/cover/computer_monitor_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png create mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png create mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png create mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png create mode 100644 src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png.mcmeta create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor.png.mcmeta create mode 100644 src/main/resources/assets/gtceu/textures/block/overlay/machine/overlay_monitor_ctm.png create mode 100644 src/main/resources/assets/gtceu/textures/item/image_module.png create mode 100644 src/main/resources/assets/gtceu/textures/item/text_module.png rename src/main/resources/assets/gtceu/textures/item/{digital_interface_cover.png => wireless_transmitter_cover.png} (100%) diff --git a/dependencies.gradle b/dependencies.gradle index de5a9b97185..5c403e6af96 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -33,6 +33,11 @@ dependencies { modCompileOnly(forge.ae2) modCompileOnly(forge.ae2wtlib) + // Create + modCompileOnly(forge.ponder) + modCompileOnly(variantOf(forge.create) { classifier("slim") }) + modCompileOnly(forge.flywheel.forge.api) + // KJS modCompileOnly(forge.kubejs) modCompileOnly(forge.architectury) @@ -89,7 +94,7 @@ dependencies { modExtraLocalRuntime(forge.trenzalore) modExtraLocalRuntime(forge.curios) // modExtraLocalRuntime(forge.worldstripper) - modExtraLocalRuntime(forge.cc.tweaked.forge.impl) +// modExtraLocalRuntime(forge.cc.tweaked.forge.impl) for some reason this breaks create modExtraLocalRuntime(forge.bundles.kjs) @@ -110,6 +115,9 @@ dependencies { modExtraLocalRuntime(forge.kotlinforforge) modExtraLocalRuntime(forge.observable) + modExtraLocalRuntime(forge.ponder) + modExtraLocalRuntime(variantOf(forge.create) { classifier("slim") }) + modExtraLocalRuntime(forge.flywheel.forge) ////////////////////////// testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index 5218fb80f1f..ac9bf4cd7b8 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -22,6 +22,9 @@ ftbteams = "2001.3.0" ftbquests = "2001.4.11" ftbchunks = "2001.3.4" ccTweaked = "1.114.3" +create = "6.0.6-150" +ponder = "1.0.80" +flywheel = "1.0.4" ## modrinth maven ## jade = "11.6.3" @@ -65,6 +68,10 @@ rei-forge = { module = "me.shedaniel:RoughlyEnoughItems-forge", versio emi = { module = "dev.emi:emi-forge", version.ref = "emi" } ae2 = { module = "appeng:appliedenergistics2-forge", version.ref = "ae2" } +create = { module = "com.simibubi.create:create-1.20.1", version.ref = "create"} +ponder = { module = "net.createmod.ponder:Ponder-Forge-1.20.1", version.ref = "ponder"} +flywheel-forge-api = { module = "dev.engine-room.flywheel:flywheel-forge-api-1.20.1", version.ref = "flywheel"} +flywheel-forge = { module = "dev.engine-room.flywheel:flywheel-forge-1.20.1", version.ref = "flywheel"} kubejs = { module = "dev.latvian.mods:kubejs-forge", version.ref = "kubejs" } rhino = { module = "dev.latvian.mods:rhino-forge", version.ref = "rhino" } architectury = { module = "dev.architectury:architectury-forge", version.ref = "architectury" } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index 3ed279995a1..27c821f0073 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -17,6 +17,15 @@ repositories { url = "https://maven.firstdarkdev.xyz/snapshots" } + + exclusiveContent { // Create, Ponder, Flywheel + forRepository { maven { url = "https://maven.createmod.net" } } + filter { + includeGroup("net.createmod.ponder") + includeGroup("com.simibubi.create") + includeGroup("dev.engine-room.flywheel") + } + } exclusiveContent { // Configuration forRepository { maven { url = "https://api.repsy.io/mvn/toma/public" } } filter { includeGroup("dev.toma.configuration")} diff --git a/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json new file mode 100644 index 00000000000..5506e13f583 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/basic_data_access_hatch.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/basic_data_access_hatch" + }, + "facing=south": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/basic_data_access_hatch", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/basic_data_access_hatch", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/central_monitor.json b/src/generated/resources/assets/gtceu/blockstates/central_monitor.json new file mode 100644 index 00000000000..1786db9760d --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/central_monitor.json @@ -0,0 +1,114 @@ +{ + "variants": { + "facing=down,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=down,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "x": 90 + }, + "facing=east,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=east,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 90 + }, + "facing=north,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=north,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor" + }, + "facing=south,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=south,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 180 + }, + "facing=up,upwards_facing=east": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=north": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=south": { + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=up,upwards_facing=west": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "x": 270 + }, + "facing=west,upwards_facing=east": { + "gtceu:z": 270, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=north": { + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=south": { + "gtceu:z": 180, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + }, + "facing=west,upwards_facing=west": { + "gtceu:z": 90, + "model": "gtceu:block/machine/central_monitor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/blockstates/monitor.json b/src/generated/resources/assets/gtceu/blockstates/monitor.json new file mode 100644 index 00000000000..a148abbb397 --- /dev/null +++ b/src/generated/resources/assets/gtceu/blockstates/monitor.json @@ -0,0 +1,28 @@ +{ + "variants": { + "facing=down": { + "model": "gtceu:block/machine/monitor", + "x": 90 + }, + "facing=east": { + "model": "gtceu:block/machine/monitor", + "y": 90 + }, + "facing=north": { + "model": "gtceu:block/machine/monitor" + }, + "facing=south": { + "model": "gtceu:block/machine/monitor", + "y": 180 + }, + "facing=up": { + "gtceu:z": 180, + "model": "gtceu:block/machine/monitor", + "x": 270 + }, + "facing=west": { + "model": "gtceu:block/machine/monitor", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 9c08af71494..f91c2058084 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -109,6 +109,7 @@ "block.gtceu.assembly_line_unit": "buısɐƆ ןoɹʇuoƆ ʎןqɯǝssⱯ", "block.gtceu.atomic_casing": "buısɐƆ ɔıɯoʇⱯ", "block.gtceu.auto_maintenance_hatch": "ɥɔʇɐH ǝɔuɐuǝʇuıɐW oʇnⱯ", + "block.gtceu.basic_data_access_hatch": "ɥɔʇɐH ssǝɔɔⱯ ɐʇɐᗡ ɔısɐᗺ", "block.gtceu.bio_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH oıᗺ", "block.gtceu.black_borderless_lamp": "dɯɐꞀ ssǝןɹǝpɹoᗺ ʞɔɐןᗺ", "block.gtceu.black_lamp": "dɯɐꞀ ʞɔɐןᗺ", @@ -138,6 +139,7 @@ "block.gtceu.casing_coke_bricks": "sʞɔıɹᗺ uǝʌO ǝʞoƆ", "block.gtceu.casing_grate": "buısɐƆ ǝuıɥɔɐW ǝʇɐɹ⅁", "block.gtceu.causality_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ʎʇıןɐsnɐƆ", + "block.gtceu.central_monitor": "ɹoʇıuoW ןɐɹʇuǝƆ", "block.gtceu.charcoal_pile_igniter": "ɹǝʇıubI ǝןıԀ ןɐoɔɹɐɥƆ", "block.gtceu.chiseled_dark_concrete": "ǝʇǝɹɔuoƆ ʞɹɐᗡ pǝןǝsıɥƆ", "block.gtceu.chiseled_light_concrete": "ǝʇǝɹɔuoƆ ʇɥbıꞀ pǝןǝsıɥƆ", @@ -799,6 +801,7 @@ "block.gtceu.mob_infestation_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH uoıʇɐʇsǝɟuI qoW", "block.gtceu.mob_spawner_hazard_sign_block": "ʞɔoןᗺ ubıS pɹɐzɐH ɹǝuʍɐdS qoW", "block.gtceu.molybdenum_disilicide_coil_block": "ʞɔoןᗺ ןıoƆ ǝpıɔıןısıᗡ ɯnuǝpqʎןoW", + "block.gtceu.monitor": "ɹoʇıuoW", "block.gtceu.mossy_dark_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʞɹɐᗡ ʎssoW", "block.gtceu.mossy_dark_concrete_cobblestone": "ǝuoʇsǝןqqoƆ ǝʇǝɹɔuoƆ ʞɹɐᗡ ʎssoW", "block.gtceu.mossy_light_concrete_bricks": "sʞɔıɹᗺ ǝʇǝɹɔuoƆ ʇɥbıꞀ ʎssoW", @@ -1807,6 +1810,7 @@ "config.gtceu.option.machineSounds": "spunoSǝuıɥɔɐɯ", "config.gtceu.option.machines": "sǝuıɥɔɐɯ", "config.gtceu.option.machinesEmissiveTextures": "sǝɹnʇxǝ⟘ǝʌıssıɯƎsǝuıɥɔɐɯ", + "config.gtceu.option.machinesHaveBERsByDefault": "ʇןnɐɟǝᗡʎᗺsᴚƎᗺǝʌɐHsǝuıɥɔɐɯ", "config.gtceu.option.meHatchEnergyUsage": "ǝbɐs∩ʎbɹǝuƎɥɔʇɐHǝɯ", "config.gtceu.option.minerSpeed": "pǝǝdSɹǝuıɯ", "config.gtceu.option.minimap": "dɐɯıuıɯ", @@ -2178,6 +2182,20 @@ "gtceu.cable.superconductor": "ɹoʇɔnpuoɔɹǝdnSp§ %s", "gtceu.cable.voltage": ")ɐ§%s(ɐ§ %dɐ§ ɹ§:ǝbɐʇןoΛ xɐWɐ§", "gtceu.canner": "ɹǝuuɐƆ", + "gtceu.central_monitor.gui.create_group": "dnoɹb ǝʇɐǝɹƆ", + "gtceu.central_monitor.gui.currently_editing": "%s :buıʇıpǝ ʎןʇuǝɹɹnƆ", + "gtceu.central_monitor.gui.remove_from_group": "dnoɹb ɯoɹɟ ǝʌoɯǝᴚ", + "gtceu.central_monitor.gui.set_target": "ʇǝbɹɐʇ ʇǝS", + "gtceu.central_monitor.info_tooltip.0": "˙ʇı uı ǝןnpoɯ Ɩ ǝʌɐɥ ʎןuo ʎɐɯ dnoɹb Ɐ ˙ʇsɹıɟ sdnoɹb oʇuı ɯǝɥʇ ʇıןds oʇ ǝʌɐɥ noʎ 'sɹoʇıuoɯ ǝsn oʇ ɹǝpɹo uI", + "gtceu.central_monitor.info_tooltip.1": "˙,dnoɹb ǝʇɐǝɹƆ, ʞɔıןɔ uǝɥʇ 'buıʞɔıןɔ-ʇɟǝן ʎq ɯǝɥʇ ʇɔǝןǝS", + "gtceu.central_monitor.info_tooltip.2": "˙ǝbɐd ǝɯɐs ǝɥʇ uı ʇı ǝɹnbıɟuoɔ uɐɔ noʎ 'ǝןnpoɯ ɐ ʇɹǝsuı uɐɔ noʎ dnoɹb ǝɥʇ ɹoɟ ǝbɐd sbuıʇʇǝs ǝɥʇ uı uǝɥ⟘", + "gtceu.central_monitor.info_tooltip.3": "˙,dnoɹb ɯoɹɟ ǝʌoɯǝᴚ, ʞɔıןɔ puɐ sʇuǝuodɯoɔ s,ʇı ɟo ןןɐ ʇɔǝןǝs 'dnoɹb ɐ ǝʇǝןǝp o⟘", + "gtceu.central_monitor.info_tooltip.4": "˙ʇɔǝןǝsun oʇ uıɐbɐ ʞɔıןƆ ˙ǝɯɐu s,ʇı uo buıʞɔıןɔ ʎq dnoɹb ɐ ɟo sʇuǝuodɯoɔ ןןɐ ʇɔǝןǝs ʎןʞɔınb uɐɔ noʎ", + "gtceu.central_monitor.info_tooltip.5": "˙ʇuǝuodɯoɔ ʇǝbɹɐʇ ǝɥʇ uo ʞɔıןɔ-ʇɥbıɹ puɐ dnoɹb ʇɐɥʇ ɟo ʇuǝuodɯoɔ ʎuɐ ʇɔǝןǝs dnoɹb ɐ ɹoɟ ʇǝbɹɐʇ ɐ ʇǝs oʇ 'ʇǝbɹɐʇ ʎǝɥʇ ʞɔoןq ǝɥʇ uo buıpuǝdǝp sbuıɥʇ ʎɐןdsıp ʎɐɯ sǝןnpoɯ ǝɯoS", + "gtceu.central_monitor.info_tooltip.6": "˙ʇɐɥʇ ɹoɟ ɹǝʌoɔ ɹǝʇʇıɯsuɐɹʇ ssǝןǝɹıʍ ǝɥʇ ǝsn oʇ ǝʌɐɥ noʎ 'ʞɔoןqıʇןnɯ ǝɥʇ uı ʇou sı ʇɐɥʇ ʇǝbɹɐʇ ɐ ʇɔǝןǝs oʇ ɥsıʍ ʎɐɯ noʎ", + "gtceu.central_monitor.info_tooltip.7": "˙ʞɔoןqıʇןnɯ ǝɥʇ uı ɥɔʇɐɥ ssǝɔɔɐ ɐʇɐp ɐ oʇuı ʞɔıʇs ɐʇɐp ʇɐɥʇ ʇnd puɐ ʞɔıʇs ɐʇɐp ɐ ɥʇıʍ ʇı ʞɔıןɔ-ʇɥbıɹ 'ʞɔoןq ʇǝbɹɐʇ ǝɥʇ uo ɹǝʌoɔ ǝɥʇ ǝɔɐןԀ", + "gtceu.central_monitor.info_tooltip.8": "˙pǝɹɐǝddɐ ʇɐɥʇ pןǝıɟ ɹǝqɯnu ǝɥʇ uı ʞɔıʇs ɐʇɐp ɹnoʎ ɟo xǝpuı ʇoןs ǝɥʇ ʇǝs puɐ 'ʇǝbɹɐʇ ǝɥʇ sɐ ɥɔʇɐɥ ssǝɔɔɐ ɐʇɐp ǝɥʇ ʇɔǝןǝs uǝɥ⟘", + "gtceu.central_monitor.size": ")%d+Ɩ+%d(x)%d+Ɩ+%d( :ǝzıS", "gtceu.centrifuge": "ǝbnɟıɹʇuǝƆ", "gtceu.chance_logic.and": "ᗡNⱯ", "gtceu.chance_logic.first": "⟘SᴚIℲ", @@ -2191,6 +2209,21 @@ "gtceu.coke_oven": "uǝʌO ǝʞoƆ", "gtceu.combustion_generator": "ɹoʇɐɹǝuǝ⅁ uoıʇsnqɯoƆ", "gtceu.compressor": "ɹossǝɹdɯoƆ", + "gtceu.computer_monitor_cover.error.bf_invalid": "%d ʇɐ ɹǝʇɔɐɹɐɥɔ pıןɐʌuI", + "gtceu.computer_monitor_cover.error.bf_invalid_num": "%d ɹǝqɯnu ןoqɯʎs buıssǝɔoɹd uǝɥʍ %d xǝpuı ʇɐ ɹǝqɯnu pıןɐʌuI", + "gtceu.computer_monitor_cover.error.exception": "%s :pǝɹɹnɔɔo uoıʇdǝɔxǝ pǝʇɔǝdxǝu∩", + "gtceu.computer_monitor_cover.error.invalid_args": "¡sʇuǝɯnbɹɐ pıןɐʌuI", + "gtceu.computer_monitor_cover.error.invalid_number": "¡,%s, ɹǝqɯnu pıןɐʌuI", + "gtceu.computer_monitor_cover.error.missing_item": "¡%d ʇoןs uı %s buıssıW", + "gtceu.computer_monitor_cover.error.no_ae": "¡ʞɹoʍʇǝu ᄅƎⱯ uɐ ǝʌɐɥ ʇou sǝop ɹǝpןoɥ ɹǝʌoƆ", + "gtceu.computer_monitor_cover.error.no_cover": "¡ɹǝʌoɔ oN", + "gtceu.computer_monitor_cover.error.no_placeholder": "¡,%s, :ɹǝpןoɥǝɔɐןd ɥɔns oN", + "gtceu.computer_monitor_cover.error.not_enough_args": "¡%d ʇob 'sbɹɐ %d ʇsɐǝן ʇɐ pǝʇɔǝdxƎ", + "gtceu.computer_monitor_cover.error.not_in_range": "%d ʇob ')ǝʌısnןɔuı( %d puɐ %d uǝǝʍʇǝq ǝq oʇ %s pǝʇɔǝdxƎ", + "gtceu.computer_monitor_cover.error.not_supported": "¡ɹǝʌoɔ/ʞɔoןq sıɥʇ ʎq pǝʇɹoddns ʇou sı ǝɹnʇɐǝɟ sıɥ⟘", + "gtceu.computer_monitor_cover.error.unclosed_bracket": "¡ʇǝʞɔɐɹq pǝsoןɔu∩", + "gtceu.computer_monitor_cover.error.unexpected_bracket": "¡ʇǝʞɔɐɹq buısoןɔ pǝʇɔǝdxǝu∩", + "gtceu.computer_monitor_cover.error.wrong_number_of_args": "¡%d ʇob 'sbɹɐ %d pǝʇɔǝdxƎ", "gtceu.cover.activity_detector.message_activity_inverted": "snʇɐʇS ʎʇıʌıʇɔⱯ pǝʇɹǝʌuI buıɹoʇıuoW", "gtceu.cover.activity_detector.message_activity_normal": "snʇɐʇS ʎʇıʌıʇɔⱯ ןɐɯɹoN buıɹoʇıuoW", "gtceu.cover.activity_detector_advanced.message_activity_inverted": "snʇɐʇS ssǝɹboɹԀ pǝʇɹǝʌuI buıɹoʇıuoW", @@ -2226,6 +2259,8 @@ "gtceu.direction.tooltip.left": "ʇɟǝꞀ", "gtceu.direction.tooltip.right": "ʇɥbıᴚ", "gtceu.direction.tooltip.up": "d∩", + "gtceu.display_source.computer_monitor_cover": "ɹǝʌoƆ ɹoʇıuoW ɹǝʇndɯoƆ", + "gtceu.display_target.computer_monitor_cover": "ɹǝʌoƆ ɹoʇıuoW ɹǝʇndɯoƆ", "gtceu.distillation_tower": "ɹǝʍo⟘ uoıʇɐןןıʇsıᗡ", "gtceu.distillery": "ʎɹǝןןıʇsıᗡ", "gtceu.duct_pipe.transfer_rate": "%s :ǝʇɐɹ ɹǝɟsuɐɹʇ ɹıⱯq§", @@ -2277,6 +2312,10 @@ "gtceu.gui.adv_stocking_config.ticks_per_cycle": "sǝʇɐpdn ʇsıן ɯǝʇı uǝǝʍʇǝq ʎɐןǝᗡ", "gtceu.gui.adv_stocking_config.title": "buıʞɔoʇS ɔıʇɐɯoʇnⱯ ǝɹnbıɟuoƆ", "gtceu.gui.auto_output.name": "oʇnɐ", + "gtceu.gui.central_monitor.group": "%s :dnoɹ⅁", + "gtceu.gui.central_monitor.group_default_name": "%d# dnoɹ⅁", + "gtceu.gui.central_monitor.none": "ǝuou", + "gtceu.gui.central_monitor.text_scale": "ǝןɐɔs ʇxǝ⟘", "gtceu.gui.charger_slot.tooltip.0": "ɹ§ʇoןS ɹǝbɹɐɥƆɟ§", "gtceu.gui.charger_slot.tooltip.1": "ɹ§sǝıɹǝʇʇɐq %s ɯoɹɟ ɹǝʍod sʍɐɹᗡㄥ§", "gtceu.gui.charger_slot.tooltip.2": "sǝıɹǝʇʇɐq puɐ sןooʇ %s sǝbɹɐɥƆㄥ§", @@ -2285,6 +2324,18 @@ "gtceu.gui.chunkmode.enabled.0": "˙ǝןqɐsıᗡ oʇ ʞɔıןƆ :pǝןqɐuƎ ǝpoW ʞunɥƆ", "gtceu.gui.chunkmode.enabled.1": "˙ǝuıɥɔɐɯ ǝןpı uɐ sǝɹınbǝɹ buıɥɔʇıʍSㄥ§", "gtceu.gui.circuit.title": "sbuıʇʇǝS ʇınɔɹıƆ", + "gtceu.gui.computer_monitor_cover.edit_blank_placeholders": "sɹǝpןoɥǝɔɐןd ʞuɐןq ʇıpƎ", + "gtceu.gui.computer_monitor_cover.edit_displayed_text": "ʇxǝʇ pǝʎɐןdsıp ʇıpƎ", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.0": "˙ǝɹǝɥ %d ǝuıן uo ʎɐןdsıp oʇ buıɹʇs ʇnduI", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.1": ",∩Ǝ }ʎʇıɔɐdɐƆʎbɹǝuǝ{/}ʎbɹǝuǝ{ :ʎbɹǝuƎ, :ǝןdɯɐxǝ ɹoɟ 'sɹǝpןoɥǝɔɐןd ǝʌɐɥ uɐɔ ʇI", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.2": "˙sɹǝpןoɥǝɔɐןd ɹǝɥʇo ǝpısuı ǝq osןɐ uɐɔ sɹǝpןoɥǝɔɐןԀ", + "gtceu.gui.computer_monitor_cover.placeholder_reference.0": ":sɹǝpןoɥǝɔɐןd ןןⱯ", + "gtceu.gui.computer_monitor_cover.placeholder_reference.1": ")oɟuı ǝɹoɯ ɹoɟ ɹǝʌoɥ(", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.0": "˙ǝɹǝɥ ,}{, %s ɟo ǝɔɐןd uı pǝsn ǝq oʇ ɹǝpןoɥǝɔɐןd ʇnduI", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.1": "˙sǝxoq ʇxǝʇ ǝsǝɥʇ uı ,ʎʇıɔɐdɐƆʎbɹǝuǝ, puɐ ,ʎbɹǝuǝ, puɐ ,∩Ǝ }{/}{ :ʎbɹǝuƎ, buıɹʇs ɐ ǝʌɐɥ uɐɔ noʎ 'ǝןdɯɐxǝ ɹoℲ", + "gtceu.gui.computer_monitor_cover.slot_tooltip.0": "ǝɔuǝɹǝɟǝɹ uɐɔ sɹǝpןoɥǝɔɐןd ǝɯos ʇɐɥʇ sɯǝʇı ɹoɟ ʇoןs Ɐ", + "gtceu.gui.computer_monitor_cover.slot_tooltip.1": "%d :ɹǝqɯnu ʇoןS", + "gtceu.gui.computer_monitor_cover.update_interval": ")sʞɔıʇ uı( ןɐʌɹǝʇuı ǝʇɐpd∩", "gtceu.gui.config_slot": "ɹ§ʇoןS bıɟuoƆɟ§", "gtceu.gui.config_slot.auto_pull_managed": "ןןnԀ-oʇnⱯ ʎq pǝbɐuɐW ㄥ§:pǝןqɐsıᗡㄣ§", "gtceu.gui.config_slot.remove": "ɹ§˙ʇoןs bıɟuoɔ ㄥ§ɹɐǝןɔㄣ§ oʇ ʞɔıןɔ ʇɥbıᴚㄥ§", @@ -3403,6 +3454,171 @@ "gtceu.packer": "ɹǝʞɔɐԀ", "gtceu.part_sharing.disabled": "pǝןqɐsıᗡㄣ§ buıɹɐɥS ʞɔoןqıʇןnW", "gtceu.part_sharing.enabled": "pǝןqɐuƎɐ§ buıɹɐɥS ʞɔoןqıʇןnW", + "gtceu.placeholder_info.active.0": "˙ǝsıʍɹǝɥʇo 0 'ǝdıɔǝɹ ɐ buıuunɹ ʎןʇuǝɹɹnɔ sı oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ ǝɥʇ ʞɔoןq ǝɥʇ ɟı Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.active.1": ":ǝbɐs∩", + "gtceu.placeholder_info.active.2": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ɐ s,ǝɹǝɥʇ ɹǝɥʇǝɥʍ >- }ǝʌıʇɔɐ{ ", + "gtceu.placeholder_info.ae2crafting.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı buıʇɟɐɹɔ-oʇnɐ ʇnoqɐ uoıʇɐɯɹoɟuı suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2crafting.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2crafting.10": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo ')spuoɔǝsouɐu uı( ʇɟɐɹɔ ǝɥʇ ɟo ʇɹɐʇs ǝɥʇ ɯoɹɟ pǝsdɐןǝ ǝɯıʇ ɟo ʇunoɯɐ ǝɥʇ >- }ǝɯıʇ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.2": "ʞɹoʍʇǝu ƎW ǝɥʇ uı s∩ԀƆ buıʇɟɐɹɔ ɟo ʇunoɯɐ ǝɥʇ >- }ʇunoɯɐ ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.3": "sɐɥ ∩ԀƆ pǝıɟıɔǝds ǝɥʇ ǝbɐɹoʇs buıʇɟɐɹɔ ɟo ʇunoɯɐ ǝɥʇ >- }ǝbɐɹoʇs >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.4": "sɐɥ ∩ԀƆ pǝıɟıɔǝds ǝɥʇ sɹossǝɔoɹd-oɔ ɟo ʇunoɯɐ ǝɥʇ >- }spɐǝɹɥʇ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.5": "∩ԀƆ buıʇɟɐɹɔ pǝıɟıɔǝds ǝɥʇ ɟo ǝɯɐu ǝɥʇ >- }ǝɯɐu >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.6": ")sʇsǝnbǝɹ ɥʇoq ɹo ɔıʇɐɯoʇnɐ 'ןɐnuɐɯ ɹoɟ pǝsn( ∩ԀƆ buıʇɟɐɹɔ pǝıɟıɔǝds ǝɥʇ ɟo ǝpoɯ uoıʇɔǝןǝs ǝɥʇ >- }ǝpoWuoıʇɔǝןǝs >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.7": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'pǝʇsǝnbǝɹ sɐʍ ʇɐɥʇ ɯǝʇı ǝɥʇ ɟo ʇunoɯɐ ǝɥʇ >- }ʇunoɯɐ >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.8": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'pǝʇsǝnbǝɹ sɐʍ ʇɐɥʇ ɯǝʇı ǝɥʇ ɟo ǝɯɐu ʎɐןdsıp ǝɥʇ >- }ɯǝʇı >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2crafting.9": "ǝןpı sı ∩ԀƆ ǝɥʇ ɟı 0 ɹo 'ssǝɹboɹd qoظ buıʇɟɐɹɔ ǝɥʇ >- }ssǝɹboɹd >xǝpuı< ʇǝb buıʇɟɐɹɔᄅǝɐ{ ", + "gtceu.placeholder_info.ae2energy.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı pǝɹoʇs ʎןʇuǝɹɹnɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2energy.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2energy.2": ")sʇıun ƎⱯ uı( ʞɹoʍʇǝu ƎW ǝɥʇ uı ʎbɹǝuǝ ǝɥʇ >- }ʎbɹǝuǝᄅǝɐ{ ", + "gtceu.placeholder_info.ae2fluidCount.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı sɯǝʇı sʇunoɔ ʇnq 'ʇunoƆpınןɟ sɐ ǝɯɐS", + "gtceu.placeholder_info.ae2fluidCount.1": "¡bɐן ǝsnɐɔ ʎɐɯ spınןɟ ןןɐ buıʇunoɔ ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.ae2fluidCount.2": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2fluidCount.3": "pǝıɟıɔǝds ɟı pIpınןɟ ɥʇıʍ pınןɟ ǝɥʇ ɹo 'spınןɟ ןןɐ ɟo ʇunoɯɐ ǝɥʇ >- }]pIpınןɟ[ ʇunoƆpınןɟ{ ", + "gtceu.placeholder_info.ae2itemCount.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı sɯǝʇı sʇunoɔ ʇnq 'ʇunoƆɯǝʇı sɐ ǝɯɐS", + "gtceu.placeholder_info.ae2itemCount.1": "¡bɐן ǝsnɐɔ ʎɐɯ sɯǝʇı ןןɐ ɹo ɹǝʇןıɟ ʎq buıʇunoɔ ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.ae2itemCount.2": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2itemCount.3": "ʇunoɯɐ ɯǝʇı ןɐʇoʇ >- }ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2itemCount.4": "pı‾ɯǝʇı oʇ ןɐnbǝ spı ɥʇıʍ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ɯǝʇı< ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2itemCount.5": "ɹǝʌoɔ sıɥʇ ɟo ʇoןs pǝıɟıɔǝds uı ɹǝʇןıɟ buıɥɔʇɐɯ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ʇoןs< ɹǝʇןıɟ ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.ae2maxPower.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ ɟo ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2maxPower.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2maxPower.2": "ʞɹoʍʇǝu ƎW ǝɥʇ ɟo ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ >- }ɹǝʍoԀxɐɯᄅǝɐ{ ", + "gtceu.placeholder_info.ae2powerUsage.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ ɟo uoıʇdɯnsuoɔ ʎbɹǝuǝ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2powerUsage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2powerUsage.2": "ʞɹoʍʇǝu ƎW ǝɥʇ ɟo uoıʇdɯnsuoɔ ʎbɹǝuǝ ǝɥʇ >- }ǝbɐs∩ɹǝʍodᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.0": "˙uo sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ʞɹoʍʇǝu ƎW ǝɥʇ uı O/I ןɐıʇɐds ʇnoqɐ uoıʇɐɯɹoɟuı suɹnʇǝᴚ", + "gtceu.placeholder_info.ae2spatial.1": ":ǝbɐs∩", + "gtceu.placeholder_info.ae2spatial.2": "O/I ןɐıʇɐds ǝʇɐıʇıuı oʇ pǝɹınbǝɹ ɹǝʍod ɟo ʇunoɯɐ ǝɥʇ >- }ɹǝʍod ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.3": ")SԀS( ǝɹnʇɔnɹʇS ʇuǝɯuıɐʇuoƆ ןɐıʇɐdS ǝɥʇ ɟo ʎɔuǝıɔıɟɟǝ ǝɥʇ >- }ʎɔuǝıɔıɟɟǝ ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.ae2spatial.4": "),}Zǝzıs{x}ʎǝzıs{x}Xǝzıs{ :ǝzıS, :ǝןdɯɐxǝ( sıxɐ pǝıɟıɔǝds ǝɥʇ buoןɐ SԀS ǝɥʇ ɟo ǝzıs ǝɥʇ >- }>Z|ʎ|X<ǝzıs ןɐıʇɐdsᄅǝɐ{ ", + "gtceu.placeholder_info.amperage.0": "˙uo sı ɹǝʌoɔ ǝɥʇ ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐɹǝdɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.amperage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.amperage.2": "ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝʇɐɹǝdɯɐ ǝɥʇ >- }ǝbɐɹǝdɯɐ{ ", + "gtceu.placeholder_info.bf.0": ":ǝbɐs∩", + "gtceu.placeholder_info.bf.1": "buıɹʇs ʎʇdɯǝ >- }>ǝpoɔ< >xǝpuı‾ʇoןs‾ɯǝʇı‾ɐʇɐp< ɟq{ ", + "gtceu.placeholder_info.block.0": "˙)█( ןoqɯʎs ʞɔoןq ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.block.1": ":ǝbɐs∩", + "gtceu.placeholder_info.block.2": ",█, >- }ʞɔoןq{ ", + "gtceu.placeholder_info.calc.0": "˙uoıʇɐɹǝdo ɹo uoıʇɔunɟ ɥʇɐɯ ɐ ɟo ʇןnsǝɹ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.calc.1": ":ǝbɐs∩", + "gtceu.placeholder_info.calc.2": "buıɹʇs‾ʎuɐ >- }>buıɹʇs‾ʎuɐ< ɔןɐɔ{ ", + "gtceu.placeholder_info.calc.3": "uoıʇɐɹǝdo pǝıɟıɔǝds ǝɥʇ ɟo ʇןnsǝɹ ǝɥʇ >- }>bɹɐ< >~|ʇɹbs|ןıǝɔ|ɹooןɟ|punoɹ< ɔןɐɔ{ ", + "gtceu.placeholder_info.calc.4": "uoıʇɐɹǝdo pǝıɟıɔǝds ǝɥʇ ɟo ʇןnsǝɹ ǝɥʇ >- }>bɹɐ‾puoɔǝs< >%|<<|>>|//|/|*|-|+< >bɹɐ‾ʇsɹıɟ< ɔןɐɔ{ ", + "gtceu.placeholder_info.cmd.0": "˙ʇndʇno ɹıǝɥʇ suɹnʇǝɹ puɐ spuɐɯɯoɔ ʇɟɐɹɔǝuıW sǝʇnɔǝxƎ", + "gtceu.placeholder_info.cmd.1": "˙ʇı ɥʇıʍ buıʞɔıןɔ-ʇɥbıɹ ʎq ɟןǝsɹnoʎ oʇ ɯǝʇı ɐʇɐp ʎuɐ puıq 'ɹǝʎɐןd ɐ oʇ punoq ɯǝʇı ɐʇɐp ɐ sǝɹınbǝᴚ", + "gtceu.placeholder_info.cmd.2": ":ǝbɐs∩", + "gtceu.placeholder_info.cmd.3": "ʇndʇno puɐɯɯoɔ >- }>puɐɯɯoɔ< >xǝpuı‾ʇoןs< pɯɔ{ ", + "gtceu.placeholder_info.cmp.0": "sʇuǝɯnbɹɐ s,ʇı uı uoıssǝɹdxǝ ǝɥʇ uo pǝsɐq 0 ɹo Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.cmp.1": ":ǝbɐs∩", + "gtceu.placeholder_info.cmp.2": "=¡ '== '=< '=> '< '> ɟo ǝuo sı ɹoʇɐɹǝdo '0 ɹo Ɩ >- }>q< >ɹoʇɐɹǝdo< >ɐ< dɯɔ{ ", + "gtceu.placeholder_info.color.0": "˙pǝsn ǝq uɐɔ sɹoןoɔ ʇɐɥɔ ʇɟɐɹɔǝuıɯ ʇןnɐɟǝp ןןⱯ ˙ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ɹoןoɔ ǝɥʇ ɥʇıʍ pǝɹoןoɔ 'ʇuǝɯnbɹɐ puoɔǝs ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.color.1": ":ǝbɐs∩", + "gtceu.placeholder_info.color.2": "ʇxǝʇ pǝɹoןoɔ >- }>ʇxǝʇ< >ɹoןoɔ< ɹoןoɔ{ ", + "gtceu.placeholder_info.combine.0": ")sʇuǝɯnbɹɐ ǝɥʇ uǝǝʍʇǝq sǝɔɐds ןןɐ buıdɐɔsǝ ʎq( buıɹʇs ǝןbuıs ɐ oʇuı sʇuǝɯnbɹɐ s,ʇı ɟo ןןɐ sǝuıqɯoƆ", + "gtceu.placeholder_info.combine.1": "\"ouɯ \\ןʞظ \\ıɥb \\ɟǝp \\ɔqɐ\" >- }ouɯ ןʞظ ıɥb ɟǝp ɔqɐ ǝuıqɯoɔ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.combine.2": ":ǝbɐs∩", + "gtceu.placeholder_info.combine.3": "sɹǝpןoɥǝɔɐןd ɹǝɥʇɹnɟ uı ʇuǝɯnbɹɐ ǝןbuıs ɐ sɐ pǝʇɐǝɹʇ ǝq ןןıʍ ʇɐɥʇ buıɹʇs ɐ >- }˙˙˙ ]Ɛbɹɐ[ ]ᄅbɹɐ[ ]Ɩbɹɐ[ ǝuıqɯoɔ{ ", + "gtceu.placeholder_info.count.0": ")\"0˙0\" =¡ \"0\" os 'sbuıɹʇs sɐ pǝɹɐdɯoɔ( ʇsɹıɟ ǝɥʇ oʇ ןɐnbǝ ǝɹɐ sʇuǝɯnbɹɐ pǝpıʌoɹd ǝɥʇ ɟo ʎuɐɯ ʍoɥ suɹnʇǝᴚ", + "gtceu.placeholder_info.count.1": ":ǝbɐs∩", + "gtceu.placeholder_info.count.2": "ʇsɹıɟ ǝɥʇ oʇ ןɐnbǝ ǝɹɐ ʇɐɥʇ sʇuǝɯnbɹɐ ɟo ʇunoɯɐ ǝɥʇ >- }˙˙˙ ]ㄣbɹɐ[ ]Ɛbɹɐ[ ]ᄅbɹɐ[ >Ɩbɹɐ< ʇunoɔ{ ", + "gtceu.placeholder_info.data.0": "˙sʇoןs ǝɥʇ ɟo ǝuo uı )ǝןnpoɯ/qɹo/ʞɔıʇs ɐʇɐp( ɯǝʇı ɐʇɐp ɐ ɯoɹɟ ɐʇɐp ǝɯos sǝʌǝıɹʇǝɹ ɹo sǝɹoʇS", + "gtceu.placeholder_info.data.1": "˙)ʇqu ɯǝʇı ɐʇɐp ǝɥʇ uı pǝɹoʇs sı ʇɐɥʇ )Ɩ - ʎʇıɔɐdɐɔ( oʇ 0 ɯoɹɟ ɹǝbǝʇuı uɐ sı d( d ǝnןɐʌ ǝɥʇ ɥʇıʍ pǝɔɐןdǝɹ ǝq ןןıʍ ʇı 'ʎʇdɯǝ ʇuǝɯnbɹɐ >xǝpuı< ǝɥʇ ǝʌɐǝן noʎ ɟI", + "gtceu.placeholder_info.data.2": ":ǝbɐs∩", + "gtceu.placeholder_info.data.3": "ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ uı pǝɹoʇs ɐʇɐp ǝɥʇ >- }>xǝpuı< >ʇoןs< ʇǝb ɐʇɐp{ ", + "gtceu.placeholder_info.data.4": "buıɹʇs ʎʇdɯǝ uɐ suɹnʇǝɹ 'ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ uı pǝɹoʇs ɐʇɐp ǝɥʇ sʇǝs >- }>ǝnןɐʌ< >xǝpuı< >ʇoןs< ʇǝs ɐʇɐp{ ", + "gtceu.placeholder_info.data.5": "d >- }>ʇoןs< dʇǝb ɐʇɐp{ ", + "gtceu.placeholder_info.data.6": "buıɹʇs ʎʇdɯǝ uɐ suɹnʇǝɹ 'd sʇǝs >- }>ǝnןɐʌ< >ʇoןs< dʇǝs ɐʇɐp{ ", + "gtceu.placeholder_info.data.7": "0 oʇ d sʇǝs 'ʎʇıɔɐdɐɔ oʇ ןɐnbǝ ɹo uɐɥʇ ǝɹoɯ sǝɯoɔǝq d ɟı 'Ɩ ʎq d sʇuǝɯǝɹɔuı >- }>ʇoןs< ɔuı ɐʇɐp{ ", + "gtceu.placeholder_info.data.8": ")Ɩ - ʎʇıɔɐdɐɔ( oʇ d sʇǝs '0 uɐɥʇ ssǝן sǝɯoɔǝq d ɟı 'Ɩ ʎq d sʇuǝɯǝɹɔǝp >- }>ʇoןs< ɔǝp ɐʇɐp{ ", + "gtceu.placeholder_info.displayTarget.0": "˙ʞuıן ʎɐןdsıp ɐ buısn ɹǝʌoɔ sıɥʇ oʇ pǝʇʇıɯsuɐɹʇ sɐʍ ʇɐɥʇ ǝuıן pǝıɟıɔǝds ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.displayTarget.1": ":ǝbɐs∩", + "gtceu.placeholder_info.displayTarget.2": ")00Ɩ-Ɩ sı ɹǝqɯnu ǝuıן( ǝuıן pǝıɟıɔǝds ǝɥʇ uo ʇxǝʇ ǝɥʇ >- }>ɹǝqɯnu‾ǝuıן< ʇǝbɹɐ⟘ʎɐןdsıp{ ", + "gtceu.placeholder_info.energy.0": "˙pǝɹoʇs ʎbɹǝuǝ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.energy.1": ":ǝbɐs∩", + "gtceu.placeholder_info.energy.2": "pǝɹoʇs ʎbɹǝuǝ ɟo ʇunoɯɐ ǝɥʇ >- }ʎbɹǝuǝ{ ", + "gtceu.placeholder_info.energyCapacity.0": "pǝɹoʇs ǝq uɐɔ ʇɐɥʇ ʎbɹǝuǝ ɟo ʇunoɯɐ xɐɯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.energyCapacity.1": ":ǝbɐs∩", + "gtceu.placeholder_info.energyCapacity.2": "ʎʇıɔɐdɐɔ ʎbɹǝuǝ ǝɥʇ >- }ʎʇıɔɐdɐƆʎbɹǝuǝ{", + "gtceu.placeholder_info.fluidCount.0": "˙)pǝɹǝʇןıɟ ǝq uɐɔ( spınןɟ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.fluidCount.1": ":ǝbɐs∩", + "gtceu.placeholder_info.fluidCount.2": "pǝıɟıɔǝds ɟı pIpınןɟ ɥʇıʍ pınןɟ ǝɥʇ ɹo 'spınןɟ ןןɐ ɟo ʇunoɯɐ ǝɥʇ >- }]pIpınןɟ[ ʇunoƆpınןɟ{ ", + "gtceu.placeholder_info.formatInt.0": "ɹǝbǝʇuı pǝpıʌoɹd ǝɥʇ ɟo uoıʇɐʇuǝsǝɹdǝɹ buıɹʇs ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.formatInt.1": "Wㄣᄅ˙Ɩ >- }ㄥϛㄣ9ƐᄅƖ ʇuIʇɐɯɹoɟ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.formatInt.2": ":ǝbɐs∩", + "gtceu.placeholder_info.formatInt.3": "ʇuı ǝɥʇ ɟo uoıʇɐʇuǝsǝɹdǝɹ buıɹʇs >- }>bɹɐ< ʇuIʇɐɯɹoɟ{ ", + "gtceu.placeholder_info.fromAscii.0": "ǝpoɔ IIƆSⱯ pǝpıʌoɹd ǝɥʇ ʎq pǝʇuǝsǝɹdǝɹ ɹǝʇɔɐɹɐɥɔ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.fromAscii.1": ":ǝbɐs∩", + "gtceu.placeholder_info.fromAscii.2": "ɹǝʇɔɐɹɐɥɔ ɐ >- }>ǝpoɔ‾ɹɐɥɔ< ııɔsⱯɯoɹɟ{ ", + "gtceu.placeholder_info.if.0": "˙0 oʇ ןɐnbǝ ʇou sı puɐ buıɹʇs ʎʇdɯǝ uɐ ʇou sı ʇı ɟı ǝnɹʇ pǝɹǝpısuoɔ sı uoıʇıpuoɔ ǝɥ⟘ ˙uoıʇıpuoɔ ǝɥʇ uo buıpuǝdǝp sʇuǝɯnbɹɐ ǝɥʇ ɟo ǝuo suɹnʇǝᴚ", + "gtceu.placeholder_info.if.1": ":ǝbɐs∩", + "gtceu.placeholder_info.if.2": "}]ǝsןɐɟ‾ɟı‾pǝuɹnʇǝɹ[ >ǝnɹʇ‾ɟı‾pǝuɹnʇǝɹ< >uoıʇıpuoɔ< ɟı{ ", + "gtceu.placeholder_info.itemCount.0": "˙)pǝɹǝʇןıɟ ǝq uɐɔ( sɯǝʇı ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.itemCount.1": ":ǝbɐs∩", + "gtceu.placeholder_info.itemCount.2": "ʇunoɯɐ ɯǝʇı ןɐʇoʇ >- }ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.itemCount.3": "pı‾ɯǝʇı oʇ ןɐnbǝ spı ɥʇıʍ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ɯǝʇı< ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.itemCount.4": "ɹǝʌoɔ sıɥʇ ɟo ʇoןs pǝıɟıɔǝds uı ɹǝʇןıɟ buıɥɔʇɐɯ sɯǝʇı ɟo ʇunoɯɐ >- }>pı‾ʇoןs< ɹǝʇןıɟ ʇunoƆɯǝʇı{ ", + "gtceu.placeholder_info.maintenance.0": "˙ǝsıʍɹǝɥʇo 0 'oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ ǝɥʇ ʞɔoןq ǝɥʇ uı sɯǝןqoɹd ǝɔuɐuǝʇuıɐɯ ǝɹɐ ǝɹǝɥʇ ɟı Ɩ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.maintenance.1": ",}ʞO ᗡƎᴚI∩ὉƎᴚ \\⅁NIXIℲ }ǝɔuɐuǝʇuıɐɯ{ ɟı{ :snʇɐʇs ǝɔuɐuǝʇuıɐW, :ǝןdɯɐxƎ", + "gtceu.placeholder_info.maintenance.2": ":ǝbɐs∩", + "gtceu.placeholder_info.maintenance.3": "sɯǝןqoɹd ǝɔuɐuǝʇuıɐɯ ǝɹɐ ǝɹǝɥʇ ɹǝɥʇǝɥʍ >- }ǝɔuɐuǝʇuıɐɯ{ ", + "gtceu.placeholder_info.maxProgress.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ɯnɯıxɐɯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.maxProgress.1": ",%}00Ɩ * }}ssǝɹboɹԀxɐɯ{ / }ssǝɹboɹd{ ɔןɐɔ{ ɔןɐɔ{ :ssǝɹboɹԀ, :ǝןdɯɐxƎ", + "gtceu.placeholder_info.maxProgress.2": ":ǝbɐs∩", + "gtceu.placeholder_info.maxProgress.3": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd xɐɯ ǝɥʇ >- }ssǝɹboɹԀxɐɯ{ ", + "gtceu.placeholder_info.nbt.0": "ʇoןs pǝıɟıɔǝds ǝɥʇ uı ɯǝʇı ǝɥʇ ɟo ɐʇɐp ʇqu ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.nbt.1": ":ǝbɐs∩", + "gtceu.placeholder_info.nbt.2": "ɐʇɐp ʇqu >- }>ʇoןs< ʇqu{ ", + "gtceu.placeholder_info.obf.0": "˙pǝʇɐɔsnɟqo 'ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.obf.1": ":ǝbɐs∩", + "gtceu.placeholder_info.obf.2": "ʇxǝʇ pǝʇɐɔsnɟqo >- }>ʇxǝʇ< ɟqo{ ", + "gtceu.placeholder_info.previousText.0": "˙)buıddɐɹʍ-ǝuıן ǝɹoɟǝq( ǝuıן pǝıɟıɔǝds ǝɥʇ ʇɐ ɹǝʌoɔ sıɥʇ ʎq pǝʎɐןdsıp ʎןsnoıʌǝɹd sɐʍ ʇɐɥʇ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.previousText.1": ":ǝbɐs∩", + "gtceu.placeholder_info.previousText.2": ")Ɩ ʇɐ sʇɹɐʇs xǝpuı( ǝuıן pǝıɟıɔǝds ǝɥʇ uo pǝʎɐןdsıp ʎןsnoıʌǝɹd ʇxǝʇ ǝɥʇ >- }>ǝuıן< ʇxǝ⟘snoıʌǝɹd{ ", + "gtceu.placeholder_info.progress.0": "˙oʇ pǝɥɔɐʇʇɐ sı ɹǝʌoɔ sıɥʇ ʞɔoןq ǝɥʇ ɟo ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.progress.1": "}ssǝɹboɹԀxɐɯ{ puɐ 0 uǝǝʍʇǝq ɹǝbǝʇuı uɐ sı ssǝɹboɹd ʇɐɥʇ ǝʇoN", + "gtceu.placeholder_info.progress.2": ":ǝbɐs∩", + "gtceu.placeholder_info.progress.3": "ǝdıɔǝɹ buıuunɹ ʎןʇuǝɹɹnɔ ǝɥʇ ɟo ssǝɹboɹd ǝɥʇ >- }ssǝɹboɹd{ ", + "gtceu.placeholder_info.random.0": "˙)ǝʌısnןɔuı( ןɐʌɹǝʇuı pǝıɟıɔǝds ǝɥʇ uı ɹǝqɯnu ɯopuɐɹ ɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.random.1": ":ǝbɐs∩", + "gtceu.placeholder_info.random.2": ")ǝʌısnןɔuı( xɐɯ puɐ uıɯ uǝǝʍʇǝq ɹǝqɯnu ɯopuɐɹ ɐ >- }>xɐɯ< >uıɯ< ɯopuɐɹ{ ", + "gtceu.placeholder_info.redstone.0": "ɥʇbuǝɹʇs ʇndʇno ǝuoʇspǝɹ ǝɥʇ sʇǝs ɹo ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.redstone.1": ":ǝbɐs∩", + "gtceu.placeholder_info.redstone.2": "ǝpıs pǝıɟıɔǝds ǝɥʇ ʇɐ )ϛƖ-0( ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ >- }>ʇsǝʍ|ʇsɐǝ|ɥʇnos|ɥʇɹou|uʍop|dn< ʇǝb ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.3": ")9-0 'ʇɥbıɹ oʇ ʇɟǝן ɯoɹɟ( ɹǝןןoɹʇuoɔ ǝɥʇ ǝpısuı ʎɔuǝnbǝɹɟ ǝɥʇ ɟo xǝpuı ǝɥʇ sı xǝpuı‾ʇoןs‾bǝɹɟ ˙xǝpuı‾ʇoןs# ʇoןs uı ɹǝןןoɹʇuoɔ pǝʞuıן ɐ ʎq pǝıɟıɔǝds ʎɔuǝnbǝɹɟ ʞuıן ǝuoʇspǝɹ ǝʇɐǝɹƆ ɐ ɟo ɥʇbuǝɹʇs ןɐubıs ǝuoʇspǝɹ >- }>xǝpuı‾ʇoןs‾bǝɹɟ< >xǝpuı‾ʇoןs< ʞuıן ʇǝb ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.4": "ǝpıs s,ɹǝʌoɔ sıɥʇ ɯoɹɟ ɥʇbuǝɹʇs ʇndʇno ǝuoʇspǝɹ ǝɥʇ sʇǝs 'buıɹʇs ʎʇdɯǝ >- }>ɹǝʍod< ʇǝs ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.redstone.5": "ʎɔuǝnbǝɹɟ ʞuıן ǝuoʇspǝɹ ǝʇɐǝɹƆ pǝıɟıɔǝds ǝɥʇ uo ɹǝʍod ǝuoʇspǝɹ pǝıɟıɔǝds ǝɥʇ sʇsɐɔpɐoɹq 'buıɹʇs ʎʇdɯǝ >- }>ɹǝʍod< >xǝpuı‾ʇoןs‾bǝɹɟ< >xǝpuı‾ʇoןs< ʞuıן ʇǝs ǝuoʇspǝɹ{ ", + "gtceu.placeholder_info.repeat.0": "˙ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ uı pǝıɟıɔǝds sǝɯıʇ ɟo ʇunoɯɐ ǝɥʇ pǝʇɐǝdǝɹ 'sʇuǝɯnbɹɐ puoɔǝs ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.repeat.1": ":ǝbɐs∩", + "gtceu.placeholder_info.repeat.2": "sǝɯıʇ ɟo ʇunoɯɐ pǝıɟıɔǝds ǝɥʇ pǝʇɐǝdǝɹ ʇxǝʇ >- }>ʇxǝʇ< >ʇunoɯɐ< ʇɐǝdǝɹ{ ", + "gtceu.placeholder_info.select.0": ")0 ɯoɹɟ buıʇɹɐʇs( xǝpuı pǝıɟıɔǝds ǝɥʇ ʇɐ ʇuǝɯnbɹɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.select.1": ":ǝbɐs∩", + "gtceu.placeholder_info.select.2": "xǝpuı pǝıɟıɔǝds ǝɥʇ ʇɐ ʇuǝɯnbɹɐ >- ˙˙˙ ]Ɛbɹɐ[ ]ᄅbɹɐ[ ]Ɩbɹɐ[ >xǝpuı< ʇɔǝןǝs{ ", + "gtceu.placeholder_info.strike.0": "ʇno pǝssoɹɔ sɐʍ ʇı ɟı sɐ ʇı buıʎɐןdsıp 'ʇxǝʇ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.strike.1": ":ǝbɐs∩", + "gtceu.placeholder_info.strike.2": "ʇxǝʇ ʇno-pǝssoɹɔ >- }>ʇxǝʇ< ǝʞıɹʇs{ ", + "gtceu.placeholder_info.subList.0": ")0 ɯoɹɟ buıʇɹɐʇs( )ǝʌısnןɔxǝ( ɹ oʇ )ǝʌısnןɔuı( ן ɯoɹɟ sǝxǝpuı ɥʇıʍ ɯoɹɟ sʇuǝɯnbɹɐ suɹnʇǝᴚ", + "gtceu.placeholder_info.subList.1": ":ǝbɐs∩", + "gtceu.placeholder_info.subList.2": "sǝɔɐds ʎq pǝʇɐɹɐdǝs ɹ oʇ ן ɯoɹɟ sǝxǝpuı ɥʇıʍ sʇuǝɯnbɹɐ ןןɐ >- }˙˙˙ ]Ɩbɹɐ[ ]0bɹɐ[ >ʇɥbıɹ< >ʇɟǝן< ʇsıꞀqns{ ", + "gtceu.placeholder_info.tick.0": "˙pǝɔɐןd sɐʍ ɹǝʌoɔ sıɥʇ uǝɥʍ ɯoɹɟ pǝssɐd sʞɔıʇ ɟo ʇunoɯɐ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.tick.1": ":ǝbɐs∩", + "gtceu.placeholder_info.tick.2": "sʞɔıʇ ɟo ʇunoɯɐ ǝɥʇ >- }ʞɔıʇ{ ", + "gtceu.placeholder_info.tm.0": "ןoqɯʎs ™ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.tm.1": ":ǝbɐs∩", + "gtceu.placeholder_info.tm.2": "ןoqɯʎs ™ ǝɥʇ >- }ɯʇ{ ", + "gtceu.placeholder_info.toAscii.0": "ɹǝʇɔɐɹɐɥɔ pǝpıʌoɹd ǝɥʇ ɟo ǝpoɔ IIƆSⱯ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.toAscii.1": ":ǝbɐs∩", + "gtceu.placeholder_info.toAscii.2": "ɹǝʇɔɐɹɐɥɔ ǝɥʇ ɟo ǝpoɔ IIƆSⱯ >- }>ɹǝʇɔɐɹɐɥɔ< ııɔsⱯoʇ{ ", + "gtceu.placeholder_info.toChars.0": "ɯǝɥʇ uǝǝʍʇǝq sǝɔɐds ɥʇıʍ buıɹʇs pǝpıʌoɹd ǝɥʇ ɟo sɹǝʇɔɐɹɐɥɔ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.toChars.1": ",ǝ ן d ɯ ɐ x ǝ, >- }ǝןdɯɐxǝ sɹɐɥƆoʇ{ :ǝןdɯɐxƎ", + "gtceu.placeholder_info.toChars.2": ":ǝbɐs∩", + "gtceu.placeholder_info.toChars.3": "sɹǝʇɔɐɹɐɥɔ >- }>bɹɐ< sɹɐɥƆoʇ{ ", + "gtceu.placeholder_info.underline.0": "pǝuıןɹǝpun 'ʇuǝɯnbɹɐ ʇsɹıɟ ǝɥʇ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.underline.1": ":ǝbɐs∩", + "gtceu.placeholder_info.underline.2": "ʇxǝʇ pǝuıןɹǝpun >- }>ʇxǝʇ< ǝuıןɹǝpun{ ", + "gtceu.placeholder_info.voltage.0": "˙uo sı ɹǝʌoɔ ǝɥʇ ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐʇןoʌ ǝɥʇ suɹnʇǝᴚ", + "gtceu.placeholder_info.voltage.1": ":ǝbɐs∩", + "gtceu.placeholder_info.voltage.2": "ǝןqɐɔ/ǝɹıʍ ǝɥʇ uı ǝbɐʇןoʌ ǝɥʇ >- }ǝbɐʇןoʌ{ ", "gtceu.plasma_generator": "ɹoʇɐɹǝuǝ⅁ ɐɯsɐןԀ", "gtceu.polarizer": "ɹǝzıɹɐןoԀ", "gtceu.primitive_blast_furnace": "ǝɔɐuɹnℲ ʇsɐןᗺ ǝʌıʇıɯıɹԀ", @@ -3537,9 +3753,12 @@ "gtceu.tool_action.wire_cutter.connect": "suoıʇɔǝuuoƆ ʇǝs oʇ sɹǝʇʇnƆ ǝɹıM ǝs∩8§", "gtceu.tool_action.wrench.connect": "suoıʇɔǝuuoƆ ʞɔoןq oʇ ʞɐǝus 'suoıʇɔǝuuoƆ ʇǝs oʇ ɥɔuǝɹM ǝs∩8§", "gtceu.tool_action.wrench.set_facing": "buıɔɐℲ ʇǝs oʇ ɥɔuǝɹM ǝs∩8§", + "gtceu.tooltip.computer_monitor_config": "ɐʇɐp uoıʇɐɹnbıɟuoɔ ɹǝʌoɔ ɹoʇıuoɯ ɹǝʇndɯoɔ buıɹoʇS", + "gtceu.tooltip.computer_monitor_data": "%s :ɐʇɐp buıɹoʇS", "gtceu.tooltip.fluid_pipe_hold_shift": "oɟuI ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§", "gtceu.tooltip.hold_ctrl": "oɟuı ǝɹoɯ ɹoɟ Ꞁᴚ⟘Ɔ pןoHㄥ§", "gtceu.tooltip.hold_shift": "oɟuı ǝɹoɯ ɹoɟ ⟘ℲIHS pןoHㄥ§", + "gtceu.tooltip.player_bind": "%s :ɹǝʎɐןd oʇ punoᗺ", "gtceu.tooltip.potion.each": "ɹ§buıuǝddɐɥ ɟo ǝɔuɐɥɔㄥ§ %s%% ɹ§ɐ ɥʇıʍ sʞɔıʇㄥ§ %s ɹ§ɹoɟㄥ§ %s %s", "gtceu.tooltip.potion.header": ":sʇɔǝɟɟǝ suıɐʇuoƆ9§", "gtceu.tooltip.proxy_bind": "%s %s %s ʇɐ ɹǝɟɟnᗺ uɹǝʇʇɐԀ ɐ oʇ buıpuıᗺɟ§", @@ -3547,6 +3766,7 @@ "gtceu.tooltip.status.trinary.true": "ǝnɹ⟘", "gtceu.tooltip.status.trinary.unknown": "uʍouʞu∩", "gtceu.tooltip.tool_fluid_hold_shift": "oɟuI ןoo⟘ puɐ ʇuǝɯuıɐʇuoƆ pınןℲ ʍoɥs oʇ ⟘ℲIHS pןoHㄥ§", + "gtceu.tooltip.wireless_transmitter_bind": "%s buıɔɐɟ %s %s %s ʇɐ ɹǝʌoɔ ɹǝʇʇıɯsuɐɹʇ ɐ oʇ buıpuıᗺ", "gtceu.top.allow_output_input": "ʇnduI ʍoןןⱯ", "gtceu.top.auto_output": "ʇndʇnO oʇnⱯ", "gtceu.top.buffer_bound_pos": "%s :Z '%s :ʎ '%s :X - o⟘ punoᗺ", @@ -3967,6 +4187,7 @@ "item.gtceu.ilc_chip.tooltip": "ʇınɔɹıƆ ɔıboꞀ pǝʇɐɹbǝʇuIㄥ§", "item.gtceu.ilc_wafer": "ɹǝɟɐM ƆꞀI", "item.gtceu.ilc_wafer.tooltip": "ʇınɔɹıƆ pǝʇɐɹbǝʇuI ʍɐᴚㄥ§", + "item.gtceu.image_module": "ǝןnpoW ǝbɐɯI", "item.gtceu.impure_bentonite_dust": "ǝʇıuoʇuǝᗺ ɟo ǝןıԀ ǝɹndɯI", "item.gtceu.impure_cassiterite_sand_dust": "puɐS ǝʇıɹǝʇıssɐƆ ɟo ǝןıԀ ǝɹndɯI", "item.gtceu.impure_pitchblende_dust": "ǝpuǝןqɥɔʇıԀ ɟo ǝןıԀ ǝɹndɯI", @@ -4401,6 +4622,7 @@ "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.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ı⟘", "item.gtceu.tiny_bentonite_dust": "ǝʇıuoʇuǝᗺ ɟo ǝןıԀ ʎuı⟘", @@ -4633,6 +4855,7 @@ "item.gtceu.white_dye_spray_can": ")ǝʇıɥM( uɐƆ ʎɐɹdS", "item.gtceu.wire_extruder_mold": ")ǝɹıM( pןoW ɹǝpnɹʇxƎ", "item.gtceu.wire_extruder_mold.tooltip": "sǝɹıM buıʞɐɯ ɹoɟ ǝdɐɥS ɹǝpnɹʇxƎㄥ§", + "item.gtceu.wireless_transmitter_cover": "ɹǝʇʇıɯsuɐɹ⟘ ssǝןǝɹıM", "item.gtceu.wood_bolt": "ʞɔıʇS pooM ʇɹoɥS", "item.gtceu.wood_dust": "dןnԀ pooM", "item.gtceu.wood_plate": "ʞuɐןԀ pooM", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 62950800596..acc5ccda0f3 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -109,6 +109,7 @@ "block.gtceu.assembly_line_unit": "Assembly Control Casing", "block.gtceu.atomic_casing": "Atomic Casing", "block.gtceu.auto_maintenance_hatch": "Auto Maintenance Hatch", + "block.gtceu.basic_data_access_hatch": "Basic Data Access Hatch", "block.gtceu.bio_hazard_sign_block": "Bio Hazard Sign Block", "block.gtceu.black_borderless_lamp": "Black Borderless Lamp", "block.gtceu.black_lamp": "Black Lamp", @@ -138,6 +139,7 @@ "block.gtceu.casing_coke_bricks": "Coke Oven Bricks", "block.gtceu.casing_grate": "Grate Machine Casing", "block.gtceu.causality_hazard_sign_block": "Causality Hazard Sign Block", + "block.gtceu.central_monitor": "Central Monitor", "block.gtceu.charcoal_pile_igniter": "Charcoal Pile Igniter", "block.gtceu.chiseled_dark_concrete": "Chiseled Dark Concrete", "block.gtceu.chiseled_light_concrete": "Chiseled Light Concrete", @@ -799,6 +801,7 @@ "block.gtceu.mob_infestation_hazard_sign_block": "Mob Infestation Hazard Sign Block", "block.gtceu.mob_spawner_hazard_sign_block": "Mob Spawner Hazard Sign Block", "block.gtceu.molybdenum_disilicide_coil_block": "Molybdenum Disilicide Coil Block", + "block.gtceu.monitor": "Monitor", "block.gtceu.mossy_dark_concrete_bricks": "Mossy Dark Concrete Bricks", "block.gtceu.mossy_dark_concrete_cobblestone": "Mossy Dark Concrete Cobblestone", "block.gtceu.mossy_light_concrete_bricks": "Mossy Light Concrete Bricks", @@ -1807,6 +1810,7 @@ "config.gtceu.option.machineSounds": "machineSounds", "config.gtceu.option.machines": "machines", "config.gtceu.option.machinesEmissiveTextures": "machinesEmissiveTextures", + "config.gtceu.option.machinesHaveBERsByDefault": "machinesHaveBERsByDefault", "config.gtceu.option.meHatchEnergyUsage": "meHatchEnergyUsage", "config.gtceu.option.minerSpeed": "minerSpeed", "config.gtceu.option.minimap": "minimap", @@ -2178,6 +2182,20 @@ "gtceu.cable.superconductor": "%s §dSuperconductor", "gtceu.cable.voltage": "§aMax Voltage:§r §a%d §a(%s§a)", "gtceu.canner": "Canner", + "gtceu.central_monitor.gui.create_group": "Create group", + "gtceu.central_monitor.gui.currently_editing": "Currently editing: %s", + "gtceu.central_monitor.gui.remove_from_group": "Remove from group", + "gtceu.central_monitor.gui.set_target": "Set target", + "gtceu.central_monitor.info_tooltip.0": "In order to use monitors, you have to split them into groups first. A group may only have 1 module in it.", + "gtceu.central_monitor.info_tooltip.1": "Select them by left-clicking, then click 'Create group'.", + "gtceu.central_monitor.info_tooltip.2": "Then in the settings page for the group you can insert a module, you can configure it in the same page.", + "gtceu.central_monitor.info_tooltip.3": "To delete a group, select all of it's components and click 'Remove from group'.", + "gtceu.central_monitor.info_tooltip.4": "You can quickly select all components of a group by clicking on it's name. Click again to unselect.", + "gtceu.central_monitor.info_tooltip.5": "Some modules may display things depending on the block they target, to set a target for a group select any component of that group and right-click on the target component.", + "gtceu.central_monitor.info_tooltip.6": "You may wish to select a target that is not in the multiblock, you have to use the wireless transmitter cover for that.", + "gtceu.central_monitor.info_tooltip.7": "Place the cover on the target block, right-click it with a data stick and put that data stick into a data access hatch in the multiblock.", + "gtceu.central_monitor.info_tooltip.8": "Then select the data access hatch as the target, and set the slot index of your data stick in the number field that appeared.", + "gtceu.central_monitor.size": "Size: (%d+1+%d)x(%d+1+%d)", "gtceu.centrifuge": "Centrifuge", "gtceu.chance_logic.and": "AND", "gtceu.chance_logic.first": "FIRST", @@ -2191,6 +2209,21 @@ "gtceu.coke_oven": "Coke Oven", "gtceu.combustion_generator": "Combustion Generator", "gtceu.compressor": "Compressor", + "gtceu.computer_monitor_cover.error.bf_invalid": "Invalid character at %d", + "gtceu.computer_monitor_cover.error.bf_invalid_num": "Invalid number at index %d when processing symbol number %d", + "gtceu.computer_monitor_cover.error.exception": "Unexpected exception occurred: %s", + "gtceu.computer_monitor_cover.error.invalid_args": "Invalid arguments!", + "gtceu.computer_monitor_cover.error.invalid_number": "Invalid number '%s'!", + "gtceu.computer_monitor_cover.error.missing_item": "Missing %s in slot %d!", + "gtceu.computer_monitor_cover.error.no_ae": "Cover holder does not have an AE2 network!", + "gtceu.computer_monitor_cover.error.no_cover": "No cover!", + "gtceu.computer_monitor_cover.error.no_placeholder": "No such placeholder: '%s'!", + "gtceu.computer_monitor_cover.error.not_enough_args": "Expected at least %d args, got %d!", + "gtceu.computer_monitor_cover.error.not_in_range": "Expected %s to be between %d and %d (inclusive), got %d", + "gtceu.computer_monitor_cover.error.not_supported": "This feature is not supported by this block/cover!", + "gtceu.computer_monitor_cover.error.unclosed_bracket": "Unclosed bracket!", + "gtceu.computer_monitor_cover.error.unexpected_bracket": "Unexpected closing bracket!", + "gtceu.computer_monitor_cover.error.wrong_number_of_args": "Expected %d args, got %d!", "gtceu.cover.activity_detector.message_activity_inverted": "Monitoring Inverted Activity Status", "gtceu.cover.activity_detector.message_activity_normal": "Monitoring Normal Activity Status", "gtceu.cover.activity_detector_advanced.message_activity_inverted": "Monitoring Inverted Progress Status", @@ -2226,6 +2259,8 @@ "gtceu.direction.tooltip.left": "Left", "gtceu.direction.tooltip.right": "Right", "gtceu.direction.tooltip.up": "Up", + "gtceu.display_source.computer_monitor_cover": "Computer Monitor Cover", + "gtceu.display_target.computer_monitor_cover": "Computer Monitor Cover", "gtceu.distillation_tower": "Distillation Tower", "gtceu.distillery": "Distillery", "gtceu.duct_pipe.transfer_rate": "§bAir transfer rate: %s", @@ -2277,6 +2312,10 @@ "gtceu.gui.adv_stocking_config.ticks_per_cycle": "Delay between item list updates", "gtceu.gui.adv_stocking_config.title": "Configure Automatic Stocking", "gtceu.gui.auto_output.name": "auto", + "gtceu.gui.central_monitor.group": "Group: %s", + "gtceu.gui.central_monitor.group_default_name": "Group #%d", + "gtceu.gui.central_monitor.none": "none", + "gtceu.gui.central_monitor.text_scale": "Text scale", "gtceu.gui.charger_slot.tooltip.0": "§fCharger Slot§r", "gtceu.gui.charger_slot.tooltip.1": "§7Draws power from %s batteries§r", "gtceu.gui.charger_slot.tooltip.2": "§7Charges %s tools and batteries", @@ -2285,6 +2324,18 @@ "gtceu.gui.chunkmode.enabled.0": "Chunk Mode Enabled: Click to Disable.", "gtceu.gui.chunkmode.enabled.1": "§7Switching requires an idle machine.", "gtceu.gui.circuit.title": "Circuit Settings", + "gtceu.gui.computer_monitor_cover.edit_blank_placeholders": "Edit blank placeholders", + "gtceu.gui.computer_monitor_cover.edit_displayed_text": "Edit displayed text", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.0": "Input string to display on line %d here.", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.1": "It can have placeholders, for example: 'Energy: {energy}/{energyCapacity} EU'", + "gtceu.gui.computer_monitor_cover.main_textbox_tooltip.2": "Placeholders can also be inside other placeholders.", + "gtceu.gui.computer_monitor_cover.placeholder_reference.0": "All placeholders:", + "gtceu.gui.computer_monitor_cover.placeholder_reference.1": "(hover for more info)", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.0": "Input placeholder to be used in place of %s '{}' here.", + "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip.1": "For example, you can have a string 'Energy: {}/{} EU' and 'energy' and 'energyCapacity' in these text boxes.", + "gtceu.gui.computer_monitor_cover.slot_tooltip.0": "A slot for items that some placeholders can reference", + "gtceu.gui.computer_monitor_cover.slot_tooltip.1": "Slot number: %d", + "gtceu.gui.computer_monitor_cover.update_interval": "Update interval (in ticks)", "gtceu.gui.config_slot": "§fConfig Slot§r", "gtceu.gui.config_slot.auto_pull_managed": "§4Disabled:§7 Managed by Auto-Pull", "gtceu.gui.config_slot.remove": "§7Right click to §4clear§7 config slot.§r", @@ -3403,6 +3454,171 @@ "gtceu.packer": "Packer", "gtceu.part_sharing.disabled": "Multiblock Sharing §4Disabled", "gtceu.part_sharing.enabled": "Multiblock Sharing §aEnabled", + "gtceu.placeholder_info.active.0": "Returns a 1 if the block the cover is attached to is currently running a recipe, 0 otherwise.", + "gtceu.placeholder_info.active.1": "Usage:", + "gtceu.placeholder_info.active.2": " {active} -> whether there's a currently running recipe", + "gtceu.placeholder_info.ae2crafting.0": "Returns information about auto-crafting in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2crafting.1": "Usage:", + "gtceu.placeholder_info.ae2crafting.10": " {ae2crafting get time} -> the amount of time elapsed from the start of the craft (in nanoseconds), or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.2": " {ae2crafting get amount} -> the amount of crafting CPUs in the ME network", + "gtceu.placeholder_info.ae2crafting.3": " {ae2crafting get storage} -> the amount of crafting storage the specified CPU has", + "gtceu.placeholder_info.ae2crafting.4": " {ae2crafting get threads} -> the amount of co-processors the specified CPU has", + "gtceu.placeholder_info.ae2crafting.5": " {ae2crafting get name} -> the name of the specified crafting CPU", + "gtceu.placeholder_info.ae2crafting.6": " {ae2crafting get selectionMode} -> the selection mode of the specified crafting CPU (used for manual, automatic or both requests)", + "gtceu.placeholder_info.ae2crafting.7": " {ae2crafting get amount} -> the amount of the item that was requested, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.8": " {ae2crafting get item} -> the display name of the item that was requested, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2crafting.9": " {ae2crafting get progress} -> the crafting job progress, or 0 if the CPU is idle", + "gtceu.placeholder_info.ae2energy.0": "Returns the energy currently stored in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2energy.1": "Usage:", + "gtceu.placeholder_info.ae2energy.2": " {ae2energy} -> the energy in the ME network (in AE units)", + "gtceu.placeholder_info.ae2fluidCount.0": "Same as fluidCount, but counts items in the ME network of the block this cover is attached to.", + "gtceu.placeholder_info.ae2fluidCount.1": "Note that counting all fluids may cause lag!", + "gtceu.placeholder_info.ae2fluidCount.2": "Usage:", + "gtceu.placeholder_info.ae2fluidCount.3": " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified", + "gtceu.placeholder_info.ae2itemCount.0": "Same as itemCount, but counts items in the ME network of the block this cover is attached to.", + "gtceu.placeholder_info.ae2itemCount.1": "Note that counting by filter or all items may cause lag!", + "gtceu.placeholder_info.ae2itemCount.2": "Usage:", + "gtceu.placeholder_info.ae2itemCount.3": " {itemCount} -> total item amount", + "gtceu.placeholder_info.ae2itemCount.4": " {itemCount } -> amount of items with ids equal to item_id", + "gtceu.placeholder_info.ae2itemCount.5": " {itemCount filter } -> amount of items matching filter in specified slot of this cover", + "gtceu.placeholder_info.ae2maxPower.0": "Returns the energy capacity of the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2maxPower.1": "Usage:", + "gtceu.placeholder_info.ae2maxPower.2": " {ae2maxPower} -> the energy capacity of the ME network", + "gtceu.placeholder_info.ae2powerUsage.0": "Returns the energy consumption of the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2powerUsage.1": "Usage:", + "gtceu.placeholder_info.ae2powerUsage.2": " {ae2powerUsage} -> the energy consumption of the ME network", + "gtceu.placeholder_info.ae2spatial.0": "Returns information about spatial I/O in the ME network of the block this cover is on.", + "gtceu.placeholder_info.ae2spatial.1": "Usage:", + "gtceu.placeholder_info.ae2spatial.2": " {ae2spatial power} -> the amount of power required to initiate spatial I/O", + "gtceu.placeholder_info.ae2spatial.3": " {ae2spatial efficiency} -> the efficiency of the Spatial Containment Structure (SPS)", + "gtceu.placeholder_info.ae2spatial.4": " {ae2spatial size} -> the size of the SPS along the specified axis (example: 'Size: {sizeX}x{sizeY}x{sizeZ}')", + "gtceu.placeholder_info.amperage.0": "Returns the amperage in the wire/cable the cover is on.", + "gtceu.placeholder_info.amperage.1": "Usage:", + "gtceu.placeholder_info.amperage.2": " {amperage} -> the amperate in the wire/cable", + "gtceu.placeholder_info.bf.0": "Usage:", + "gtceu.placeholder_info.bf.1": " {bf } -> empty string", + "gtceu.placeholder_info.block.0": "Returns the block symbol (█).", + "gtceu.placeholder_info.block.1": "Usage:", + "gtceu.placeholder_info.block.2": " {block} -> '█'", + "gtceu.placeholder_info.calc.0": "Returns the result of a math function or operation.", + "gtceu.placeholder_info.calc.1": "Usage:", + "gtceu.placeholder_info.calc.2": " {calc } -> any_string", + "gtceu.placeholder_info.calc.3": " {calc } -> the result of the specified operation", + "gtceu.placeholder_info.calc.4": " {calc <+|-|*|/|//|>>|<<|%> } -> the result of the specified operation", + "gtceu.placeholder_info.cmd.0": "Executes Minecraft commands and returns their output.", + "gtceu.placeholder_info.cmd.1": "Requires a data item bound to a player, bind any data item to yourself by right-clicking with it.", + "gtceu.placeholder_info.cmd.2": "Usage:", + "gtceu.placeholder_info.cmd.3": " {cmd } -> command output", + "gtceu.placeholder_info.cmp.0": "Returns a 1 or 0 based on the expression in it's arguments", + "gtceu.placeholder_info.cmp.1": "Usage:", + "gtceu.placeholder_info.cmp.2": " {cmp } -> 1 or 0, operator is one of >, <, >=, <=, ==, !=", + "gtceu.placeholder_info.color.0": "Returns the text from the second argument, colored with the color from the first argument. All default minecraft chat colors can be used.", + "gtceu.placeholder_info.color.1": "Usage:", + "gtceu.placeholder_info.color.2": " {color } -> colored text", + "gtceu.placeholder_info.combine.0": "Combines all of it's arguments into a single string (by escaping all spaces between the arguments)", + "gtceu.placeholder_info.combine.1": "Example: {combine abc def ghi jkl mno} -> \"abc\\ def\\ ghi\\ jkl\\ mno\"", + "gtceu.placeholder_info.combine.2": "Usage:", + "gtceu.placeholder_info.combine.3": " {combine [arg1] [arg2] [arg3] ...} -> a string that will be treated as a single argument in further placeholders", + "gtceu.placeholder_info.count.0": "Returns how many of the provided arguments are equal to the first (compared as strings, so \"0\" != \"0.0\")", + "gtceu.placeholder_info.count.1": "Usage:", + "gtceu.placeholder_info.count.2": " {count [arg2] [arg3] [arg4] ...} -> the amount of arguments that are equal to the first", + "gtceu.placeholder_info.data.0": "Stores or retrieves some data from a data item (data stick/orb/module) in one of the slots.", + "gtceu.placeholder_info.data.1": "If you leave the argument empty, it will be replaced with the value p (p is an integer from 0 to (capacity - 1) that is stored in the data item nbt).", + "gtceu.placeholder_info.data.2": "Usage:", + "gtceu.placeholder_info.data.3": " {data get } -> the data stored in the item in the specified slot", + "gtceu.placeholder_info.data.4": " {data set } -> sets the data stored in the item in the specified slot, returns an empty string", + "gtceu.placeholder_info.data.5": " {data getp } -> p", + "gtceu.placeholder_info.data.6": " {data setp } -> sets p, returns an empty string", + "gtceu.placeholder_info.data.7": " {data inc } -> increments p by 1, if p becomes more than or equal to capacity, sets p to 0", + "gtceu.placeholder_info.data.8": " {data dec } -> decrements p by 1, if p becomes less than 0, sets p to (capacity - 1)", + "gtceu.placeholder_info.displayTarget.0": "Returns the specified line that was transmitted to this cover using a display link.", + "gtceu.placeholder_info.displayTarget.1": "Usage:", + "gtceu.placeholder_info.displayTarget.2": " {displayTarget } -> the text on the specified line (line number is 1-100)", + "gtceu.placeholder_info.energy.0": "Returns the amount of energy stored.", + "gtceu.placeholder_info.energy.1": "Usage:", + "gtceu.placeholder_info.energy.2": " {energy} -> the amount of energy stored", + "gtceu.placeholder_info.energyCapacity.0": "Returns the max amount of energy that can be stored", + "gtceu.placeholder_info.energyCapacity.1": "Usage:", + "gtceu.placeholder_info.energyCapacity.2": "{energyCapacity} -> the energy capacity", + "gtceu.placeholder_info.fluidCount.0": "Returns the amount of fluids (can be filtered).", + "gtceu.placeholder_info.fluidCount.1": "Usage:", + "gtceu.placeholder_info.fluidCount.2": " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified", + "gtceu.placeholder_info.formatInt.0": "Returns a string representation of the provided integer", + "gtceu.placeholder_info.formatInt.1": "Example: {formatInt 1236457} -> 1.24M", + "gtceu.placeholder_info.formatInt.2": "Usage:", + "gtceu.placeholder_info.formatInt.3": " {formatInt } -> string representation of the int", + "gtceu.placeholder_info.fromAscii.0": "Returns the character represented by the provided ASCII code", + "gtceu.placeholder_info.fromAscii.1": "Usage:", + "gtceu.placeholder_info.fromAscii.2": " {fromAscii } -> a character", + "gtceu.placeholder_info.if.0": "Returns one of the arguments depending on the condition. The condition is considered true if it is not an empty string and is not equal to 0.", + "gtceu.placeholder_info.if.1": "Usage:", + "gtceu.placeholder_info.if.2": " {if [returned_if_false]}", + "gtceu.placeholder_info.itemCount.0": "Returns the amount of items (can be filtered).", + "gtceu.placeholder_info.itemCount.1": "Usage:", + "gtceu.placeholder_info.itemCount.2": " {itemCount} -> total item amount", + "gtceu.placeholder_info.itemCount.3": " {itemCount } -> amount of items with ids equal to item_id", + "gtceu.placeholder_info.itemCount.4": " {itemCount filter } -> amount of items matching filter in specified slot of this cover", + "gtceu.placeholder_info.maintenance.0": "Returns a 1 if there are maintenance problems in the block the cover is attached to, 0 otherwise.", + "gtceu.placeholder_info.maintenance.1": "Example: 'Maintenance status: {if {maintenance} FIXING\\ REQUIRED OK}'", + "gtceu.placeholder_info.maintenance.2": "Usage:", + "gtceu.placeholder_info.maintenance.3": " {maintenance} -> whether there are maintenance problems", + "gtceu.placeholder_info.maxProgress.0": "Returns the maximum progress of the currently running recipe of the block this cover is attached to.", + "gtceu.placeholder_info.maxProgress.1": "Example: 'Progress: {calc {calc {progress} / {maxProgress}} * 100}%'", + "gtceu.placeholder_info.maxProgress.2": "Usage:", + "gtceu.placeholder_info.maxProgress.3": " {maxProgress} -> the max progress of the currently running recipe", + "gtceu.placeholder_info.nbt.0": "Returns the nbt data of the item in the specified slot", + "gtceu.placeholder_info.nbt.1": "Usage:", + "gtceu.placeholder_info.nbt.2": " {nbt } -> nbt data", + "gtceu.placeholder_info.obf.0": "Returns the text from the first argument, obfuscated.", + "gtceu.placeholder_info.obf.1": "Usage:", + "gtceu.placeholder_info.obf.2": " {obf } -> obfuscated text", + "gtceu.placeholder_info.previousText.0": "Returns the text that was previously displayed by this cover at the specified line (before line-wrapping).", + "gtceu.placeholder_info.previousText.1": "Usage:", + "gtceu.placeholder_info.previousText.2": " {previousText } -> the text previously displayed on the specified line (index starts at 1)", + "gtceu.placeholder_info.progress.0": "Returns the progress of the currently running recipe of the block this cover is attached to.", + "gtceu.placeholder_info.progress.1": "Note that progress is an integer between 0 and {maxProgress}", + "gtceu.placeholder_info.progress.2": "Usage:", + "gtceu.placeholder_info.progress.3": " {progress} -> the progress of the currently running recipe", + "gtceu.placeholder_info.random.0": "Returns a random number in the specified interval (inclusive).", + "gtceu.placeholder_info.random.1": "Usage:", + "gtceu.placeholder_info.random.2": " {random } -> a random number between min and max (inclusive)", + "gtceu.placeholder_info.redstone.0": "Returns the redstone signal strength or sets the redstone output strength", + "gtceu.placeholder_info.redstone.1": "Usage:", + "gtceu.placeholder_info.redstone.2": " {redstone get } -> redstone signal strength (0-15) at the specified side", + "gtceu.placeholder_info.redstone.3": " {redstone get link } -> redstone signal strength of a Create redstone link frequency specified by a linked controller in slot #slot_index. freq_slot_index is the index of the frequency inside the controller (from left to right, 0-6)", + "gtceu.placeholder_info.redstone.4": " {redstone set } -> empty string, sets the redstone output strength from this cover's side", + "gtceu.placeholder_info.redstone.5": " {redstone set link } -> empty string, broadcasts the specified redstone power on the specified Create redstone link frequency", + "gtceu.placeholder_info.repeat.0": "Returns the text from the second arguments, repeated the amount of times specified in the first argument.", + "gtceu.placeholder_info.repeat.1": "Usage:", + "gtceu.placeholder_info.repeat.2": " {repeat } -> text repeated the specified amount of times", + "gtceu.placeholder_info.select.0": "Returns the argument at the specified index (starting from 0)", + "gtceu.placeholder_info.select.1": "Usage:", + "gtceu.placeholder_info.select.2": " {select [arg1] [arg2] [arg3] ... -> argument at the specified index", + "gtceu.placeholder_info.strike.0": "Returns the text from the first text, displaying it as if it was crossed out", + "gtceu.placeholder_info.strike.1": "Usage:", + "gtceu.placeholder_info.strike.2": " {strike } -> crossed-out text", + "gtceu.placeholder_info.subList.0": "Returns arguments from with indexes from l (inclusive) to r (exclusive) (starting from 0)", + "gtceu.placeholder_info.subList.1": "Usage:", + "gtceu.placeholder_info.subList.2": " {subList [arg0] [arg1] ...} -> all arguments with indexes from l to r separated by spaces", + "gtceu.placeholder_info.tick.0": "Returns the amount of ticks passed from when this cover was placed.", + "gtceu.placeholder_info.tick.1": "Usage:", + "gtceu.placeholder_info.tick.2": " {tick} -> the amount of ticks", + "gtceu.placeholder_info.tm.0": "Returns the ™ symbol", + "gtceu.placeholder_info.tm.1": "Usage:", + "gtceu.placeholder_info.tm.2": " {tm} -> the ™ symbol", + "gtceu.placeholder_info.toAscii.0": "Returns the ASCII code of the provided character", + "gtceu.placeholder_info.toAscii.1": "Usage:", + "gtceu.placeholder_info.toAscii.2": " {toAscii } -> ASCII code of the character", + "gtceu.placeholder_info.toChars.0": "Returns the characters of the provided string with spaces between them", + "gtceu.placeholder_info.toChars.1": "Example: {toChars example} -> 'e x a m p l e'", + "gtceu.placeholder_info.toChars.2": "Usage:", + "gtceu.placeholder_info.toChars.3": " {toChars } -> characters", + "gtceu.placeholder_info.underline.0": "Returns the text from the first argument, underlined", + "gtceu.placeholder_info.underline.1": "Usage:", + "gtceu.placeholder_info.underline.2": " {underline } -> underlined text", + "gtceu.placeholder_info.voltage.0": "Returns the voltage in the wire/cable the cover is on.", + "gtceu.placeholder_info.voltage.1": "Usage:", + "gtceu.placeholder_info.voltage.2": " {voltage} -> the voltage in the wire/cable", "gtceu.plasma_generator": "Plasma Generator", "gtceu.polarizer": "Polarizer", "gtceu.primitive_blast_furnace": "Primitive Blast Furnace", @@ -3537,9 +3753,12 @@ "gtceu.tool_action.wire_cutter.connect": "§8Use Wire Cutters to set Connections", "gtceu.tool_action.wrench.connect": "§8Use Wrench to set Connections, sneak to block Connections", "gtceu.tool_action.wrench.set_facing": "§8Use Wrench to set Facing", + "gtceu.tooltip.computer_monitor_config": "Storing computer monitor cover configuration data", + "gtceu.tooltip.computer_monitor_data": "Storing data: %s", "gtceu.tooltip.fluid_pipe_hold_shift": "§7Hold SHIFT to show Fluid Containment Info", "gtceu.tooltip.hold_ctrl": "§7Hold CTRL for more info", "gtceu.tooltip.hold_shift": "§7Hold SHIFT for more info", + "gtceu.tooltip.player_bind": "Bound to player: %s", "gtceu.tooltip.potion.each": "%s %s §7for§r %s §7ticks with a§r %s%% §7chance of happening§r", "gtceu.tooltip.potion.header": "§6Contains effects:", "gtceu.tooltip.proxy_bind": "§fBinding to a Pattern Buffer at %s %s %s", @@ -3547,6 +3766,7 @@ "gtceu.tooltip.status.trinary.true": "True", "gtceu.tooltip.status.trinary.unknown": "Unknown", "gtceu.tooltip.tool_fluid_hold_shift": "§7Hold SHIFT to show Fluid Containment and Tool Info", + "gtceu.tooltip.wireless_transmitter_bind": "Binding to a transmitter cover at %s %s %s facing %s", "gtceu.top.allow_output_input": "Allow Input", "gtceu.top.auto_output": "Auto Output", "gtceu.top.buffer_bound_pos": "Bound To - X: %s, Y: %s, Z: %s", @@ -3967,6 +4187,7 @@ "item.gtceu.ilc_chip.tooltip": "§7Integrated Logic Circuit", "item.gtceu.ilc_wafer": "ILC Wafer", "item.gtceu.ilc_wafer.tooltip": "§7Raw Integrated Circuit", + "item.gtceu.image_module": "Image Module", "item.gtceu.impure_bentonite_dust": "Impure Pile of Bentonite", "item.gtceu.impure_cassiterite_sand_dust": "Impure Pile of Cassiterite Sand", "item.gtceu.impure_pitchblende_dust": "Impure Pile of Pitchblende", @@ -4401,6 +4622,7 @@ "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.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", "item.gtceu.tiny_bentonite_dust": "Tiny Pile of Bentonite", @@ -4633,6 +4855,7 @@ "item.gtceu.white_dye_spray_can": "Spray Can (White)", "item.gtceu.wire_extruder_mold": "Extruder Mold (Wire)", "item.gtceu.wire_extruder_mold.tooltip": "§7Extruder Shape for making Wires", + "item.gtceu.wireless_transmitter_cover": "Wireless Transmitter", "item.gtceu.wood_bolt": "Short Wood Stick", "item.gtceu.wood_dust": "Wood Pulp", "item.gtceu.wood_plate": "Wood Plank", diff --git a/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json new file mode 100644 index 00000000000..9c1ec49c439 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/basic_data_access_hatch.json @@ -0,0 +1,22 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:basic_data_access_hatch", + "replaceable_textures": [ + "bottom", + "top", + "side" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/data_access_hatch", + "textures": { + "bottom": "gtceu:block/casings/voltage/hv/bottom", + "side": "gtceu:block/casings/voltage/hv/side", + "top": "gtceu:block/casings/voltage/hv/top" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json b/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json new file mode 100644 index 00000000000..04b093f56b3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/central_monitor.json @@ -0,0 +1,91 @@ +{ + "parent": "minecraft:block/block", + "dynamic_renders": [ + { + "type": "gtceu:central_monitor" + } + ], + "loader": "gtceu:machine", + "machine": "gtceu:central_monitor", + "texture_overrides": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + }, + "variants": { + "is_formed=false,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=false,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=false,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=idle": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=suspend": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front" + } + } + }, + "is_formed=true,recipe_logic_status=waiting": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + }, + "is_formed=true,recipe_logic_status=working": { + "model": { + "parent": "gtceu:block/machine/template/cube_all/sided", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof", + "overlay_front": "gtceu:block/multiblock/central_monitor/overlay_front_active", + "overlay_front_emissive": "gtceu:block/multiblock/central_monitor/overlay_front_active_emissive" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/block/machine/monitor.json b/src/generated/resources/assets/gtceu/models/block/machine/monitor.json new file mode 100644 index 00000000000..a299f6adee3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/block/machine/monitor.json @@ -0,0 +1,18 @@ +{ + "parent": "minecraft:block/block", + "loader": "gtceu:machine", + "machine": "gtceu:monitor", + "replaceable_textures": [ + "all" + ], + "variants": { + "": { + "model": { + "parent": "gtceu:block/machine/part/computer_monitor", + "textures": { + "all": "gtceu:block/casings/solid/machine_casing_frost_proof" + } + } + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json b/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json new file mode 100644 index 00000000000..184b9a346f3 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/basic_data_access_hatch.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/basic_data_access_hatch" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/central_monitor.json b/src/generated/resources/assets/gtceu/models/item/central_monitor.json new file mode 100644 index 00000000000..f2f5c4f89cd --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/central_monitor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/central_monitor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/image_module.json b/src/generated/resources/assets/gtceu/models/item/image_module.json new file mode 100644 index 00000000000..f9729b7b19c --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/image_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/image_module" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/monitor.json b/src/generated/resources/assets/gtceu/models/item/monitor.json new file mode 100644 index 00000000000..c223679dd8e --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/monitor.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:block/machine/monitor" +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/text_module.json b/src/generated/resources/assets/gtceu/models/item/text_module.json new file mode 100644 index 00000000000..87136145bae --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/text_module.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/text_module" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json b/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json new file mode 100644 index 00000000000..0f1ab172aa1 --- /dev/null +++ b/src/generated/resources/assets/gtceu/models/item/wireless_transmitter_cover.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "gtceu:item/wireless_transmitter_cover" + } +} \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/GTCEu.java b/src/main/java/com/gregtechceu/gtceu/GTCEu.java index b572a9f53db..fee2fc2b308 100644 --- a/src/main/java/com/gregtechceu/gtceu/GTCEu.java +++ b/src/main/java/com/gregtechceu/gtceu/GTCEu.java @@ -221,5 +221,9 @@ public static boolean isGameStagesLoaded() { public static boolean isCCTweakedLoaded() { return isModLoaded(GTValues.MODID_CCTWEAKED); } + + public static boolean isCreateLoaded() { + return isModLoaded(GTValues.MODID_CREATE); + } } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java index 9690dc48fc5..ebbac1d88ff 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java +++ b/src/main/java/com/gregtechceu/gtceu/api/blockentity/MetaMachineBlockEntity.java @@ -264,6 +264,14 @@ public static LazyOptional getCapability(MetaMachine machine, @NotNull Ca if (!list.isEmpty()) { return GTCapability.CAPABILITY_DATA_ACCESS.orEmpty(cap, LazyOptional.of(() -> list.get(0))); } + } else if (cap == GTCapability.CAPABILITY_MONITOR_COMPONENT) { + if (machine instanceof IMonitorComponent monitorComponent) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> monitorComponent)); + } + var list = getCapabilitiesFromTraits(machine.getTraits(), side, IMonitorComponent.class); + if (!list.isEmpty()) { + return GTCapability.CAPABILITY_MONITOR_COMPONENT.orEmpty(cap, LazyOptional.of(() -> list.get(0))); + } } if (GTCEu.Mods.isAE2Loaded()) { LazyOptional opt = AE2CallWrapper.getGridNodeHostCapability(cap, machine, side); diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java index 37a2038fced..49ba637ac4d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/GTCapabilityHelper.java @@ -12,6 +12,8 @@ import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.energy.IEnergyStorage; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,6 +30,16 @@ public static IEnergyStorage getForgeEnergyItem(ItemStack itemStack) { return itemStack.getCapability(ForgeCapabilities.ENERGY).resolve().orElse(null); } + @Nullable + public static IItemHandler getItemHandler(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(ForgeCapabilities.ITEM_HANDLER, level, pos, side); + } + + @Nullable + public static IFluidHandler getFluidHandler(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(ForgeCapabilities.FLUID_HANDLER, level, pos, side); + } + @Nullable public static IEnergyContainer getEnergyContainer(Level level, BlockPos pos, @Nullable Direction side) { return getBlockEntityCapability(GTCapability.CAPABILITY_ENERGY_CONTAINER, level, pos, side); @@ -105,6 +117,11 @@ public static IHazardParticleContainer getHazardContainer(Level level, BlockPos return getBlockEntityCapability(GTCapability.CAPABILITY_HAZARD_CONTAINER, level, pos, side); } + @Nullable + public static IMonitorComponent getMonitorComponent(Level level, BlockPos pos, @Nullable Direction side) { + return getBlockEntityCapability(GTCapability.CAPABILITY_MONITOR_COMPONENT, level, pos, side); + } + @Nullable private static T getBlockEntityCapability(Capability capability, Level level, BlockPos pos, @Nullable Direction side) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java index eaa8de82d9a..92dd3520740 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/ICoverable.java @@ -212,6 +212,14 @@ static Direction rayTraceCoverableSide(ICoverable coverable, Player player) { return traceCoverSide(rayTrace); } + default boolean hasDynamicCovers() { + for (Direction face : GTUtil.DIRECTIONS) { + CoverBehavior cover = this.getCoverAtSide(face); + if (cover != null && cover.getDynamicRenderer().get() != null) return true; + } + return false; + } + class PrimaryBoxData { public final boolean usePlacementGrid; diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java new file mode 100644 index 00000000000..aa9d1cb61fe --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/IMonitorComponent.java @@ -0,0 +1,23 @@ +package com.gregtechceu.gtceu.api.capability; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; + +import net.minecraft.core.BlockPos; +import net.minecraftforge.items.IItemHandler; + +import org.jetbrains.annotations.Nullable; + +public interface IMonitorComponent { + + default boolean isMonitor() { + return false; + } + + IGuiTexture getComponentIcon(); + + BlockPos getPos(); + + default @Nullable IItemHandler getDataItems() { + return null; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java index dcd5a4dd44d..7be5f37b866 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/forge/GTCapability.java @@ -38,6 +38,8 @@ public class GTCapability { .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_HAZARD_CONTAINER = CapabilityManager .get(new CapabilityToken<>() {}); + public static final Capability CAPABILITY_MONITOR_COMPONENT = CapabilityManager + .get(new CapabilityToken<>() {}); public static final Capability CAPABILITY_MEDICAL_CONDITION_TRACKER = CapabilityManager .get(new CapabilityToken<>() {}); diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java index f1e1865a34c..d290f8bb306 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverBehavior.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.IDynamicCoverRenderer; import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.syncdata.IEnhancedManaged; @@ -219,6 +220,10 @@ public BlockState getAppearance(BlockState sourceState, BlockPos sourcePos) { return null; } + public Supplier getDynamicRenderer() { + return () -> null; + } + ////////////////////////////////////// // ******* Capabilities *******// ////////////////////////////////////// diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java index 53c6c49327e..fdcd8bf9884 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/widget/NumberInputWidget.java @@ -10,6 +10,7 @@ import com.lowdragmc.lowdraglib.gui.util.ClickData; import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.utils.Position; import com.lowdragmc.lowdraglib.utils.Size; @@ -111,6 +112,12 @@ public void readInitialData(FriendlyByteBuf buffer) { textField.setCurrentString(buffer.readUtf()); } + @Override + public Widget setHoverTooltips(String... tooltipText) { + textField.setHoverTooltips(tooltipText); + return super.setHoverTooltips(tooltipText); + } + private void buildUI() { int buttonWidth = Mth.clamp(this.getSize().width / 5, 15, 40); int textFieldWidth = this.getSize().width - (2 * buttonWidth) - 4; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java index b4c15f8a294..c4778df3637 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IDataItem.java @@ -3,4 +3,6 @@ public interface IDataItem { boolean requireDataBank(); + + int getCapacity(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java new file mode 100644 index 00000000000..d7c01b2f671 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/IMonitorModuleItem.java @@ -0,0 +1,18 @@ +package com.gregtechceu.gtceu.api.item.component; + +import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import com.lowdragmc.lowdraglib.gui.widget.Widget; + +import net.minecraft.world.item.ItemStack; + +public interface IMonitorModuleItem extends IItemComponent { + + default void tick(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) {} + + IMonitorRenderer getRenderer(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group); + + Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java b/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java new file mode 100644 index 00000000000..de9b8410f25 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/ImageCache.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.api.misc; + +import com.gregtechceu.gtceu.GTCEu; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +public class ImageCache { + + public static final long REFRESH_SECS = 120; + public static final long EXPIRE_SECS = 300; + private static final byte[] NULL_MARKER = new byte[0]; + + private static boolean downloading = false; + + private static final LoadingCache CACHE = CacheBuilder.newBuilder() + .refreshAfterWrite(REFRESH_SECS, TimeUnit.SECONDS) + .expireAfterAccess(EXPIRE_SECS, TimeUnit.SECONDS) + .concurrencyLevel(3) + .build(CacheLoader.from(url -> { + if (downloading) return NULL_MARKER; + downloading = true; + + try (InputStream stream = new URL(url).openStream()) { + return stream.readAllBytes(); + } catch (IOException e) { + GTCEu.LOGGER.error("Could not load image {}", url, e); + downloading = false; + return NULL_MARKER; + } finally { + GTCEu.LOGGER.debug("Downloaded image {}! Executing callback", url); + downloading = false; + } + })); + + public static void queryServerImage(String url, Consumer callback) { + try { + if (downloading) return; + + byte[] image = CACHE.get(url); + if (image != NULL_MARKER) { + callback.accept(image); + } else { + CACHE.invalidate(url); + } + } catch (ExecutionException e) { + Throwable t = e; + if (t.getCause() != null) { + t = t.getCause(); + } + GTCEu.LOGGER.error("Could not load image {}", url, t); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java index 5eebbb030a9..eca90ad7f7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/MultiblockState.java @@ -63,14 +63,14 @@ public MultiblockState(Level world, BlockPos controllerPos) { this.matchContext = new PatternMatchContext(); } - protected void clean() { + public void clean() { this.matchContext.reset(); this.globalCount = new Object2IntOpenHashMap<>(); this.layerCount = new Object2IntOpenHashMap<>(); cache = new LongOpenHashSet(); } - protected boolean update(BlockPos posIn, TraceabilityPredicate predicate) { + public boolean update(BlockPos posIn, TraceabilityPredicate predicate) { this.pos = posIn; this.blockState = null; this.tileEntity = null; diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index ff23ecc2fc4..87047c98ef9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.pattern.error.PatternStringError; @@ -65,6 +66,14 @@ public static TraceabilityPredicate blocks(IMachineBlock... blocks) { new PredicateBlocks(Arrays.stream(blocks).map(IMachineBlock::self).toArray(Block[]::new))); } + public static TraceabilityPredicate machines(MachineDefinition... definitions) { + IMachineBlock[] machineBlocks = new IMachineBlock[definitions.length]; + for (int i = 0; i < machineBlocks.length; i++) { + machineBlocks[i] = definitions[i].get(); + } + return blocks(machineBlocks); + } + public static TraceabilityPredicate blockTag(TagKey tag) { return new TraceabilityPredicate(new PredicateBlockTag(tag)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java new file mode 100644 index 00000000000..586cb41c17b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java @@ -0,0 +1,15 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; + +import java.util.List; + +public interface IPlaceholderInfoProviderCover { + + long getTicksSincePlaced(); + + List getCreateDisplayTargetBuffer(); + + void setDisplayTargetBufferLine(int line, MutableComponent component); +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java new file mode 100644 index 00000000000..dcaacaa61e4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/MultiLineComponent.java @@ -0,0 +1,145 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.*; + +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class MultiLineComponent extends ArrayList { + + public MultiLineComponent(List components) { + super(); + this.addAll(components); + } + + public static MultiLineComponent of(Component c) { + return new MultiLineComponent(List.of(c.copy())); + } + + public static MultiLineComponent literal(String s) { + return MultiLineComponent.of(Component.literal(s)); + } + + public static MultiLineComponent literal(long n) { + return MultiLineComponent.literal(String.valueOf(n)); + } + + public static MultiLineComponent literal(double n) { + return MultiLineComponent.literal(String.valueOf(n)); + } + + public static MultiLineComponent empty() { + return MultiLineComponent.of(CommonComponents.EMPTY); + } + + @Override + public boolean equals(Object o) { + if (o instanceof MultiLineComponent) + return Objects.equals(this.toString(), o.toString()); + return false; + } + + public boolean equalsString(String s) { + return Objects.equals(this.toString(), s); + } + + public String toString() { + StringBuilder out = new StringBuilder(); + if (this.isEmpty()) return out.toString(); + for (Component component : this) { + out.append(component.getString()); + out.append('\n'); + } + return out.substring(0, out.length() - 1); + } + + public double toDouble() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Double.parseDouble(this.get(0).getString()); + } + + public int toInt() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Integer.parseInt(this.get(0).getString()); + } + + public void append(@Nullable String s) { + if (s != null) + GTUtil.getLast(this).append(s); + } + + public void append(char c) { + append(String.valueOf(c)); + } + + public MultiLineComponent append(@Nullable List lines) { + if (lines == null) return this; + if (lines.isEmpty()) return this; + for (Component line : lines) { + GTUtil.getLast(this).append(line); + this.add(MutableComponent.create(ComponentContents.EMPTY)); + } + this.remove(this.size() - 1); + return this; + } + + public void appendNewline() { + this.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + public MultiLineComponent withStyle(Style style) { + MultiLineComponent out = MultiLineComponent.empty(); + for (MutableComponent c : this) { + out.append(MultiLineComponent.of(c.withStyle(style))); + out.appendNewline(); + } + return out; + } + + public MultiLineComponent withStyle(ChatFormatting... style) { + MultiLineComponent out = MultiLineComponent.empty(); + for (MutableComponent c : this) { + out.append(MultiLineComponent.of(c.withStyle(style))); + out.appendNewline(); + } + return out; + } + + public List toImmutable() { + return new ArrayList<>(this); + } + + public Tag toTag() { + ListTag tag = new ListTag(); + for (MutableComponent component : this) { + tag.add(StringTag.valueOf(Component.Serializer.toJson(component))); + } + return tag; + } + + public static MultiLineComponent fromTag(ListTag tag) { + MultiLineComponent out = MultiLineComponent.empty(); + out.clear(); + for (Tag i : tag) { + out.add(Component.Serializer.fromJson(i.getAsString())); + } + return out; + } + + public long toLong() { + if (this.isEmpty()) return 0; + if (this.size() > 1) throw new NumberFormatException(this.toString()); + return Long.parseLong(this.get(0).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java new file mode 100644 index 00000000000..7f153477389 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java @@ -0,0 +1,27 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; + +import lombok.Getter; + +import java.util.List; + +public abstract class Placeholder { + + @Getter + private final String name; + @Getter + private final int priority; + + public abstract MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException; + + public Placeholder(String name) { + this(name, 0); + } + + public Placeholder(String name, int priority) { + this.name = name; + this.priority = priority; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java new file mode 100644 index 00000000000..ab88492f62e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderContext.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.cover.CoverBehavior; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.Level; +import net.minecraftforge.items.ItemStackHandler; + +import org.jetbrains.annotations.Nullable; + +public record PlaceholderContext(Level level, + BlockPos pos, + Direction side, + @Nullable ItemStackHandler itemStackHandler, + @Nullable CoverBehavior cover, + @Nullable MultiLineComponent previousText) {} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java new file mode 100644 index 00000000000..6b8ba7e41b5 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java @@ -0,0 +1,161 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnclosedBracketException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnexpectedBracketException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.UnknownPlaceholderException; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; + +import com.lowdragmc.lowdraglib.gui.texture.TextTexture; +import com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup; +import com.lowdragmc.lowdraglib.gui.widget.TextTextureWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; + +import net.minecraft.ChatFormatting; +import net.minecraft.MethodsReturnNonnullByDefault; + +import java.util.*; +import java.util.function.Consumer; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class PlaceholderHandler { + + private static final char ARG_SEPARATOR = ' '; + private static final char PLACEHOLDER_BEGIN = '{'; + private static final char PLACEHOLDER_END = '}'; + private static final char ESCAPE = '\\'; + private static final char LITERAL_ESCAPE = '"'; + private static final char NEWLINE = '\n'; + private static final char ESCAPED_NEWLINE = 'n'; + + private static final Map placeholders = new HashMap<>(); + + public static void addPlaceholder(Placeholder placeholder) { + if (placeholders.containsKey(placeholder.getName())) { + if (placeholders.get(placeholder.getName()).getPriority() <= placeholder.getPriority()) { + placeholders.put(placeholder.getName(), placeholder); + } + } else placeholders.put(placeholder.getName(), placeholder); + } + + public static boolean placeholderExists(MultiLineComponent placeholder) { + return placeholders.containsKey(placeholder.toString()); + } + + public static MultiLineComponent processPlaceholder(List placeholder, + PlaceholderContext context) throws PlaceholderException { + if (!placeholderExists(placeholder.get(0))) + throw new UnknownPlaceholderException(placeholder.get(0).toString()); + return placeholders.get(placeholder.get(0).toString()).apply(context, + placeholder.subList(1, placeholder.size())); + } + + public static MultiLineComponent processPlaceholders(String s, PlaceholderContext ctx) { + if (ctx.level().isClientSide) + GTCEu.LOGGER.warn("Placeholder processing is running on client instead of server!"); + List exceptions = new ArrayList<>(); + boolean escape = false; + boolean escapeNext = false; + boolean literalEscape = false; + int line = 1; + int symbol = 1; + Stack> stack = new Stack<>(); + stack.push(GTUtil.list(MultiLineComponent.empty())); + for (char c : s.toCharArray()) { + if (escape || (literalEscape && c != LITERAL_ESCAPE)) { + if (c == ESCAPED_NEWLINE && !literalEscape) { + GTUtil.getLast(stack.peek()).appendNewline(); + line++; + symbol = 0; + } else if (c == NEWLINE) continue; + else GTUtil.getLast(stack.peek()).append(c); + } else { + switch (c) { + case ESCAPE -> escapeNext = true; + case LITERAL_ESCAPE -> literalEscape = !literalEscape; + case NEWLINE -> { + GTUtil.getLast(stack.peek()).appendNewline(); + line++; + symbol = 0; + } + case ARG_SEPARATOR -> { + if (stack.size() == 1) GTUtil.getLast(stack.peek()).append(c); + else stack.peek().add(MultiLineComponent.empty()); + } + case PLACEHOLDER_BEGIN -> stack.push(GTUtil.list(MultiLineComponent.empty())); + case PLACEHOLDER_END -> { + List placeholder = stack.pop(); + try { + if (stack.isEmpty()) throw new UnexpectedBracketException(); + MultiLineComponent result = processPlaceholder(placeholder, ctx); + GTUtil.getLast(stack.peek()).append(result); + } catch (PlaceholderException e) { + e.setLineInfo(line, symbol); + exceptions.add(e); + } catch (RuntimeException e) { + exceptions.add(e); + } + } + default -> GTUtil.getLast(stack.peek()).append(c); + } + } + escape = escapeNext; + escapeNext = false; + symbol++; + } + if (stack.size() > 1) { + PlaceholderException exception = new UnclosedBracketException(); + exception.setLineInfo(line, symbol); + exceptions.add(exception); + } + if (exceptions.isEmpty()) + return stack.peek().stream().reduce(MultiLineComponent.empty(), MultiLineComponent::append); + MultiLineComponent out = MultiLineComponent.empty(); + exceptions.forEach(exception -> { + out.append(exception.getMessage()); + out.appendNewline(); + }); + return out.withStyle(ChatFormatting.DARK_RED); + } + + public static Set getAllPlaceholderNames() { + return placeholders.keySet(); + } + + public static Widget getPlaceholderHandlerUI(String filter) { + DraggableScrollableWidgetGroup placeholderReference = new DraggableScrollableWidgetGroup(280, 15, 100, 200); + Consumer onSearch = (newSearch) -> { + placeholderReference.clearAllWidgets(); + int y = 2; + ArrayList placeholders = new ArrayList<>(getAllPlaceholderNames()); + placeholders.removeIf(s -> s == null || !s.contains(newSearch)); + placeholders.sort(String::compareTo); + for (String placeholder : placeholders) { + TextTextureWidget placeholderName = new TextTextureWidget(0, y, 80, 15, placeholder); + placeholderName.getTextTexture().type = TextTexture.TextType.LEFT; + placeholderName.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getSingleOrMultiLang("gtceu.placeholder_info." + placeholder))); + placeholderReference.addWidget(placeholderName); + y += 15; + } + }; + onSearch.accept(filter); + TextTextureWidget placeholderReferenceLabel = new TextTextureWidget( + 280, 0, + 160, 15, + GTStringUtils.componentsToString( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.placeholder_reference"))); + placeholderReferenceLabel.getTextTexture().type = TextTexture.TextType.LEFT; + WidgetGroup out = new WidgetGroup(); + out.addWidget(placeholderReferenceLabel); + out.addWidget(placeholderReference); + return out; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java new file mode 100644 index 00000000000..eeb8f00cff3 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderUtils.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.api.placeholder; + +import com.gregtechceu.gtceu.api.placeholder.exceptions.InvalidNumberException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.NotEnoughArgsException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.OutOfRangeException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.WrongNumberOfArgsException; + +import java.util.List; + +public class PlaceholderUtils { + + public static void checkRange(String what, int min, int max, int n) throws OutOfRangeException { + if (n < min || n > max) throw new OutOfRangeException(what, min, max, n); + } + + public static int toInt(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toInt(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } + + public static double toDouble(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toDouble(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } + + public static void checkArgs(List args, int args_num) throws WrongNumberOfArgsException { + if (args.size() != args_num) throw new WrongNumberOfArgsException(args_num, args.size()); + } + + public static void checkArgs(List args, int args_num, + boolean allowMore) throws NotEnoughArgsException, WrongNumberOfArgsException { + if (!allowMore) checkArgs(args, args_num); + if (args.size() < args_num) throw new NotEnoughArgsException(args_num, args.size()); + } + + public static long toLong(MultiLineComponent component) throws InvalidNumberException { + try { + return component.toLong(); + } catch (NumberFormatException e) { + throw new InvalidNumberException(component.toString()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java new file mode 100644 index 00000000000..2eec004295c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidArgsException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class InvalidArgsException extends PlaceholderException { + + public InvalidArgsException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.invalid_args").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java new file mode 100644 index 00000000000..ca2a5895ebf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/InvalidNumberException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class InvalidNumberException extends PlaceholderException { + + public InvalidNumberException(String number) { + super(Component.translatable("gtceu.computer_monitor_cover.error.invalid_number", number).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java new file mode 100644 index 00000000000..fa31f6c7206 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/MissingItemException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class MissingItemException extends PlaceholderException { + + public MissingItemException(String item, int slot) { + super(Component.translatable("gtceu.computer_monitor_cover.error.missing_item", item, slot).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java new file mode 100644 index 00000000000..aecc8cfeba4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NoMENetworkException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NoMENetworkException extends PlaceholderException { + + public NoMENetworkException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.no_ae").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java new file mode 100644 index 00000000000..b12b30db941 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotEnoughArgsException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NotEnoughArgsException extends PlaceholderException { + + public NotEnoughArgsException(int expected, int got) { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_enough_args", expected, got).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java new file mode 100644 index 00000000000..7218faaaf40 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/NotSupportedException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class NotSupportedException extends PlaceholderException { + + public NotSupportedException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_supported").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java new file mode 100644 index 00000000000..76c047abad7 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/OutOfRangeException.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class OutOfRangeException extends PlaceholderException { + + public OutOfRangeException(String what, int min, int max, int provided) { + super(Component.translatable("gtceu.computer_monitor_cover.error.not_in_range", what, min, max, provided) + .getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java new file mode 100644 index 00000000000..30882b11f89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/PlaceholderException.java @@ -0,0 +1,22 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +public class PlaceholderException extends Exception { + + private String message; + private int line = 0, symbol = 0; + + public PlaceholderException(String message) { + super(message); + this.message = message; + } + + public void setLineInfo(int line, int symbol) { + this.line = line; + this.symbol = symbol; + } + + @Override + public String getMessage() { + return "%d:%d: %s".formatted(line, symbol, message); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java new file mode 100644 index 00000000000..17ad606f6cc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnclosedBracketException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnclosedBracketException extends PlaceholderException { + + public UnclosedBracketException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.unclosed_bracket").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java new file mode 100644 index 00000000000..df9db034f83 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnexpectedBracketException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnexpectedBracketException extends RuntimeException { + + public UnexpectedBracketException() { + super(Component.translatable("gtceu.computer_monitor_cover.error.unexpected_bracket").getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java new file mode 100644 index 00000000000..fc9efe4916b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/UnknownPlaceholderException.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class UnknownPlaceholderException extends PlaceholderException { + + public UnknownPlaceholderException(String name) { + super(Component.translatable("gtceu.computer_monitor_cover.error.no_placeholder", name).getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java new file mode 100644 index 00000000000..88e3f6f6da2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/exceptions/WrongNumberOfArgsException.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.api.placeholder.exceptions; + +import net.minecraft.network.chat.Component; + +public class WrongNumberOfArgsException extends PlaceholderException { + + public WrongNumberOfArgsException(int expected, int got) { + super(Component.translatable("gtceu.computer_monitor_cover.error.wrong_number_of_args", expected, got) + .getString()); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 2c9b20e235c..ba4a22eb513 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -115,7 +115,7 @@ public class MachineBuilder extends Builde @Setter private boolean allowExtendedFacing = false; @Setter - private boolean hasBER; + private boolean hasBER = ConfigHolder.INSTANCE.client.machinesHaveBERsByDefault; @Setter private boolean renderMultiblockWorldPreview = true; @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java index 04b746146db..75b8029e9cb 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/client/ClientProxy.java @@ -140,6 +140,8 @@ public static void initializeDynamicRenders() { DynamicRenderManager.register(GTCEu.id("boiler_multi_parts"), BoilerMultiPartRender.TYPE); DynamicRenderManager.register(GTCEu.id("fluid_area"), FluidAreaRender.TYPE); + + DynamicRenderManager.register(GTCEu.id("central_monitor"), CentralMonitorRender.TYPE); } @SubscribeEvent diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java index 71dfd1343f8..c20eb618e68 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/machine/MachineModel.java @@ -382,11 +382,7 @@ private List renderPartOverrides(MachineModel controllerModel, IMulti @Override public boolean isCustomRenderer() { - if (dynamicRenders.isEmpty()) return false; - for (DynamicRender render : dynamicRenders) { - if (render.isBlockEntityRenderer()) return true; - } - return false; + return true; } @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -396,6 +392,9 @@ public void render(@NotNull BlockEntity blockEntity, float partialTick, int packedLight, int packedOverlay) { if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return; if (machineBE.getDefinition() != getDefinition()) return; + ICoverableRenderer.super.renderDynamicCovers(machineBE.getMetaMachine(), partialTick, poseStack, buffer, + packedLight, + packedOverlay); if (dynamicRenders.isEmpty()) return; MetaMachine machine = machineBE.getMetaMachine(); @@ -453,6 +452,7 @@ public boolean shouldRenderOffScreen(BlockEntity blockEntity) { public boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { if (!(blockEntity instanceof IMachineBlockEntity machineBE)) return false; if (machineBE.getDefinition() != getDefinition()) return false; + if (machineBE.getMetaMachine().getCoverContainer().hasDynamicCovers()) return true; if (dynamicRenders.isEmpty()) return false; MetaMachine machine = machineBE.getMetaMachine(); @@ -466,8 +466,6 @@ public boolean shouldRender(BlockEntity blockEntity, @NotNull Vec3 cameraPos) { @Override public int getViewDistance() { - if (dynamicRenders.isEmpty()) return 0; - int distance = 0; for (DynamicRender model : dynamicRenders) { distance = Math.max(distance, model.getViewDistance()); diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java index 7e0fcbd09aa..c36a41a91e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/GTRenderTypes.java @@ -1,13 +1,17 @@ package com.gregtechceu.gtceu.client.renderer; +import net.minecraft.Util; import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; +import java.util.function.Function; + @OnlyIn(Dist.CLIENT) public class GTRenderTypes extends RenderType { @@ -18,6 +22,16 @@ public class GTRenderTypes extends RenderType { .setShaderState(RenderStateShard.POSITION_COLOR_SHADER) .setTransparencyState(RenderStateShard.TRANSLUCENT_TRANSPARENCY) .createCompositeState(false)); + private static final Function GUI_TEXTURE = Util.memoize((texture) -> { + return create("gui_texture", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, VertexFormat.Mode.QUADS, + RenderType.TRANSIENT_BUFFER_SIZE, false, true, + RenderType.CompositeState.builder() + .setShaderState(RENDERTYPE_TEXT_SHADER) + .setTextureState(new RenderStateShard.TextureStateShard(texture, false, false)) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setLightmapState(LIGHTMAP) + .createCompositeState(false)); + }); private GTRenderTypes(String name, VertexFormat format, VertexFormat.Mode mode, int bufferSize, boolean affectsCrumbling, boolean sortOnUpload, Runnable setupState, Runnable clearState) { @@ -27,4 +41,8 @@ private GTRenderTypes(String name, VertexFormat format, VertexFormat.Mode mode, public static RenderType getLightRing() { return LIGHT_RING; } + + public static RenderType guiTexture(ResourceLocation texture) { + return GUI_TEXTURE.apply(texture); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java new file mode 100644 index 00000000000..95efa90be76 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/CoverTextRenderer.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.util.FormattedCharSequence; + +import com.mojang.blaze3d.vertex.PoseStack; +import lombok.Setter; + +import java.util.List; +import java.util.function.Supplier; + +public class CoverTextRenderer implements IDynamicCoverRenderer { + + private static final float TEXT_SCALE = 1 / 144f; + + @Setter + private Supplier> text; + + public CoverTextRenderer(Supplier> text) { + this.text = text; + } + + @Override + public void render(MetaMachine machine, Direction face, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + poseStack.translate(3 / 16f, 3 / 16f, 0); + poseStack.scale(TEXT_SCALE, TEXT_SCALE, TEXT_SCALE); + int y = 0; + for (Component s : text.get()) { + boolean didAnything = false; + for (FormattedCharSequence line : Minecraft.getInstance().font.split(s, 90)) { + if (y >= 90) return; + Minecraft.getInstance().font.drawInBatch( + line, + 0, y, + 0x72e500, + false, + poseStack.last().pose(), + buffer, + Font.DisplayMode.NORMAL, + 0, + LightTexture.FULL_BRIGHT); + y += Minecraft.getInstance().font.lineHeight; + didAnything = true; + } + if (!didAnything) y += Minecraft.getInstance().font.lineHeight; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java index aac37b2f697..041ae027db0 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/ICoverableRenderer.java @@ -2,10 +2,14 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.client.util.RenderUtil; import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.client.bakedpipeline.FaceQuad; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlas; @@ -19,6 +23,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.data.ModelData; +import com.mojang.blaze3d.vertex.PoseStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -68,4 +73,22 @@ default void renderCovers(List quads, @NotNull ICoverable coverable, } } } + + @OnlyIn(Dist.CLIENT) + default void renderDynamicCovers(MetaMachine machine, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + ICoverable coverable = machine.getCoverContainer(); + for (Direction face : GTUtil.DIRECTIONS) { + CoverBehavior cover = coverable.getCoverAtSide(face); + IDynamicCoverRenderer renderer = cover != null ? cover.getDynamicRenderer().get() : null; + if (renderer != null) { + poseStack.pushPose(); + RenderUtil.moveToFace(poseStack, .5f, .5f, .5f, face); + RenderUtil.rotateToFace(poseStack, face, Direction.NORTH); + poseStack.translate(-.5f, -.5f, .01f); + renderer.render(machine, face, partialTick, poseStack, buffer, packedLight, packedOverlay); + poseStack.popPose(); + } + } + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java new file mode 100644 index 00000000000..87e3b07670b --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/cover/IDynamicCoverRenderer.java @@ -0,0 +1,14 @@ +package com.gregtechceu.gtceu.client.renderer.cover; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.Direction; + +import com.mojang.blaze3d.vertex.PoseStack; + +public interface IDynamicCoverRenderer { + + void render(MetaMachine machine, Direction face, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java index 705dd9b9ae3..c6cd2f5c598 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/DynamicRenderHelper.java @@ -53,4 +53,8 @@ public class DynamicRenderHelper { public static DynamicRender createQuantumTankRender() { return new QuantumTankFluidRender(); } + + public static DynamicRender createCentralMonitorRender() { + return new CentralMonitorRender(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java new file mode 100644 index 00000000000..8ce0183cafc --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/CentralMonitorRender.java @@ -0,0 +1,94 @@ +package com.gregtechceu.gtceu.client.renderer.machine.impl; + +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRender; +import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderType; +import com.gregtechceu.gtceu.client.util.RenderUtil; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.serialization.Codec; + +public class CentralMonitorRender extends DynamicRender { + + // spotless:off + public static final Codec CODEC = Codec.unit(CentralMonitorRender::new); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(CODEC); + // spotless:on + private static final float SCREEN_OFFSET_Z = 0.01f; + + public CentralMonitorRender() {} + + @Override + public DynamicRenderType getType() { + return TYPE; + } + + @Override + public void render(CentralMonitorMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + int packedLight, int packedOverlay) { + poseStack.pushPose(); + RenderUtil.moveToFace(poseStack, 0.5f, 0.5f, 0.5f, machine.getFrontFacing()); + RenderUtil.rotateToFace(poseStack, machine.getFrontFacing(), machine.getUpwardsFacing()); + poseStack.translate(-machine.getRightDist() - 0.5f, -machine.getUpDist() - 0.5f, SCREEN_OFFSET_Z); + + if (machine.getRecipeLogic().isActive()) { + for (MonitorGroup group : machine.getMonitorGroups()) { + ItemStack itemStack = group.getItemStackHandler().getStackInSlot(0); + if (!(itemStack.getItem() instanceof ComponentItem item)) { + continue; + } + for (IItemComponent component : item.getComponents()) { + if (!(component instanceof IMonitorModuleItem module)) { + continue; + } + poseStack.pushPose(); + module.getRenderer(group.getItemStackHandler().getStackInSlot(0), machine, group) + .render(machine, group, partialTick, poseStack, buffer, packedLight, packedOverlay); + poseStack.popPose(); + } + } + } + poseStack.popPose(); + } + + @Override + public boolean shouldRenderOffScreen(CentralMonitorMachine machine) { + return true; + } + + @Override + public boolean shouldRender(CentralMonitorMachine machine, Vec3 cameraPos) { + return machine.isFormed(); + } + + @Override + public AABB getRenderBoundingBox(CentralMonitorMachine machine) { + BlockPos pos = machine.getPos(); + BoundingBox bounds = new BoundingBox( + pos.getX() - 1, pos.getY() - 1, pos.getZ() - 1, + pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); + + for (int row = 0; row <= machine.getUpDist() + machine.getDownDist(); row++) { + for (int col = 0; col <= machine.getLeftDist() + machine.getRightDist(); col++) { + IMonitorComponent component = machine.getComponent(row, col); + if (component != null && component.isMonitor()) { + // noinspection deprecation + bounds.encapsulate(component.getPos()); + } + } + } + return AABB.of(bounds); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java new file mode 100644 index 00000000000..b217dc6c35c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/IMonitorRenderer.java @@ -0,0 +1,17 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.mojang.blaze3d.vertex.PoseStack; + +public interface IMonitorRenderer { + + @OnlyIn(Dist.CLIENT) + void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay); +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java new file mode 100644 index 00000000000..a76b37ccf7d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorImageRenderer.java @@ -0,0 +1,49 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.client.renderer.GTRenderTypes; +import com.gregtechceu.gtceu.client.util.ClientImageCache; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.utils.GTUtil; + +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import org.joml.Matrix4f; + +public class MonitorImageRenderer implements IMonitorRenderer { + + private final String url; + + public MonitorImageRenderer(String url) { + this.url = url; + } + + @Override + public void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + BlockPos rel = group.getRow(0, machine::toRelative).get(0); + BlockPos size = GTUtil.getLast(group.getRow(-1, machine::toRelative)) + .offset(-rel.getX() + 1, -rel.getY() + 1, -rel.getZ() + 1); + + poseStack.translate(rel.getX(), rel.getY(), rel.getZ()); + + ResourceLocation textureId = ClientImageCache.getOrLoadTexture(url); + if (textureId == null) return; + + VertexConsumer consumer = buffer.getBuffer(GTRenderTypes.guiTexture(textureId)); + Matrix4f pose = poseStack.last().pose(); + + float minX = 0, maxX = size.getX(); + float minY = 0, maxY = size.getY(); + + consumer.vertex(pose, minX, maxY, 0).color(0xFFFFFFFF).uv(0, 1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, maxX, maxY, 0).color(0xFFFFFFFF).uv(1, 1).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, maxX, minY, 0).color(0xFFFFFFFF).uv(1, 0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + consumer.vertex(pose, minX, minY, 0).color(0xFFFFFFFF).uv(0, 0).uv2(LightTexture.FULL_BRIGHT).endVertex(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java new file mode 100644 index 00000000000..029a85b5223 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/monitor/MonitorTextRenderer.java @@ -0,0 +1,76 @@ +package com.gregtechceu.gtceu.client.renderer.monitor; + +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.util.FormattedCharSequence; + +import com.mojang.blaze3d.vertex.PoseStack; + +import java.util.List; + +public class MonitorTextRenderer implements IMonitorRenderer { + + private static final float TEXT_SCALE = 1 / 144f; + private final List text; + private final float scale; + + public MonitorTextRenderer(List text, double scale) { + this.text = text; + this.scale = (float) scale; + } + + @Override + public void render(CentralMonitorMachine machine, MonitorGroup group, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) { + try { + BlockPos rel = group.getRow(0, machine::toRelative).get(0); + int row = 0; + int columns = group.getRow(0, machine::toRelative).size(); + poseStack.translate(rel.getX(), rel.getY(), rel.getZ()); + poseStack.scale(TEXT_SCALE * scale, TEXT_SCALE * scale, TEXT_SCALE * scale); + float y = 9; + for (Component s : text) { + boolean didAnything = false; + for (FormattedCharSequence line : Minecraft.getInstance().font.split(s, + Math.round(columns * 135 / scale))) { + if (y >= 144) { + try { + row++; + columns = group.getRow(row, machine::toRelative).size(); + y -= 144; + poseStack.translate(-rel.getX() / (TEXT_SCALE * scale), -rel.getY() / (TEXT_SCALE * scale), + -rel.getZ() / (TEXT_SCALE * scale)); + rel = group.getRow(row, machine::toRelative).get(0); + poseStack.translate(rel.getX() / (TEXT_SCALE * scale), rel.getY() / (TEXT_SCALE * scale), + rel.getZ() / (TEXT_SCALE * scale)); + } catch (IndexOutOfBoundsException e) { + return; + } + } + Minecraft.getInstance().font.drawInBatch( + line, + 9, y, + 0xFFFFFF, + false, + poseStack.last().pose(), + buffer, + Font.DisplayMode.NORMAL, + 0, + LightTexture.FULL_BRIGHT); + y += Minecraft.getInstance().font.lineHeight * scale; + didAnything = true; + } + if (!didAnything) { + y += Minecraft.getInstance().font.lineHeight * scale; + } + } + } catch (IndexOutOfBoundsException ignored) {} + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java b/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java new file mode 100644 index 00000000000..1c93aafc26c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/client/util/ClientImageCache.java @@ -0,0 +1,105 @@ +package com.gregtechceu.gtceu.client.util; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.misc.ImageCache; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.CPacketImageRequest; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.AbstractTexture; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.renderer.texture.SimpleTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.mojang.blaze3d.platform.NativeImage; +import org.apache.commons.lang3.ArrayUtils; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; + +@OnlyIn(Dist.CLIENT) +public class ClientImageCache { + + private static final Map imageParts = new HashMap<>(); + + private static boolean downloading = false; + // TODO make some kind of loading icon for this + private static final AbstractTexture LOADING_TEXTURE_MARKER = new SimpleTexture( + GTCEu.id("textures/block/void.png")); + private static final LoadingCache CACHE = CacheBuilder.newBuilder() + .refreshAfterWrite(ImageCache.REFRESH_SECS, TimeUnit.SECONDS) + .expireAfterAccess(ImageCache.EXPIRE_SECS, TimeUnit.SECONDS) + .build(CacheLoader.from(url -> { + if (!downloading) { + downloading = true; + GTCEu.LOGGER.debug("Requesting image {}", url); + GTNetwork.sendToServer(new CPacketImageRequest(url)); + } + return LOADING_TEXTURE_MARKER; + })); + + private static @NotNull ResourceLocation getUrlTextureId(String url) { + return GTCEu.id("textures/central_monitor/image_" + url.hashCode()); + } + + public static @Nullable ResourceLocation getOrLoadTexture(String url) { + AbstractTexture texture = null; + + try { + texture = CACHE.get(url); + } catch (ExecutionException e) { + Throwable t = e; + if (t.getCause() != null) { + t = t.getCause(); + } + GTCEu.LOGGER.error("Could not load image {}", url, t); + } + if (texture == null || texture == LOADING_TEXTURE_MARKER) { + return null; + } + + return getUrlTextureId(url); + } + + @ApiStatus.Internal + public static void receiveImagePart(String url, byte[] imagePart, int index, + final int totalParts) throws IOException { + byte[][] parts = imageParts.computeIfAbsent(url, $ -> new byte[totalParts][]); + parts[index] = imagePart; + + if (index == totalParts - 1) { + byte[] imageBytes = new byte[imagePart.length]; + int currentIndex = 0; + for (byte[] part : parts) { + imageBytes = ArrayUtils.insert(currentIndex, imageBytes, part); + currentIndex += part.length; + } + + saveTexture(url, imageBytes); + imageParts.remove(url); + downloading = false; + } + } + + private static void saveTexture(String url, byte[] imageBytes) throws IOException { + ByteBuffer buffer = ByteBuffer.allocateDirect(imageBytes.length); + buffer.put(imageBytes).flip(); + DynamicTexture texture = new DynamicTexture(NativeImage.read(buffer)); + + Minecraft.getInstance().getTextureManager().register(getUrlTextureId(url), texture); + + CACHE.put(url, texture); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 84e6774efd7..21be19fddee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -26,6 +26,7 @@ import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.*; +import com.gregtechceu.gtceu.common.data.GTPlaceholders; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.materials.GTFoods; import com.gregtechceu.gtceu.common.item.tool.rotation.CustomBlockRotations; @@ -45,7 +46,9 @@ import com.gregtechceu.gtceu.data.pack.GTPackSource; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; import com.gregtechceu.gtceu.forge.AlloyBlastPropertyAddition; +import com.gregtechceu.gtceu.integration.ae2.GTAEPlaceholders; import com.gregtechceu.gtceu.integration.cctweaked.CCTweakedPlugin; +import com.gregtechceu.gtceu.integration.create.GTCreateIntegration; import com.gregtechceu.gtceu.integration.kjs.GTCEuStartupEvents; import com.gregtechceu.gtceu.integration.kjs.GTRegistryInfo; import com.gregtechceu.gtceu.integration.kjs.events.MaterialModificationEventJS; @@ -132,6 +135,11 @@ public static void init() { TagPrefix.init(); GTSoundEntries.init(); GTDamageTypes.init(); + GTPlaceholders.initPlaceholders(); + if (GTCEu.Mods.isCreateLoaded()) { + GTCreateIntegration.init(); + GTAEPlaceholders.init(); + } GTCovers.init(); GTFluids.init(); GTCreativeModeTabs.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java index 86b0837504c..23b38c2f1fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java @@ -1,15 +1,104 @@ package com.gregtechceu.gtceu.common.cover; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.cover.IUICover; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.api.machine.TickableSubscription; +import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; +import com.gregtechceu.gtceu.api.placeholder.MultiLineComponent; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderHandler; +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.client.renderer.cover.CoverTextRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.IDynamicCoverRenderer; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.integration.create.GTCreateIntegration; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; +import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.NotNull; + +import java.util.*; +import java.util.function.Supplier; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class ComputerMonitorCover extends CoverBehavior + implements IUICover, IDataStickInteractable, IPlaceholderInfoProviderCover { -public class ComputerMonitorCover extends CoverBehavior { + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ComputerMonitorCover.class, + CoverBehavior.MANAGED_FIELD_HOLDER); + + private TickableSubscription subscription; + private final CoverTextRenderer renderer; + @Persisted + private final List formatStringArgs = new ArrayList<>(8); + @Persisted + private final List formatStringLines = new ArrayList<>(8); + @Persisted + @DescSynced + @Getter + private List text = new ArrayList<>(); + @Persisted + public final CustomItemStackHandler itemStackHandler = new CustomItemStackHandler(8); + @Setter + private String placeholderSearch = ""; + @Setter + @Getter + @Persisted + private int updateInterval = 100; + @Getter + @Persisted + private long ticksSincePlaced = 0; + @Persisted + @Getter + private final List createDisplayTargetBuffer = new ArrayList<>(); public ComputerMonitorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { super(definition, coverHolder, attachedSide); + renderer = new CoverTextRenderer(this::getText); + for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + public List getRenderedText() { + String s = formatStringLines.stream().reduce((a, b) -> a + "\n" + b).orElse(""); + List tmp = new ArrayList<>(formatStringArgs); + tmp = tmp.stream().map(str -> '{' + str + '}').toList(); + return PlaceholderHandler.processPlaceholders( + GTStringUtils.replace(s, "\\{}", tmp), + new PlaceholderContext(coverHolder.getLevel(), coverHolder.getPos(), attachedSide, itemStackHandler, + this, new MultiLineComponent(text))); + } + + public void setDisplayTargetBufferLine(int line, MutableComponent component) { + createDisplayTargetBuffer.set(line, component); } @Override @@ -17,5 +106,169 @@ public boolean canPipePassThrough() { return false; } - // No implementation here, this cover is just for decorative purposes + @Override + public Supplier getDynamicRenderer() { + return () -> renderer; + } + + @Override + public @NotNull ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public Widget createUIWidget() { + int textFieldWidth = 160, horizontalPadding = 10, verticalPadding = 2; + final WidgetGroup group = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + final WidgetGroup mainPage = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + final WidgetGroup formatStringArgsPage = new WidgetGroup(0, 0, 2 * textFieldWidth + 3 * horizontalPadding, 150); + for (int i = 0; i < 8; i++) { + TextFieldWidget formatStringInput = new TextFieldWidget(); + formatStringInput.setSize(textFieldWidth, 15); + formatStringInput.setSelfPosition(horizontalPadding + textFieldWidth / 2, + 10 + verticalPadding + i * (15 + verticalPadding)); + formatStringInput.setHoverTooltips(GTStringUtils.toImmutable( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.main_textbox_tooltip", i + 1))); + int finalI = i; + if (i >= formatStringLines.size()) formatStringLines.add(""); + formatStringInput.setCurrentString(formatStringLines.get(i)); + formatStringInput.setTextResponder((s) -> formatStringLines.set(finalI, s)); + mainPage.addWidget(formatStringInput); + SlotWidget slot = new com.gregtechceu.gtceu.api.gui.widget.SlotWidget( + itemStackHandler, + i, + horizontalPadding + 50, + 20 * i); + slot.setBackgroundTexture(SlotWidget.ITEM_SLOT_TEXTURE); + slot.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.slot_tooltip", i + 1))); + mainPage.addWidget(slot); + } + for (int i = 0; i < 8; i++) { + TextFieldWidget formatStringArgsInput = new TextFieldWidget(); + formatStringArgsInput.setSize(textFieldWidth, 15); + formatStringArgsInput.setSelfPosition(textFieldWidth / 2 + horizontalPadding, + 10 + verticalPadding + i * (15 + verticalPadding)); + formatStringArgsInput.setHoverTooltips(GTStringUtils.toImmutable( + LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip", + GTStringUtils.getIntOrderingSuffix(i + 1)))); + + int finalI = i; + if (i >= formatStringArgs.size()) formatStringArgs.add(""); + formatStringArgsInput.setCurrentString(formatStringArgs.get(i)); + formatStringArgsInput.setTextResponder((s) -> formatStringArgs.set(finalI, s)); + formatStringArgsPage.addWidget(formatStringArgsInput); + } + ButtonWidget switchToFormatStringArgsPageButton = new ButtonWidget( + horizontalPadding + 50, + 10 * (15 + verticalPadding) + verticalPadding, + 20, 20, + new ResourceBorderTexture(), + clickData -> { + group.clearAllWidgets(); + group.addWidget(formatStringArgsPage); + }); + ButtonWidget switchBack = new ButtonWidget( + horizontalPadding + 50, + 10 * (15 + verticalPadding) + verticalPadding, + 20, 20, + new ResourceBorderTexture(), + clickData -> { + group.clearAllWidgets(); + group.addWidget(mainPage); + }); + mainPage.addWidget(PlaceholderHandler.getPlaceholderHandlerUI("")); + // TextFieldWidget searchBox = new TextFieldWidget(280, 0, 80, 15, null, onSearch); + // searchBox.setHoverTooltips("Search"); + // mainPage.addWidget(searchBox); + IntInputWidget updateIntervalInput = new IntInputWidget(0, 0, 60, 20, this::getUpdateInterval, + this::setUpdateInterval); + updateIntervalInput.setMin(1); + updateIntervalInput.setMax(60 * 20); + updateIntervalInput + .setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.update_interval")); + mainPage.addWidget(updateIntervalInput); + switchToFormatStringArgsPageButton + .setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.edit_blank_placeholders")); + switchBack.setHoverTooltips(Component.translatable("gtceu.gui.computer_monitor_cover.edit_displayed_text")); + mainPage.addWidget(switchToFormatStringArgsPageButton); + formatStringArgsPage.addWidget(switchBack); + group.addWidget(mainPage); + return group; + } + + @Override + public void onLoad() { + super.onLoad(); + subscription = coverHolder.subscribeServerTick(subscription, this::update); + } + + private void update() { + ticksSincePlaced++; + if (coverHolder.getOffsetTimer() % updateInterval == 0) { + try { + if (GTCEu.Mods.isCreateLoaded()) + GTCreateIntegration.TemporaryRedstoneLinkTransmitter.destroyAll(); + setRedstoneSignalOutput(0); + text = getRenderedText(); + } catch (RuntimeException e) { + text = GTUtil + .list(Component.translatable("gtceu.computer_monitor_cover.error.exception", e.getMessage())); + } + } + } + + @Override + public void onRemoved() { + super.onRemoved(); + if (subscription != null) { + subscription.unsubscribe(); + } + } + + @Override + public boolean canConnectRedstone() { + return true; + } + + @Override + public List getAdditionalDrops() { + List drops = super.getAdditionalDrops(); + for (int i = 0; i < 8; i++) { + if (!itemStackHandler.getStackInSlot(i).isEmpty()) + drops.add(itemStackHandler.getStackInSlot(i)); + } + return drops; + } + + @Override + public InteractionResult onDataStickUse(Player player, ItemStack dataStick) { + CompoundTag tag = dataStick.getTagElement("computer_monitor_cover_config"); + if (tag == null) return InteractionResult.FAIL; + List stringLines = new ArrayList<>(); + ListTag stringLinesTag = tag.getList("lines", Tag.TAG_STRING); + for (int i = 0; i < stringLinesTag.size(); i++) stringLines.add(stringLinesTag.getString(i)); + formatStringLines.clear(); + formatStringLines.addAll(stringLines); + List stringArgs = new ArrayList<>(); + ListTag stringArgsTag = tag.getList("args", Tag.TAG_STRING); + for (int i = 0; i < stringArgsTag.size(); i++) stringArgs.add(stringArgsTag.getString(i)); + formatStringArgs.clear(); + formatStringArgs.addAll(stringArgs); + updateInterval = tag.getInt("updateInterval"); + return InteractionResult.SUCCESS; + } + + @Override + public InteractionResult onDataStickShiftUse(Player player, ItemStack dataStick) { + CompoundTag tag = dataStick.getOrCreateTagElement("computer_monitor_cover_config"); + ListTag stringLinesTag = new ListTag(); + formatStringLines.forEach(line -> stringLinesTag.add(StringTag.valueOf(line))); + tag.put("lines", stringLinesTag); + ListTag stringArgsTag = new ListTag(); + formatStringArgs.forEach(line -> stringArgsTag.add(StringTag.valueOf(line))); + tag.put("args", stringArgsTag); + tag.putInt("updateInterval", updateInterval); + return InteractionResult.SUCCESS; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java new file mode 100644 index 00000000000..b66b219ca89 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java @@ -0,0 +1,65 @@ +package com.gregtechceu.gtceu.common.cover; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class WirelessTransmitterCover extends CoverBehavior + implements IDataStickInteractable, IPlaceholderInfoProviderCover { + + private static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( + WirelessTransmitterCover.class, CoverBehavior.MANAGED_FIELD_HOLDER); + + @Getter + private final List createDisplayTargetBuffer = new ArrayList<>(); + + public WirelessTransmitterCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) { + super(definition, coverHolder, attachedSide); + for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY)); + } + + @Override + public InteractionResult onDataStickUse(Player player, ItemStack dataStick) { + dataStick.getOrCreateTag().putInt("targetX", coverHolder.getPos().getX()); + dataStick.getOrCreateTag().putInt("targetY", coverHolder.getPos().getY()); + dataStick.getOrCreateTag().putInt("targetZ", coverHolder.getPos().getZ()); + dataStick.getOrCreateTag().putString("face", attachedSide.getName()); + return InteractionResult.SUCCESS; + } + + @Override + public long getTicksSincePlaced() { + return coverHolder.getOffsetTimer(); + } + + @Override + public void setDisplayTargetBufferLine(int line, MutableComponent component) { + createDisplayTargetBuffer.set(line, component); + } + + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index f59a1717e15..76f3b41e123 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -73,6 +73,10 @@ public class GTCovers { public final static CoverDefinition MACHINE_CONTROLLER = register("machine_controller", MachineControllerCover::new); + public final static CoverDefinition WIRELESS_TRANSMITTER = register( + "wireless_transmitter", + WirelessTransmitterCover::new, + () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/wireless_transmitter"))); // Voiding public final static CoverDefinition ITEM_VOIDING = register("item_voiding", ItemVoidingCover::new); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 338be46274f..52264be6a38 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -26,6 +26,8 @@ import com.gregtechceu.gtceu.common.entity.GTBoat; import com.gregtechceu.gtceu.common.item.*; import com.gregtechceu.gtceu.common.item.armor.*; +import com.gregtechceu.gtceu.common.item.modules.ImageModuleBehaviour; +import com.gregtechceu.gtceu.common.item.modules.TextModuleBehaviour; import com.gregtechceu.gtceu.common.item.tool.behavior.LighterBehavior; import com.gregtechceu.gtceu.common.item.tool.behavior.MetaMachineConfigCopyBehaviour; import com.gregtechceu.gtceu.config.ConfigHolder; @@ -1423,13 +1425,13 @@ public static ItemEntry createFluidCell(Material mat, int capacit .register() : null; public static ItemEntry TOOL_DATA_STICK = REGISTRATE.item("data_stick", ComponentItem::create) - .lang("Data Stick").onRegister(attach(new DataItemBehavior())) + .lang("Data Stick").onRegister(attach(new DataItemBehavior(false, 8))) .register(); public static ItemEntry TOOL_DATA_ORB = REGISTRATE.item("data_orb", ComponentItem::create) - .lang("Data Orb").onRegister(attach(new DataItemBehavior())) + .lang("Data Orb").onRegister(attach(new DataItemBehavior(false, 64))) .register(); public static ItemEntry TOOL_DATA_MODULE = REGISTRATE.item("data_module", ComponentItem::create) - .lang("Data Module").onRegister(attach(new DataItemBehavior(true))) + .lang("Data Module").onRegister(attach(new DataItemBehavior(true, 256))) .register(); public static final Map> GLASS_LENSES = new HashMap<>(); @@ -1791,6 +1793,11 @@ public static ItemEntry createFluidCell(Material mat, int capacit new CoverPlaceBehavior(GTCovers.FLUID_FILTER))) .onRegister(materialInfo(new ItemMaterialInfo(new MaterialStack(GTMaterials.Zinc, GTValues.M * 3 / 2)))) .register(); + public static ItemEntry COVER_WIRELESS_TRANSMITTER = REGISTRATE + .item("wireless_transmitter_cover", ComponentItem::create) + .lang("Wireless Transmitter") + .onRegister(attach(new CoverPlaceBehavior(GTCovers.WIRELESS_TRANSMITTER))) + .register(); public static ItemEntry COVER_MACHINE_CONTROLLER = REGISTRATE .item("machine_controller_cover", ComponentItem::create) @@ -2501,6 +2508,14 @@ public static ItemEntry createFluidCell(Material mat, int capacit .lang("Treated Wood Boat with Chest") .register(); + public static ItemEntry TEXT_MODULE = REGISTRATE.item("text_module", ComponentItem::create) + .onRegister(attach(new TextModuleBehaviour())) + .register(); + + public static ItemEntry IMAGE_MODULE = REGISTRATE.item("image_module", ComponentItem::create) + .onRegister(attach(new ImageModuleBehaviour())) + .register(); + public static void init() { GTMaterialItems.generateMaterialItems(); GTMaterialItems.generateTools(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index bf35e656b54..ed780c94e37 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -23,6 +23,7 @@ import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.machine.electric.*; import com.gregtechceu.gtceu.common.machine.multiblock.part.*; +import com.gregtechceu.gtceu.common.machine.multiblock.part.monitor.MonitorPartMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamLiquidBoilerMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamMinerMachine; import com.gregtechceu.gtceu.common.machine.steam.SteamSolarBoiler; @@ -1038,6 +1039,12 @@ public class GTMachines { PartAbility.INPUT_LASER); public static final MachineDefinition[] LASER_OUTPUT_HATCH_4096 = registerLaserHatch(OUT, 4096, PartAbility.OUTPUT_LASER); + public static final MachineDefinition MONITOR = REGISTRATE.machine("monitor", MonitorPartMachine::new) + .rotationState(RotationState.ALL) + .model(createOverlayCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + GTCEu.id("block/machine/part/computer_monitor"))) + .tier(MV) + .register(); public static void init() { GTMultiMachines.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java new file mode 100644 index 00000000000..4b83e859957 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -0,0 +1,661 @@ +package com.gregtechceu.gtceu.common.data; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.IEnergyContainer; +import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; +import com.gregtechceu.gtceu.api.item.ComponentItem; +import com.gregtechceu.gtceu.api.item.component.IDataItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.common.blockentity.CableBlockEntity; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.ChatFormatting; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.core.Direction; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec2; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.registries.ForgeRegistries; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class GTPlaceholders { + + public static int countItems(String id, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + ItemStack itemStack = itemHandler.getStackInSlot(i); + String itemId = "%s:%s".formatted(itemStack.getItem().getCreatorModId(itemStack), + itemStack.getItem().toString()); + if (itemId.equals(id)) cnt += itemStack.getCount(); + } + return cnt; + } + + public static int countFluids(@Nullable String id, @Nullable IFluidHandler fluidHandler) { + if (fluidHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < fluidHandler.getTanks(); i++) { + FluidStack fluidStack = fluidHandler.getFluidInTank(i); + String fluidId = Objects.requireNonNull(ForgeRegistries.FLUIDS.getKey(fluidStack.getFluid())).toString(); + if (id == null || fluidId.equals(id)) cnt += fluidStack.getAmount(); + } + return cnt; + } + + public static int countItems(@Nullable ItemFilter filter, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) + return -1; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + if (filter == null || filter.test(itemHandler.getStackInSlot(i))) + cnt += itemHandler.getStackInSlot(i).getCount(); + } + return cnt; + } + + public static void initPlaceholders() { + PlaceholderHandler.addPlaceholder(new Placeholder("energy") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("energyCapacity") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("calc") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + List stringArgs = new ArrayList<>(); + args.forEach((components) -> stringArgs.add(GTStringUtils.componentsToString(components))); + return MultiLineComponent.literal(GTStringUtils.calc(stringArgs)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IItemHandler itemHandler = GTCapabilityHelper.getItemHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, itemHandler)); + if (args.size() == 1) return MultiLineComponent + .literal(countItems(GTStringUtils.componentsToString(args.get(0)), itemHandler)); + if (GTStringUtils.equals(args.get(0), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + try { + if (ctx.itemStackHandler() == null) + throw new NotSupportedException(); + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), itemHandler)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IFluidHandler fluidHandler = GTCapabilityHelper.getFluidHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, fluidHandler)); + if (args.size() == 1) + return MultiLineComponent + .literal(countFluids(GTStringUtils.componentsToString(args.get(0)), fluidHandler)); + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.empty(); // unreachable + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("if") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + if (GTStringUtils.toDouble(args.get(0)) != 0) { + return args.get(1); + } else if (args.size() > 2) return args.get(2); + else return MultiLineComponent.empty(); + } catch (NumberFormatException e) { + return args.get(1); + } + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("color") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + ChatFormatting color = ChatFormatting.getByName(GTStringUtils.componentsToString(args.get(0))); + if (color == null) throw new InvalidArgsException(); + return new MultiLineComponent(args.get(1).stream().map(c -> c.withStyle(color)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("underline") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.UNDERLINE)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("strike") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.STRIKETHROUGH)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("obf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.get(0).stream().map(c -> c.withStyle(ChatFormatting.OBFUSCATED)).toList()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("random") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + return MultiLineComponent.literal(GTValues.RNG.nextIntBetweenInclusive( + PlaceholderUtils.toInt(args.get(0)), PlaceholderUtils.toInt(args.get(1)))); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("repeat") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int count = PlaceholderUtils.toInt(args.get(0)); + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < count; i++) out.append(args.get(1)); + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("block") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal("█"); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("tick") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.cover() instanceof IPlaceholderInfoProviderCover cover) + return MultiLineComponent.literal(cover.getTicksSincePlaced()); + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("select") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkArgs(args, i + 2); + return args.get(i + 1); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(0), "get")) { + Direction direction = Direction.byName(GTStringUtils.componentsToString(args.get(1))); + if (direction == null) + throw new InvalidArgsException(); + return MultiLineComponent.literal(ctx.level() + .getSignal(ctx.pos().relative(direction), direction)); + } else if (GTStringUtils.equals(args.get(1), "set")) { + int power = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + if (ctx.cover() == null) throw new NotSupportedException(); + ctx.cover().setRedstoneSignalOutput(power); + return MultiLineComponent.empty(); + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("previousText") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int i = PlaceholderUtils.toInt(args.get(0)); + if (ctx.previousText() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("line", 1, ctx.previousText().size(), i); + return MultiLineComponent.of(ctx.previousText().get(i - 1)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("progress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getProgress()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("maxProgress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getMaxProgress()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("maintenance") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IMaintenanceMachine maintenance = GTCapabilityHelper.getMaintenanceMachine(ctx.level(), + ctx.pos(), ctx.side()); + if (maintenance == null) throw new NotSupportedException(); + return MultiLineComponent.literal(maintenance.hasMaintenanceProblems() ? 1 : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("active") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.isActive() ? 1 : 0); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("voltage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageVoltage()); + } + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("amperage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageAmperage()); + } + throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("count") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + String arg1 = GTStringUtils.componentsToString(args.get(0)); + int cnt = -1; + for (List arg : args) { + if (GTStringUtils.equals(arg, arg1)) cnt++; + } + return MultiLineComponent.literal(cnt); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("data") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + int slot = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + int capacity = -1; + if (stack.getItem() instanceof ComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof IDataItem dataComponent) { + capacity = dataComponent.getCapacity(); + break; + } + } + } + if (capacity == -1) throw new MissingItemException("any data item", slot); + PlaceholderUtils.checkRange("index", 0, capacity - 1, PlaceholderUtils.toInt(args.get(2))); + ListTag data = stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING); + while (data.size() <= PlaceholderUtils.toInt(args.get(2))) data.add(StringTag.valueOf("")); + int p = stack.getOrCreateTag().getInt("computer_monitor_cover_p"); + if (GTStringUtils.equals(args.get(2), "")) args.set(2, MultiLineComponent.literal(p)); + if (GTStringUtils.equals(args.get(0), "get")) + return MultiLineComponent + .literal(data.getString(PlaceholderUtils.toInt(args.get(2)) % capacity)); + else if (args.get(0).equalsString("set")) { + data.set(PlaceholderUtils.toInt(args.get(2)) % capacity, + StringTag.valueOf(args.get(3).toString())); + stack.getOrCreateTag().put("computer_monitor_cover_data", data); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("setp")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", + PlaceholderUtils.toInt(args.get(3)) % capacity); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("inc")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", (p + 1) % capacity); + return MultiLineComponent.empty(); + } else if (args.get(0).equalsString("dec")) { + stack.getOrCreateTag().putInt("computer_monitor_cover_p", p == 0 ? capacity - 1 : p - 1); + return MultiLineComponent.empty(); + } else throw new InvalidArgsException(); + } catch (IndexOutOfBoundsException e) { + throw new InvalidArgsException(); + } + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("combine") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < args.size(); i++) { + out.append(args.get(i)); + if (i != args.size() - 1) out.append(" "); + } + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("nbt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int slot = GTStringUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + return MultiLineComponent + .literal(ctx.itemStackHandler().getStackInSlot(slot - 1).getOrCreateTag().toString()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("toChars") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (args.get(0).isEmpty()) return MultiLineComponent.empty(); + StringBuilder out = new StringBuilder(); + for (char c : GTStringUtils.componentsToString(args.get(0)).toCharArray()) out.append(c).append(' '); + return MultiLineComponent.literal(out.substring(0, out.length() - 2)); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("toAscii") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + String arg = args.get(0).toString(); + if (arg.length() != 1) throw new InvalidArgsException(); + return MultiLineComponent.literal((int) arg.toCharArray()[0]); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("fromAscii") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.literal((char) PlaceholderUtils.toInt(args.get(0))); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("subList") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + int l = PlaceholderUtils.toInt(args.get(0)); + int r = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("start index", 0, args.size(), l); + PlaceholderUtils.checkRange("end index", 0, args.size(), r); + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = l; i < r - 1; i++) out.append(args.get(i)).append(' '); + out.append(args.get(r - 1)); + return out; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("cmp") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 3); + double a = PlaceholderUtils.toDouble(args.get(0)); + double b = PlaceholderUtils.toDouble(args.get(2)); + return switch (args.get(1).toString()) { + case ">" -> MultiLineComponent.literal(a > b ? 1 : 0); + case "<" -> MultiLineComponent.literal(a < b ? 1 : 0); + case ">=" -> MultiLineComponent.literal(a >= b ? 1 : 0); + case "<=" -> MultiLineComponent.literal(a <= b ? 1 : 0); + case "==" -> MultiLineComponent.literal(a == b ? 1 : 0); + case "!=" -> MultiLineComponent.literal(a != b ? 1 : 0); + default -> throw new InvalidArgsException(); + }; + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("bf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int slot = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + int capacity = -1; + if (stack.getItem() instanceof ComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof IDataItem dataComponent) { + capacity = dataComponent.getCapacity(); + break; + } + } + } + if (capacity == -1) throw new MissingItemException("any data item", slot); + ListTag tag = stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING); + int operationsLeft = 1000; + int p = 0; + String code = args.get(1).toString(); + Stack loops = new Stack<>(); + for (int i = 0; i < code.length() && operationsLeft > 0; i++) { + while (tag.size() <= p) tag.add(StringTag.valueOf("0")); + if (tag.getString(p).isEmpty()) tag.set(i, StringTag.valueOf("0")); + try { + switch (code.charAt(i)) { + case '+' -> tag.set(p, + StringTag.valueOf(String.valueOf(Integer.parseInt(tag.getString(p)) + 1))); + case '-' -> tag.set(p, + StringTag.valueOf(String.valueOf(Integer.parseInt(tag.getString(p)) - 1))); + case '>' -> p++; + case '<' -> p--; + case '[' -> loops.push(i); + case ']' -> { + if (Integer.parseInt(tag.getString(p)) == 0) loops.pop(); + else i = loops.peek(); + } + default -> throw new PlaceholderException(Component + .translatable("gtceu.computer_monitor_cover.error.bf_invalid", i).getString()); + } + } catch (InvalidNumberException e) { + throw new PlaceholderException(Component + .translatable("gtceu.computer_monitor_cover.error.bf_invalid_num", p, i).getString()); + } + operationsLeft--; + } + return MultiLineComponent.empty(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("cmd") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + int slot = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (!stack.getOrCreateTag().contains("boundPlayerPermLevel")) + throw new MissingItemException("any data item bound to player", slot); + int perm = stack.getOrCreateTag().getInt("boundPlayerPermLevel"); + Component displayName = Component.Serializer + .fromJson(stack.getOrCreateTag().getString("boundPlayerName")); + if (displayName == null) displayName = Component.literal("Placeholder processor"); + if (ctx.level() instanceof ServerLevel serverLevel) { + MinecraftServer server = serverLevel.getServer(); + MultiLineComponent output = MultiLineComponent.empty(); + UUID playerUUID = null; + try { + playerUUID = UUID.fromString(stack.getOrCreateTag().getString("boundPlayerUUID")); + } catch (RuntimeException ignored) {} + ServerPlayer player = playerUUID == null ? null : server.getPlayerList().getPlayer(playerUUID); + CommandSource customSource = new CommandSource() { + + @Override + public void sendSystemMessage(@NotNull Component message) { + output.append(List.of(message)); + output.appendNewline(); + } + + @Override + public boolean acceptsSuccess() { + return true; + } + + @Override + public boolean acceptsFailure() { + return true; + } + + @Override + public boolean shouldInformAdmins() { + return false; + } + }; + CommandSourceStack source = new CommandSourceStack( + customSource, + ctx.pos() == null ? Vec3.ZERO : ctx.pos().getCenter(), + Vec2.ZERO, + serverLevel, + perm, + displayName.getString(), + displayName, + server, + player); + server.getCommands().performPrefixedCommand(source, args.get(1).toString()); + return output; + } else throw new NotSupportedException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("tm") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + return MultiLineComponent.literal("™"); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("formatInt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + long n = PlaceholderUtils.toLong(args.get(0)); + Map suffixes = Map.of( + 1L, "", + 1000L, "K", + 1000000L, "M", + 1000000000L, "B", + 1000000000000L, "T"); + long max = 1; + for (Long i : suffixes.keySet()) { + if (n >= i && max < i) max = i; + } + return MultiLineComponent.literal("%.2f%s".formatted(((double) n) / max, suffixes.get(max))); + } + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index afdd68f8a89..833631ab2e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; import com.gregtechceu.gtceu.syncdata.*; import com.lowdragmc.lowdraglib.syncdata.IAccessor; @@ -25,5 +26,6 @@ public static void init() { registerSimple(MaterialPayload.class, MaterialPayload::new, Material.class, 1); registerSimple(GTRecipePayload.class, GTRecipePayload::new, GTRecipe.class, 100); registerSimple(FluidStackPayload.class, FluidStackPayload::new, FluidStack.class, -1); + registerSimple(MonitorGroupPayload.class, MonitorGroupPayload::new, MonitorGroup.class, 1); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 5fb406aef77..b49dae74de2 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -23,6 +23,7 @@ import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.machine.multiblock.electric.*; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.BedrockOreMinerMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.CharcoalPileIgniterMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.CokeOvenMachine; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveBlastFurnaceMachine; @@ -1126,5 +1127,23 @@ public class GTMultiMachines { (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); + public static final MultiblockMachineDefinition CENTRAL_MONITOR = REGISTRATE + .multiblock("central_monitor", CentralMonitorMachine::new) + .rotationState(RotationState.ALL) + .recipeType(DUMMY_RECIPES) + .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) + .pattern((definition) -> FactoryBlockPattern.start() + .aisle("BCB", "BBB", "BBB", "BBB") + .where('C', Predicates.controller(Predicates.blocks(definition.get()))) + .where('B', CentralMonitorMachine.BLOCK_PREDICATE) + .build()) + .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) + .model(createWorkableCasingMachineModel( + GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + GTCEu.id("block/multiblock/central_monitor")) + .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::createCentralMonitorRender))) + .hasBER(true) + .register(); + public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index 40dbfb79bec..453436cd61f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -324,6 +324,18 @@ public class GTResearchMachines { .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); + public static final MachineDefinition BASIC_DATA_ACCESS_HATCH = REGISTRATE + .machine("basic_data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, HV, false)) + .langValue("Basic Data Access Hatch") + .tier(HV) + .rotationState(RotationState.ALL) + .abilities(PartAbility.DATA_ACCESS) + .tooltips(Component.translatable("gtceu.machine.data_access_hatch.tooltip.0"), + Component.translatable("gtceu.machine.data_access_hatch.tooltip.1", 4), + Component.translatable("gtceu.part_sharing.disabled")) + .overlayTieredHullModel("data_access_hatch") + .register(); + public static final MachineDefinition DATA_ACCESS_HATCH = REGISTRATE .machine("data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, EV, false)) .langValue("Data Access Hatch") diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index 0d3eee9218e..1e2b6b4b43e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -103,6 +103,18 @@ public static MachineBuilder.ModelInitializer createOverlayTieredHullMachineMode }; } + public static MachineBuilder.ModelInitializer createOverlayCasingMachineModel(ResourceLocation baseCasingTexture, + ResourceLocation overlayModel) { + return (ctx, prov, builder) -> { + BlockModelBuilder model = prov.models().nested() + .parent(prov.models().getExistingFile(overlayModel)); + model.texture("all", baseCasingTexture); + + builder.forAllStatesModels(state -> model); + builder.addReplaceableTextures("all"); + }; + } + public static MachineBuilder.ModelInitializer createColorOverlayTieredHullMachineModel(ResourceLocation overlay, @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java index 349f3c506a7..86f46137601 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/DataItemBehavior.java @@ -1,6 +1,8 @@ package com.gregtechceu.gtceu.common.item; import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IDataItem; @@ -8,33 +10,54 @@ import com.gregtechceu.gtceu.api.machine.feature.IDataStickInteractable; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; +import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.ResearchManager; import net.minecraft.ChatFormatting; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import lombok.Getter; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.List; +@SuppressWarnings("ClassCanBeRecord") public class DataItemBehavior implements IInteractionItem, IAddInformation, IDataItem { private final boolean requireDataBank; + @Getter + private final int capacity; - public DataItemBehavior() { - this.requireDataBank = false; + public DataItemBehavior(boolean requireDataBank, int capacity) { + this.requireDataBank = requireDataBank; + this.capacity = capacity; } - public DataItemBehavior(boolean requireDataBank) { - this.requireDataBank = requireDataBank; + @Override + public InteractionResultHolder use(Item item, Level level, Player player, InteractionHand usedHand) { + if (player.isShiftKeyDown()) { + ItemStack stack = player.getItemInHand(usedHand); + stack.getOrCreateTag().putString("boundPlayerName", Component.Serializer.toJson(player.getDisplayName())); + int perm = 0; + while (player.hasPermissions(perm)) perm++; + stack.getOrCreateTag().putInt("boundPlayerPermLevel", perm - 1); + stack.getOrCreateTag().putString("boundPlayerUUID", player.getStringUUID()); + return new InteractionResultHolder<>(InteractionResult.SUCCESS, stack); + } + return IInteractionItem.super.use(item, level, player, usedHand); } @Override @@ -45,6 +68,27 @@ public boolean requireDataBank() { @Override public void appendHoverText(ItemStack stack, @Nullable Level level, List tooltipComponents, TooltipFlag isAdvanced) { + if (stack.getOrCreateTag().contains("boundPlayerName")) { + MutableComponent name = Component.Serializer.fromJson(stack.getOrCreateTag().getString("boundPlayerName")); + tooltipComponents.add(Component.translatable("gtceu.tooltip.player_bind", name)); + } + if (stack.getOrCreateTag().contains("targetX")) { + tooltipComponents.add(Component.translatable( + "gtceu.tooltip.wireless_transmitter_bind", + Component.literal("" + stack.getOrCreateTag().getInt("targetX")).withStyle(ChatFormatting.GOLD), + Component.literal("" + stack.getOrCreateTag().getInt("targetY")).withStyle(ChatFormatting.GOLD), + Component.literal("" + stack.getOrCreateTag().getInt("targetZ")).withStyle(ChatFormatting.GOLD), + Component.literal(stack.getOrCreateTag().getString("face")).withStyle(ChatFormatting.DARK_PURPLE))); + } + if (stack.getOrCreateTag().contains("computer_monitor_cover_config")) { + tooltipComponents.add(Component.translatable("gtceu.tooltip.computer_monitor_config")); + } + if (stack.getOrCreateTag().contains("computer_monitor_cover_data")) { + tooltipComponents.add( + Component.translatable("gtceu.tooltip.computer_monitor_data", + GTStringUtils.toComponent( + stack.getOrCreateTag().getList("computer_monitor_cover_data", Tag.TAG_STRING)))); + } ResearchManager.ResearchItem researchData = ResearchManager.readResearchId(stack); if (researchData == null) { if (stack.getOrCreateTag().contains("pos", Tag.TAG_INT_ARRAY) && stack.hasTag()) { @@ -79,6 +123,18 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List { + if (!click.isRemote) return; + + stack.getOrCreateTag().putString("url", textField.getCurrentString()); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + }); + saveButton.setButtonTexture(GuiTextures.BUTTON_CHECK); + builder.addWidget(textField); + builder.addWidget(saveButton); + return builder; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java new file mode 100644 index 00000000000..aed515a5ce6 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/item/modules/TextModuleBehaviour.java @@ -0,0 +1,112 @@ +package com.gregtechceu.gtceu.common.item.modules; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.api.placeholder.MultiLineComponent; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext; +import com.gregtechceu.gtceu.api.placeholder.PlaceholderHandler; +import com.gregtechceu.gtceu.client.renderer.monitor.IMonitorRenderer; +import com.gregtechceu.gtceu.client.renderer.monitor.MonitorTextRenderer; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange; + +import com.lowdragmc.lowdraglib.gui.widget.ButtonWidget; +import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import com.lowdragmc.lowdraglib.gui.widget.codeeditor.CodeEditorWidget; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class TextModuleBehaviour implements IMonitorModuleItem { + + private void updateText(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + StringBuilder formatStringLines = new StringBuilder(); + ListTag tag = stack.getOrCreateTag().getList("formatStringLines", StringTag.TAG_STRING); + for (Tag value : tag) { + formatStringLines.append(value.getAsString()).append('\n'); + } + MultiLineComponent text = PlaceholderHandler.processPlaceholders( + formatStringLines.toString(), + new PlaceholderContext( + machine.getLevel(), + group.getTarget(machine.getLevel()), + group.getTargetCoverSide(), + group.getPlaceholderSlotsHandler(), + group.getTargetCover(machine.getLevel()), + null)); + stack.getOrCreateTag().put("text", text.toTag()); + } + + @Override + public void tick(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + this.updateText(stack, machine, group); + } + + @Override + public IMonitorRenderer getRenderer(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + return new MonitorTextRenderer( + MultiLineComponent.fromTag(stack.getOrCreateTag().getList("text", Tag.TAG_STRING)).toImmutable(), + Math.max(stack.getOrCreateTag().getDouble("scale"), .0001)); + } + + @Override + public Widget createUIWidget(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) { + WidgetGroup builder = new WidgetGroup(); + CodeEditorWidget editor = new CodeEditorWidget(0, 0, 120, 80); + TextFieldWidget scaleInput = new TextFieldWidget( + -50, 47, + 40, 10, + null, + null); + ButtonWidget saveButton = new ButtonWidget(-40, 22, 20, 20, click -> { + if (!click.isRemote) return; + ListTag listTag = new ListTag(); + editor.getLines().forEach(line -> listTag.add(StringTag.valueOf(line))); + CompoundTag tag2 = stack.getOrCreateTag(); + tag2.put("formatStringLines", listTag); + try { + tag2.putDouble("scale", Double.parseDouble(scaleInput.getCurrentString())); + } catch (NumberFormatException ignored) {} + stack.setTag(tag2); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + }); + saveButton.setButtonTexture(GuiTextures.BUTTON_CHECK); + List tmp = new ArrayList<>(); + Supplier scaleInputSupplier = () -> { + if (tmp.isEmpty()) tmp.add(true); + else scaleInput.setTextSupplier(null); + if (!stack.getOrCreateTag().contains("scale")) { + stack.getOrCreateTag().putDouble("scale", 1); + GTNetwork.sendToServer(new SCPacketMonitorGroupNBTChange(stack, group, machine)); + return "1"; + } + return String.valueOf(Mth.clamp(stack.getOrCreateTag().getDouble("scale"), .0001, 1000)); + }; + scaleInput.setTextSupplier(scaleInputSupplier); + scaleInput.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.text_scale")); + ListTag tag = stack.getOrCreateTag().getList("formatStringLines", Tag.TAG_STRING); + List formatStringLines = new ArrayList<>(); + for (Tag line : tag) formatStringLines.add(line.getAsString()); + editor.setLines(formatStringLines); + builder.addWidget(editor); + builder.addWidget(saveButton); + Widget placeholderReference = PlaceholderHandler.getPlaceholderHandlerUI(""); + builder.addWidget(scaleInput); + placeholderReference.setSelfPosition(-100, -50); + builder.addWidget(placeholderReference); + return builder; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java index e43e3d8ab82..2b2ea3648d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/BatteryBufferMachine.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.IElectricItem; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.capability.compat.FeCompat; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; @@ -17,6 +18,7 @@ import com.gregtechceu.gtceu.utils.GTUtil; import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -38,7 +40,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault public class BatteryBufferMachine extends TieredEnergyMachine - implements IControllable, IFancyUIMachine, IMachineLife { + implements IControllable, IFancyUIMachine, IMachineLife, IMonitorComponent { public static final long AMPS_PER_BATTERY = 2L; @@ -204,6 +206,11 @@ public void onMachineRemoved() { clearInventory(batteryInventory); } + @Override + public IGuiTexture getComponentIcon() { + return GuiTextures.BUTTON_CHECK; // temporary + } + protected class EnergyBatteryTrait extends NotifiableEnergyContainer { protected EnergyBatteryTrait(int inventorySize) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java index e68d1bf7951..4f5c9d06f9e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/electric/HullMachine.java @@ -2,12 +2,15 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; import com.gregtechceu.gtceu.integration.ae2.machine.trait.GridNodeHostTrait; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; @@ -24,7 +27,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class HullMachine extends TieredPartMachine { +public class HullMachine extends TieredPartMachine implements IMonitorComponent { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(HullMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); @@ -110,4 +113,9 @@ public int tintColor(int index) { } return super.tintColor(index); } + + @Override + public IGuiTexture getComponentIcon() { + return GuiTextures.BUTTON_CHECK; // temporary (until there's a texture that is not fully 16x16 for this) + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java new file mode 100644 index 00000000000..fad6955e38d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -0,0 +1,671 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; +import com.gregtechceu.gtceu.api.item.IComponentItem; +import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.IDataInfoProvider; +import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockDisplayText; +import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.api.pattern.*; +import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection; +import com.gregtechceu.gtceu.common.data.GTBlocks; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.item.PortableScannerBehavior; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.machine.trait.CentralMonitorLogic; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.common.network.packets.SCPacketMonitorGroupNBTChange; +import com.gregtechceu.gtceu.data.lang.LangHandler; +import com.gregtechceu.gtceu.utils.GTStringUtils; +import com.gregtechceu.gtceu.utils.GTUtil; + +import com.lowdragmc.lowdraglib.gui.texture.*; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.items.IItemHandler; + +import lombok.Getter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.awt.*; +import java.util.*; +import java.util.List; +import java.util.function.Consumer; +import java.util.stream.Stream; + +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class CentralMonitorMachine extends WorkableElectricMultiblockMachine + implements IMonitorComponent, IDataInfoProvider, IMachineLife { + + public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CentralMonitorMachine.class, + WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); + + public static final TraceabilityPredicate BLOCK_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) + .setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1) + .or(Predicates.abilities(PartAbility.DATA_ACCESS).setPreviewCount(1) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_4).setPreviewCount(0)) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_16).setPreviewCount(0)) + .setMaxGlobalLimited(4)) + .or(Predicates.machines(GTMachines.HULL)) + .or(Predicates.machines(GTMachines.MONITOR)) + .or(Predicates.blocks(GTBlocks.CASING_ALUMINIUM_FROSTPROOF.get())); + + @Persisted + @DescSynced + @Getter + private int leftDist = 0, rightDist = 0, upDist = 0, downDist = 0; + @Persisted + @DescSynced + @Getter + @RequireRerender + private final List monitorGroups = new ArrayList<>(); + private final Set selectedComponents = new HashSet<>(); + private final List selectedTargets = new ArrayList<>(); + + private MultiblockState patternFindingState; + + public CentralMonitorMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } + + @Override + public void onStructureInvalid() { + super.onStructureInvalid(); + this.clearPatternFindingState(); + } + + @Override + public CentralMonitorLogic getRecipeLogic() { + return (CentralMonitorLogic) super.getRecipeLogic(); + } + + @Override + protected RecipeLogic createRecipeLogic(Object... args) { + return new CentralMonitorLogic(this); + } + + public @Nullable EnergyContainerList getFormedEnergyContainer() { + return this.energyContainer; + } + + public void tick() { + Level level = getLevel(); + if (level == null) { + return; + } + + for (MonitorGroup group : monitorGroups) { + ItemStack stack = group.getItemStackHandler().getStackInSlot(0); + if (stack.isEmpty() || !(stack.getItem() instanceof IComponentItem componentItem)) { + continue; + } + + for (IItemComponent component : componentItem.getComponents()) { + if (!(component instanceof IMonitorModuleItem module)) { + continue; + } + module.tick(stack, this, group); + GTNetwork.sendToAllPlayersTrackingChunk(level.getChunkAt(getPos()), + new SCPacketMonitorGroupNBTChange(stack, group, this)); + } + } + } + + @Override + public void onUnload() { + super.onUnload(); + this.clearPatternFindingState(); + } + + protected void clearPatternFindingState() { + if (this.patternFindingState != null) + this.patternFindingState.clean(); + this.patternFindingState = null; + } + + protected MultiblockState getPatternFindingState() { + if (this.patternFindingState == null) { + this.patternFindingState = new MultiblockState(getLevel(), getPos()); + this.patternFindingState.clean(); + } + return this.patternFindingState; + } + + public boolean isValidMonitorBlock(Level level, BlockPos pos) { + if (level.isOutsideBuildHeight(pos)) return false; + + MultiblockState state = getPatternFindingState(); + if (!state.update(pos, BLOCK_PREDICATE)) { + return false; + } + state.io = IO.BOTH; + + return Stream.concat(state.predicate.common.stream(), state.predicate.limited.stream()) + .anyMatch(predicate -> predicate.test(state)); + } + + public void updateStructureDimensions() { + Level level = getLevel(); + if (level == null) return; + + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + + Direction left = RelativeDirection.LEFT.getRelative(front, spin, false); + Direction right = RelativeDirection.RIGHT.getRelative(front, spin, false); + Direction up = RelativeDirection.UP.getRelative(front, spin, false); + Direction down = RelativeDirection.DOWN.getRelative(front, spin, false); + BlockPos.MutableBlockPos posLeft = getPos().mutable().move(left); + BlockPos.MutableBlockPos posRight = getPos().mutable().move(right); + BlockPos.MutableBlockPos posUp = getPos().mutable().move(up); + BlockPos.MutableBlockPos posDown = getPos().mutable().move(down); + this.leftDist = 0; + this.rightDist = 0; + this.upDist = 0; + this.downDist = 0; + + while (isValidMonitorBlock(level, posLeft)) { + posLeft.move(left); + leftDist++; + } + while (isValidMonitorBlock(level, posRight)) { + posRight.move(right); + rightDist++; + } + while (isValidMonitorBlockRow(level, posUp, leftDist, rightDist, left, right)) { + posUp.move(up); + upDist++; + } + while (isValidMonitorBlockRow(level, posDown, leftDist, rightDist, left, right)) { + posDown.move(down); + downDist++; + } + } + + private boolean isValidMonitorBlockRow(Level level, BlockPos pos, int leftDist, int rightDist, Direction left, + Direction right) { + BlockPos.MutableBlockPos mutable = pos.mutable(); + mutable.move(left, leftDist); + for (int i = 0; i < leftDist + rightDist; i++) { + if (!isValidMonitorBlock(level, mutable)) return false; + mutable.move(right); + } + return isValidMonitorBlock(level, mutable); + } + + @Override + public BlockPattern getPattern() { + updateStructureDimensions(); + if (leftDist + rightDist < 1 || upDist + downDist < 1) { + leftDist = 3; + rightDist = 0; + upDist = 1; + downDist = 1; + } + + StringBuilder[] pattern = new StringBuilder[upDist + downDist + 1]; + for (int i = 0; i < upDist + downDist + 1; i++) { + pattern[i] = new StringBuilder(leftDist + rightDist + 1); + for (int j = 0; j < leftDist + rightDist + 1; j++) { + if (i == downDist && j == rightDist) + pattern[i].append('C'); // controller + else + pattern[i].append('B'); // any valid block + } + } + + String[] aisle = new String[upDist + downDist + 1]; + for (int i = 0; i < upDist + downDist + 1; i++) { + aisle[i] = pattern[i].toString(); + } + + return FactoryBlockPattern.start() + .aisle(aisle) + .where('B', BLOCK_PREDICATE) + .where('C', Predicates.controller(Predicates.blocks(this.getDefinition().get()))) + .build(); + } + + public BlockPos toRelative(BlockPos pos) { + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + boolean flipped = isFlipped(); + Direction right = RelativeDirection.RIGHT.getRelative(front, spin, flipped); + Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); + + BlockPos tmp = getPos().mutable().move(right, rightDist).move(up, upDist); + + return new BlockPos(Math.abs(tmp.get(right.getAxis()) - pos.get(right.getAxis())), + Math.abs(tmp.get(up.getAxis()) - pos.get(up.getAxis())), + 0); + } + + @Nullable + public IMonitorComponent getComponent(int row, int col) { + Level level = getLevel(); + if (level == null) return null; + + Direction front = getFrontFacing(); + Direction spin = getUpwardsFacing(); + boolean flipped = isFlipped(); + + Direction left = RelativeDirection.LEFT.getRelative(front, spin, flipped); + Direction up = RelativeDirection.UP.getRelative(front, spin, flipped); + + col = leftDist + rightDist - col; + BlockPos pos = getPos().relative(left, leftDist - col).relative(up, upDist - row); + + return GTCapabilityHelper.getMonitorComponent(level, pos, null); + } + + public boolean isMonitor(int row, int col) { + IMonitorComponent component = this.getComponent(row, col); + if (component == null) return false; + return component.isMonitor(); + } + + private IGuiTexture getComponentTexture(int row, int col) { + if (row < 0 || col < 0 || row > downDist + upDist + 1 || col > leftDist + rightDist + 1) + return GuiTextures.BLANK_TRANSPARENT; + IMonitorComponent component = getComponent(row, col); + if (component == null) return GuiTextures.BLANK_TRANSPARENT; + return component.getComponentIcon(); + } + + private boolean isInAnyGroup(IMonitorComponent component) { + return monitorGroups.stream().anyMatch(group -> group.contains(component.getPos())); + } + + @Override + public void addDisplayText(List textList) { + MultiblockDisplayText.builder(textList, isFormed()) + .addWorkingStatusLine(); + getDefinition().getAdditionalDisplay().accept(this, textList); + } + + @Override + public Widget createUIWidget() { + updateStructureDimensions(); + selectedComponents.clear(); + WidgetGroup builder = (WidgetGroup) super.createUIWidget(); + + WidgetGroup main = new WidgetGroup(); + DraggableScrollableWidgetGroup componentSelection = new DraggableScrollableWidgetGroup(0, 10, 200, 110); + main.addWidget(componentSelection); + WidgetGroup options = new WidgetGroup(-100, 20, 60, 20); + WidgetGroup groupConfig = new WidgetGroup(10, 30, 100, 100); + groupConfig.setVisible(false); + + ButtonWidget infoWidget = new ButtonWidget(200, 10, 20, 20, null); + infoWidget.setButtonTexture(GuiTextures.INFO_ICON); + infoWidget.setHoverTooltips( + GTStringUtils.toImmutable(LangHandler.getSingleOrMultiLang("gtceu.central_monitor.info_tooltip"))); + builder.addWidget(infoWidget); + List configGroup = new ArrayList<>(); + configGroup.add(null); + + Consumer openGroupConfig = (group) -> { + configGroup.set(0, group); + if (group == null) { + main.setVisible(true); + groupConfig.setVisible(false); + return; + } + groupConfig.clearAllWidgets(); + groupConfig.addWidget(new LabelWidget(0, 5, () -> { + String currentName = ""; + if (configGroup.get(0) != null) { + currentName = configGroup.get(0).getName(); + } + return Component.translatable("gtceu.central_monitor.gui.currently_editing", currentName).getString(); + })); + for (int i = 0; i < 8; i++) { + SlotWidget slot = new SlotWidget(group.getPlaceholderSlotsHandler(), i, -38, 16 * i + 46); + slot.setHoverTooltips(GTStringUtils + .toImmutable(LangHandler.getMultiLang("gtceu.gui.computer_monitor_cover.slot_tooltip", i + 1))); + groupConfig.addWidget(slot); + } + SlotWidget slot = new SlotWidget( + group.getItemStackHandler(), 0, + 0, 20); + WidgetGroup itemUI = new WidgetGroup(40, 20, 100, 100); + Runnable changeListener = () -> { + if (slot.getLastItem().is(slot.getItem().getItem())) return; + itemUI.clearAllWidgets(); + if (slot.getItem().getItem() instanceof IComponentItem item) { + for (IItemComponent component : item.getComponents()) { + if (component instanceof IMonitorModuleItem module) { + itemUI.addWidget(module.createUIWidget(slot.getItem(), this, group)); + } + } + } + }; + slot.setChangeListener(changeListener); + changeListener.run(); + groupConfig.addWidget(itemUI); + groupConfig.addWidget(slot); + main.setVisible(false); + groupConfig.setVisible(true); + }; + builder.addWidget(groupConfig); + DraggableScrollableWidgetGroup groupList = new DraggableScrollableWidgetGroup(-100, 50, 70, 80); + + List>>> imageButtons = new ArrayList<>(); + Map rightClickCallbacks = new HashMap<>(); + int[] dataSlot = new int[2]; // list to be able to modify it in lambdas + dataSlot[0] = 1; // the slot (index starts from 1) + dataSlot[1] = 9; // amount of slots + IntInputWidget dataSlotInput = new IntInputWidget(120, 20, 60, -20, () -> dataSlot[0], + n -> dataSlot[0] = Mth.clamp(n, 1, dataSlot[1])); + dataSlotInput.setVisible(false); + builder.addWidget(dataSlotInput); + + Consumer addGroupToList = group -> { + ButtonWidget label = new ButtonWidget(20, groupList.widgets.size() * 15 + 5, 60, 10, null); + TextTexture text = new TextTexture(group.getName()); + text.setType(TextTexture.TextType.LEFT); + label.setButtonTexture(text); + label.setOnPressCallback(click -> { + group.getRelativePositions().forEach(pos -> { + BlockPos rel = toRelative(pos); + imageButtons.get(rel.getY()).get(rel.getX()).accept(null); + }); + if (group.getTargetRaw() != null) { + rightClickCallbacks.getOrDefault(group.getTargetRaw(), () -> {}).run(); + } + }); + groupList.addWidget(label); + + ButtonWidget configButton = new ButtonWidget( + 0, label.getSelfPositionY() - 3, + 16, 16, + GuiTextures.IO_CONFIG_COVER_SETTINGS, + click -> { + if (configGroup.get(0) == null) { + openGroupConfig.accept(group); + } else { + openGroupConfig.accept(null); + } + }); + groupList.addWidget(configButton); + }; + + monitorGroups.forEach(addGroupToList); + builder.addWidget(groupList); + main.addWidget(options); + ButtonWidget removeFromGroupButton = new ButtonWidget(0, 0, 60, 20, null); + removeFromGroupButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.remove_from_group")); + removeFromGroupButton.setVisible(false); + ButtonWidget setTargetButton = new ButtonWidget(0, 15, 60, 20, null); + setTargetButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.set_target")); + setTargetButton.setVisible(false); + ButtonWidget createGroupButton = new ButtonWidget(0, 0, 60, 20, null); + createGroupButton.setOnPressCallback(click -> { + MonitorGroup group = new MonitorGroup( + Component.translatable("gtceu.gui.central_monitor.group_default_name", monitorGroups.size() + 1) + .getString()); + for (IMonitorComponent component : selectedComponents) { + if (isInAnyGroup(component)) return; + group.add(component.getPos()); + } + monitorGroups.add(group); + addGroupToList.accept(group); + + createGroupButton.setVisible(false); + removeFromGroupButton.setVisible(true); + Iterator it = selectedComponents.iterator(); + while (it.hasNext()) { + IMonitorComponent c = it.next(); + BlockPos rel = toRelative(c.getPos()); + imageButtons.get(rel.getY()).get(rel.getX()).accept(it); + } + if (!selectedTargets.isEmpty()) { + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + } + }); + setTargetButton.setOnPressCallback(click -> { + MonitorGroup group = null; + for (MonitorGroup group2 : monitorGroups) { + for (IMonitorComponent component : selectedComponents) { + if (group2.contains(component.getPos())) { + group = group2; + break; + } + } + if (group != null) break; + } + if (group == null) return; + if (selectedTargets.isEmpty()) group.setTarget(null); + else { + group.setTarget(selectedTargets.get(0).getPos()); + group.setDataSlot(dataSlot[0] - 1); + } + }); + removeFromGroupButton.setOnPressCallback(click -> { + for (MonitorGroup group : monitorGroups) { + for (IMonitorComponent component : selectedComponents) group.remove(component.getPos()); + } + Iterator itg = monitorGroups.iterator(); + while (itg.hasNext()) { + MonitorGroup group = itg.next(); + if (group.isEmpty()) { + clearInventory(group.getItemStackHandler()); + clearInventory(group.getPlaceholderSlotsHandler()); + itg.remove(); + } + } + groupList.clearAllWidgets(); + monitorGroups.forEach(addGroupToList); + + removeFromGroupButton.setVisible(false); + createGroupButton.setVisible(true); + Iterator it = selectedComponents.iterator(); + while (it.hasNext()) { + IMonitorComponent c = it.next(); + BlockPos rel = toRelative(c.getPos()); + imageButtons.get(rel.getY()).get(rel.getX()).accept(it); + } + if (!selectedTargets.isEmpty()) { + rightClickCallbacks.getOrDefault(selectedTargets.get(0).getPos(), () -> {}).run(); + } + }); + createGroupButton.setButtonTexture(new TextTexture("gtceu.central_monitor.gui.create_group")); + createGroupButton.setVisible(false); + options.addWidget(removeFromGroupButton); + options.addWidget(createGroupButton); + options.addWidget(setTargetButton); + int startX = 20; + int startY = 30; + for (int row = 0; row <= downDist + upDist; row++) { + imageButtons.add(new ArrayList<>()); + for (int col = 0; col <= leftDist + rightDist; col++) { + IGuiTexture texture = getComponentTexture(row, col); + GuiTextureGroup textures = new GuiTextureGroup(texture, new ColorBorderTexture(2, 0xFFFFFF)); + IMonitorComponent component = getComponent(row, col); + if (component == null) { + GTUtil.getLast(imageButtons).add(it -> {}); + continue; + } + ButtonWidget img = new ButtonWidget(startX + (16 * col), startY + (16 * row), 16, 16, textures, null); + Consumer> callback = (it) -> { + if (!component.isMonitor()) return; + if (selectedComponents.contains(component)) { + if (it == null) { + selectedComponents.remove(component); + } else { + it.remove(); + } + + if (!selectedTargets.isEmpty() && selectedTargets.get(0) == component) { + ColorRectTexture rect = new ColorRectTexture(Color.BLUE); + textures.setTextures(rect, texture); + } else { + textures.setTextures(texture); + } + + createGroupButton.setVisible(selectedComponents.stream().noneMatch(this::isInAnyGroup)); + removeFromGroupButton.setVisible(selectedComponents.stream().allMatch(this::isInAnyGroup)); + setTargetButton.setVisible(removeFromGroupButton.isVisible()); + + if (selectedComponents.isEmpty()) { + createGroupButton.setVisible(false); + removeFromGroupButton.setVisible(false); + setTargetButton.setVisible(false); + } + } else { + boolean inAnyGroup = isInAnyGroup(component); + // yes I know this is terrible but if it works don't touch it :) + if (selectedComponents.isEmpty() && !inAnyGroup) createGroupButton.setVisible(true); + if (inAnyGroup) createGroupButton.setVisible(false); + if (selectedComponents.isEmpty() && inAnyGroup) { + removeFromGroupButton.setVisible(true); + setTargetButton.setVisible(true); + } + if (!inAnyGroup) { + removeFromGroupButton.setVisible(false); + setTargetButton.setVisible(false); + } + selectedComponents.add(component); + ColorRectTexture rect = new ColorRectTexture( + (selectedTargets.isEmpty() || selectedTargets.get(0) != component) ? Color.RED : + Color.PINK); + textures.setTextures(rect, texture); + } + if (isInAnyGroup(component)) { + monitorGroups.forEach(group -> { + if (group.contains(component.getPos())) { + img.setHoverTooltips( + Component.translatable("gtceu.gui.central_monitor.group", group.getName())); + } + }); + } else { + img.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.group", + Component.translatable("gtceu.gui.central_monitor.none"))); + } + }; + Runnable rightClickCallback = () -> { + if (!selectedTargets.isEmpty()) { + if (selectedTargets.get(0) == component) { + selectedTargets.clear(); + if (selectedComponents.contains(component)) { + ColorRectTexture rect = new ColorRectTexture(Color.RED); + textures.setTextures(rect, texture); + } else { + textures.setTextures(texture); + } + dataSlotInput.setVisible(false); + return; + } else { + rightClickCallbacks.get(selectedTargets.get(0).getPos()).run(); + } + } + selectedTargets.add(component); + ColorRectTexture rect; + if (selectedComponents.contains(component)) { + rect = new ColorRectTexture(Color.PINK); + } else { + rect = new ColorRectTexture(Color.BLUE); + } + textures.setTextures(rect, texture); + if (component.getDataItems() != null) { + IItemHandler dataItems = component.getDataItems(); + MonitorGroup selectedGroup = null; + for (MonitorGroup group : monitorGroups) { + for (IMonitorComponent c : selectedComponents) { + if (group.contains(c.getPos())) { + if (selectedGroup == null || selectedGroup == group) { + selectedGroup = group; + } else { + selectedGroup = null; + break; + } + } + } + } + if (selectedGroup != null) { + dataSlot[0] = selectedGroup.getDataSlot() + 1; + } + dataSlot[1] = dataItems.getSlots(); + dataSlotInput.setVisible(true); + } + }; + if (isInAnyGroup(component)) { + monitorGroups.forEach(group -> { + if (group.contains(component.getPos())) img.setHoverTooltips( + Component.translatable("gtceu.gui.central_monitor.group", group.getName())); + }); + } else { + img.setHoverTooltips(Component.translatable("gtceu.gui.central_monitor.group", + Component.translatable("gtceu.gui.central_monitor.none"))); + } + img.setOnPressCallback(click -> { + if (click.button == 0) callback.accept(null); + else if (click.button == 1) rightClickCallback.run(); + }); + componentSelection.addWidget(img); + GTUtil.getLast(imageButtons).add(callback); + rightClickCallbacks.put(component.getPos(), rightClickCallback); + } + } + builder.addWidget(main); + return builder; + } + + @Override + public IGuiTexture getComponentIcon() { + return ResourceTexture.fromSpirit(GTCEu.id("block/multiblock/network_switch/overlay_front_active")); + } + + @Override + public @NotNull List getDebugInfo(Player player, int logLevel, + PortableScannerBehavior.DisplayMode mode) { + return List.of(Component.translatable("gtceu.central_monitor.size", leftDist, rightDist, upDist, downDist)); + } + + @Override + public @NotNull List getDataInfo(PortableScannerBehavior.DisplayMode mode) { + return List.of(Component.translatable("gtceu.central_monitor.size", leftDist, rightDist, upDist, downDist)); + } + + @Override + public void onMachineRemoved() { + for (MonitorGroup group : monitorGroups) { + clearInventory(group.getItemStackHandler()); + clearInventory(group.getPlaceholderSlotsHandler()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java new file mode 100644 index 00000000000..96a74ea2164 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/monitor/MonitorGroup.java @@ -0,0 +1,124 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.cover.CoverBehavior; +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Vec3i; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; +import lombok.Getter; +import lombok.Setter; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.UnaryOperator; + +public class MonitorGroup { + + private final Set monitorPositions = new HashSet<>(); + @Getter + private final String name; + @Getter + private final CustomItemStackHandler itemStackHandler; + @Getter + private final CustomItemStackHandler placeholderSlotsHandler; + @Setter + private @Nullable BlockPos target; + @Setter + @Getter + private @Nullable Direction targetCoverSide; + @Setter + @Getter + private int dataSlot = 0; + + public MonitorGroup(String name) { + this(name, new CustomItemStackHandler(1), new CustomItemStackHandler(8)); + } + + public MonitorGroup(String name, CustomItemStackHandler handler, CustomItemStackHandler placeholderSlotsHandler) { + this.name = name; + this.itemStackHandler = handler; + this.placeholderSlotsHandler = placeholderSlotsHandler; + } + + public void add(BlockPos pos) { + monitorPositions.add(pos); + } + + public void remove(BlockPos pos) { + monitorPositions.remove(pos); + } + + public List getRow(int row, UnaryOperator toRelative) throws IndexOutOfBoundsException { + IntSet yLevelsSet = new IntOpenHashSet(); + for (BlockPos pos : monitorPositions) { + yLevelsSet.add(toRelative.apply(pos).getY()); + } + if (row < 0) row += yLevelsSet.size(); + int y = yLevelsSet.intStream().sorted().toArray()[row]; + List rowPositions = new ArrayList<>(); + for (BlockPos pos : monitorPositions) { + if (toRelative.apply(pos).getY() == y) { + rowPositions.add(toRelative.apply(pos)); + } + } + rowPositions.sort(Comparator.comparingInt(Vec3i::getX)); + return rowPositions; + } + + public boolean contains(BlockPos pos) { + return monitorPositions.contains(pos); + } + + public boolean isEmpty() { + return monitorPositions.isEmpty(); + } + + public Set getRelativePositions() { + return monitorPositions; + } + + public @Nullable CoverBehavior getTargetCover(Level level) { + if (getTarget(level) != null && targetCoverSide != null) { + ICoverable coverable = GTCapabilityHelper.getCoverable(level, getTarget(level), targetCoverSide); + if (coverable != null) return coverable.getCoverAtSide(targetCoverSide); + } + return null; + } + + public @Nullable BlockPos getTargetRaw() { + return target; + } + + public @Nullable BlockPos getTarget(Level level) { + if (target == null) return null; + + IMonitorComponent component = GTCapabilityHelper.getMonitorComponent(level, target, null); + if (component != null && component.getDataItems() != null) { + ItemStack stack = component.getDataItems().getStackInSlot(dataSlot); + CompoundTag tag = stack.getTag(); + if (tag == null) { + return null; + } + int x = tag.getInt("targetX"); + int y = tag.getInt("targetY"); + int z = tag.getInt("targetZ"); + Direction face = Direction.byName(tag.getString("face")); + if (face == null) { + return null; + } + setTargetCoverSide(face); + return new BlockPos(x, y, z); + } + return target; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java index 5ebe9a88ee2..e14e6cf198c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DataAccessHatchMachine.java @@ -1,7 +1,9 @@ package com.gregtechceu.gtceu.common.machine.multiblock.part; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.IDataAccessHatch; +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.gui.GuiTextures; @@ -20,6 +22,8 @@ import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import com.gregtechceu.gtceu.utils.ResearchManager; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; import com.lowdragmc.lowdraglib.gui.widget.Widget; import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; @@ -31,6 +35,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.items.IItemHandler; import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; @@ -44,7 +49,7 @@ @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class DataAccessHatchMachine extends TieredPartMachine - implements IMachineLife, IDataAccessHatch, IDataInfoProvider { + implements IMachineLife, IDataAccessHatch, IDataInfoProvider, IMonitorComponent { protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder( DataAccessHatchMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); @@ -76,8 +81,7 @@ public void onContentsChanged() { @Override public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { boolean isDataBank = isFormed() && getControllers().first() instanceof DataBankMachine; - if (ResearchManager.isStackDataItem(stack, isDataBank) && - ResearchManager.hasResearchTag(stack)) { + if (ResearchManager.isStackDataItem(stack, isDataBank)) { return super.insertItem(slot, stack, simulate); } return stack; @@ -108,7 +112,12 @@ public boolean shouldOpenUI(Player player, InteractionHand hand, BlockHitResult } protected int getInventorySize() { - return getTier() == GTValues.LuV ? 16 : 9; + return switch (getTier()) { + case GTValues.LuV -> 16; + case GTValues.EV -> 9; + case GTValues.HV -> 4; + default -> 1; + }; } @Override @@ -184,4 +193,14 @@ public GTRecipe modifyRecipe(GTRecipe recipe) { public ManagedFieldHolder getFieldHolder() { return MANAGED_FIELD_HOLDER; } + + @Override + public IGuiTexture getComponentIcon() { + return new ResourceTexture(GTCEu.id("textures/item/data_module.png")).getSubTexture(0, 0, 1, 1 / 13f); + } + + @Override + public IItemHandler getDataItems() { + return importItems.storage; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java new file mode 100644 index 00000000000..220bd378673 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorComponentPartMachine.java @@ -0,0 +1,12 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; + +import com.gregtechceu.gtceu.api.capability.IMonitorComponent; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; + +public abstract class MonitorComponentPartMachine extends MultiblockPartMachine implements IMonitorComponent { + + public MonitorComponentPartMachine(IMachineBlockEntity holder) { + super(holder); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java new file mode 100644 index 00000000000..4f999166910 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/monitor/MonitorPartMachine.java @@ -0,0 +1,33 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.part.monitor; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; + +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; + +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.BlockHitResult; + +public class MonitorPartMachine extends MonitorComponentPartMachine { + + public MonitorPartMachine(IMachineBlockEntity holder) { + super(holder); + } + + @Override + public boolean isMonitor() { + return true; + } + + @Override + public IGuiTexture getComponentIcon() { + return ResourceTexture.fromSpirit(GTCEu.id("item/computer_monitor_cover")); + } + + @Override + public boolean shouldOpenUI(Player player, InteractionHand hand, BlockHitResult hit) { + return false; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java new file mode 100644 index 00000000000..0d4b9cec954 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/CentralMonitorLogic.java @@ -0,0 +1,75 @@ +package com.gregtechceu.gtceu.common.machine.trait; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IWorkable; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.trait.RecipeLogic; +import com.gregtechceu.gtceu.api.misc.EnergyContainerList; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; + +import net.minecraft.util.Mth; + +public class CentralMonitorLogic extends RecipeLogic implements IWorkable { + + private static final int BASE_UPDATE_INTERVAL = 8 * 20; + + public CentralMonitorLogic(IRecipeLogicMachine machine) { + super(machine); + } + + public CentralMonitorMachine getMachine() { + return (CentralMonitorMachine) machine; + } + + private boolean consumeEnergy() { + int tier = Mth.clamp(getMachine().getTier(), GTValues.ULV, GTValues.MAX); + long energyToDrain = GTValues.VA[tier]; + EnergyContainerList energyContainer = getMachine().getFormedEnergyContainer(); + if (energyContainer == null) { + return false; + } + + long resultEnergy = energyContainer.getEnergyStored() - energyToDrain; + if (resultEnergy >= 0L && resultEnergy <= energyContainer.getEnergyCapacity()) { + energyContainer.removeEnergy(energyToDrain); + return true; + } + return false; + } + + private int getUpdateInterval() { + int interval = BASE_UPDATE_INTERVAL; + for (int i = 1; i < getMachine().getTier(); i++) { + interval /= 2; + } + return Math.max(interval, 1); + } + + @Override + public void serverTick() { + if (!getMachine().isFormed() || !isWorkingEnabled()) { + setStatus(Status.IDLE); + } else if (consumeEnergy()) { + setStatus(Status.WORKING); + isActive = true; + progress = (progress + 1) % getUpdateInterval(); + if (progress == 0) { + getMachine().tick(); + } + } else { + setStatus(Status.WAITING); + isActive = false; + progress = Math.max(progress - 2, 1); + } + } + + @Override + public int getMaxProgress() { + return getUpdateInterval(); + } + + @Override + public boolean isActive() { + return getMachine().isFormed() && this.isActive; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java index 4a3c79b1cf4..02a559b2b5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java +++ b/src/main/java/com/gregtechceu/gtceu/common/network/GTNetwork.java @@ -62,6 +62,10 @@ public static void sendToPlayer(ServerPlayer player, INetPacket packet) { INSTANCE.send(PacketDistributor.PLAYER.with(() -> player), packet); } + public static void reply(NetworkEvent.Context context, INetPacket packet) { + INSTANCE.reply(packet, context); + } + public interface INetPacket { void encode(FriendlyByteBuf buffer); @@ -78,6 +82,10 @@ public static void register(Class cls, Function { + try { + SPacketImageResponse.sendImage(url, image, context); + } catch (IOException ignored) {} + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java new file mode 100644 index 00000000000..9b7aa42c088 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SCPacketMonitorGroupNBTChange.java @@ -0,0 +1,64 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.CentralMonitorMachine; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; +import com.gregtechceu.gtceu.common.network.GTNetwork; + +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.util.LogicalSidedProvider; +import net.minecraftforge.network.NetworkEvent; + +import java.util.Optional; + +public class SCPacketMonitorGroupNBTChange implements GTNetwork.INetPacket { + + private final ItemStack stack; + private final int monitorGroupId; + private final BlockPos pos; + + public SCPacketMonitorGroupNBTChange(ItemStack stack, MonitorGroup group, CentralMonitorMachine machine) { + this.stack = stack; + this.monitorGroupId = machine.getMonitorGroups().indexOf(group); + this.pos = machine.getPos(); + } + + public SCPacketMonitorGroupNBTChange(FriendlyByteBuf buf) { + this.stack = buf.readItem(); + this.monitorGroupId = buf.readVarInt(); + this.pos = buf.readBlockPos(); + } + + @Override + public void encode(FriendlyByteBuf buffer) { + buffer.writeItemStack(stack, false); + buffer.writeVarInt(monitorGroupId); + buffer.writeBlockPos(pos); + } + + @Override + public void execute(NetworkEvent.Context context) { + Level level = LogicalSidedProvider.CLIENTWORLD.get(context.getDirection().getReceptionSide()) + .or(() -> Optional.ofNullable(context.getSender()).map(ServerPlayer::level)) + .orElse(null); + if (level == null) return; + + MetaMachine machine = MetaMachine.getMachine(level, pos); + if (machine instanceof CentralMonitorMachine centralMonitor) { + centralMonitor.getMonitorGroups().get(monitorGroupId) + .getItemStackHandler().setStackInSlot(0, stack); + } + } + + private static class ClientCallWrapper { + + private static Level getClientLevel() { + return Minecraft.getInstance().level; + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java new file mode 100644 index 00000000000..7a1ecb7071c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/common/network/packets/SPacketImageResponse.java @@ -0,0 +1,75 @@ +package com.gregtechceu.gtceu.common.network.packets; + +import com.gregtechceu.gtceu.client.util.ClientImageCache; +import com.gregtechceu.gtceu.common.network.GTNetwork; +import com.gregtechceu.gtceu.utils.GTMath; + +import net.minecraft.network.FriendlyByteBuf; +import net.minecraftforge.network.NetworkEvent; + +import org.apache.commons.lang3.ArrayUtils; + +import java.io.IOException; + +public class SPacketImageResponse implements GTNetwork.INetPacket { + + private static final int MAX_BYTES_PER_PACKET = 120000; + + private final byte[] imagePart; + private final String url; + private final int index; + private final int totalSize; + + public SPacketImageResponse(String url, byte[] imagePart, int index, int totalSize) { + this.url = url; + this.imagePart = imagePart; + this.index = index; + this.totalSize = totalSize; + } + + public SPacketImageResponse(FriendlyByteBuf buf) { + this.index = buf.readInt(); + this.totalSize = buf.readInt(); + this.url = buf.readUtf(); + this.imagePart = buf.readByteArray(); + } + + @Override + public void encode(FriendlyByteBuf buffer) { + buffer.writeInt(index); + buffer.writeInt(totalSize); + buffer.writeUtf(url); + buffer.writeByteArray(imagePart); + } + + @Override + public void execute(NetworkEvent.Context context) { + if (imagePart == null) { + return; + } + try { + ClientImageCache.receiveImagePart(url, imagePart, index, totalSize); + } catch (IOException ignored) {} + } + + public static void sendImage(String url, byte[] imageBytes, NetworkEvent.Context context) throws IOException { + if (imageBytes.length < MAX_BYTES_PER_PACKET) { + GTNetwork.reply(context, new SPacketImageResponse(url, imageBytes, 0, 1)); + } else { + int packetCount = GTMath.ceilDiv(imageBytes.length, MAX_BYTES_PER_PACKET); + int arrayIndex = 0; + + for (int i = 0; i < packetCount; i++) { + int remaining = imageBytes.length - arrayIndex; + if (remaining <= 0) { + break; + } + + byte[] part = ArrayUtils.subarray(imageBytes, arrayIndex, arrayIndex + MAX_BYTES_PER_PACKET); + GTNetwork.reply(context, new SPacketImageResponse(url, part, i, packetCount)); + + arrayIndex += MAX_BYTES_PER_PACKET; + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index fff0c21eb61..68450f99ea0 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -784,6 +784,11 @@ public static class ClientConfigs { @Configurable.Comment({ "Whether or not to enable Emissive Textures for GregTech Machines.", "Default: true" }) public boolean machinesEmissiveTextures = true; @Configurable + @Configurable.Comment({ + "Whether most machines will have block entity renderers, mainly used for rendering certain covers. (Restart required)", + "Disable if experiencing performance issues.", "Default: true" }) + public boolean machinesHaveBERsByDefault = true; + @Configurable @Configurable.Comment({ "Whether or not sounds should be played when using tools outside of crafting.", "Default: true" }) public boolean toolUseSounds = true; diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 001e53959ad..91f07ccae4f 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1420,6 +1420,275 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.tooltip.status.trinary.false", "False"); provider.add("gtceu.tooltip.status.trinary.true", "True"); provider.add("gtceu.tooltip.status.trinary.unknown", "Unknown"); + + provider.add("gtceu.tooltip.wireless_transmitter_bind", "Binding to a transmitter cover at %s %s %s facing %s"); + provider.add("gtceu.tooltip.computer_monitor_config", "Storing computer monitor cover configuration data"); + provider.add("gtceu.tooltip.computer_monitor_data", "Storing data: %s"); + + provider.add("gtceu.display_source.computer_monitor_cover", "Computer Monitor Cover"); + provider.add("gtceu.display_target.computer_monitor_cover", "Computer Monitor Cover"); + multiLang(provider, "gtceu.placeholder_info.energy", + "Returns the amount of energy stored.", + "Usage:", + " {energy} -> the amount of energy stored"); + multiLang(provider, "gtceu.placeholder_info.energyCapacity", + "Returns the max amount of energy that can be stored", + "Usage:", + "{energyCapacity} -> the energy capacity"); + multiLang(provider, "gtceu.placeholder_info.itemCount", + "Returns the amount of items (can be filtered).", + "Usage:", + " {itemCount} -> total item amount", + " {itemCount } -> amount of items with ids equal to item_id", + " {itemCount filter } -> amount of items matching filter in specified slot of this cover"); + multiLang(provider, "gtceu.placeholder_info.calc", + "Returns the result of a math function or operation.", + "Usage:", + " {calc } -> any_string", + " {calc } -> the result of the specified operation", + " {calc <+|-|*|/|//|>>|<<|%> } -> the result of the specified operation"); + multiLang(provider, "gtceu.placeholder_info.if", + "Returns one of the arguments depending on the condition. The condition is considered true if it is not an empty string and is not equal to 0.", + "Usage:", + " {if [returned_if_false]}"); + multiLang(provider, "gtceu.placeholder_info.obf", + "Returns the text from the first argument, obfuscated.", + "Usage:", + " {obf } -> obfuscated text"); + multiLang(provider, "gtceu.placeholder_info.underline", + "Returns the text from the first argument, underlined", + "Usage:", + " {underline } -> underlined text"); + multiLang(provider, "gtceu.placeholder_info.strike", + "Returns the text from the first text, displaying it as if it was crossed out", + "Usage:", + " {strike } -> crossed-out text"); + multiLang(provider, "gtceu.placeholder_info.color", + "Returns the text from the second argument, colored with the color from the first argument. All default minecraft chat colors can be used.", + "Usage:", + " {color } -> colored text"); + multiLang(provider, "gtceu.placeholder_info.tick", + "Returns the amount of ticks passed from when this cover was placed.", + "Usage:", + " {tick} -> the amount of ticks"); + multiLang(provider, "gtceu.placeholder_info.block", "Returns the block symbol (█).", + "Usage:", + " {block} -> '█'"); + multiLang(provider, "gtceu.placeholder_info.repeat", + "Returns the text from the second arguments, repeated the amount of times specified in the first argument.", + "Usage:", + " {repeat } -> text repeated the specified amount of times"); + multiLang(provider, "gtceu.placeholder_info.random", + "Returns a random number in the specified interval (inclusive).", + "Usage:", + " {random } -> a random number between min and max (inclusive)"); + multiLang(provider, "gtceu.placeholder_info.select", + "Returns the argument at the specified index (starting from 0)", + "Usage:", + " {select [arg1] [arg2] [arg3] ... -> argument at the specified index"); + multiLang(provider, "gtceu.placeholder_info.redstone", + "Returns the redstone signal strength or sets the redstone output strength", + "Usage:", + " {redstone get } -> redstone signal strength (0-15) at the specified side", + " {redstone get link } -> redstone signal strength of a Create redstone link frequency specified by a linked controller in slot #slot_index. freq_slot_index is the index of the frequency inside the controller (from left to right, 0-6)", + " {redstone set } -> empty string, sets the redstone output strength from this cover's side", + " {redstone set link } -> empty string, broadcasts the specified redstone power on the specified Create redstone link frequency"); + multiLang(provider, "gtceu.placeholder_info.fluidCount", + "Returns the amount of fluids (can be filtered).", + "Usage:", + " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified"); + multiLang(provider, "gtceu.placeholder_info.displayTarget", + "Returns the specified line that was transmitted to this cover using a display link.", + "Usage:", + " {displayTarget } -> the text on the specified line (line number is 1-100)"); + multiLang(provider, "gtceu.placeholder_info.previousText", + "Returns the text that was previously displayed by this cover at the specified line (before line-wrapping).", + "Usage:", + " {previousText } -> the text previously displayed on the specified line (index starts at 1)"); + multiLang(provider, "gtceu.placeholder_info.ae2itemCount", + "Same as itemCount, but counts items in the ME network of the block this cover is attached to.", + "Note that counting by filter or all items may cause lag!", + "Usage:", + " {itemCount} -> total item amount", + " {itemCount } -> amount of items with ids equal to item_id", + " {itemCount filter } -> amount of items matching filter in specified slot of this cover"); + multiLang(provider, "gtceu.placeholder_info.ae2fluidCount", + "Same as fluidCount, but counts items in the ME network of the block this cover is attached to.", + "Note that counting all fluids may cause lag!", + "Usage:", + " {fluidCount [fluidId]} -> the amount of all fluids, or the fluid with fluidId if specified"); + multiLang(provider, "gtceu.placeholder_info.progress", + "Returns the progress of the currently running recipe of the block this cover is attached to.", + "Note that progress is an integer between 0 and {maxProgress}", + "Usage:", + " {progress} -> the progress of the currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.maxProgress", + "Returns the maximum progress of the currently running recipe of the block this cover is attached to.", + "Example: 'Progress: {calc {calc {progress} / {maxProgress}} * 100}%'", + "Usage:", + " {maxProgress} -> the max progress of the currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.maintenance", + "Returns a 1 if there are maintenance problems in the block the cover is attached to, 0 otherwise.", + "Example: 'Maintenance status: {if {maintenance} FIXING\\ REQUIRED OK}'", + "Usage:", + " {maintenance} -> whether there are maintenance problems"); + multiLang(provider, "gtceu.placeholder_info.active", + "Returns a 1 if the block the cover is attached to is currently running a recipe, 0 otherwise.", + "Usage:", + " {active} -> whether there's a currently running recipe"); + multiLang(provider, "gtceu.placeholder_info.voltage", + "Returns the voltage in the wire/cable the cover is on.", + "Usage:", + " {voltage} -> the voltage in the wire/cable"); + multiLang(provider, "gtceu.placeholder_info.amperage", + "Returns the amperage in the wire/cable the cover is on.", + "Usage:", + " {amperage} -> the amperate in the wire/cable"); + multiLang(provider, "gtceu.placeholder_info.ae2energy", + "Returns the energy currently stored in the ME network of the block this cover is on.", + "Usage:", + " {ae2energy} -> the energy in the ME network (in AE units)"); + multiLang(provider, "gtceu.placeholder_info.ae2maxPower", + "Returns the energy capacity of the ME network of the block this cover is on.", + "Usage:", + " {ae2maxPower} -> the energy capacity of the ME network"); + multiLang(provider, "gtceu.placeholder_info.ae2powerUsage", + "Returns the energy consumption of the ME network of the block this cover is on.", + "Usage:", + " {ae2powerUsage} -> the energy consumption of the ME network"); + multiLang(provider, "gtceu.placeholder_info.ae2spatial", + "Returns information about spatial I/O in the ME network of the block this cover is on.", + "Usage:", + " {ae2spatial power} -> the amount of power required to initiate spatial I/O", + " {ae2spatial efficiency} -> the efficiency of the Spatial Containment Structure (SPS)", + " {ae2spatial size} -> the size of the SPS along the specified axis (example: 'Size: {sizeX}x{sizeY}x{sizeZ}')"); + multiLang(provider, "gtceu.placeholder_info.ae2crafting", + "Returns information about auto-crafting in the ME network of the block this cover is on.", + "Usage:", + " {ae2crafting get amount} -> the amount of crafting CPUs in the ME network", + " {ae2crafting get storage} -> the amount of crafting storage the specified CPU has", + " {ae2crafting get threads} -> the amount of co-processors the specified CPU has", + " {ae2crafting get name} -> the name of the specified crafting CPU", + " {ae2crafting get selectionMode} -> the selection mode of the specified crafting CPU (used for manual, automatic or both requests)", + " {ae2crafting get amount} -> the amount of the item that was requested, or 0 if the CPU is idle", + " {ae2crafting get item} -> the display name of the item that was requested, or 0 if the CPU is idle", + " {ae2crafting get progress} -> the crafting job progress, or 0 if the CPU is idle", + " {ae2crafting get time} -> the amount of time elapsed from the start of the craft (in nanoseconds), or 0 if the CPU is idle"); + multiLang(provider, "gtceu.placeholder_info.count", + "Returns how many of the provided arguments are equal to the first (compared as strings, so \"0\" != \"0.0\")", + "Usage:", + " {count [arg2] [arg3] [arg4] ...} -> the amount of arguments that are equal to the first"); + multiLang(provider, "gtceu.placeholder_info.data", + "Stores or retrieves some data from a data item (data stick/orb/module) in one of the slots.", + "If you leave the argument empty, it will be replaced with the value p (p is an integer from 0 to (capacity - 1) that is stored in the data item nbt).", + "Usage:", + " {data get } -> the data stored in the item in the specified slot", + " {data set } -> sets the data stored in the item in the specified slot, returns an empty string", + " {data getp } -> p", + " {data setp } -> sets p, returns an empty string", + " {data inc } -> increments p by 1, if p becomes more than or equal to capacity, sets p to 0", + " {data dec } -> decrements p by 1, if p becomes less than 0, sets p to (capacity - 1)"); + multiLang(provider, "gtceu.placeholder_info.combine", + "Combines all of it's arguments into a single string (by escaping all spaces between the arguments)", + "Example: {combine abc def ghi jkl mno} -> \"abc\\ def\\ ghi\\ jkl\\ mno\"", + "Usage:", + " {combine [arg1] [arg2] [arg3] ...} -> a string that will be treated as a single argument in further placeholders"); + multiLang(provider, "gtceu.placeholder_info.nbt", + "Returns the nbt data of the item in the specified slot", + "Usage:", + " {nbt } -> nbt data"); + multiLang(provider, "gtceu.placeholder_info.toChars", + "Returns the characters of the provided string with spaces between them", + "Example: {toChars example} -> 'e x a m p l e'", + "Usage:", + " {toChars } -> characters"); + multiLang(provider, "gtceu.placeholder_info.toAscii", + "Returns the ASCII code of the provided character", + "Usage:", + " {toAscii } -> ASCII code of the character"); + multiLang(provider, "gtceu.placeholder_info.fromAscii", + "Returns the character represented by the provided ASCII code", + "Usage:", + " {fromAscii } -> a character"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.placeholder_reference", + "All placeholders:", + "(hover for more info)"); + multiLang(provider, "gtceu.placeholder_info.subList", + "Returns arguments from with indexes from l (inclusive) to r (exclusive) (starting from 0)", + "Usage:", + " {subList [arg0] [arg1] ...} -> all arguments with indexes from l to r separated by spaces"); + multiLang(provider, "gtceu.placeholder_info.cmp", + "Returns a 1 or 0 based on the expression in it's arguments", + "Usage:", + " {cmp } -> 1 or 0, operator is one of >, <, >=, <=, ==, !="); + multiLang(provider, "gtceu.placeholder_info.bf", + "Usage:", + " {bf } -> empty string"); + multiLang(provider, "gtceu.placeholder_info.cmd", + "Executes Minecraft commands and returns their output.", + "Requires a data item bound to a player, bind any data item to yourself by right-clicking with it.", + "Usage:", + " {cmd } -> command output"); + multiLang(provider, "gtceu.placeholder_info.tm", + "Returns the ™ symbol", + "Usage:", + " {tm} -> the ™ symbol"); + multiLang(provider, "gtceu.placeholder_info.formatInt", + "Returns a string representation of the provided integer", + "Example: {formatInt 1236457} -> 1.24M", + "Usage:", + " {formatInt } -> string representation of the int"); + provider.add("gtceu.gui.computer_monitor_cover.update_interval", "Update interval (in ticks)"); + provider.add("gtceu.gui.computer_monitor_cover.edit_blank_placeholders", "Edit blank placeholders"); + provider.add("gtceu.gui.computer_monitor_cover.edit_displayed_text", "Edit displayed text"); + provider.add("gtceu.gui.central_monitor.text_scale", "Text scale"); + provider.add("gtceu.gui.central_monitor.group", "Group: %s"); + provider.add("gtceu.gui.central_monitor.group_default_name", "Group #%d"); + provider.add("gtceu.gui.central_monitor.none", "none"); + provider.add("gtceu.central_monitor.size", "Size: (%d+1+%d)x(%d+1+%d)"); + provider.add("gtceu.computer_monitor_cover.error.invalid_number", "Invalid number '%s'!"); + provider.add("gtceu.computer_monitor_cover.error.wrong_number_of_args", "Expected %d args, got %d!"); + provider.add("gtceu.computer_monitor_cover.error.not_enough_args", "Expected at least %d args, got %d!"); + provider.add("gtceu.computer_monitor_cover.error.no_cover", "No cover!"); + provider.add("gtceu.computer_monitor_cover.error.exception", "Unexpected exception occurred: %s"); + provider.add("gtceu.computer_monitor_cover.error.not_in_range", + "Expected %s to be between %d and %d (inclusive), got %d"); + provider.add("gtceu.computer_monitor_cover.error.invalid_args", "Invalid arguments!"); + provider.add("gtceu.computer_monitor_cover.error.missing_item", "Missing %s in slot %d!"); + provider.add("gtceu.computer_monitor_cover.error.bf_invalid_num", + "Invalid number at index %d when processing symbol number %d"); + provider.add("gtceu.computer_monitor_cover.error.bf_invalid", "Invalid character at %d"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.main_textbox_tooltip", + "Input string to display on line %d here.", + "It can have placeholders, for example: 'Energy: {energy}/{energyCapacity} EU'", + "Placeholders can also be inside other placeholders."); + multiLang(provider, "gtceu.gui.computer_monitor_cover.slot_tooltip", + "A slot for items that some placeholders can reference", + "Slot number: %d"); + multiLang(provider, "gtceu.gui.computer_monitor_cover.second_page_textbox_tooltip", + "Input placeholder to be used in place of %s '{}' here.", + "For example, you can have a string 'Energy: {}/{} EU' and 'energy' and 'energyCapacity' in these text boxes."); + provider.add("gtceu.computer_monitor_cover.error.no_placeholder", "No such placeholder: '%s'!"); + provider.add("gtceu.computer_monitor_cover.error.unclosed_bracket", "Unclosed bracket!"); + provider.add("gtceu.computer_monitor_cover.error.unexpected_bracket", "Unexpected closing bracket!"); + provider.add("gtceu.computer_monitor_cover.error.no_ae", "Cover holder does not have an AE2 network!"); + provider.add("gtceu.computer_monitor_cover.error.not_supported", + "This feature is not supported by this block/cover!"); + provider.add("gtceu.central_monitor.gui.create_group", "Create group"); + provider.add("gtceu.central_monitor.gui.remove_from_group", "Remove from group"); + provider.add("gtceu.central_monitor.gui.set_target", "Set target"); + provider.add("gtceu.central_monitor.gui.currently_editing", "Currently editing: %s"); + multiLang(provider, "gtceu.central_monitor.info_tooltip", + "In order to use monitors, you have to split them into groups first. A group may only have 1 module in it.", + "Select them by left-clicking, then click 'Create group'.", + "Then in the settings page for the group you can insert a module, you can configure it in the same page.", + "To delete a group, select all of it's components and click 'Remove from group'.", + "You can quickly select all components of a group by clicking on it's name. Click again to unselect.", + "Some modules may display things depending on the block they target, to set a target for a group select any component of that group and right-click on the target component.", + "You may wish to select a target that is not in the multiblock, you have to use the wireless transmitter cover for that.", + "Place the cover on the target block, right-click it with a data stick and put that data stick into a data access hatch in the multiblock.", + "Then select the data access hatch as the target, and set the slot index of your data stick in the number field that appeared."); + provider.add("gtceu.tooltip.player_bind", "Bound to player: %s"); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java index 33a20188682..7e5894bea69 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/ComputerRecipes.java @@ -22,6 +22,16 @@ public class ComputerRecipes { public static void init(Consumer provider) { + ASSEMBLER_RECIPES.recipeBuilder("basic_data_access_hatch") + .inputItems(ITEM_IMPORT_BUS[HV]) + .inputItems(TOOL_DATA_STICK, 4) + .inputItems(CustomTags.HV_CIRCUITS, 4) + .outputItems(BASIC_DATA_ACCESS_HATCH) + .inputFluids(Polyethylene, L * 2) + .cleanroom(CleanroomType.CLEANROOM) + .duration(200).EUt(VA[HV]) + .addMaterialInfo(true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("data_access_hatch") .inputItems(ITEM_IMPORT_BUS[EV]) .inputItems(TOOL_DATA_STICK, 4) @@ -43,6 +53,46 @@ public static void init(Consumer provider) { .duration(400).EUt(6000) .addMaterialInfo(true, true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("wireless_transmitter_cover") + .inputItems(plate, EnderPearl) + .inputItems(foil, AnnealedCopper) + .inputItems(EMITTER_MV) + .inputItems(wireFine, Platinum) + .inputFluids(SolderingAlloy, L) + .outputItems(COVER_WIRELESS_TRANSMITTER) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("text_module") + .inputItems(PLASTIC_CIRCUIT_BOARD) + .inputItems(foil, Steel, 4) + .inputItems(wireFine, RedAlloy, 4) + .inputItems(CustomTags.MV_CIRCUITS) + .inputFluids(SolderingAlloy, L) + .outputItems(TEXT_MODULE) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("image_module") + .inputItems(PLASTIC_CIRCUIT_BOARD) + .inputItems(foil, Electrum, 4) + .inputItems(wireFine, Silver, 4) + .inputItems(CustomTags.MV_CIRCUITS) + .inputFluids(SolderingAlloy, L) + .outputItems(IMAGE_MODULE) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("monitor_casing") + .inputItems(HULL[MV]) + .inputItems(COVER_SCREEN) + .inputItems(plate, Glass, 4) + .inputItems(wireFine, RedAlloy, 4) + .inputFluids(Glowstone, L) + .outputItems(MONITOR, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .duration(1000).EUt(VA[MV]) + .addMaterialInfo(true).save(provider); + ASSEMBLER_RECIPES.recipeBuilder("high_power_casing") .inputItems(frameGt, Iridium) .inputItems(plate, Iridium, 6) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index c871f64d3c7..2fa34fc4490 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -641,6 +641,11 @@ public static void init(Consumer provider) { new MaterialEntry(TagPrefix.gear, GTMaterials.TungstenSteel), 'P', CustomTags.LuV_CIRCUITS, 'A', GTMachines.HULL[GTValues.LuV].asStack(), 'C', new MaterialEntry(TagPrefix.pipeLargeFluid, GTMaterials.TungstenSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "central_monitor", + GTMultiMachines.CENTRAL_MONITOR.asStack(), "CMC", "SAE", "FFF", 'C', + CustomTags.MV_CIRCUITS, 'M', GTItems.COVER_SCREEN, 'S', GTItems.SENSOR_MV, + 'A', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.EMITTER_MV, + 'F', GTBlocks.CASING_ALUMINIUM_FROSTPROOF.asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "large_bronze_boiler", GTMultiMachines.LARGE_BOILER_BRONZE.asStack(), "PSP", "SAS", "PSP", 'P', diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java new file mode 100644 index 00000000000..fc5d0466e2e --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -0,0 +1,240 @@ +package com.gregtechceu.gtceu.integration.ae2; + +import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.registries.ForgeRegistries; + +import appeng.api.networking.GridHelper; +import appeng.api.networking.IGrid; +import appeng.api.networking.IGridNode; +import appeng.api.networking.IInWorldGridNodeHost; +import appeng.api.networking.crafting.CraftingJobStatus; +import appeng.api.networking.crafting.ICraftingCPU; +import appeng.api.networking.crafting.ICraftingService; +import appeng.api.stacks.AEFluidKey; +import appeng.api.stacks.AEItemKey; +import appeng.api.stacks.GenericStack; +import appeng.api.stacks.KeyCounter; +import appeng.me.helpers.IGridConnectedBlockEntity; +import org.jetbrains.annotations.Nullable; +import org.joml.Vector3i; + +import java.util.List; + +import javax.annotation.ParametersAreNonnullByDefault; + +@MethodsReturnNonnullByDefault +@ParametersAreNonnullByDefault +public class GTAEPlaceholders { + + private GTAEPlaceholders() {} + + private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException { + if (ctx.pos() == null) throw new NotSupportedException(); + IInWorldGridNodeHost nodeHost = GridHelper.getNodeHost(ctx.level(), ctx.pos()); + if (nodeHost != null) { + IGridNode node = nodeHost.getGridNode(ctx.side()); + if (node != null) return node.getGrid(); + } ; + BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); + if (blockEntity instanceof IMachineBlockEntity machineBlockEntity) { + if (machineBlockEntity.getMetaMachine() instanceof IGridConnectedBlockEntity gridMachine) { + IGrid nullable = gridMachine.getMainNode().getGrid(); + if (nullable == null) throw new NoMENetworkException(); + return nullable; + } + } + if (blockEntity instanceof IGridConnectedBlockEntity gridBlockEntity) { + IGridNode node = gridBlockEntity.getGridNode(); + if (node != null) return gridBlockEntity.getGridNode().getGrid(); + } + throw new NoMENetworkException(); + } + + private static long countItems(String id, IGrid grid) { + Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(id)); + if (item == null) return 0; + GenericStack stack = GenericStack.fromItemStack(new ItemStack(item, 1)); + if (stack == null) return 0; + return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); + } + + private static long countItems(@Nullable ItemFilter filter, IGrid grid) { + KeyCounter stacks = grid.getStorageService().getCachedInventory(); + long count = 0; + for (var stack : stacks) { + if (stack.getKey() instanceof AEItemKey && + (filter == null || filter.test(stack.getKey().wrapForDisplayOrFilter()))) + count += stack.getLongValue(); + } + return count; + } + + private static long countFluids(@Nullable String id, IGrid grid) { + if (id == null) { + KeyCounter stacks = grid.getStorageService().getCachedInventory(); + long count = 0; + for (var stack : stacks) { + if (stack.getKey() instanceof AEFluidKey) count += stack.getLongValue(); + } + return count; + } + Fluid fluid = ForgeRegistries.FLUIDS.getValue(new ResourceLocation(id)); + if (fluid == null) return 0; + GenericStack stack = GenericStack.fromFluidStack(new FluidStack(fluid, 1)); + if (stack == null) return 0; + return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); + } + + private static Vector3i getSpatialSize(IGrid grid) { + BlockPos start = grid.getSpatialService().getMin(); + BlockPos end = grid.getSpatialService().getMax(); + BlockPos tmp = end.subtract(start); + return new Vector3i(tmp.getX(), tmp.getY(), tmp.getZ()).absolute(); + } + + public static void init() { + PlaceholderHandler.addPlaceholder(new Placeholder("ae2itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, grid)); + if (args.size() == 1) + return MultiLineComponent.literal(countItems(GTStringUtils.componentsToString(args.get(0)), grid)); + if (GTStringUtils.equals(args.get(0), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + try { + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), grid)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } + } + throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, grid)); + if (args.size() == 1) + return MultiLineComponent.literal(countFluids(GTStringUtils.componentsToString(args.get(0)), grid)); + throw new WrongNumberOfArgsException(1, args.size()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2power") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getStoredPower()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2maxPower") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getMaxStoredPower()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2powerUsage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getAvgPowerUsage()); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2spatial") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1); + if (GTStringUtils.equals(args.get(0), "power")) { + return MultiLineComponent.literal(grid.getSpatialService().requiredPower()); + } else if (GTStringUtils.equals(args.get(0), "efficiency")) { + return MultiLineComponent.literal(grid.getSpatialService().currentEfficiency()); + } else if (GTStringUtils.equals(args.get(0), "sizeX")) { + return MultiLineComponent.literal(getSpatialSize(grid).x); + } else if (GTStringUtils.equals(args.get(0), "sizeY")) { + return MultiLineComponent.literal(getSpatialSize(grid).y); + } else if (GTStringUtils.equals(args.get(0), "sizeZ")) { + return MultiLineComponent.literal(getSpatialSize(grid).z); + } else throw new InvalidArgsException(); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("ae2crafting") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1, true); + ICraftingService crafting = grid.getCraftingService(); + if (GTStringUtils.equals(args.get(0), "get")) { + if (GTStringUtils.equals(args.get(1), "amount")) + return MultiLineComponent.literal(crafting.getCpus().size()); + int index = PlaceholderUtils.toInt(args.get(1)); + int i = 0; + for (ICraftingCPU cpu : crafting.getCpus()) { + if (index - 1 == i) { + CraftingJobStatus job = cpu.getJobStatus(); + if (GTStringUtils.equals(args.get(2), "storage")) + return MultiLineComponent.literal(cpu.getAvailableStorage()); + else if (GTStringUtils.equals(args.get(2), "threads")) + return MultiLineComponent.literal(cpu.getCoProcessors()); + else if (GTStringUtils.equals(args.get(2), "name")) + return MultiLineComponent + .of(cpu.getName() == null ? Component.literal("Crafting CPU " + i) : + cpu.getName().copy()); + else if (GTStringUtils.equals(args.get(2), "selectionMode")) + return MultiLineComponent.literal(cpu.getSelectionMode().name()); + else if (job == null) return MultiLineComponent.literal(0); + else if (GTStringUtils.equals(args.get(2), "amount")) + return MultiLineComponent.literal(job.crafting().amount()); + else if (GTStringUtils.equals(args.get(2), "item")) + return MultiLineComponent.of(job.crafting().what().getDisplayName().copy()); + else if (GTStringUtils.equals(args.get(2), "progress")) + return MultiLineComponent.literal(job.progress()); + else if (GTStringUtils.equals(args.get(2), "time")) + return MultiLineComponent.literal(job.elapsedTimeNanos()); + else throw new InvalidArgsException(); + } + i++; + } + throw new OutOfRangeException("cpu number", 1, crafting.getCpus().size(), index); + } // else if (GTStringUtils.equals(args.get(0), "request")) {} gonna implement that someday :) + throw new InvalidArgsException(); + } + }); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java index b71737b29af..2bcced8d85d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -13,9 +13,11 @@ public static void init() { ComputerCraftAPI.registerGenericSource(new EnergyInfoPeripheral()); ComputerCraftAPI.registerGenericSource(new TurbineMachinePeripheral()); ComputerCraftAPI.registerGenericSource(new WorkablePeripheral()); + ComputerCraftAPI.registerGenericSource(new CoverHolderPeripheral()); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_CONTROLLABLE); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_ENERGY_INFO_PROVIDER); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_TURBINE_MACHINE); ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_WORKABLE); + ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_COVERABLE); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java new file mode 100644 index 00000000000..18ba54ae798 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.integration.cctweaked.peripherals; + +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; + +import dan200.computercraft.api.lua.LuaFunction; +import dan200.computercraft.api.lua.MethodResult; +import dan200.computercraft.api.peripheral.GenericPeripheral; + +public class CoverHolderPeripheral implements GenericPeripheral { + + @Override + public String id() { + return "gtceu:coverable"; + } + + @LuaFunction + public static MethodResult setBufferedText(ICoverable coverable, String face, int line, String text) { + Direction direction = Direction.byName(face); + if (direction == null) return MethodResult.of(false, "invalid face"); + if (line < 1 || line > 100) return MethodResult.of(false, "line must be from 1 to 100 (inclusive)"); + if (coverable.getCoverAtSide(direction) instanceof IPlaceholderInfoProviderCover cover) { + cover.setDisplayTargetBufferLine(line, Component.literal(text)); + return MethodResult.of(true, "success"); + } else return MethodResult.of(false, "invalid cover"); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java new file mode 100644 index 00000000000..55e9e0aa1c2 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplaySources.java @@ -0,0 +1,36 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.integration.create.display.ComputerMonitorCoverDisplaySource; + +import net.minecraft.core.registries.Registries; + +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import java.util.function.Supplier; + +@SuppressWarnings("unused") +public class GTCreateDisplaySources { + + public static final RegistryEntry COMPUTER_MONITOR_COVER = registerToAllMachines( + "computer_monitor_cover", ComputerMonitorCoverDisplaySource::new); + + @SuppressWarnings("SameParameterValue") + private static RegistryEntry registerToAllMachines(String name, Supplier supplier) { + SimpleBuilder builder = GTCreateIntegration + .displaySource(GTRegistration.REGISTRATE, name, supplier); + builder.onRegisterAfter( + Registries.BLOCK_ENTITY_TYPE, + source -> GTRegistries.MACHINES.entries().forEach( + (entry) -> DisplaySource.BY_BLOCK_ENTITY.add( + entry.getValue().getBlockEntityType(), + source))); + return builder.register(); + } + + public static void init() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java new file mode 100644 index 00000000000..9c7c0ad62f4 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateDisplayTargets.java @@ -0,0 +1,35 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.common.registry.GTRegistration; +import com.gregtechceu.gtceu.integration.create.display.ComputerMonitorCoverDisplayTarget; + +import net.minecraft.core.registries.Registries; + +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import java.util.function.Supplier; + +public class GTCreateDisplayTargets { + + public static final RegistryEntry COMPUTER_MONITOR_COVER = registerToAllMachines( + "computer_monitor_cover", ComputerMonitorCoverDisplayTarget::new); + + @SuppressWarnings("SameParameterValue") + private static RegistryEntry registerToAllMachines(String name, Supplier supplier) { + SimpleBuilder builder = GTCreateIntegration + .displayTarget(GTRegistration.REGISTRATE, name, supplier); + builder.onRegisterAfter( + Registries.BLOCK_ENTITY_TYPE, + target -> GTRegistries.MACHINES.entries().forEach( + (entry) -> DisplayTarget.BY_BLOCK_ENTITY.register( + entry.getValue().getBlockEntityType(), + target))); + return builder.register(); + } + + public static void init() {} +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java new file mode 100644 index 00000000000..523e95a6ed1 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java @@ -0,0 +1,243 @@ +package com.gregtechceu.gtceu.integration.create; + +import com.gregtechceu.gtceu.api.placeholder.*; +import com.gregtechceu.gtceu.api.placeholder.exceptions.InvalidArgsException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.MissingItemException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.NotSupportedException; +import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.createmod.catnip.data.Couple; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import com.simibubi.create.AllItems; +import com.simibubi.create.Create; +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.api.registry.CreateRegistries; +import com.simibubi.create.api.registry.registrate.SimpleBuilder; +import com.simibubi.create.content.redstone.link.IRedstoneLinkable; +import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler; +import com.simibubi.create.content.redstone.link.controller.LinkedControllerItem; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.function.Supplier; + +public class GTCreateIntegration { + + private GTCreateIntegration() {} + + public static void init() { + GTCreateDisplaySources.init(); + GTCreateDisplayTargets.init(); + + PlaceholderHandler.addPlaceholder(new Placeholder("redstone", 1) { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + return processRedstonePlaceholder(ctx, args); + } + }); + PlaceholderHandler.addPlaceholder(new Placeholder("displayTarget") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) throw new NotSupportedException(); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("line number", 1, 100, i); + return MultiLineComponent.of(cover.getCreateDisplayTargetBuffer().get(i - 1)); + } + }); + } + + private static int getRedstoneLinkPower(PlaceholderContext ctx, + Couple freq) { + IRedstoneLinkable linkable = new IRedstoneLinkable() { + + @Override + public int getTransmittedStrength() { + return 0; + } + + @Override + public void setReceivedStrength(int power) {} + + @Override + public boolean isListening() { + return true; + } + + @Override + public boolean isAlive() { + return true; + } + + @Override + public Couple getNetworkKey() { + return freq; + } + + @Override + public BlockPos getLocation() { + return ctx.pos(); + } + }; + Set network = Create.REDSTONE_LINK_NETWORK_HANDLER.getNetworkOf(ctx.level(), + linkable); + int power = 0; + for (IRedstoneLinkable i : network) { + if (!i.isAlive()) continue; + if (!RedstoneLinkNetworkHandler.withinRange(i, linkable)) continue; + power = Math.max(power, i.getTransmittedStrength()); + } + return power; + } + + private static void setRedstoneLinkPower(PlaceholderContext ctx, + Couple freq, int power) { + TemporaryRedstoneLinkTransmitter linkable = new TemporaryRedstoneLinkTransmitter(freq, power, + ctx.pos(), ctx.level()); + Create.REDSTONE_LINK_NETWORK_HANDLER.addToNetwork(ctx.level(), linkable); + } + + private static MultiLineComponent processRedstonePlaceholder(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + if (GTStringUtils.equals(args.get(0), "get")) { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(1), "link")) { + PlaceholderUtils.checkArgs(args, 4); + int slot = PlaceholderUtils.toInt(args.get(2)); + int freq_slot = PlaceholderUtils.toInt(args.get(3)); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack item = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (item.is(AllItems.LINKED_CONTROLLER.get())) { + Couple freq = LinkedControllerItem.toFrequency(item, + freq_slot); + return MultiLineComponent.literal(getRedstoneLinkPower(ctx, freq)); + } else throw new MissingItemException("redstone link", slot); + } else { + Direction direction = Direction.byName(args.get(1).toString()); + if (direction == null) + throw new InvalidArgsException(); + return MultiLineComponent.literal(ctx.level().getSignal(ctx.pos().relative(direction), direction)); + } + } else if (GTStringUtils.equals(args.get(0), "set")) { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(1), "link")) { + PlaceholderUtils.checkArgs(args, 5); + int slot = PlaceholderUtils.toInt(args.get(2)); + int freq_slot = PlaceholderUtils.toInt(args.get(3)); + int power = PlaceholderUtils.toInt(args.get(4)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + PlaceholderUtils.checkRange("slot", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + ItemStack item = ctx.itemStackHandler().getStackInSlot(slot - 1); + if (item.is(AllItems.LINKED_CONTROLLER.get())) { + Couple freq = LinkedControllerItem.toFrequency(item, + freq_slot); + setRedstoneLinkPower(ctx, freq, power); + return MultiLineComponent.empty(); + } else throw new MissingItemException("redstone link", slot); + } else { + int power = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + if (ctx.cover() == null) throw new NotSupportedException(); + ctx.cover().setRedstoneSignalOutput(power); + return MultiLineComponent.empty(); + } + } else { + throw new InvalidArgsException(); + } + } + + public static < + T extends DisplaySource> SimpleBuilder displaySource(GTRegistrate registrate, + String name, + Supplier supplier) { + return registrate.entry(name, callback -> new SimpleBuilder<>( + registrate, registrate, name, callback, CreateRegistries.DISPLAY_SOURCE, supplier) + .byBlock(DisplaySource.BY_BLOCK) + .byBlockEntity(DisplaySource.BY_BLOCK_ENTITY)); + } + + public static < + T extends DisplayTarget> SimpleBuilder displayTarget(GTRegistrate registrate, + String name, + Supplier supplier) { + return registrate.entry(name, callback -> new SimpleBuilder<>( + registrate, registrate, name, callback, CreateRegistries.DISPLAY_TARGET, supplier) + .byBlock(DisplayTarget.BY_BLOCK) + .byBlockEntity(DisplayTarget.BY_BLOCK_ENTITY)); + } + + public static class TemporaryRedstoneLinkTransmitter implements IRedstoneLinkable { + + private static final ArrayList transmitters = new ArrayList<>(); + private final int power; + private final Couple freq; + private final BlockPos pos; + private final Level level; + private boolean alive; + + public TemporaryRedstoneLinkTransmitter(Couple frequency, int power, + BlockPos pos, Level level) { + this.power = power; + this.freq = frequency; + this.alive = true; + this.pos = pos; + this.level = level; + transmitters.add(this); + } + + @Override + public int getTransmittedStrength() { + return power; + } + + @Override + public void setReceivedStrength(int power) {} + + @Override + public boolean isListening() { + return false; + } + + @Override + public boolean isAlive() { + return alive; + } + + @Override + public Couple getNetworkKey() { + return freq; + } + + @Override + public BlockPos getLocation() { + return pos; + } + + public void destroy() { + this.alive = false; + Create.REDSTONE_LINK_NETWORK_HANDLER.updateNetworkOf(level, this); + } + + public static void destroyAll() { + while (!transmitters.isEmpty()) { + transmitters.get(transmitters.size() - 1).destroy(); + transmitters.remove(transmitters.size() - 1); + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java new file mode 100644 index 00000000000..5853ef40337 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplaySource.java @@ -0,0 +1,38 @@ +package com.gregtechceu.gtceu.integration.create.display; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.common.cover.ComputerMonitorCover; +import com.gregtechceu.gtceu.utils.GTStringUtils; + +import net.minecraft.network.chat.MutableComponent; + +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; + +import java.util.List; + +public class ComputerMonitorCoverDisplaySource extends DisplaySource { + + private int refreshTicks = 100; + + @Override + public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { + ICoverable coverable = GTCapabilityHelper.getCoverable(context.level(), context.getSourcePos(), + context.blockEntity().getDirection().getOpposite()); + if (coverable != null) { + if (coverable.getCoverAtSide( + context.blockEntity().getDirection().getOpposite()) instanceof ComputerMonitorCover cover) { + refreshTicks = cover.getUpdateInterval(); + return cover.getText(); + } + } + return GTStringUtils.literalLine("No cover!"); + } + + @Override + public int getPassiveRefreshTicks() { + return refreshTicks; + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java new file mode 100644 index 00000000000..1599ea4ce04 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/display/ComputerMonitorCoverDisplayTarget.java @@ -0,0 +1,37 @@ +package com.gregtechceu.gtceu.integration.create.display; + +import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; +import com.gregtechceu.gtceu.api.capability.ICoverable; +import com.gregtechceu.gtceu.api.placeholder.IPlaceholderInfoProviderCover; + +import net.minecraft.core.Direction; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; + +import com.simibubi.create.api.behaviour.display.DisplayTarget; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; + +import java.util.List; + +public class ComputerMonitorCoverDisplayTarget extends DisplayTarget { + + @Override + public void acceptText(int line, List text, DisplayLinkContext context) { + ICoverable coverable = GTCapabilityHelper.getCoverable(context.level(), context.getTargetPos(), Direction.DOWN); + MutableComponent component = MutableComponent.create(ComponentContents.EMPTY); + text.forEach(component::append); + if (coverable != null) { + for (Direction face : Direction.values()) { + if (coverable.getCoverAtSide(face) instanceof IPlaceholderInfoProviderCover cover) { + cover.setDisplayTargetBufferLine(line, component); + } + } + } + } + + @Override + public DisplayTargetStats provideStats(DisplayLinkContext context) { + return new DisplayTargetStats(100, 1000, this); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java b/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java new file mode 100644 index 00000000000..acfa684cc4f --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/syncdata/MonitorGroupPayload.java @@ -0,0 +1,62 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; +import com.gregtechceu.gtceu.common.machine.multiblock.electric.monitor.MonitorGroup; + +import com.lowdragmc.lowdraglib.syncdata.payload.ObjectTypedPayload; + +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.nbt.Tag; + +import org.jetbrains.annotations.Nullable; + +public class MonitorGroupPayload extends ObjectTypedPayload { + + @Override + public @Nullable Tag serializeNBT() { + CompoundTag tag = new CompoundTag(); + tag.putString("name", payload.getName()); + ListTag list = new ListTag(); + payload.getRelativePositions().forEach(pos -> { + list.add(NbtUtils.writeBlockPos(pos)); + }); + if (payload.getTargetRaw() != null) { + tag.put("targetPos", NbtUtils.writeBlockPos(payload.getTargetRaw())); + if (payload.getTargetCoverSide() != null) { + tag.putString("targetSide", payload.getTargetCoverSide().getSerializedName()); + } + } + tag.put("positions", list); + tag.putInt("dataSlot", payload.getDataSlot()); + tag.put("items", payload.getItemStackHandler().serializeNBT()); + tag.put("placeholderSlots", payload.getPlaceholderSlotsHandler().serializeNBT()); + return tag; + } + + @Override + public void deserializeNBT(Tag tag) { + if (tag instanceof CompoundTag compoundTag) { + CustomItemStackHandler handler = new CustomItemStackHandler(), + placeholderSlotsHandler = new CustomItemStackHandler(); + handler.deserializeNBT(compoundTag.getCompound("items")); + placeholderSlotsHandler.deserializeNBT(compoundTag.getCompound("placeholderSlots")); + payload = new MonitorGroup(compoundTag.getString("name"), handler, placeholderSlotsHandler); + ListTag list = compoundTag.getList("positions", Tag.TAG_COMPOUND); + for (int i = 0; i < list.size(); i++) { + payload.add(NbtUtils.readBlockPos(list.getCompound(i))); + } + if (compoundTag.contains("targetPos", Tag.TAG_COMPOUND)) { + payload.setTarget(NbtUtils.readBlockPos(compoundTag.getCompound("targetPos"))); + if (compoundTag.contains("targetSide", Tag.TAG_STRING)) { + payload.setTargetCoverSide(Direction.byName(compoundTag.getString("targetSide"))); + } + if (compoundTag.contains("dataSlot", Tag.TAG_INT)) { + payload.setDataSlot(compoundTag.getInt("dataSlot")); + } + } + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java index 05aee21f19e..6cae4eed2a3 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java @@ -62,4 +62,13 @@ public static int hashLongs(long... vals) { public static float ratio(BigInteger a, BigInteger b) { return new BigDecimal(a).divide(new BigDecimal(b), MathContext.DECIMAL32).floatValue(); } + + public static int ceilDiv(int x, int y) { + final int q = x / y; + // if the signs are the same and modulo not zero, round up + if ((x ^ y) >= 0 && (q * y != x)) { + return q + 1; + } + return q; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java index 7ff60bee2da..70912110719 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTStringUtils.java @@ -1,11 +1,21 @@ package com.gregtechceu.gtceu.utils; +import net.minecraft.ChatFormatting; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.nbt.ListTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; public class GTStringUtils { @@ -27,4 +37,189 @@ public static String fluidStackToString(@NotNull FluidStack stack) { ResourceLocation fluidId = BuiltInRegistries.FLUID.getKey(stack.getFluid()); return stack.getAmount() + "x_" + fluidId.getNamespace() + "_" + fluidId.getPath(); } + + /** + * This function does this: + *
    + *
  • {@code 1} -> {@code "1st"}
  • + *
  • {@code 2} -> {@code "2nd"}
  • + *
  • {@code 3} -> {@code "3rd"}
  • + *
  • {@code 4} -> {@code "4th"}
  • + *
  • ...
  • + *
+ */ + @NotNull + public static String getIntOrderingSuffix(int x) { + if ((x % 100) / 10 == 1) return x + "th"; + if (x % 10 == 1) return x + "st"; + if (x % 10 == 2) return x + "nd"; + if (x % 10 == 3) return x + "rd"; + return x + "th"; + } + + /** + * Returns a string with the result of the provided expression. + * This function is intended for use with user input. + * For example: + *
    + *
  • {@code {"12", "+", "34"}} -> {@code "46"}
  • + *
  • {@code {"sqrt", "16"}} -> {@code "4"}
  • + *
  • {@code {"round", "4.5"}} -> {@code "5"}
  • + *
  • {@code {"literally any string"}} -> {@code "literally any string"}
  • + *
  • {@code {"~", "0"}} -> {@code "-1"} // signed bitwise inversion
  • + *
+ * Currently the operations are: {@code {"+", "-", "*", "/", "%", ">>", "<<", "~", "round", "ceil", "floor", + * "sqrt"}} + * + * @param args the arguments, including operands and operation to calculate + * @return the result of the calculation, {@code "Invalid number!"} or {@code "Invalid expression!"} + */ + @NotNull + public static String calc(@NotNull List args) { + // yes I know this is terrible code, but I want to be able to do math in placeholders + // not going to do anything crazy like including lua or python here + if (args.size() == 3) { + try { + long a = Long.parseLong(args.get(0)); + long b = Long.parseLong(args.get(2)); + return switch (args.get(1)) { + case "+" -> String.valueOf(a + b); + case "-" -> String.valueOf(a - b); + case "*" -> String.valueOf(a * b); + case "/" -> String.valueOf(a / b); + case "%" -> String.valueOf(a % b); + case "<<" -> String.valueOf(a << b); + case ">>" -> String.valueOf(a >> b); + default -> "No such operation: '%s'".formatted(args.get(1)); + }; + } catch (NumberFormatException e) { + try { + double a = Double.parseDouble(args.get(0)); + double b = Double.parseDouble(args.get(2)); + return switch (args.get(1)) { + case "/" -> String.valueOf(a / b); + case "+" -> String.valueOf(a + b); + case "-" -> String.valueOf(a - b); + case "*" -> String.valueOf(a * b); + default -> "Invalid number: '%s' or operation '%s'".formatted(e.getMessage(), args.get(1)); + }; + } catch (NumberFormatException ex) { + return "Invalid number '%s'!".formatted(ex.getMessage()); + } + } + } else if (args.size() == 2) { + try { + long a = Long.parseLong(args.get(1)); + return switch (args.get(0)) { + case "~" -> String.valueOf(~a); + case "sqrt" -> String.valueOf(Math.sqrt(a)); + default -> "No such operation: '%s'".formatted(args.get(0)); + }; + } catch (NumberFormatException e) { + try { + double a = Double.parseDouble(args.get(1)); + return switch (args.get(0)) { + case "round" -> String.valueOf(Math.round(a)); + case "ceil" -> String.valueOf(Math.ceil(a)); + case "floor" -> String.valueOf(Math.floor(a)); + case "sqrt" -> String.valueOf(Math.sqrt(a)); + default -> "Invalid number '%s' or operation '%s'!".formatted(e.getMessage(), args.get(0)); + }; + } catch (NumberFormatException e2) { + return "Invalid number '%s'!".formatted(e2.getMessage()); + } + } + } else if (args.size() == 1) return args.get(0); + return "Invalid expression!"; + } + + public static List literalLine(String s) { + return new ArrayList<>(List.of(Component.literal(s))); + } + + public static List literalLine(long n) { + return literalLine(String.valueOf(n)); + } + + public static boolean equals(List components, String s) { + return Objects.equals(componentsToString(components), s); + } + + public static double toDouble(List components) throws NumberFormatException { + if (components.isEmpty()) return 0; + if (components.size() > 1) throw new NumberFormatException(componentsToString(components)); + return Double.parseDouble(components.get(0).getString()); + } + + public static int toInt(List components) throws NumberFormatException { + if (components.isEmpty()) return 0; + if (components.size() > 1) throw new NumberFormatException(componentsToString(components)); + return Integer.parseInt(components.get(0).getString()); + } + + public static String componentsToString(List components) { + StringBuilder out = new StringBuilder(); + if (components.isEmpty()) return out.toString(); + for (Component component : components) { + out.append(component.getString()); + out.append('\n'); + } + return out.substring(0, out.length() - 1); + } + + public static void append(List components, @Nullable String s) { + if (s != null) + GTUtil.getLast(components).append(s); + } + + public static void append(List components, char c) { + append(components, String.valueOf(c)); + } + + public static void append(List components, @Nullable List lines) { + if (lines == null) return; + if (lines.isEmpty()) return; + for (Component line : lines) { + GTUtil.getLast(components).append(line); + components.add(MutableComponent.create(ComponentContents.EMPTY)); + } + components.remove(components.size() - 1); + } + + public static List toImmutable(List singleOrMultiLang) { + return singleOrMultiLang.stream().map((c) -> (Component) c).toList(); + } + + public static List literalLine(double d) { + return literalLine(String.valueOf(d)); + } + + public static String replace(String s, String regex, List replacements) { + List out = new ArrayList<>(); + out.add(s); + replacements.forEach(replacement -> out.set(0, out.get(0).replaceFirst(regex, replacement))); + return out.get(0); + } + + public static Component toComponent(ListTag arr) { + MutableComponent component = Component.literal("["); + if (arr.size() <= 5) { + for (int i = 0; i < arr.size(); i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + if (i != arr.size() - 1) component.append(", "); + } + } else { + for (int i = 0; i < 2; i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + component.append(", "); + } + component.append("..., "); + for (int i = arr.size() - 2; i < arr.size(); i++) { + component.append(Component.literal('"' + arr.getString(i) + '"').withStyle(ChatFormatting.DARK_AQUA)); + if (i != arr.size() - 1) component.append(", "); + } + } + component.append("]"); + return component; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 3e8f210740c..7a2eebe1fbc 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -580,4 +580,12 @@ public static void addPotionTooltip(List> effects .setStyle(Style.EMPTY.withColor(ChatFormatting.GREEN)))); }); } + + public static T getLast(List list) { + return list.get(list.size() - 1); + } + + public static ArrayList list(T obj) { + return new ArrayList<>(List.of(obj)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java index f6b3a753386..fb011054de7 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/input/SyncedKeyMapping.java @@ -59,7 +59,7 @@ private SyncedKeyMapping(Supplier> mcKeyMapping) { } private SyncedKeyMapping(int keyCode) { - if (GTCEu.isClientSide()) { + if (GTCEu.isClientSide() && !GTCEu.isDataGen()) { this.keyCode = keyCode; } // Does not need to be registered, is not a configurable key mapping @@ -69,7 +69,7 @@ private SyncedKeyMapping(int keyCode) { } private SyncedKeyMapping(String nameKey, IKeyConflictContext ctx, int keyCode, String category) { - if (GTCEu.isClientSide()) { + if (GTCEu.isClientSide() && !GTCEu.isDataGen()) { this.keyMapping = (KeyMapping) createKeyMapping(nameKey, ctx, keyCode, category); } this.needsRegister = true; diff --git a/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json b/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json new file mode 100644 index 00000000000..73c914a3038 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/machine/part/computer_monitor.json @@ -0,0 +1,6 @@ +{ + "parent": "gtceu:block/overlay/front_all", + "textures": { + "overlay": "gtceu:block/overlay/machine/overlay_monitor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/models/block/overlay/front_all.json b/src/main/resources/assets/gtceu/models/block/overlay/front_all.json new file mode 100644 index 00000000000..5f89a979bf0 --- /dev/null +++ b/src/main/resources/assets/gtceu/models/block/overlay/front_all.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/cube/tinted/all", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#all", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#all", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#all", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#all", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#all", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#all", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, -0.01 ], + "to": [ 16, 16, -0.01 ], + "faces": { + "north": { "uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/gtceu/textures/block/cover/computer_monitor_emissive.png b/src/main/resources/assets/gtceu/textures/block/cover/computer_monitor_emissive.png deleted file mode 100644 index 39f7ce433dd07d1f3d2e2d7d56ef0435dba2e92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*!3HFSYrjteQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjK*1bO7srqY_hboHo}K_HzB%U&{;*&CH7P+) z;)`eUs>QMzRi{44KjRXR*6|2u*ev>NQe)v!4GC6eez%0YBO0$KsWBLnI|MLFq}$pOzrMqSpl?{!PC{xWt~$( F698hAK}G-o diff --git a/src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png b/src/main/resources/assets/gtceu/textures/block/cover/wireless_transmitter.png new file mode 100644 index 0000000000000000000000000000000000000000..68ddbb877070d73d44feb1781f5f426c1d8e9237 GIT binary patch literal 3043 zcmV<93mo)`P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0T4+jLxcT=DR z0=S3e_F>w1DOdOc&&dJ3~)H?Q8U~F)zce@$VG!Q zK)6GIdys&LlEXmLjDQZJUICO+U;+LTPy>eJX{BL|aXTh81^C+SSbi=!z7;%zaL4PZ lYgEFW=+6Po|Nl%s0|4won_mIn<+}g?002ovPDHLkV1oD*$s_;( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fcdf974a869d25f163b544d1538ea2dfd75368 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a z5n0T@z%2~Ij105pNB{*-dAc};Sooivu#vCXfXC&$M1G2M$NmTZ>zm{q8)awi2)=V6 zK&vz}zpAfa%N|6AzcGMhstS-@joCKmC5o``w$vGo-%n^3h`sxw>=L13gRa zrBD9!9IgDhHE89hsPzZVTzxRtb6WJ)wbivDl`q5DlpeidGdy-W(RlT$oZHXdY;mdKI;Vst0C87?KL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..d6fcdf974a869d25f163b544d1538ea2dfd75368 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a z5n0T@z%2~Ij105pNB{*-dAc};Sooivu#vCXfXC&$M1G2M$NmTZ>zm{q8)awi2)=V6 zK&vz}zpAfa%N|6AzcGMhstS-@joCKmC5o``w$vGo-%n^3h`sxw>=L13gRa zrBD9!9IgDhHE89hsPzZVTzxRtb6WJ)wbivDl`q5DlpeidGdy-W(RlT$oZHXdY;mdKI;Vst0C87?KL7v# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png b/src/main/resources/assets/gtceu/textures/block/multiblock/central_monitor/overlay_front_active_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..a556f63bc845e11031a1d14954556a9ba0802257 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0zmA*!3HFSYrjteQk(@Ik;M!Q+`=Ht$S`Y;1W@pj zr;B4qMC;qIgSZCu zr_6lg7sjwaDrZ&Pf0l!0`vkD3O^6o_|5PS*LnWt zbeO0>!*qqm3QJXt_)6wE98)~Uxp*(z(ii>{OfDJlxUzJ1I4$x0o|p7H`$C+{+EUrZ zt=l>pmKVAn`EdW!j?+~SnZ7Z9YgS|V`xhveK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a z5n0T@z%2~Ij105pNB{-Td%8G=SoklUys@uULBRF=nFHLdWol~wTK@kJOiI)-;fT(; zbM?{M)$c=ic9t6*aQ(GU|Ms@PP*H|7w{tUtxYF1PR_*;hL((yv*kymH+IyjL-ujaK$m?G>TQkg)P4r*WaVNjPXU%uHy}vvAI%SUwswNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^TNs2H8D`Cq02;3D>Eaj?;r@2|Zmwnnk+%PLjvPGmNX>#{-~Y`&c>Jt7zRxJp z&Rx5tVu@Z|^aJ&uCpgtPy(b-MbO;pDIDJX{x7WPq5B5#y-}kKEmrZK3mpgGpWIvo!Ew|zN z#vm>yjy12j7&2x(d;Mg;L7%e3S4XF(SA;Uw)=uPI&Y7|H;!g9fVkRW)sipO%7h1$vkt46M7suKK?1wTx#HZ`F2I5SVXoV5A&*3 gw{*U67s@zopr09ewdRsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/image_module.png b/src/main/resources/assets/gtceu/textures/item/image_module.png new file mode 100644 index 0000000000000000000000000000000000000000..8b532f202344bb6ef854393ab041291b223a6f96 GIT binary patch literal 1747 zcmb7FU1%Id9N%(!*qET=i?t7~8u|?=Zd=P^8pbt_+6cImAEPWH=?0tEa^uvRlot^p3 z@BjOM%>T9)7fw%2JUYQ~+*GwvUSjVDv**4%8y~yAkJ#&QRCzYxxceW@o?3X}Z z{IRos=+aJdd<;&?C?zF90SXj>A}U55DwbZfG~+2yv;gQsYt;3<^>L^wDzMJdt7#U5 zH$hp!xF|(;1iRSsXdEEst{?- z&f5kw4MS8U*ppkUS=BH}QHV*kToPDlB;R+LGoa`=Zc)SzGDWALsiLC+#0E_%C^{qx z^oHll6t}Yi$jkrQZ*>59#%9AFwk{($o5R^v+Iaj z8Ss*k5LCF zA)}62f8PD^3!U}$*Q@2ZdT|^7y}v)3d*Z^DaBXsOat7>vf91t$d*aduAFEfnd_I5i z$n~EddQY7`zJ+e=ZvXzt-rk!tKksZ_`{vK*Uq1K#t5-iil3#vz50gu|%db>kdwgYz z|9Wjx;`8V45publy{FoLO;w)TKl;%{NjrJt%9rgk@4S>#c6N@%hkp2F`{=h-{lXhx b{Wi&+d*Dg?GWqUs_P0}=UnqZg>ip(E2=Xn1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/text_module.png b/src/main/resources/assets/gtceu/textures/item/text_module.png new file mode 100644 index 0000000000000000000000000000000000000000..ad997f1a0ab0c20e0780ea30c6286398fbc2c9d0 GIT binary patch literal 2921 zcmV-v3zqbWP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0G3HaK~#9!V*LOAKLaIziGf1E0%IKByO&g_FxomhBMe|*U|?XLFage<%EyOOXGT&I z!|IJ2+ijhlD^a`v(}YhmPA{MXkx$uh_8Y#bqz58Q6F$vY4Ist&REb8s1`u*SMj+n4 zeH*7jRaI52@+|0z@BwV{I9-5jBQD!94CrldCqFMRFfcH#-nfxu6BsGY&VT^`0YEM3 T+mJCa00000NkvXXu0mjfS7e7x literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gtceu/textures/item/digital_interface_cover.png b/src/main/resources/assets/gtceu/textures/item/wireless_transmitter_cover.png similarity index 100% rename from src/main/resources/assets/gtceu/textures/item/digital_interface_cover.png rename to src/main/resources/assets/gtceu/textures/item/wireless_transmitter_cover.png From e5b923d29da0de5eb95652153028d4692d76fcb7 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Thu, 31 Jul 2025 02:49:13 -0600 Subject: [PATCH 246/270] Multi Amp Research Recipes (#3590) --- .../gtceu/api/recipe/ResearchRecipeBuilder.java | 15 ++++++++++----- .../data/recipe/builder/GTRecipeBuilder.java | 2 +- .../gregtechceu/gtceu/utils/ResearchManager.java | 8 +++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java index 74e4d163bcb..6a4a772f3e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ResearchRecipeBuilder.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IDataItem; import com.gregtechceu.gtceu.api.item.component.IItemComponent; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.GTStringUtils; import com.gregtechceu.gtceu.utils.ResearchManager; @@ -20,7 +21,7 @@ public abstract class ResearchRecipeBuilder> protected FluidStack fluidResearchStack = FluidStack.EMPTY; protected ItemStack dataStack; protected String researchId; - protected int eut; + protected EnergyStack eut; public T researchStack(@NotNull ItemStack researchStack) { if (!researchStack.isEmpty()) { @@ -48,8 +49,12 @@ public T researchId(String researchId) { return (T) this; } - public T EUt(int eut) { - this.eut = eut; + public T EUt(long eut) { + return EUt(eut, 1); + } + + public T EUt(long eut, long amperage) { + this.eut = new EnergyStack(eut, amperage); return (T) this; } @@ -109,7 +114,7 @@ public ItemStack getDefaultDataItem() { public GTRecipeBuilder.ResearchRecipeEntry build() { validateResearchItem(); if (duration <= 0) duration = DEFAULT_SCANNER_DURATION; - if (eut <= 0) eut = DEFAULT_SCANNER_EUT; + if (eut == null || eut.voltage() <= 0) eut = new EnergyStack(DEFAULT_SCANNER_EUT, 1); return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, duration, eut, 0); } @@ -156,7 +161,7 @@ public GTRecipeBuilder.ResearchRecipeEntry build() { // "duration" is the total CWU/t. // Not called duration in API because logic does not treat it like normal duration. int duration = totalCWU; - if (eut <= 0) eut = DEFAULT_STATION_EUT; + if (eut == null || eut.voltage() <= 0) eut = new EnergyStack(DEFAULT_STATION_EUT, 1); return new GTRecipeBuilder.ResearchRecipeEntry(researchId, itemResearchStack, fluidResearchStack, dataStack, duration, eut, cwut); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index ad31e3a0d85..d2b29ae12fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -1576,7 +1576,7 @@ public int getSolderMultiplier() { */ public record ResearchRecipeEntry(@NotNull String researchId, @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, - @NotNull ItemStack dataStack, int duration, int EUt, int CWUt) { + @NotNull ItemStack dataStack, int duration, EnergyStack EUt, int CWUt) { } } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java index 3bdad1e68fc..ee070529160 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/ResearchManager.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -132,7 +133,8 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeBuilder builder, public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, @NotNull String researchId, @NotNull ItemStack researchItem, @NotNull FluidStack researchFluid, @NotNull ItemStack dataItem, - int duration, int EUt, int CWUt, Consumer provider) { + int duration, EnergyStack eut, int CWUt, + Consumer provider) { if (!ConfigHolder.INSTANCE.machines.enableResearch) return; CompoundTag compound = dataItem.getOrCreateTag(); @@ -147,7 +149,7 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, if (!researchFluid.isEmpty()) builder.inputFluids(researchFluid); builder.outputItems(dataItem) - .EUt(EUt) + .EUt(eut.voltage(), eut.amperage()) .CWUt(CWUt) .totalCWU(duration) .save(provider); @@ -160,7 +162,7 @@ public static void createDefaultResearchRecipe(@NotNull GTRecipeType recipeType, builder.outputItems(dataItem) .duration(duration) - .EUt(EUt) + .EUt(eut.voltage(), eut.amperage()) .researchScan(true) .save(provider); } From e2e6ff3f0b2524a7399caf89c3ee88e386dd1c36 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Thu, 31 Jul 2025 20:00:26 +0200 Subject: [PATCH 247/270] Implement Gametests (#3581) Co-authored-by: kross <135918757+krossgg@users.noreply.github.com> --- build.gradle | 3 - dependencies.gradle | 4 +- gradle/scripts/moddevgradle.gradle | 1 + .../recipelogictest.recipelogic.nbt_ | Bin 651 -> 0 bytes src/test/README.md | 220 ++++++++++++++++ .../api/machine/trait/RecipeLogicTest.java | 239 ++++++++++++++++++ .../gtceu/gametest/example/ExampleTest.java | 19 ++ .../gtceu/gametest/util/TestUtils.java | 12 + .../resources/data/gtceu/structures/empty.nbt | Bin 0 -> 124 bytes .../data/gtceu/structures/empty_5x5.nbt | Bin 0 -> 458 bytes .../resources/data/gtceu/structures/lcr.nbt | Bin 0 -> 999 bytes .../structures/singleblock_chem_reactor.nbt | Bin 0 -> 794 bytes 12 files changed, 492 insertions(+), 6 deletions(-) delete mode 100644 src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ create mode 100644 src/test/README.md create mode 100644 src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java create mode 100644 src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java create mode 100644 src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java create mode 100644 src/test/resources/data/gtceu/structures/empty.nbt create mode 100644 src/test/resources/data/gtceu/structures/empty_5x5.nbt create mode 100644 src/test/resources/data/gtceu/structures/lcr.nbt create mode 100644 src/test/resources/data/gtceu/structures/singleblock_chem_reactor.nbt diff --git a/build.gradle b/build.gradle index 58e6b04219a..c42fd1dd85b 100644 --- a/build.gradle +++ b/build.gradle @@ -32,9 +32,6 @@ sourceSets { } test { - kotlin { - srcDirs += 'src/test/java' - } compileClasspath += main.output runtimeClasspath += main.output + main.runtimeClasspath } diff --git a/dependencies.gradle b/dependencies.gradle index 5c403e6af96..4334e330e3c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -115,10 +115,8 @@ dependencies { modExtraLocalRuntime(forge.kotlinforforge) modExtraLocalRuntime(forge.observable) + modExtraLocalRuntime(forge.ponder) modExtraLocalRuntime(variantOf(forge.create) { classifier("slim") }) modExtraLocalRuntime(forge.flywheel.forge) - ////////////////////////// - - testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") } diff --git a/gradle/scripts/moddevgradle.gradle b/gradle/scripts/moddevgradle.gradle index 91847820f9d..3f857566965 100644 --- a/gradle/scripts/moddevgradle.gradle +++ b/gradle/scripts/moddevgradle.gradle @@ -105,6 +105,7 @@ legacyForge { gameDirectory.set(file('run/gametest')) systemProperty('forge.enabledGameTestNamespaces', project.mod_id) + environment('TEST', 'true') } data { diff --git a/src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ b/src/main/resources/data/gtceu/structures/recipelogictest.recipelogic.nbt_ deleted file mode 100644 index c8ca803abd010bfac91f4b29601298bb1edd9e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AW!iwFP!00000|HV{oZ__XkJ}>E(rW+ebd;kf=@7OoAF{#qVrgh?L<++#4 zT4G1`xorFcel?uqw6Iae2PCi*wYKlh&-2_%2{4A->o1rAK>P%MTk&@c1sc+%(L-Eg z*uHM8y7gtWC?PY~RKiHvB|7%ZW!ptVk-?5fy3%~gyBwaOL08{T&o9u;P{FWD7@t^I zo6tJZi@UkX_;ZU1O8%;P*!E)GH+J~&HzUQ-|0 z#=3937;@HGzhbst8H_wh!U0DjvY#R!SwkELT@JhHWJcEEB6${!wAB7sdwxh!^q%Op zvyP^Ot$%n~vJmXcAX%LmOB{6@!>Bi1t1!X4zwj^Mxee3>I+2R0r>p!kdJ?cN1KIQb zHl3Gnpl&28M`ZCZG6Qp{bcd(5)+&Qy5u7A#O%kxE0ybB=#bMhyTRZeV zZ71>eOx~>w3Qj5u9vIs6`1C^#ugQ{ZqSo338~kN3hT*U52Wl^VrgqWeTKkkBE3ozsaej|4YpdzX6}%~ zTDM`|h)45=vB6F!8zjO(&+@|A4qcqH1x!3ThB7CuZXqWZkYCMvy*5umcq+iCl8s01 lzN&8_$WeM)2YiAExA3tf`3arxTYm2=d:` + - `/test runAll` + +3. **Inspect Failure Reports** + - The log will pinpoint the tick and assertion message. + - You can run the "Game Tests" configuration with debug mode on, to step through the tests. + +--- + +## Best Practices + +- **Use descriptive names**: `@GameTest(template="…") public static void myFeaturedoSomething()`. +- **Limit test time**: avoid long loops, use `timeoutTicks` if needed. +- **Group related tests** with `batch` parameter. +- **Reuse helper methods** for common patterns (e.g., inventory insertion). +- **Assert early, clearly and often**: fail fast on mismatches to simplify debugging. diff --git a/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java new file mode 100644 index 00000000000..0b385fd3952 --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogicTest.java @@ -0,0 +1,239 @@ +package com.gregtechceu.gtceu.api.machine.trait; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.gametest.util.TestUtils; + +import net.minecraft.core.BlockPos; +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class RecipeLogicTest { + + public static NotifiableItemStackHandler getInputSlot(IRecipeLogicMachine recipeLogicMachine) { + RecipeHandlerList recipeHandlerList = recipeLogicMachine + .getCapabilitiesProxy() + .get(IO.IN) + .stream() + .filter(x -> x.hasCapability(ItemRecipeCapability.CAP)) + .toList() + .get(0); + NotifiableItemStackHandler itemStackHandler = (NotifiableItemStackHandler) recipeHandlerList + .getCapability(ItemRecipeCapability.CAP).get(0); + return itemStackHandler; + } + + public static NotifiableItemStackHandler getOutputSlot(IRecipeLogicMachine recipeLogicMachine) { + RecipeHandlerList recipeHandlerList = recipeLogicMachine + .getCapabilitiesProxy() + .get(IO.OUT) + .stream() + .filter(x -> x.hasCapability(ItemRecipeCapability.CAP)) + .toList() + .get(0); + NotifiableItemStackHandler itemStackHandler = (NotifiableItemStackHandler) recipeHandlerList + .getCapability(ItemRecipeCapability.CAP).get(0); + return itemStackHandler; + } + + @GameTest(template = "lcr") + public static void recipeLogicMultiBlockTest(GameTestHelper helper) { + BlockEntity holder = helper.getBlockEntity(new BlockPos(1, 2, 0)); + if (!(holder instanceof MetaMachineBlockEntity metaMachineBlockEntity)) { + helper.fail("wrong block at relative pos [1,2,0]!"); + return; + } + MetaMachine machine = metaMachineBlockEntity.getMetaMachine(); + if (!(machine instanceof IRecipeLogicMachine recipeLogicMachine)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + if (!(machine instanceof MultiblockControllerMachine controller)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + // Force a structure check and to register the parts + controller.getPattern().checkPatternAt(controller.getMultiblockState(), false); + controller.onStructureFormed(); + + helper.assertTrue(controller.isFormed(), "Controller didn't form after structure check"); + helper.assertTrue(controller.getParts().size() == 4, + "Controller didn't register all 4 parts after structure check"); + + // Force insert the recipe into the manager. + GTRecipeType type = recipeLogicMachine.getRecipeType(); + type.getLookup().removeAllRecipes(); + type.getLookup().addRecipe(type + .recipeBuilder(GTCEu.id("test-multiblock-recipelogic")) + .id(GTCEu.id("test-multiblock-recipelogic")) + .inputItems(new ItemStack(Blocks.COBBLESTONE)) + .outputItems(new ItemStack(Blocks.STONE)) + .EUt(GTValues.VA[GTValues.UV]).duration(1) + // NBT has a schematic in it with an UV energy input hatch + .buildRawRecipe()); + + RecipeLogic recipeLogic = recipeLogicMachine.getRecipeLogic(); + + recipeLogic.findAndHandleRecipe(); + + // no recipe found + helper.assertFalse(recipeLogic.isActive(), "Recipe logic is active, even when it shouldn't be"); + helper.assertTrue(recipeLogic.getLastRecipe() == null, + "Recipe logic has somehow found a recipe, when there should be none"); + + // Put an item in the inventory that will trigger recipe recheck + NotifiableItemStackHandler inputSlots = getInputSlot(recipeLogicMachine); + NotifiableItemStackHandler outputSlots = getOutputSlot(recipeLogicMachine); + + inputSlots.insertItem(0, new ItemStack(Blocks.COBBLESTONE, 16), false); + inputSlots.onContentsChanged(); + + recipeLogic.findAndHandleRecipe(); + helper.assertFalse(recipeLogic.getLastRecipe() == null, + "Last recipe is empty, even though recipe logic should've found a recipe."); + helper.assertTrue(recipeLogic.isActive(), "Recipelogic is inactive, when it should be active."); + int stackCount = inputSlots.getStackInSlot(0).getCount(); + helper.assertTrue(stackCount == 15, "Count is wrong (should be 15, when it's %s)".formatted(stackCount)); + + // Save a reference to the old recipe so we can make sure it's getting reused + GTRecipe prev = recipeLogic.getLastRecipe(); + + // Finish the recipe, the output should generate, and the next iteration should begin + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.getLastRecipe().equals(prev), "lastRecipe is wrong"); + helper.assertTrue( + TestUtils.isItemStackEqual(getOutputSlot(recipeLogicMachine).getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "wrong output stack."); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic is not active, when it should be."); + + // Complete the second iteration, but the machine stops because its output is now full + // Fill up the recipe with enough stone to complete 1 more recipe and then nothing more. + outputSlots.setStackInSlot(0, + new ItemStack(Blocks.STONE, 63)); + for (int i = 1; i < outputSlots.getSlots(); i++) { + outputSlots.setStackInSlot(i, + new ItemStack(Blocks.STONE, 64)); + } + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "RecipeLogic is active, when it shouldn't be."); + + // Try to process again and get failed out because of full buffer. + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "Recipelogic is active, when it shouldn't be."); + + // Some room is freed in the output bus, so we can continue now. + outputSlots.setStackInSlot(0, ItemStack.EMPTY); + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic didn't start running again"); + recipeLogic.serverTick(); + helper.assertTrue( + TestUtils.isItemStackEqual(getOutputSlot(recipeLogicMachine).getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "Wrong stack."); + + // Finish. + helper.succeed(); + } + + @GameTest(template = "singleblock_chem_reactor") + public static void recipeLogicSingleBlockTest(GameTestHelper helper) { + BlockEntity holder = helper.getBlockEntity(new BlockPos(0, 1, 0)); + if (!(holder instanceof MetaMachineBlockEntity metaMachineBlockEntity)) { + helper.fail("wrong block at relative pos [0,1,0]!"); + return; + } + MetaMachine machine = metaMachineBlockEntity.getMetaMachine(); + if (!(machine instanceof IRecipeLogicMachine recipeLogicMachine)) { + helper.fail("wrong machine in MetaMachineBlockEntity!"); + return; + } + + // force insert the recipe into the manager. + GTRecipeType type = recipeLogicMachine.getRecipeType(); + type.getLookup().removeAllRecipes(); + type.getLookup().addRecipe(type + .recipeBuilder(GTCEu.id("test-singleblock")) + .id(GTCEu.id("test-singleblock")) + .inputItems(new ItemStack(Blocks.COBBLESTONE)) + .outputItems(new ItemStack(Blocks.STONE)) + .EUt(512).duration(1) + .buildRawRecipe()); + + RecipeLogic recipeLogic = recipeLogicMachine.getRecipeLogic(); + + recipeLogic.findAndHandleRecipe(); + + // no recipe found + helper.assertFalse(recipeLogic.isActive(), "Recipe logic is active, even when it shouldn't be"); + helper.assertTrue(recipeLogic.getLastRecipe() == null, + "Recipe logic has somehow found a recipe, when there should be none"); + + // put an item in the inventory that will trigger recipe recheck + NotifiableItemStackHandler inputSlots = getInputSlot(recipeLogicMachine); + NotifiableItemStackHandler outputSlots = getOutputSlot(recipeLogicMachine); + + inputSlots.insertItem(0, new ItemStack(Blocks.COBBLESTONE, 16), false); + inputSlots.onContentsChanged(); + + recipeLogic.findAndHandleRecipe(); + helper.assertFalse(recipeLogic.getLastRecipe() == null, + "Last recipe is empty, even though recipe logic should've found a recipe."); + helper.assertTrue(recipeLogic.isActive(), "Recipelogic is inactive, when it should be active."); + int stackCount = inputSlots.getStackInSlot(0).getCount(); + helper.assertTrue(stackCount == 15, "Count is wrong (should be 15, when it's %s)".formatted(stackCount)); + + // Save a reference to the old recipe so we can make sure it's getting reused + GTRecipe prev = recipeLogic.getLastRecipe(); + + // Finish the recipe, the output should generate, and the next iteration should begin + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.getLastRecipe().equals(prev), "lastRecipe is wrong"); + helper.assertTrue(TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "wrong output stack."); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic is not active, when it should be."); + + // Complete the second iteration, but the machine stops because its output is now full + outputSlots.setStackInSlot(0, + new ItemStack(Blocks.STONE, 63)); + outputSlots.setStackInSlot(1, + new ItemStack(Blocks.STONE, 64)); + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "RecipeLogic is active, when it shouldn't be."); + + // Try to process again and get failed out because of full buffer. + recipeLogic.serverTick(); + helper.assertFalse(recipeLogic.isActive(), "Recipelogic is active, when it shouldn't be."); + + // Some room is freed in the output bus, so we can continue now. + outputSlots.setStackInSlot(0, ItemStack.EMPTY); + recipeLogic.serverTick(); + helper.assertTrue(recipeLogic.isActive(), "RecipeLogic didn't start running again"); + recipeLogic.serverTick(); + helper.assertTrue( + TestUtils.isItemStackEqual( + outputSlots.getStackInSlot(0), + new ItemStack(Blocks.STONE, 1)), + "Wrong stack."); + + // Finish. + helper.succeed(); + } +} diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java b/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java new file mode 100644 index 00000000000..06d67e5533f --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/gametest/example/ExampleTest.java @@ -0,0 +1,19 @@ +package com.gregtechceu.gtceu.gametest.example; + +import com.gregtechceu.gtceu.GTCEu; + +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class ExampleTest { + + @GameTest(template = "empty") + public static void myTest(GameTestHelper helper) { + helper.assertTrue(true, "true is false"); + helper.succeed(); + } +} diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java new file mode 100644 index 00000000000..797f800341d --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -0,0 +1,12 @@ +package com.gregtechceu.gtceu.gametest.util; + +import net.minecraft.world.item.ItemStack; + +public class TestUtils { + + // Compares two itemstacks' items and amounts + // DOES NOT CHECK TAGS OR NBT ETC! + public static boolean isItemStackEqual(ItemStack stack1, ItemStack stack2) { + return ItemStack.isSameItem(stack1, stack2) && stack1.getCount() == stack2.getCount(); + } +} diff --git a/src/test/resources/data/gtceu/structures/empty.nbt b/src/test/resources/data/gtceu/structures/empty.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7234628794b5478abc97df6ef0a125a2797197bf GIT binary patch literal 124 zcmb2|=3oGW|F)+$@-;aKv^-Q~Kjm1Vn3e7Qduq=~w;jscqkppP+q&qHO1=u6W+NYqj?`q}{$)&)B=uqW;m2Q$FQ&9^JomxD9n?S%~iZ csS$N=iGAnk)}tos2^Ei6MJDW6GYx1d0L@W0sQ>@~ literal 0 HcmV?d00001 diff --git a/src/test/resources/data/gtceu/structures/empty_5x5.nbt b/src/test/resources/data/gtceu/structures/empty_5x5.nbt new file mode 100644 index 0000000000000000000000000000000000000000..08994623c64153dfcdf62401f4049c505525d2fa GIT binary patch literal 458 zcmb2|=3oGW|GhWPdL4EUX?tiqd8OIZdlRy+>)q{7ZAqwKGIQz!){5)fF6pl>x+l!B z^aGom$3C`QhSF=#TrQVB^QLNDN#C}-<91(Ho-MO=tFE{|zij^JXP=&?Z+ZCI;dZ{2>|Rqe}VVtIk5ahZiL*Nm$bX{Pfcd(*=n&n!N$=9uy7k7u%MHcOq~bEn_o z@l2Sk9wSf)Ci{6m>zS;KW=;s9nGohIt+H9_mIBCtHZzYj(=Coh`up`8VeIJ*k-WJR zK&n%=-Tu3PH_c%6LI^PlE^!WM0nmi27uZhj*`v=4QxCEiDxC9+$7IVvMvyVgGlCH| zJx7=x_s(;{Lf%Q0mT>)Gr`@%>l>jmaOhD`ax$~I}$Q=+TRJ8#e7k7^x{AtN3;GRV(-I+xppNZeQB%_}|Q8#kn)t HgcukAjBDI# literal 0 HcmV?d00001 diff --git a/src/test/resources/data/gtceu/structures/lcr.nbt b/src/test/resources/data/gtceu/structures/lcr.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0d80abad927c15075d6f173fab30ea27f0de2cea GIT binary patch literal 999 zcmVxZzDwzu6fuQk2l$9C6HJ+a^j2-+FO)tB%>^>Hd(Ht zPEXlxWu|-74~Os%xWQhz@CW#NNSvVNWo*l_d$EK-Vxq|7nXkWkbk*186kr6g5#M73 z0R4Yle~utQX@wPNpuR>hye$;JGbw%fbOceQOut}xMKCayS?pG9!vr3fa0e#v;0Zi< zLJyxq4_l#!E$DpO7kl6l`zBBD2xgTh+~V^-e?kv`ppV}JvoH40Bldkffd^0M;dAI= zEA+4h{pSiMdIS@AV8R`kz=J37;0Zl^4n1szTWzHf$y=MkfU5;+`Z`ee5_JTzeW;og zjv;>gc5*>?@t4QH|MXk*`PDB!e)03KpS}Bv;G;{WXL!yk0||s8hfijfqkF-eRawb| zv?!V6n9Z5x^9YWs`k9ckb5$t)2VIXy#cH_mfo=wHa;f}iAS+PUvMkMHaNK05@D#gN-8rt3xs*)rcV~5f+TmES)pX>O)_;@+=voe51$!lDwO%z)S|u=QkZ!SspF;%NU+pWm$2q>hw6}%o`^qC921F2|Q&D;hV!ePmTXm@2h+NyT8nEEQZPzZMixrJsUbCzGfFop zy(~mkQA$1aWOIv$|Ad}=w5}&Y{x2v0DLDz=UrzcFZMD{p4nAU^BB5swb+3|r)G<71 zpInp6nD-jC9+6*-e!Q&FmT|R8J$q|&bW0A5mtd@{>ZHdJ?F!l(K_tW*!%6GpRnjs+(*)MT%D^g(BYzXl2{jXD zPZ%pCw*VP*L{Tbj`xXncyqUq8p}TBCAteKf%zZ9}rav0++O8yf4I-fGhamX2;VhS-ot7?uKxR@n^Q0sZeGdDB@hxJl( zoL8deCx(rZ*dzE!SLI6opg}2Wlq1vwcPWGHP^%KPlcNoHHF8nnFjo`7J#1y@gQFZN zwd55m5bjSb$LjfXHlz>>!C5}k$T%@W@i)1ep_{A+8G0@jLyFhTd5z-?qOuLC-}IQ9 z1xd^`8{6ktly)9NYqwC9v_6XnBHMv~cj>z99mg?_Jjfq_5zZr)=jyC4oguU;4!ku6 zVuXPg!cKciPq52MLt-9?CR zR+Nt8Xq9Mep+sJDn_ Date: Thu, 31 Jul 2025 15:30:55 -0600 Subject: [PATCH 248/270] Fix EnergyContainerList drain logic with multiple hatches (#3595) --- .../com/gregtechceu/gtceu/api/misc/EnergyContainerList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java index dc51c262b35..034603a682a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java +++ b/src/main/java/com/gregtechceu/gtceu/api/misc/EnergyContainerList.java @@ -146,7 +146,7 @@ public long changeEnergy(long energyToAdd) { long energyAdded = 0L; for (IEnergyContainer container : this.energyContainerList) { energyAdded += container.changeEnergy(energyToAdd - energyAdded); - if (energyAdded >= energyToAdd) { + if (energyAdded == energyToAdd) { return energyAdded; } } From ec810c5cde36e07dfe6aa0f60f0b56ea78b3a964 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Fri, 1 Aug 2025 00:30:46 +0200 Subject: [PATCH 249/270] Fix firebox casing value and material info (#3592) --- .../data/recipe/misc/MachineRecipeLoader.java | 12 ++++++++---- .../data/recipe/misc/MetaTileEntityLoader.java | 17 +++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index 3e9d018c616..593d420cbaa 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -759,7 +759,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, Bronze, 3) .inputItems(frameGt, Bronze) .inputItems(plate, Bronze, 3) - .outputItems(GTBlocks.FIREBOX_BRONZE, 2) + .outputItems(GTBlocks.FIREBOX_BRONZE, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(100) .EUt(VA[LV]) .save(provider); @@ -767,7 +768,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, Steel, 3) .inputItems(frameGt, Steel) .inputItems(plate, Steel, 3) - .outputItems(GTBlocks.FIREBOX_STEEL, 2) + .outputItems(GTBlocks.FIREBOX_STEEL, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(200) .EUt(VA[LV]) .save(provider); @@ -775,7 +777,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, Titanium, 3) .inputItems(frameGt, Titanium) .inputItems(plate, Titanium, 3) - .outputItems(GTBlocks.FIREBOX_TITANIUM, 2) + .outputItems(GTBlocks.FIREBOX_TITANIUM, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(300) .EUt(VA[HV]) .save(provider); @@ -783,7 +786,8 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(rod, TungstenSteel, 3) .inputItems(frameGt, TungstenSteel) .inputItems(plate, TungstenSteel, 3) - .outputItems(GTBlocks.FIREBOX_TUNGSTENSTEEL, 2) + .outputItems(GTBlocks.FIREBOX_TUNGSTENSTEEL, ConfigHolder.INSTANCE.recipes.casingsPerCraft) + .addMaterialInfo(true, true) .duration(400) .EUt(VA[EV]) .save(provider); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index 2fa34fc4490..9878170caf4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -138,21 +138,26 @@ public static void init(Consumer provider) { "PIP", "IFI", "PIP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Polytetrafluoroethylene), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Polytetrafluoroethylene), 'I', new MaterialEntry(TagPrefix.pipeNormalFluid, GTMaterials.Polytetrafluoroethylene)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_bronze_firebox", GTBlocks.FIREBOX_BRONZE.asStack(2), + // Decomposition info handled by the assembler recipe + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_bronze_firebox", + GTBlocks.FIREBOX_BRONZE.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Bronze), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Bronze), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Bronze)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_steel_firebox", GTBlocks.FIREBOX_STEEL.asStack(2), + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_steel_firebox", + GTBlocks.FIREBOX_STEEL.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Steel), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Steel), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Steel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_titanium_firebox", - GTBlocks.FIREBOX_TITANIUM.asStack(2), "PSP", "SFS", "PSP", 'P', + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_titanium_firebox", + GTBlocks.FIREBOX_TITANIUM.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", "PSP", + 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.Titanium), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.Titanium)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "casing_tungstensteel_firebox", - GTBlocks.FIREBOX_TUNGSTENSTEEL.asStack(2), "PSP", "SFS", "PSP", 'P', + VanillaRecipeHelper.addShapedRecipe(provider, false, "casing_tungstensteel_firebox", + GTBlocks.FIREBOX_TUNGSTENSTEEL.asStack(ConfigHolder.INSTANCE.recipes.casingsPerCraft), "PSP", "SFS", + "PSP", 'P', new MaterialEntry(TagPrefix.plate, GTMaterials.TungstenSteel), 'F', new MaterialEntry(TagPrefix.frameGt, GTMaterials.TungstenSteel), 'S', new MaterialEntry(TagPrefix.rod, GTMaterials.TungstenSteel)); From 6c277845f4e83612d0f7a4751b0a54bf0a60e080 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Sun, 3 Aug 2025 02:04:38 -0400 Subject: [PATCH 250/270] Bypassed Busses Now Consume Contents (#3604) --- .../gtceu/api/recipe/RecipeRunner.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index c4e1bd3a3d6..5a8913f0b19 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -125,19 +125,19 @@ private ActionResult handleContents() { Collections.emptyList())) { // Handle the contents of this handler and also all the bypassed handlers var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); - for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, Collections.emptyList())) { - res = bypass_handler.handleRecipe(io, recipe, res, true); + res = bypassHandler.handleRecipe(io, recipe, res, true); } if (res.isEmpty()) { if (!simulated) { // Actually consume the contents of this handler and also all the bypassed handlers handler.handleRecipe(io, recipe, recipeContents, false); - for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, Collections.emptyList())) { - res = bypass_handler.handleRecipe(io, recipe, res, false); + bypassHandler.handleRecipe(io, recipe, recipeContents, false); } } recipeContents.clear(); @@ -161,10 +161,10 @@ private ActionResult handleContents() { break; } } - for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, Collections.emptyList())) { - copiedRecipeContents = bypass_handler.handleRecipe(io, recipe, copiedRecipeContents, true); + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, true); if (copiedRecipeContents.isEmpty()) { found = true; break; @@ -185,10 +185,10 @@ private ActionResult handleContents() { } } // Then go through the handlers that bypass the distinctness system and empty those - for (RecipeHandlerList bypass_handler : handlerGroups.getOrDefault( + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, Collections.emptyList())) { - copiedRecipeContents = bypass_handler.handleRecipe(io, recipe, copiedRecipeContents, false); + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, false); if (copiedRecipeContents.isEmpty()) { recipeContents.clear(); return ActionResult.SUCCESS; From a8ccb02f9d15d7de1eca9ac43315ea7be477f97f Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sun, 3 Aug 2025 09:47:44 +0200 Subject: [PATCH 251/270] Fix recipe logic overconsumption (#3605) Co-authored-by: Ghostipedia Co-authored-by: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> --- .../java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 5a8913f0b19..b9f1f72daaf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -133,11 +133,11 @@ private ActionResult handleContents() { if (res.isEmpty()) { if (!simulated) { // Actually consume the contents of this handler and also all the bypassed handlers - handler.handleRecipe(io, recipe, recipeContents, false); + recipeContents = handler.handleRecipe(io, recipe, recipeContents, false); for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, Collections.emptyList())) { - bypassHandler.handleRecipe(io, recipe, recipeContents, false); + recipeContents = bypassHandler.handleRecipe(io, recipe, recipeContents, false); } } recipeContents.clear(); From a432d6bbf3785c5a612f5efcc2b34742d9866db2 Mon Sep 17 00:00:00 2001 From: DilithiumThoride Date: Sun, 3 Aug 2025 07:18:30 -0500 Subject: [PATCH 252/270] Fix ranged item & fluid outputs with minimum 0, and fix SizedIngredient modifying recipe stack sizes in batched recipes. (#3594) Co-authored-by: Ghostipedia Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- .../recipe/FluidRecipeCapability.java | 4 +-- .../recipe/ItemRecipeCapability.java | 26 +++++++++++++------ .../machine/trait/NotifiableFluidTank.java | 17 ++++-------- .../recipe/ingredient/FluidIngredient.java | 1 + .../IntProviderFluidIngredient.java | 12 +++++++-- .../ingredient/IntProviderIngredient.java | 10 +++++-- .../recipe/ingredient/SizedIngredient.java | 8 ++++-- .../jade/provider/RecipeOutputProvider.java | 22 ++++++++++------ .../top/provider/RecipeOutputProvider.java | 18 +++++++++++-- 9 files changed, 80 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java index 1534533dc19..795e89883e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/FluidRecipeCapability.java @@ -403,8 +403,8 @@ public void applyWidgetInfo(@NotNull Widget widget, // Maps fluids to a FluidEntryList for XEI: either a FluidTagList or a FluidStackList public static FluidEntryList mapFluid(FluidIngredient ingredient) { int amount; - if (ingredient instanceof IntProviderFluidIngredient provider) { - amount = provider.getCountProvider().getMaxValue(); + if (ingredient instanceof IntProviderFluidIngredient) { + amount = 1; } else { amount = ingredient.getAmount(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java index 39883a1b5dd..4ece6ab443d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/ItemRecipeCapability.java @@ -52,7 +52,6 @@ import org.jetbrains.annotations.UnknownNullability; import java.util.*; -import java.util.function.UnaryOperator; import java.util.stream.Collectors; import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; @@ -498,24 +497,35 @@ private static ItemEntryList mapItem(final Ingredient ingredient) { final int amount = sizedIngredient.getAmount(); var mapped = tryMapInner(sizedIngredient.getInner(), amount); if (mapped != null) return mapped; + + if (sizedIngredient.getInner() instanceof IntProviderIngredient intProvider) { + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : intProvider.getInner().getItems()) { + stackList.add(i); + } + return stackList; + } } else if (ingredient instanceof IntProviderIngredient intProvider) { final int amount = 1; var mapped = tryMapInner(intProvider.getInner(), amount); if (mapped != null) return mapped; + + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : intProvider.getInner().getItems()) { + stackList.add(i); + } + return stackList; } else if (ingredient instanceof IntersectionIngredient intersection) { return mapIntersection(intersection, -1); } else { var tagList = tryMapTag(ingredient, 1); if (tagList != null) return tagList; } - ItemStackList stackList = new ItemStackList(); - boolean isIntProvider = ingredient instanceof IntProviderIngredient || - (ingredient instanceof SizedIngredient sized && sized.getInner() instanceof IntProviderIngredient); - UnaryOperator setCount = stack -> isIntProvider ? stack.copyWithCount(1) : stack; - Arrays.stream(ingredient.getItems()) - .map(setCount) - .forEach(stackList::add); + ItemStackList stackList = new ItemStackList(); + for (ItemStack i : ingredient.getItems()) { + stackList.add(i); + } return stackList; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java index 6241f375621..5a60fd557f7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/NotifiableFluidTank.java @@ -118,7 +118,6 @@ public List handleRecipeInner(IO io, GTRecipe recipe, List handleRecipeInner(IO io, GTRecipe recipe, List { .xmap(FluidIngredient::fromJson, FluidIngredient::toJson); public static final FluidIngredient EMPTY = new FluidIngredient(new Value[0], 0, null); + public static final FluidStack[] EMPTY_STACK_ARRAY = new FluidStack[0]; public FluidIngredient.Value[] values; @Nullable public FluidStack[] stacks; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java index 7a592e78c63..e4558ae84d4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderFluidIngredient.java @@ -54,8 +54,16 @@ public int getAmount() { @Override public FluidStack[] getStacks() { if (fluidStacks == null) { - inner.setAmount(getSampledCount(GTValues.RNG)); - fluidStacks = inner.getStacks(); + int cachedAmount = getSampledCount(GTValues.RNG); + if (cachedAmount == 0) { + return EMPTY_STACK_ARRAY; + } + var innerStacks = inner.getStacks(); + this.fluidStacks = new FluidStack[innerStacks.length]; + for (int i = 0; i < fluidStacks.length; i++) { + fluidStacks[i] = innerStacks[i].copy(); + fluidStacks[i].setAmount(cachedAmount); + } } return fluidStacks; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java index 3d5b6f2028a..8f96f24f833 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/IntProviderIngredient.java @@ -29,6 +29,7 @@ public class IntProviderIngredient extends Ingredient { public static final ResourceLocation TYPE = GTCEu.id("int_provider"); + public static final ItemStack[] EMPTY_STACK_ARRAY = new ItemStack[0]; @Getter protected final IntProvider countProvider; @@ -64,9 +65,14 @@ public boolean test(@Nullable ItemStack stack) { @Override public ItemStack @NotNull [] getItems() { if (itemStacks == null) { - itemStacks = inner.getItems(); + int cachedCount = getSampledCount(GTValues.RNG); + if (cachedCount == 0) { + return EMPTY_STACK_ARRAY; + } + var innerStacks = inner.getItems(); + this.itemStacks = new ItemStack[innerStacks.length]; for (int i = 0; i < itemStacks.length; i++) { - itemStacks[i] = itemStacks[i].copyWithCount(getSampledCount(GTValues.RNG)); + itemStacks[i] = innerStacks[i].copyWithCount(cachedCount); } } return itemStacks; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java index 480e78cb3a5..2fc6b063aa5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/ingredient/SizedIngredient.java @@ -32,6 +32,9 @@ public class SizedIngredient extends Ingredient { protected int amount; @Getter protected final Ingredient inner; + /** + * This array's elements must be treated as immutable. + */ protected ItemStack[] itemStacks = null; private boolean changed = true; @Getter @@ -136,9 +139,10 @@ public boolean test(@Nullable ItemStack stack) { return intProviderIngredient.getItems(); } if (changed || itemStacks == null) { - itemStacks = inner.getItems(); + var innerStacks = inner.getItems(); + this.itemStacks = new ItemStack[innerStacks.length]; for (int i = 0; i < itemStacks.length; i++) { - itemStacks[i] = itemStacks[i].copyWithCount(amount); + itemStacks[i] = innerStacks[i].copyWithCount(amount); } changed = false; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java index 198f09709eb..c6569920c53 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/RecipeOutputProvider.java @@ -177,21 +177,23 @@ private void addItemTooltips(ITooltip iTooltip, List outputItems) { IElementHelper helper = iTooltip.getElementHelper(); for (Ingredient itemOutput : outputItems) { if (itemOutput != null && !itemOutput.isEmpty()) { - ItemStack item = itemOutput.getItems()[0]; - int count = item.getCount(); - item.setCount(1); - iTooltip.add(helper.smallItem(item)); + ItemStack item; MutableComponent text = CommonComponents.space(); if (itemOutput instanceof IntProviderIngredient provider) { + item = provider.getInner().getItems()[0]; text = text.append(Component.translatable("gtceu.gui.content.range", String.valueOf(provider.getCountProvider().getMinValue()), String.valueOf(provider.getCountProvider().getMaxValue()))); } else { - text.append(String.valueOf(count)); + item = itemOutput.getItems()[0]; + text.append(String.valueOf(item.getCount())); + item.setCount(1); } text.append(Component.translatable("gtceu.gui.content.times_item", getItemName(item)) .withStyle(ChatFormatting.WHITE)); + + iTooltip.add(helper.smallItem(item)); iTooltip.append(text); } } @@ -200,18 +202,22 @@ private void addItemTooltips(ITooltip iTooltip, List outputItems) { private void addFluidTooltips(ITooltip iTooltip, List outputFluids) { for (FluidIngredient fluidOutput : outputFluids) { if (fluidOutput != null && !fluidOutput.isEmpty()) { - iTooltip.add(GTElementHelper.smallFluid(getFluid(fluidOutput.getStacks()[0]))); + FluidStack stack; MutableComponent text = CommonComponents.space(); if (fluidOutput instanceof IntProviderFluidIngredient provider) { + stack = provider.getInner().getStacks()[0]; text.append(Component.translatable("gtceu.gui.content.range", FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMinValue(), true), FluidTextHelper.getUnicodeMillibuckets(provider.getCountProvider().getMaxValue(), true))); } else { - text.append(FluidTextHelper.getUnicodeMillibuckets(fluidOutput.getAmount(), true)); + stack = fluidOutput.getStacks()[0]; + text.append(FluidTextHelper.getUnicodeMillibuckets(stack.getAmount(), true)); } text.append(CommonComponents.space()) - .append(getFluidName(fluidOutput.getStacks()[0])) + .append(getFluidName(stack)) .withStyle(ChatFormatting.WHITE); + + iTooltip.add(GTElementHelper.smallFluid(getFluid(stack))); iTooltip.append(text); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java index 2e40bfc92e9..4fdc7e729c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/top/provider/RecipeOutputProvider.java @@ -17,9 +17,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.fluids.FluidStack; import mcjty.theoneprobe.api.CompoundText; import mcjty.theoneprobe.api.ElementAlignment; @@ -58,7 +60,13 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play List itemOutputs = new ArrayList<>(); for (var item : itemContents) { - var stacks = ItemRecipeCapability.CAP.of(item.content).getItems(); + ItemStack[] stacks; + Ingredient content = ItemRecipeCapability.CAP.of(item.content); + if (content instanceof IntProviderIngredient provider) { + stacks = provider.getInner().getItems(); + } else { + stacks = content.getItems(); + } if (stacks.length == 0) continue; if (stacks[0].isEmpty()) continue; var stack = stacks[0].copy(); @@ -75,7 +83,13 @@ protected void addProbeInfo(RecipeLogic recipeLogic, IProbeInfo iProbeInfo, Play List fluidOutputs = new ArrayList<>(); for (var fluid : fluidContents) { - var stacks = FluidRecipeCapability.CAP.of(fluid.content).getStacks(); + FluidStack[] stacks; + FluidIngredient content = FluidRecipeCapability.CAP.of(fluid.content); + if (content instanceof IntProviderFluidIngredient provider) { + stacks = provider.getInner().getStacks(); + } else { + stacks = content.getStacks(); + } if (stacks.length == 0) continue; if (stacks[0].isEmpty()) continue; var stack = stacks[0].copy(); From 333cd7fb6193dc1fbf46f9a38bb0c7c3ad8d9413 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sun, 3 Aug 2025 15:32:13 +0200 Subject: [PATCH 253/270] Test GTRecipeLookup (#3600) --- .../api/recipe/lookup/GTRecipeLookupTest.java | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java new file mode 100644 index 00000000000..eb023b89671 --- /dev/null +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/lookup/GTRecipeLookupTest.java @@ -0,0 +1,166 @@ +package com.gregtechceu.gtceu.api.recipe.lookup; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.AbstractMapIngredient; +import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.ItemStackMapIngredient; +import com.gregtechceu.gtceu.api.registry.GTRegistries; + +import net.minecraft.gametest.framework.BeforeBatch; +import net.minecraft.gametest.framework.GameTest; +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraftforge.gametest.GameTestHolder; +import net.minecraftforge.gametest.PrefixGameTestTemplate; + +import java.util.Arrays; +import java.util.List; +import java.util.function.Predicate; + +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.ELECTRIC; + +@PrefixGameTestTemplate(false) +@GameTestHolder(GTCEu.MOD_ID) +public class GTRecipeLookupTest { + + private static GTRecipeLookup lookup; + private static final Predicate ALWAYS_TRUE = gtRecipe -> true; + private static final Predicate ALWAYS_FALSE = gtRecipe -> false; + private static GTRecipe smeltStone, smeltAcaciaWood, smeltBirchWood, smeltCherryWood; + + @BeforeBatch(batch = "GTRecipeLookup") + public static void prepare(ServerLevel level) { + GTRegistries.RECIPE_TYPES.unfreeze(); + GTRegistries.RECIPE_CATEGORIES.unfreeze(); + RecipeType proxyRecipes = RecipeType.SMELTING; + GTRecipeType type = new GTRecipeType(GTCEu.id("test_recipes"), ELECTRIC, proxyRecipes) + .setEUIO(IO.IN) + .setMaxIOSize(1, 1, 0, 0); + lookup = new GTRecipeLookup(type); + + smeltStone = type.recipeBuilder("smelt_stone") + .inputItems(Items.COBBLESTONE, 1) + .outputItems(Items.STONE, 1) + .buildRawRecipe(); + smeltAcaciaWood = type.recipeBuilder("smelt_acacia_wood") + .inputItems(Items.ACACIA_WOOD, 1) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + smeltBirchWood = type.recipeBuilder("smelt_birch_wood") + .inputItems(Items.BIRCH_WOOD, 1) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + smeltCherryWood = type.recipeBuilder("smelt_cherry_wood") + .inputItems(Items.CHERRY_WOOD, 16) + .outputItems(Items.CHARCOAL, 1) + .buildRawRecipe(); + + for (GTRecipe recipe : List.of(smeltStone, + smeltAcaciaWood, + smeltBirchWood, + smeltCherryWood)) { + lookup.addRecipe(recipe); + } + + GTRegistries.RECIPE_TYPES.freeze(); + GTRegistries.RECIPE_CATEGORIES.freeze(); + } + + private static List> createIngredients(ItemStack... stacks) { + return List.of( + Arrays.stream(stacks) + .map(stack -> (AbstractMapIngredient) new ItemStackMapIngredient(stack)) + .toList()); + } + + // Simple recipe test whose lookup should succeed + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupSimpleSuccessTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltStone.equals(resultRecipe), + "GT Recipe should be smelt_stone, instead was " + resultRecipe); + helper.succeed(); + } + + // Simple recipe test whose lookup should fail because we pass an ingredient + // that does not match any of the recipes. + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupSimpleFailureTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.REDSTONE_TORCH, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should fail because the predicate for canHandle + // always evaluates to false. + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupFalsePredicateFailureTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_FALSE); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should succeed even when passed ingredients that don't have a recipe + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupMultipleIngredientsSuccessTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.COBBLESTONE, 1), + new ItemStack(Items.REDSTONE_TORCH, 1)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltStone.equals(resultRecipe), + "GT Recipe should be smelt_stone, instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test whose lookup should succeed because even though the amount in the recipe is not enough, + // ingredients don't count items + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupIngredientCountSucceedTest(GameTestHelper helper) { + // NOTE: RecipeLookup only checks item type, not item count, so this will still work + var notEnoughIngredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 8)); + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(notEnoughIngredients, lookup.getLookup(), + ALWAYS_TRUE); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + + var enoughIngredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 16)); + resultRecipe = lookup.recurseIngredientTreeFindRecipe(enoughIngredients, lookup.getLookup(), ALWAYS_TRUE); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + helper.succeed(); + } + + // Recipe test with a recipe-based canHandle check + @GameTest(template = "empty", batch = "GTRecipeLookup") + public static void recipeLookupCustomCountCanHandleTest(GameTestHelper helper) { + var ingredients = createIngredients(new ItemStack(Items.CHERRY_WOOD, 16)); + // Do a recipe check with a condition that requires at least 4 ingredients in the inputs + // The recipe has 8, so this should succeed + GTRecipe resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), + recipe -> recipe.inputs + .getOrDefault(ItemRecipeCapability.CAP, List.of()) + .stream() + .allMatch(content -> ((SizedIngredient) content.getContent()).getAmount() > 4)); + helper.assertTrue(smeltCherryWood.equals(resultRecipe), + "GT Recipe should be smelt_cherry_wood, instead was " + resultRecipe); + + // Do a recipe check with a condition that requires at least 32 ingredients in the inputs + // The recipe has 8, so this should fail + resultRecipe = lookup.recurseIngredientTreeFindRecipe(ingredients, lookup.getLookup(), recipe -> recipe.inputs + .getOrDefault(ItemRecipeCapability.CAP, List.of()) + .stream() + .allMatch(content -> ((SizedIngredient) content.getContent()).getAmount() > 32)); + helper.assertTrue(resultRecipe == null, "GT Recipe should be empty (null), instead was " + resultRecipe); + + helper.succeed(); + } +} From 8f491deae3ce881015701e13ad9033315771c2a4 Mon Sep 17 00:00:00 2001 From: Ghostipedia Date: Sun, 3 Aug 2025 13:12:23 -0400 Subject: [PATCH 254/270] Force Version Bump --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a3f3bfe6a73..49f0d75dc21 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 7.1.0 +mod_version = 7.1.1 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From 0f2e168eaacd54b0c282b6373f728fe88435ffac Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sun, 3 Aug 2025 11:56:57 -0600 Subject: [PATCH 255/270] Fix boiler firebox renders (#3610) --- .../renderer/machine/impl/BoilerMultiPartRender.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java index afebf4eae8c..850a0c64c55 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/BoilerMultiPartRender.java @@ -12,7 +12,6 @@ import com.gregtechceu.gtceu.client.util.ModelUtils; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.GTBlocks; -import com.gregtechceu.gtceu.common.machine.multiblock.steam.LargeBoilerMachine; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -39,7 +38,7 @@ import java.util.List; import java.util.function.Supplier; -public class BoilerMultiPartRender extends DynamicRender +public class BoilerMultiPartRender extends DynamicRender implements IControllerModelRenderer { // spotless:off @@ -48,7 +47,7 @@ public class BoilerMultiPartRender extends DynamicRender TYPE = new DynamicRenderType<>(BoilerMultiPartRender.CODEC); + public static final DynamicRenderType TYPE = new DynamicRenderType<>(BoilerMultiPartRender.CODEC); // spotless:on @Getter @@ -72,16 +71,17 @@ public BoilerMultiPartRender(BlockState fireboxIdle, BlockState fireboxActive, B } @Override - public DynamicRenderType getType() { + public DynamicRenderType getType() { return TYPE; } @Override - public void render(LargeBoilerMachine machine, float partialTick, PoseStack poseStack, MultiBufferSource buffer, + public void render(MultiblockControllerMachine machine, float partialTick, PoseStack poseStack, + MultiBufferSource buffer, int packedLight, int packedOverlay) {} @Override - public boolean shouldRender(LargeBoilerMachine machine, Vec3 cameraPos) { + public boolean shouldRender(MultiblockControllerMachine machine, Vec3 cameraPos) { return false; } From 15561ad5a28b4ed2242572bbe6a04fa185820b4a Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Sun, 3 Aug 2025 20:58:07 +0200 Subject: [PATCH 256/270] fix Recipe Logic checking bypass hatches twice (#3614) --- .../gtceu/api/recipe/RecipeRunner.java | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index b9f1f72daaf..8913e7035aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -161,13 +161,16 @@ private ActionResult handleContents() { break; } } - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, - Collections.emptyList())) { - copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, true); - if (copiedRecipeContents.isEmpty()) { - found = true; - break; + // If we're already in the bypass_distinct group, don't check it twice. + if (handlerListEntry.getKey() != RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, true); + if (copiedRecipeContents.isEmpty()) { + found = true; + break; + } } } @@ -185,13 +188,16 @@ private ActionResult handleContents() { } } // Then go through the handlers that bypass the distinctness system and empty those - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, - Collections.emptyList())) { - copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, false); - if (copiedRecipeContents.isEmpty()) { - recipeContents.clear(); - return ActionResult.SUCCESS; + // If we're already in the bypass_distinct group, don't check it twice. + if (handlerListEntry.getKey() != RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( + RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + Collections.emptyList())) { + copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, false); + if (copiedRecipeContents.isEmpty()) { + recipeContents.clear(); + return ActionResult.SUCCESS; + } } } } From 01eadc599df348be76dccca60111ffaa9cb47515 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Sun, 3 Aug 2025 18:32:57 -0600 Subject: [PATCH 257/270] Fix kjs material registration not allowing nested materials (#3621) --- .../gtceu/integration/kjs/helpers/MaterialStackWrapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java index 216251e43a6..10bfbf8f4f8 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/MaterialStackWrapper.java @@ -33,7 +33,8 @@ public static MaterialStackWrapper fromString(CharSequence str) { } final String copyFinal = copy; - cached = new MaterialStackWrapper(() -> GTMaterials.get(copyFinal), count); + Supplier mat = () -> GTMaterials.get(copyFinal); + cached = new MaterialStackWrapper(mat, count); PARSE_CACHE.put(trimmed, cached); return cached.copy(); } @@ -44,7 +45,7 @@ public MaterialStackWrapper copy() { } public boolean isEmpty() { - return this.amount < 1 || this.material.get().isNull(); + return this.amount < 1 || this.material == null; } public MaterialStack toMatStack() { From 95e1b5519997b5a9b816b9dc76bb27f543b05075 Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 3 Aug 2025 18:38:04 -0600 Subject: [PATCH 258/270] Add labeler action for 1.20.1 (#3617) --- .github/workflows/labeler.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/workflows/labeler.yml diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 00000000000..66432dc2e3e --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,9 @@ +name: Label PRs + +on: + - pull_request_target + +jobs: + labeler: + uses: GregTechCEu/GithubActions/.github/workflows/labeler.yml@main + secrets: inherit From 838ce4dca49772f8dd54483bb5a65ffb3aa789fc Mon Sep 17 00:00:00 2001 From: Maya <10861407+serenibyss@users.noreply.github.com> Date: Sun, 3 Aug 2025 18:38:38 -0600 Subject: [PATCH 259/270] Fix manual IO setting not saving in filter covers (#3616) --- .../com/gregtechceu/gtceu/common/cover/FluidFilterCover.java | 1 + .../java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java index 0d03683cba3..a5d95956215 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/FluidFilterCover.java @@ -40,6 +40,7 @@ public class FluidFilterCover extends CoverBehavior implements IUICover { @Getter protected FilterMode filterMode = FilterMode.FILTER_INSERT; private FilteredFluidHandlerWrapper fluidFilterWrapper; + @Persisted @Setter @Getter protected ManualIOMode allowFlow = ManualIOMode.DISABLED; diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java index ae1aeccfe66..46bcbcff06e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java @@ -46,6 +46,7 @@ public class ItemFilterCover extends CoverBehavior implements IUICover { @Getter protected FilterMode filterMode = FilterMode.FILTER_INSERT; private FilteredItemHandlerWrapper itemFilterWrapper; + @Persisted @Setter @Getter protected ManualIOMode allowFlow = ManualIOMode.DISABLED; From f6fabf813ddf03ebe47722620c97aa76227c57f0 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Mon, 4 Aug 2025 03:40:29 +0300 Subject: [PATCH 260/270] Fix AE2 placeholders only working if Create is installed (#3606) --- src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 21be19fddee..b81109fb258 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -138,8 +138,11 @@ public static void init() { GTPlaceholders.initPlaceholders(); if (GTCEu.Mods.isCreateLoaded()) { GTCreateIntegration.init(); + } + if (GTCEu.Mods.isAE2Loaded()) { GTAEPlaceholders.init(); } + GTCovers.init(); GTFluids.init(); GTCreativeModeTabs.init(); From dcc1d9361b7dfd1dc067bfe8cd9307f9a6597993 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Mon, 4 Aug 2025 02:41:10 +0200 Subject: [PATCH 261/270] Revert "update configuration (#3579)" (#3611) Co-authored-by: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> --- gradle/forge.versions.toml | 5 +- gradle/scripts/repositories.gradle | 5 - gradle/scripts/resources.gradle | 2 +- .../gtceu/config/ConfigHolder.java | 127 ++++-------------- .../gtceu/data/lang/ConfigurationLang.java | 34 ++--- .../feature/IGridConnectedMachine.java | 4 +- 6 files changed, 49 insertions(+), 128 deletions(-) diff --git a/gradle/forge.versions.toml b/gradle/forge.versions.toml index ac9bf4cd7b8..1a7849a8925 100644 --- a/gradle/forge.versions.toml +++ b/gradle/forge.versions.toml @@ -1,7 +1,7 @@ [versions] ldlib = "1.0.40.b" registrate = "MC1.20-1.3.11" -configuration = "3.1.0-forge" +configuration = "2.2.0" mixinExtras = "0.5.0-rc.3" jei = "15.20.0.105" @@ -52,10 +52,11 @@ ftbteams-cm = "5267190" ftbquests-cm = "6167056" ftbchunks-cm = "5956390" + [libraries] ldlib = { module = "com.lowdragmc.ldlib:ldlib-forge-1.20.1", version.ref = "ldlib" } registrate = { module = "com.tterrag.registrate:Registrate", version.ref = "registrate" } -configuration = { module = "dev.toma.configuration:configuration-1.20.1", version.ref = "configuration" } +configuration = { module = "dev.toma.configuration:configuration-forge-1.20.1", version.ref = "configuration" } mixinExtras-common = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixinExtras" } mixinExtras-forge = { module = "io.github.llamalad7:mixinextras-forge", version.ref = "mixinExtras" } diff --git a/gradle/scripts/repositories.gradle b/gradle/scripts/repositories.gradle index 27c821f0073..f70e89ac2ac 100644 --- a/gradle/scripts/repositories.gradle +++ b/gradle/scripts/repositories.gradle @@ -17,7 +17,6 @@ repositories { url = "https://maven.firstdarkdev.xyz/snapshots" } - exclusiveContent { // Create, Ponder, Flywheel forRepository { maven { url = "https://maven.createmod.net" } } filter { @@ -26,10 +25,6 @@ repositories { includeGroup("dev.engine-room.flywheel") } } - exclusiveContent { // Configuration - forRepository { maven { url = "https://api.repsy.io/mvn/toma/public" } } - filter { includeGroup("dev.toma.configuration")} - } exclusiveContent { // KubeJS and Rhino forRepository { maven { url = "https://maven.latvian.dev/releases" } } filter { includeGroup("dev.latvian.mods")} diff --git a/gradle/scripts/resources.gradle b/gradle/scripts/resources.gradle index 7fafe260f73..6d7b42eef76 100644 --- a/gradle/scripts/resources.gradle +++ b/gradle/scripts/resources.gradle @@ -39,7 +39,7 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources minecraft_version : libs.versions.minecraft.get(), loader_version : forgeVers, forge_version : forgeVers, // only specify major version of forge - configuration_version: forge.versions.configuration.get().split("-")[0], + configuration_version: forge.versions.configuration.get(), kjs_version : forge.versions.kubejs.get().split("\\.")[0], // only specify major version of kjs ldlib_version : forge.versions.ldlib.get(), jei_version : forge.versions.jei.get(), diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 68450f99ea0..864d224bc54 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -8,9 +8,7 @@ import dev.toma.configuration.Configuration; import dev.toma.configuration.config.Config; import dev.toma.configuration.config.Configurable; -import dev.toma.configuration.config.UpdateRestrictions; import dev.toma.configuration.config.format.ConfigFormats; -import org.jetbrains.annotations.ApiStatus; @Config(id = GTCEu.MOD_ID) public class ConfigHolder { @@ -18,14 +16,10 @@ public class ConfigHolder { public static ConfigHolder INSTANCE; private static final Object LOCK = new Object(); - @ApiStatus.Internal - public static dev.toma.configuration.config.ConfigHolder INTERNAL_INSTANCE; - public static void init() { synchronized (LOCK) { - if (INSTANCE == null || INTERNAL_INSTANCE == null) { - INTERNAL_INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.YAML); - INSTANCE = INTERNAL_INSTANCE.getConfigInstance(); + if (INSTANCE == null) { + INSTANCE = Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getConfigInstance(); } } } @@ -55,107 +49,85 @@ public static class RecipeConfigs { @Configurable @Configurable.Comment({ "Whether to generate Flawed and Chipped Gems for materials and recipes involving them.", "Useful for mods like TerraFirmaCraft.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean generateLowQualityGems = false; // default false @Configurable @Configurable.Comment({ "Whether to remove Block/Ingot compression and decompression in the Crafting Table.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean disableManualCompression = true; // default true @Configurable @Configurable.Comment({ "Change the recipe of Rods in the Lathe to 1 Rod and 2 Small Piles of Dust, instead of 2 Rods.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderRods = true; // default true @Configurable @Configurable.Comment({ "Whether to make crafting recipes for Bricks, Firebricks, Nether Bricks, and Coke Bricks harder.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderBrickRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to nerf Wood crafting to 2 Planks from 1 Log, and 2 Sticks from 2 Planks.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean nerfWoodCrafting = false; // default false @Configurable @Configurable.Comment({ "Whether to make Wood related recipes harder.", "Excludes sticks and planks.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardWoodRecipes = false; // default false @Configurable @Configurable.Comment({ "Recipes for Buckets, Cauldrons, Hoppers, and Iron Bars" + " require Iron Plates, Rods, and more.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make Redstone related recipes harder.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardRedstoneRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make Vanilla Tools and Armor recipes harder.", "Excludes Flint and Steel, and Buckets.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardToolArmorRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make miscellaneous recipes harder.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardMiscRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to make Glass related recipes harder. Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardGlassRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to nerf the Paper crafting recipe.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean nerfPaperCrafting = true; // default true @Configurable @Configurable.Comment({ "Recipes for items like Iron Doors, Trapdoors, Anvil" + " require Iron Plates, Rods, and more.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardAdvancedIronRecipes = true; // default true @Configurable @Configurable.Comment({ "Whether to make coloring blocks like Concrete or Glass harder.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardDyeRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to remove charcoal smelting recipes from the vanilla furnace.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderCharcoalRecipe = true; // default true @Configurable @Configurable.Comment({ "Whether to make the Flint and Steel recipe require steel parts.", "Default: true." }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean flintAndSteelRequireSteel = true; // default true @Configurable @Configurable.Comment({ "Whether to remove Vanilla Block Recipes from the Crafting Table.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaBlockRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether to remove Vanilla TNT Recipe from the Crafting Table.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaTNTRecipe = true; // default true @Configurable @Configurable.Comment({ "How many Multiblock Casings to make per craft. Either 1, 2, or 3.", "Default: 2" }) @Configurable.Range(min = 1, max = 3) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int casingsPerCraft = 2; @Configurable @Configurable.Comment({ "Whether to nerf the output amounts of the first circuit in a set to 1 (from 2) and SoC to 2 (from 4).", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean harderCircuitRecipes = false; @Configurable @Configurable.Comment({ "Whether to nerf machine controller recipes.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean hardMultiRecipes = false; // default false @Configurable @Configurable.Comment({ "Whether tools should have enchants or not. Like the flint sword getting fire aspect.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean enchantedTools = false; } @@ -208,7 +180,6 @@ public static class EnergyCompatConfig { @Configurable @Configurable.Comment({ "Enable GTEU to FE (and vice versa) Converters.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableFEConverters = false; @Configurable @@ -235,7 +206,6 @@ public static class AE2CompatConfig { @Configurable @Configurable.Comment({ "The energy consumption of ME Hatch/Bus.", "Default: 4.0AE/t" }) @Configurable.DecimalRange(min = 0.0, max = Integer.MAX_VALUE) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public double meHatchEnergyUsage = 4.0; } @@ -243,19 +213,18 @@ public static class MinimapCompatConfig { @Configurable @Configurable.Comment({ - "Toggle specific map mod integration on/off" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) + "Toggle specific map mod integration on/off (need to restart for this to take effect)" }) public Toggle toggle = new Toggle(); @Configurable @Configurable.Comment({ "The radius, in blocks, that picking up a surface rock will search for veins in.", "-1 to disable.", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int surfaceRockProspectRange = 24; @Configurable @Configurable.Comment({ "The radius, in blocks, that clicking an ore block will search for veins in.", "-1 to disable", "Default: 24" }) - @Configurable.Range(min = 1) + @Configurable.Range(min = -1) public int oreBlockProspectRange = 24; @Configurable @@ -366,7 +335,6 @@ public static class WorldGenConfigs { @Configurable @Configurable.Comment({ "Should all Stone Types drop unique Ore Item Blocks?", "Default: false (meaning only Stone, Netherrack, and Endstone)" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean allUniqueStoneTypes = false; @Configurable @@ -378,12 +346,10 @@ public static class WorldGenConfigs { @Configurable.Comment({ "Whether to increase number of rolls for dungeon chests. Increases dungeon loot drastically.", "Default: true", "WARNING: Currently unimplemented." }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean increaseDungeonLoot = true; @Configurable @Configurable.Comment({ "Allow GregTech to add additional GregTech Items as loot in various structures.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean addLoot = true; @Configurable @@ -408,11 +374,9 @@ public static class OreVeinConfigs { @Configurable @Configurable.Comment({ "Prevents regular vanilla ores from being generated outside GregTech ore veins", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaOreGen = true; @Configurable @Configurable.Comment({ "Prevents vanilla's large ore veins from being generated", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean removeVanillaLargeOreVeins = true; @Configurable @Configurable.Comment({ "Distance between bedrock ore veins in chunks, if enabled.", "Default: 16" }) @@ -428,17 +392,15 @@ public static class OreVeinConfigs { "Sets the maximum number of chunks that may be cached for ore vein generation.", "Higher values may improve world generation performance, but at the cost of more RAM usage.", "If you substantially increase the ore vein grid size, random vein offset, or have very large (custom) veins, you may need to increase this value as well.", - "Default: 512" + "Default: 512 (requires restarting the server / re-opening the world)" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int oreGenerationChunkCacheSize = 512; @Configurable @Configurable.Comment({ "Sets the maximum number of chunks for which ore indicators may be cached.", "If you register any custom veins with very large indicator ranges (or modify existing ones that way), you may need to increase this value.", - "Default: 2048" + "Default: 2048 (requires restarting the server / re-opening the world)" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public int oreIndicatorChunkCacheSize = 2048; } } @@ -449,34 +411,28 @@ public static class MachineConfigs { @Configurable.Comment({ "Whether to require a Wrench, Wirecutter, or other GregTech tools to break machines, casings, wires, and more.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean requireGTToolsForBlocks = true; @Configurable @Configurable.Comment({ "Whether machines explode in rainy weather or when placed next to certain terrain, such as fire or lava", "Default: false" }) - @Configurable.Synchronized public boolean shouldWeatherOrTerrainExplosion = false; @Configurable @Configurable.Comment({ "Energy use multiplier for electric items.", "Default: 100" }) - @Configurable.Synchronized public int energyUsageMultiplier = 100; @Configurable @Configurable.Comment({ "Energy use multiplier for prospectors.", "Default: 100" }) - @Configurable.Synchronized public int prospectorEnergyUseMultiplier = 100; @Configurable @Configurable.Comment({ "Whether machines or boilers damage the terrain when they explode.", "Note machines and boilers always explode when overloaded with power or met with special conditions, regardless of this config.", "Default: true" }) - @Configurable.Synchronized public boolean doesExplosionDamagesTerrain = true; @Configurable @Configurable.Comment({ "Enables Safe Active Transformers, removing their ability to explode if unformed while transmitting/receiving power.", "Default: false" }) - @Configurable.Synchronized public boolean harmlessActiveTransformers = false; @Configurable @Configurable.Comment({ "Whether to play machine sounds while machines are active.", "Default: true" }) @@ -486,11 +442,9 @@ public static class MachineConfigs { public int batchDuration = 100; @Configurable @Configurable.Comment({ "Whether Steam Multiblocks should use Steel instead of Bronze.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean steelSteamMultiblocks = false; @Configurable @Configurable.Comment({ "Whether to enable the cleanroom, required for various recipes.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean enableCleanroom = true; @Configurable @Configurable.Comment({ "Whether multiblocks should ignore all cleanroom requirements.", @@ -502,18 +456,15 @@ public static class MachineConfigs { public String replaceMinedBlocksWith = "minecraft:cobblestone"; @Configurable @Configurable.Comment({ "Whether to enable Assembly Line research for recipes.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableResearch = true; @Configurable @Configurable.Comment({ "Whether to enable the Maintenance Hatch, required for Multiblocks.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableMaintenance = true; @Configurable @Configurable.Comment({ "Whether to enable World Accelerators, which accelerate ticks for surrounding Tile Entities, Crops, etc.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean enableWorldAccelerators = true; @Configurable @@ -521,7 +472,6 @@ public static class MachineConfigs { "GregTech TileEntities are always blocked.", "Entries must be in a fully qualified format. For example: appeng.tile.networking.TileController", "Default: none" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public String[] worldAcceleratorBlacklist = new String[0]; @Configurable @@ -529,16 +479,13 @@ public static class MachineConfigs { "Whether to use GT6-style pipe and cable connections, meaning they will not auto-connect " + "unless placed directly onto another pipe or cable.", "Default: true" }) - @Configurable.Synchronized public boolean gt6StylePipesCables = true; @Configurable @Configurable.Comment({ "Whether the machine's circuit slot need to be inserted a real circuit." }) - @Configurable.Synchronized public boolean ghostCircuit = true; @Configurable @Configurable.Comment({ "Whether to add a \"Bedrock Ore Miner\" (also enables bedrock ore generation)", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean doBedrockOres = false; @Configurable @Configurable.Comment({ "What Kind of material should the bedrock ore miner output?", "Default: \"raw\"" }) @@ -551,30 +498,24 @@ public static class MachineConfigs { @Configurable @Configurable.Comment({ "Makes nearly every GCYM Multiblock require blocks which set their maximum voltages.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) // todo: implement or purge public boolean enableTieredCasings = false; @Configurable @Configurable.Comment({ "Minimum distance between Long Distance Item Pipe Endpoints", "Default: 50" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int ldItemPipeMinDistance = 50; @Configurable @Configurable.Comment({ "Minimum distance betweeb Long Distance Fluid Pipe Endpoints", "Default: 50" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int ldFluidPipeMinDistance = 50; @Configurable @Configurable.Comment({ "Whether ONLY owners can open a machine gui", "Default: false" }) - @Configurable.Synchronized public boolean onlyOwnerGUI = false; @Configurable @Configurable.Comment({ "Whether ONLY owners can break a machine", "Default: false" }) - @Configurable.Synchronized public boolean onlyOwnerBreak = false; @Configurable @Configurable.Comment({ "Minimum op level to bypass the ownership checks", "Default: 2" }) @Configurable.Range(min = Commands.LEVEL_ALL, max = Commands.LEVEL_OWNERS) - @Configurable.Synchronized public int ownerOPBypass = Commands.LEVEL_GAMEMASTERS; /** @@ -587,7 +528,6 @@ public static class MachineConfigs { "This is intended for modpack developers only, and is not playable without custom tweaks or addons.", "Other mods can override this to true, regardless of the config file.", "Default: false" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public boolean highTierContent = false; @Configurable @@ -604,16 +544,13 @@ public static class MachineConfigs { "Default maximum parallel of steam multiblocks", "Default: 8" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int steamMultiParallelAmount = 8; @Configurable @Configurable.Comment("Small Steam Boiler Options") - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public SmallBoilers smallBoilers = new SmallBoilers(); @Configurable @Configurable.Comment("Large Steam Boiler Options") - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public LargeBoilers largeBoilers = new LargeBoilers(); public static class SmallBoilers { @@ -699,37 +636,30 @@ public static class ToolConfigs { @Configurable @Configurable.Comment("NightVision Goggles Voltage Tier. Default: 1 (LV)") @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierNightVision = 1; @Configurable @Configurable.Comment("NanoSuit Voltage Tier. Default: 3 (HV)") @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierNanoSuit = 3; @Configurable @Configurable.Comment({ "Advanced NanoSuit Chestplate Voltage Tier.", "Default: 3 (HV)" }) @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvNanoSuit = 3; @Configurable @Configurable.Comment({ "QuarkTech Suit Voltage Tier.", "Default: 5 (IV)" }) @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierQuarkTech = 5; @Configurable @Configurable.Comment({ "Advanced QuarkTech Suit Chestplate Voltage Tier.", "Default: 5 (LuV)" }) @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvQuarkTech = 6; @Configurable @Configurable.Comment({ "Electric Impeller Jetpack Voltage Tier.", "Default: 2 (MV)" }) @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierImpeller = 2; @Configurable @Configurable.Comment({ "Advanced Electric Jetpack Voltage Tier.", "Default: 3 (HV)" }) @Configurable.Range(min = 0, max = 14) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int voltageTierAdvImpeller = 3; public static class NanoSaber { @@ -737,12 +667,10 @@ public static class NanoSaber { @Configurable @Configurable.DecimalRange(min = 0, max = 100) @Configurable.Comment({ "The additional damage added when the NanoSaber is powered.", "Default: 20.0" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public double nanoSaberDamageBoost = 20; @Configurable @Configurable.DecimalRange(min = 0, max = 100) @Configurable.Comment({ "The base damage of the NanoSaber.", "Default: 5.0" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public double nanoSaberBaseDamage = 5; @Configurable @Configurable.Comment({ "Should Zombies spawn with charged, active NanoSabers on hard difficulty?", @@ -751,7 +679,6 @@ public static class NanoSaber { @Configurable @Configurable.Range(min = 1, max = 512) @Configurable.Comment({ "The EU/t consumption of the NanoSaber.", "Default: 64" }) - @Configurable.UpdateRestriction(UpdateRestrictions.GAME_RESTART) public int energyConsumption = 64; } } @@ -760,17 +687,14 @@ public static class GameplayConfigs { @Configurable @Configurable.Comment({ "Enable hazardous materials", "Default: true" }) - @Configurable.Synchronized public boolean hazardsEnabled = true; @Configurable @Configurable.Comment({ "Whether hazards are applied to all valid items, or just GT's.", "true = all, false = GT only.", "Default: true" }) - @Configurable.Synchronized public boolean universalHazards = true; @Configurable @Configurable.Comment({ "Whether environmental hazards like pollution or radiation are active", "Default: false" }) - @Configurable.Synchronized public boolean environmentalHazards = false; @Configurable @Configurable.Comment({ "How much environmental hazards decay per chunk, per tick.", @@ -812,7 +736,6 @@ public static class ClientConfigs { @Configurable @Configurable.Comment({ "Use VBO cache for multiblock preview.", "Disable if you have issues with rendering multiblocks.", "Default: true" }) - @Configurable.UpdateRestriction(UpdateRestrictions.MAIN_MENU) public boolean useVBO = true; @Configurable @Configurable.Comment({ "Duration of the multiblock in-world preview (s)", "Default: 10" }) @@ -825,7 +748,7 @@ public static class ClientConfigs { @Configurable public ArmorHud armorHud = new ArmorHud(); @Configurable - public Renderers renderer = new Renderers(); + public RendererConfigs renderer = new RendererConfigs(); public int getDefaultPaintingColor() { // OR with full alpha to differentiate from a machine that's painted white (map color 0xffffff) @@ -848,23 +771,6 @@ public static class ArmorHud { @Configurable.Range(min = 0, max = 100) public int hudOffsetY = 0; } - - public static class Renderers { - - @Configurable - @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) - public boolean renderFluids = true; - - @Configurable - @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", - "Default: true" }) - public boolean coloredTieredMachineOutline = true; - - @Configurable - @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", - "Default: true" }) - public boolean coloredWireOutline = true; - } } public static class DeveloperConfigs { @@ -887,4 +793,21 @@ public static class DeveloperConfigs { @Configurable.Comment({ "Dump all registered GT models/blockstates/etc?", "Default: false" }) public boolean dumpAssets = false; } + + public static class RendererConfigs { + + @Configurable + @Configurable.Comment({ "Render fluids in multiblocks that support them?", "Default: true" }) + public boolean renderFluids = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color tiered machine highlights in the tier color", + "Default: true" }) + public boolean coloredTieredMachineOutline = true; + + @Configurable + @Configurable.Comment({ "Whether or not to color wire/cable highlights based on voltage tier", + "Default: true" }) + public boolean coloredWireOutline = true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java index de63da5fa7d..d24677602c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/ConfigurationLang.java @@ -1,33 +1,33 @@ package com.gregtechceu.gtceu.data.lang; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.config.ConfigHolder; import com.tterrag.registrate.providers.RegistrateLangProvider; -import dev.toma.configuration.config.value.IConfigValue; -import dev.toma.configuration.config.value.IHierarchical; +import dev.toma.configuration.Configuration; +import dev.toma.configuration.config.format.ConfigFormats; +import dev.toma.configuration.config.value.ConfigValue; +import dev.toma.configuration.config.value.ObjectValue; import java.util.HashSet; +import java.util.Map; import java.util.Set; public class ConfigurationLang { - public static void init(final RegistrateLangProvider provider) { - final Set added = new HashSet<>(); - ConfigHolder.INTERNAL_INSTANCE.values() - .forEach((value) -> addTranslation(provider, added, value)); + public static void init(RegistrateLangProvider provider) { + dfs(provider, new HashSet<>(), + Configuration.registerConfig(ConfigHolder.class, ConfigFormats.yaml()).getValueMap()); } - private static void addTranslation(RegistrateLangProvider provider, Set added, IConfigValue value) { - var id = value.getId(); - if (added.add(id)) { - provider.add("config.gtceu.option." + id, id); - } - if (value instanceof IHierarchical hierarchical) { - for (String childKey : value.getChildrenKeys()) { - IConfigValue child = hierarchical.getChildById(childKey); - if (child != null) { - addTranslation(provider, added, child); - } + private static void dfs(RegistrateLangProvider provider, Set added, Map> map) { + for (var entry : map.entrySet()) { + var id = entry.getValue().getId(); + if (added.add(id)) { + provider.add(String.format("config.%s.option.%s", GTCEu.MOD_ID, id), id); + } + if (entry.getValue() instanceof ObjectValue objectValue) { + dfs(provider, added, objectValue.get()); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java index fd372cf0bd1..8dcbca56391 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/feature/IGridConnectedMachine.java @@ -14,6 +14,8 @@ */ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBlockEntity { + int ME_UPDATE_INTERVAL = ConfigHolder.INSTANCE.compat.ae2.updateIntervals; + /** * @return return {@code true} if current machine connected to a valid ME network, {@code false} otherwise. */ @@ -25,7 +27,7 @@ public interface IGridConnectedMachine extends IMachineFeature, IGridConnectedBl * @return {@code true} if current machine should interact with ME network, {@code false} otherwise. */ default boolean shouldSyncME() { - return self().getOffsetTimer() % ConfigHolder.INSTANCE.compat.ae2.updateIntervals == 0; + return self().getOffsetTimer() % ME_UPDATE_INTERVAL == 0; } default AECableType getCableConnectionType(Direction dir) { From ed0037119c16b15316207985d47198988f27ffe6 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Mon, 4 Aug 2025 08:53:51 +0200 Subject: [PATCH 262/270] Fix recipe logic with Undyed Hatches and Distinctness Bypassing (#3629) --- .../gtceu/api/recipe/RecipeHelper.java | 3 ++- .../gtceu/api/recipe/RecipeRunner.java | 24 ++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java index 599588da58b..07f086d3680 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeHelper.java @@ -353,10 +353,11 @@ public static void addToRecipeHandlerMap(RecipeHandlerGroup key, RecipeHandlerLi map.computeIfAbsent(RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, $ -> new ArrayList<>()).add(handler); return; } - // Add undyed RHL's to every group that's not distinct, and also the undyed group itself. + // Add undyed RHL's to every group that's not distinct, bypass, and also the undyed group itself. if (key.equals(RecipeHandlerGroupColor.UNDYED)) { for (var entry : map.entrySet()) { if (entry.getKey().equals(RecipeHandlerGroupDistinctness.BUS_DISTINCT) || + entry.getKey().equals(RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) || entry.getKey().equals(RecipeHandlerGroupColor.UNDYED)) { continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index 8913e7035aa..d36ded4acf0 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -4,7 +4,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroup; -import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness; import com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerList; import com.gregtechceu.gtceu.api.recipe.chance.boost.ChanceBoostFunction; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; @@ -20,6 +19,8 @@ import java.util.List; import java.util.Map; +import static com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness.BUS_DISTINCT; +import static com.gregtechceu.gtceu.api.machine.trait.RecipeHandlerGroupDistinctness.BYPASS_DISTINCT; import static com.gregtechceu.gtceu.api.recipe.RecipeHelper.addToRecipeHandlerMap; public class RecipeRunner { @@ -121,12 +122,10 @@ private ActionResult handleContents() { addToRecipeHandlerMap(handler.getGroup(), handler, handlerGroups); } // Specifically check distinct handlers first - for (RecipeHandlerList handler : handlerGroups.getOrDefault(RecipeHandlerGroupDistinctness.BUS_DISTINCT, - Collections.emptyList())) { + for (RecipeHandlerList handler : handlerGroups.getOrDefault(BUS_DISTINCT, Collections.emptyList())) { // Handle the contents of this handler and also all the bypassed handlers var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, Collections.emptyList())) { res = bypassHandler.handleRecipe(io, recipe, res, true); } @@ -134,8 +133,7 @@ private ActionResult handleContents() { if (!simulated) { // Actually consume the contents of this handler and also all the bypassed handlers recipeContents = handler.handleRecipe(io, recipe, recipeContents, false); - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, Collections.emptyList())) { recipeContents = bypassHandler.handleRecipe(io, recipe, recipeContents, false); } @@ -148,7 +146,7 @@ private ActionResult handleContents() { // Check the other groups. For every group, try consuming the ingredients, // see if it succeeds. for (Map.Entry> handlerListEntry : handlerGroups.entrySet()) { - if (handlerListEntry.getKey() == RecipeHandlerGroupDistinctness.BUS_DISTINCT) continue; + if (handlerListEntry.getKey().equals(BUS_DISTINCT)) continue; // List to keep track of the remaining items for this RecipeHandlerGroup Map, List> copiedRecipeContents = searchRecipeContents; @@ -162,9 +160,8 @@ private ActionResult handleContents() { } } // If we're already in the bypass_distinct group, don't check it twice. - if (handlerListEntry.getKey() != RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) { - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + if (!handlerListEntry.getKey().equals(BYPASS_DISTINCT)) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, Collections.emptyList())) { copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, true); if (copiedRecipeContents.isEmpty()) { @@ -189,9 +186,8 @@ private ActionResult handleContents() { } // Then go through the handlers that bypass the distinctness system and empty those // If we're already in the bypass_distinct group, don't check it twice. - if (handlerListEntry.getKey() != RecipeHandlerGroupDistinctness.BYPASS_DISTINCT) { - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault( - RecipeHandlerGroupDistinctness.BYPASS_DISTINCT, + if (!handlerListEntry.getKey().equals(BYPASS_DISTINCT)) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, Collections.emptyList())) { copiedRecipeContents = bypassHandler.handleRecipe(io, recipe, copiedRecipeContents, false); if (copiedRecipeContents.isEmpty()) { From 79bdfcf64fb79b2ab6b4b4f846cb3d146dba3f26 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Mon, 4 Aug 2025 01:14:52 -0600 Subject: [PATCH 263/270] Fix Multiblocks not unforming when the controller breaks (#3626) --- .../java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java index ad9d476e856..a29a022f803 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/LevelMixin.java @@ -78,10 +78,6 @@ public abstract class LevelMixin implements LevelAccessor { MultiblockWorldSavedData mwsd = MultiblockWorldSavedData.getOrCreate(serverLevel); Set defensiveCopy = new HashSet<>(mwsd.getControllersInChunk(chunk.getPos())); for (MultiblockState structure : defensiveCopy) { - if (structure.getController() == null || !structure.getController().isFormed()) { - // skip for unloaded/unformed multiblocks - continue; - } if (structure.isPosInCache(pos)) { serverLevel.getServer().executeBlocking(() -> structure.onBlockStateChanged(pos, newState)); } From 6fc8095328f8af90acab4bd9e25662c0e86eac80 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Mon, 4 Aug 2025 01:15:30 -0600 Subject: [PATCH 264/270] Fix Central Monitor loading machines too early (#3623) --- .../electric/CentralMonitorMachine.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index fad6955e38d..26a9a4e3d41 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -69,15 +69,7 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CentralMonitorMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - public static final TraceabilityPredicate BLOCK_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) - .setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1) - .or(Predicates.abilities(PartAbility.DATA_ACCESS).setPreviewCount(1) - .or(Predicates.machines(GTMachines.BATTERY_BUFFER_4).setPreviewCount(0)) - .or(Predicates.machines(GTMachines.BATTERY_BUFFER_16).setPreviewCount(0)) - .setMaxGlobalLimited(4)) - .or(Predicates.machines(GTMachines.HULL)) - .or(Predicates.machines(GTMachines.MONITOR)) - .or(Predicates.blocks(GTBlocks.CASING_ALUMINIUM_FROSTPROOF.get())); + public static TraceabilityPredicate BLOCK_PREDICATE; @Persisted @DescSynced @@ -95,6 +87,17 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine public CentralMonitorMachine(IMachineBlockEntity holder) { super(holder); + if (BLOCK_PREDICATE == null) { + BLOCK_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) + .setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1) + .or(Predicates.abilities(PartAbility.DATA_ACCESS).setPreviewCount(1) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_4).setPreviewCount(0)) + .or(Predicates.machines(GTMachines.BATTERY_BUFFER_16).setPreviewCount(0)) + .setMaxGlobalLimited(4)) + .or(Predicates.machines(GTMachines.HULL)) + .or(Predicates.machines(GTMachines.MONITOR)) + .or(Predicates.blocks(GTBlocks.CASING_ALUMINIUM_FROSTPROOF.get())); + } } @Override From 5649a36bf94a1c0d038dd17f740df41f3a3730e1 Mon Sep 17 00:00:00 2001 From: Gustavo <77560533+gustovafing@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:23:25 +1000 Subject: [PATCH 265/270] fix central monitor causing EMI error & fix possible crash (#3632) Co-authored-by: jurrejelle --- .../common/data/machines/GTMultiMachines.java | 2 +- .../electric/CentralMonitorMachine.java | 20 +++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index b49dae74de2..dab4fdf4129 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -1135,7 +1135,7 @@ public class GTMultiMachines { .pattern((definition) -> FactoryBlockPattern.start() .aisle("BCB", "BBB", "BBB", "BBB") .where('C', Predicates.controller(Predicates.blocks(definition.get()))) - .where('B', CentralMonitorMachine.BLOCK_PREDICATE) + .where('B', CentralMonitorMachine.getMultiPredicate()) .build()) .modelProperty(RecipeLogic.STATUS_PROPERTY, RecipeLogic.Status.IDLE) .model(createWorkableCasingMachineModel( diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java index 26a9a4e3d41..25ae5f29b93 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CentralMonitorMachine.java @@ -69,8 +69,6 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CentralMonitorMachine.class, WorkableMultiblockMachine.MANAGED_FIELD_HOLDER); - public static TraceabilityPredicate BLOCK_PREDICATE; - @Persisted @DescSynced @Getter @@ -85,10 +83,15 @@ public class CentralMonitorMachine extends WorkableElectricMultiblockMachine private MultiblockState patternFindingState; + private static TraceabilityPredicate MULTI_PREDICATE = null; + public CentralMonitorMachine(IMachineBlockEntity holder) { super(holder); - if (BLOCK_PREDICATE == null) { - BLOCK_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) + } + + public static TraceabilityPredicate getMultiPredicate() { + if (MULTI_PREDICATE == null) { + MULTI_PREDICATE = Predicates.abilities(PartAbility.INPUT_ENERGY) .setMinGlobalLimited(1).setMaxGlobalLimited(2).setPreviewCount(1) .or(Predicates.abilities(PartAbility.DATA_ACCESS).setPreviewCount(1) .or(Predicates.machines(GTMachines.BATTERY_BUFFER_4).setPreviewCount(0)) @@ -98,6 +101,7 @@ public CentralMonitorMachine(IMachineBlockEntity holder) { .or(Predicates.machines(GTMachines.MONITOR)) .or(Predicates.blocks(GTBlocks.CASING_ALUMINIUM_FROSTPROOF.get())); } + return MULTI_PREDICATE; } @Override @@ -172,7 +176,7 @@ public boolean isValidMonitorBlock(Level level, BlockPos pos) { if (level.isOutsideBuildHeight(pos)) return false; MultiblockState state = getPatternFindingState(); - if (!state.update(pos, BLOCK_PREDICATE)) { + if (!state.update(pos, getMultiPredicate())) { return false; } state.io = IO.BOTH; @@ -258,7 +262,7 @@ public BlockPattern getPattern() { return FactoryBlockPattern.start() .aisle(aisle) - .where('B', BLOCK_PREDICATE) + .where('B', getMultiPredicate()) .where('C', Predicates.controller(Predicates.blocks(this.getDefinition().get()))) .build(); } @@ -405,6 +409,8 @@ public Widget createUIWidget() { label.setOnPressCallback(click -> { group.getRelativePositions().forEach(pos -> { BlockPos rel = toRelative(pos); + if (imageButtons.size() - 1 < rel.getY()) return; + if (imageButtons.get(rel.getY()).size() - 1 < rel.getX()) return; imageButtons.get(rel.getY()).get(rel.getX()).accept(null); }); if (group.getTargetRaw() != null) { @@ -500,6 +506,8 @@ public Widget createUIWidget() { while (it.hasNext()) { IMonitorComponent c = it.next(); BlockPos rel = toRelative(c.getPos()); + if (imageButtons.size() - 1 < rel.getY()) continue; + if (imageButtons.get(rel.getY()).size() - 1 < rel.getX()) continue; imageButtons.get(rel.getY()).get(rel.getX()).accept(it); } if (!selectedTargets.isEmpty()) { From 2a3d2aa3f3f674b55b9bc52b96d6d29e37f9f044 Mon Sep 17 00:00:00 2001 From: Ghostipedia / Caitlynn <46772882+Ghostipedia@users.noreply.github.com> Date: Mon, 4 Aug 2025 09:40:08 -0400 Subject: [PATCH 266/270] Force Version Bump (#3633) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 49f0d75dc21..a07862c46ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.caching = true # Mod Info mod_id = gtceu mod_name = GregTech -mod_version = 7.1.1 +mod_version = 7.1.2 mod_description = GregTech CE Unofficial, ported from 1.12.2 mod_license = LGPL-3.0 license mod_url = https://github.com/GregTechCEu/GregTech-Modern/ From ee0cf6a9c2a388f5a6cb772365061b221fa09611 Mon Sep 17 00:00:00 2001 From: Jurre Groenendijk Date: Mon, 4 Aug 2025 16:38:14 +0200 Subject: [PATCH 267/270] Ignore null predicates in machines(...) (#3634) --- .../com/gregtechceu/gtceu/api/pattern/Predicates.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index 87047c98ef9..413a17137ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -67,11 +67,13 @@ public static TraceabilityPredicate blocks(IMachineBlock... blocks) { } public static TraceabilityPredicate machines(MachineDefinition... definitions) { - IMachineBlock[] machineBlocks = new IMachineBlock[definitions.length]; - for (int i = 0; i < machineBlocks.length; i++) { - machineBlocks[i] = definitions[i].get(); + ArrayList machineBlocks = new ArrayList<>(definitions.length); + for (var definition : definitions) { + if (definition != null) { + machineBlocks.add(definition.get()); + } } - return blocks(machineBlocks); + return blocks(machineBlocks.toArray(IMachineBlock[]::new)); } public static TraceabilityPredicate blockTag(TagKey tag) { From d6f7ef92f5c01fb33f7a08de9f593a2163ca2434 Mon Sep 17 00:00:00 2001 From: kross <135918757+krossgg@users.noreply.github.com> Date: Mon, 4 Aug 2025 22:53:32 -0400 Subject: [PATCH 268/270] Make release action always bump version + edit changelog (#3643) --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0abf8609e54..e55dce631d0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -147,7 +147,7 @@ jobs: # After successful release, PR version bump and changelog bump-version-and-changelog: name: Bump Version and Build Changelog - needs: [ build, upload-release-artifacts, publish-modrinth, publish-cf] + needs: [ build, upload-release-artifacts ] if: ${{ always() && !failure() && !cancelled() }} runs-on: ubuntu-latest permissions: From 33091596384f5132b9fa8b5c5b91630eff0543f8 Mon Sep 17 00:00:00 2001 From: YoungOnion <39562198+YoungOnionMC@users.noreply.github.com> Date: Mon, 4 Aug 2025 22:42:12 -0600 Subject: [PATCH 269/270] 335,544.32% recipe logic improvement (#3645) --- .../gtceu/api/recipe/RecipeRunner.java | 9 ++++--- .../machine/MEPatternBufferPartMachine.java | 7 +++--- .../com/gregtechceu/gtceu/utils/GTMath.java | 25 ++++++++++++++++--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java index d36ded4acf0..c7ff956ba56 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeRunner.java @@ -125,9 +125,12 @@ private ActionResult handleContents() { for (RecipeHandlerList handler : handlerGroups.getOrDefault(BUS_DISTINCT, Collections.emptyList())) { // Handle the contents of this handler and also all the bypassed handlers var res = handler.handleRecipe(io, recipe, searchRecipeContents, true); - for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, - Collections.emptyList())) { - res = bypassHandler.handleRecipe(io, recipe, res, true); + if (!res.isEmpty()) { + for (RecipeHandlerList bypassHandler : handlerGroups.getOrDefault(BYPASS_DISTINCT, + Collections.emptyList())) { + res = bypassHandler.handleRecipe(io, recipe, res, true); + if (res.isEmpty()) break; + } } if (res.isEmpty()) { if (!simulated) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index a70e5889f16..32f0d60d73c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -494,9 +494,10 @@ public List getItems() { public List getFluids() { if (fluidStacks == null) { - fluidStacks = fluidInventory.object2LongEntrySet().stream() - .map(e -> new FluidStack(e.getKey(), GTMath.saturatedCast(e.getLongValue()))) - .toList(); + fluidStacks = new ArrayList<>(); + fluidInventory.object2LongEntrySet().stream() + .map(e -> GTMath.splitFluidStacks(e.getKey(), e.getLongValue())) + .forEach(fluidStacks::addAll); } return fluidStacks; } diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java index 6cae4eed2a3..dac3a82b79d 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTMath.java @@ -2,6 +2,7 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.fluids.FluidStack; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.objects.ObjectArrayList; @@ -24,15 +25,31 @@ public static long clamp(long value, long min, long max) { } public static List splitStacks(ItemStack stack, long amount) { - int count = saturatedCast(amount); - int fullStacks = count / 64; - int rem = count % 64; + int fullStacks = (int) (amount / Integer.MAX_VALUE); + int rem = (int) (amount % Integer.MAX_VALUE); List stacks = new ObjectArrayList<>(fullStacks + 1); - if (fullStacks > 0) stacks.addAll(Collections.nCopies(fullStacks, stack.copyWithCount(64))); + if (fullStacks > 0) stacks.addAll(Collections.nCopies(fullStacks, stack.copyWithCount(Integer.MAX_VALUE))); if (rem > 0) stacks.add(stack.copyWithCount(rem)); return stacks; } + public static List splitFluidStacks(FluidStack stack, long amount) { + int fullStacks = (int) (amount / Integer.MAX_VALUE); + int rem = (int) (amount % Integer.MAX_VALUE); + List stacks = new ObjectArrayList<>(fullStacks + 1); + if (fullStacks > 0) { + var copy = stack.copy(); + copy.setAmount(Integer.MAX_VALUE); + stacks.addAll(Collections.nCopies(fullStacks, copy)); + } + if (rem > 0) { + var copy = stack.copy(); + copy.setAmount(rem); + stacks.add(copy); + } + return stacks; + } + public static int[] split(long value) { IntArrayList result = new IntArrayList(); while (value > 0) { From 1925abde1ff0161c84ff7adad0f89c4cb198e6c4 Mon Sep 17 00:00:00 2001 From: NegaNote Date: Tue, 5 Aug 2025 20:39:46 -0400 Subject: [PATCH 270/270] make the fe-to-eu and eu-to-fe ratios max at maxint --- src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 864d224bc54..de1460815d0 100644 --- a/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -185,13 +185,13 @@ public static class EnergyCompatConfig { @Configurable @Configurable.Comment({ "Forge Energy to GTEU ratio for converting FE to EU.", "Only affects converters.", "Default: 4 FE == 1 EU" }) - @Configurable.Range(min = 1, max = 16) + @Configurable.Range(min = 1, max = Integer.MAX_VALUE) public int feToEuRatio = 4; @Configurable @Configurable.Comment({ "GTEU to Forge Energy ratio for converting EU to FE.", "Affects native conversion and Converters.", "Default: 4 FE == 1 EU" }) - @Configurable.Range(min = 1, max = 16) + @Configurable.Range(min = 1, max = Integer.MAX_VALUE) public int euToFeRatio = 4; }